eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming › Błędny epsilon - this is not a bug, this is ?
Ilość wypowiedzi w tym wątku: 181

  • 51. Data: 2012-11-05 20:32:15
    Temat: Re: [off] Re: Błędny epsilon - this is not a bug, this is ?
    Od: "slawek" <s...@h...pl>


    Użytkownik "AK" <n...@n...com> napisał w wiadomości grup
    dyskusyjnych:k78lau$co8$...@n...task.gda.pl...
    > Burakiem (tak tak, mimo ze "hrabią" to jednak burakiem), chamem
    > i palantem zaczales byc dla mnie od momentu przeczytania tych
    > twych slow do Bartka:

    Piszesz nie na temat (przypominam, tematem jest DBL_EPSILON z float.h i
    hasło z Wikipedii).

    > Do momentu ew. przeprosin bede dalej w stosunku do ciebie uzywal
    > tych zasadnych epitetow.

    Wyraźnie masz problemy. Ale to są twoje problemy, z twoją samooceną. NTG




  • 52. Data: 2012-11-05 20:46:09
    Temat: Re: [off] Re: Błędny epsilon - this is not a bug, this is ?
    Od: kenobi <p...@g...com>

    >
    > Wyraźnie masz problemy. Ale to są twoje problemy, z twoją samooceną. NTG

    to sa wszystko problemy spod litery d (d r e dokladniej) Imo lepiej odeslac dresów
    do dresa a siebie do assemblera (i am doin it such way)
    [choc ostatnio tluke nie tyle asma co raczej ogla]


  • 53. Data: 2012-11-05 21:35:47
    Temat: Re: Błędny epsilon - this is not a bug, this is ?
    Od: Tomasz Sowa <t...@N...ttmath.org>

    On 2012.11.03 16:10, slawek wrote:

    >> Bo popełniasz błąd który się propaguje w każdej iteracji
    >> algorytmu.
    >
    > Nie ma błędu. Za każdym razem jest na nowo sprawdzanie 1.0+eps > 1.0,
    > tj. pętla while(1.0 + eps > 1.0) {...}

    a no, tak sądziłem, sprawdź poniższy program

    #include <iostream>
    #include <stdint.h>
    #include <iomanip>

    template<typename float_t, typename int_t>
    float_t machine_eps()
    {
    union
    {
    float_t f;
    int_t i;
    } one, one_plus, little, last_little;

    one.f = 1.0;
    little.f = 1.0;
    last_little.f = little.f;

    while(true)
    {
    one_plus.f = one.f;
    one_plus.f += little.f;

    if( one.i != one_plus.i )
    {
    last_little.f = little.f;
    little.f /= 2.0;
    }
    else
    {
    return last_little.f;
    }
    }
    }

    int main()
    {
    std::cout << "machine epsilon:\n";
    std::cout << "float: " << std::setprecision(18)
    << machine_eps<float, uint32_t>() << std::endl;
    std::cout << "double: " << std::setprecision(18)
    << machine_eps<double, uint64_t>() << std::endl;
    }

    /home/tomek/roboczy/test$ g++ -o test test.cpp && ./test
    machine epsilon:
    float: 1.1920928955078125e-07
    double: 2.22044604925031308e-16

    ale to oczywiście tylko aproksymacja

    --
    Tomek
    http://www.ttmath.org


  • 54. Data: 2012-11-05 22:11:27
    Temat: Re: [off] Re: Błędny epsilon - this is not a bug, this is ?
    Od: kenobi <p...@g...com>

    >
    > to sa wszystko problemy spod litery d (d r e dokladniej) Imo lepiej odeslac dresów
    do dresa a siebie do assemblera (i am doin it such way)

    wogole u mnie w borlandowym naglowku sa takie stale co do epsilonow

    #define DBL_EPSILON 2.2204460492503131E-16
    #define FLT_EPSILON 1.19209290E-07F
    #define LDBL_EPSILON 1.084202172485504434e-019L

    gdyby ktos wkleil naglowki float.h z GCC i MSVS (najlepiej całe) to chetnie bym je
    sobie zobaczyłi porownał


  • 55. Data: 2012-11-06 00:16:22
    Temat: Re: Błędny epsilon - this is not a bug, this is ?
    Od: "slawek" <s...@h...pl>


    Użytkownik "Tomasz Sowa" <t...@N...ttmath.org> napisał w wiadomości grup
    dyskusyjnych:k797v2$t98$...@n...dialog.net.pl...
    > ale to oczywiście tylko aproksymacja

    Popatrz na to w ten sposób - manipulujesz bitami, robisz unie, używasz
    szablonów. I otrzymujesz wynik 2.22E-16.

    A wystarczy napisać cout << (1.0 + 1.5E-16 > 1.0) << endl; i ew. sprawdzić,
    co da cout << (1.5E-16 < 2.2E-16) << endl; .



  • 56. Data: 2012-11-06 00:19:10
    Temat: Re: Błędny epsilon - this is not a bug, this is ?
    Od: Tomasz Sowa <t...@N...ttmath.org>

    On 2012.11.06 00:16, slawek wrote:

    > Popatrz na to w ten sposób - manipulujesz bitami, robisz unie, używasz
    > szablonów. I otrzymujesz wynik 2.22E-16.
    >
    > A wystarczy napisać cout << (1.0 + 1.5E-16 > 1.0) << endl; i ew. sprawdzić,
    > co da cout << (1.5E-16 < 2.2E-16) << endl; .

    No właśnie nie wystarczy, unie zrobiłem specjalnie żeby obliczenie
    dodawania zrobić odpowiednio w 32 bitach (float) i 64 bitach (double). W
    twoim przypadku obliczenia będą przeprowadzone w 80 bitach lub więcej
    (zależnie od opcji kompilacji).


    --
    Tomek
    http://www.ttmath.org


  • 57. Data: 2012-11-06 00:53:27
    Temat: Re: Bdny epsilon - this is not a bug, this is ?
    Od: Roman W <b...@g...pl>

    On Mon, 5 Nov 2012 11:52:16 +0100, "slawek" <s...@h...pl> wrote:
    > Rozumiem, e za takie samo "zbureczanie" (pisowni pozostawiem bez
    zmian)
    > uwaasz np. CFL?

    Zajmowanie si fajnymi rzeczami nie czyni automatycznie zajmujcego
    si fajnym czowiekiem.

    RW


  • 58. Data: 2012-11-06 00:57:48
    Temat: Re: Bdny epsilon - this is not a bug, this is ?
    Od: Roman W <b...@g...pl>

    On Mon, 05 Nov 2012 13:10:38 +0100, Michoo <m...@v...pl> wrote:
    > Nie. Epsilon jako dokadno oblicze (do czego si odwoywae)
    uywa
    > si ewentualnie w opisie algorytmu. Jako warto w programie
    przyjmuje
    > si róne EPS (odlego miedzy wartociami) zalenie od zakresu na
    > którym si pracuje, zazwyczaj do okrelenia relacji równowanoci i
    s
    > to setki albo tysice razy wiksze wartoci ni EPS_DOUBLE podczas
    > liczenia na double.

    Widziaem sytuacje, kiedy zmiana funkcji z inline na nie-inline
    powodowaa wzgledna zmian kocowego wyniku o 1e-13.

    RW


  • 59. Data: 2012-11-06 03:28:35
    Temat: Re: Bdny epsilon - this is not a bug, this is ?
    Od: bartekltg <b...@g...com>

    W dniu 2012-11-06 00:57, Roman W pisze:
    > On Mon, 05 Nov 2012 13:10:38 +0100, Michoo <m...@v...pl> wrote:
    >> Nie. Epsilon jako dokadno oblicze (do czego si odwoywae)
    > uywa
    >> si ewentualnie w opisie algorytmu. Jako warto w programie
    > przyjmuje
    >> si róne EPS (odlego miedzy wartociami) zalenie od zakresu na
    >> którym si pracuje, zazwyczaj do okrelenia relacji równowanoci i
    > s
    >> to setki albo tysice razy wiksze wartoci ni EPS_DOUBLE podczas
    >> liczenia na double.
    >
    > Widziaem sytuacje, kiedy zmiana funkcji z inline na nie-inline
    > powodowaa wzgledna zmian kocowego wyniku o 1e-13.

    Obcinanie pośrednich wyników do double (przy wejściu/wyjśćiu funkcji)
    kontra liczenie wszystkiego w rejestrach koprocesora, czy coś głębszego?

    pzdr
    bartekltg






  • 60. Data: 2012-11-06 06:35:25
    Temat: Re: Bdny epsilon - this is not a bug, this is ?
    Od: Roman W <b...@g...pl>

    On Tue, 06 Nov 2012 03:28:35 +0100, bartekltg <b...@g...com>
    wrote:
    > Obcinanie porednich wyników do double (przy wejciu/wyjiu
    funkcji)
    > kontra liczenie wszystkiego w rejestrach koprocesora, czy co
    gbszego?

    Moe to? Albo inna kolejno oblicze. To byo C++ pod Windows.

    RW

strony : 1 ... 5 . [ 6 ] . 7 ... 19


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: