-
Data: 2012-11-06 11:50:50
Temat: Re: Błędny epsilon - this is not a bug, this is ?
Od: Michoo <m...@v...pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]On 06.11.2012 10:46, slawek wrote:
> Użytkownik "Tomasz Sowa" napisał w wiadomości grup
> dyskusyjnych:k79hhh$26k$...@n...dialog.net.pl...
>
>> 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).
>
> Ok, ale podążając za twoim pomysłem należałoby stwierdzić, że
> jakiekolwiek porównania a > b należy usunąć z programów i zastąpić je
> porównaniami (int)a > (int)b .
>
> Czyli - zamiast problemu "DBL_EPSILON jest podany z 50% błędem"
NIE jest, nie trolluj. Już ci podawałem fragment standardu, w którym
wyraźnie stoi, że DBL_EPSILON zawiera dodatnią różnicę między 1.0 a
następną wartością reprezentowalną w typie double.
> - mamy
> problem "arytmetyka liczb double jest źle zaimplementowana".
Czy ty kiedyś siedziałeś gdzieś w pobliżu numeryki?
Jeżeli dokładność jest większa to nie jest to problem, chyba, że
programista naprawdę coś zepsuł. Precyzja w punktach wynosi 100%,
dlatego używa się ograniczeń worst-case. Nikt myślący nie zrobi w
typowym przypadku relacji równoważności[*] w oparciu o DBL_EPSILON -
zawsze to będzie jego wielokrotność.
P.S.
Skompiluj, uruchom, zrozum:
#include <cstdio>
double foo(double d){
return d;
}
main()
{
double d1=1.0;
double d2=1.5E-16;
printf("%.18lf %.18lf\n",d1+d2-1.0,foo(d1+d2)-1.0);
}
[*] Wynika to z tego, że każda operacja wprowadza przynajmniej błąd z
przedziału <0,DBL_EPSILON/2>, niektóre tak duży jak np
sqrt(DBL_EPSILON/2) - np. sqrt ;)
--
Pozdrawiam
Michoo
Następne wpisy z tego wątku
- 06.11.12 12:02 Michoo
- 06.11.12 12:05 AK
- 06.11.12 13:31 Roman W
- 06.11.12 13:32 Roman W
- 06.11.12 14:36 Michoo
- 06.11.12 14:47 Michoo
- 06.11.12 14:55 AK
- 06.11.12 15:02 AK
- 06.11.12 15:35 AK
- 06.11.12 15:54 bartekltg
- 06.11.12 15:57 Roman W
- 06.11.12 16:03 Roman W
- 06.11.12 16:20 Michoo
- 06.11.12 16:48 AK
- 06.11.12 16:56 AK
Najnowsze wątki z tej grupy
- "Wuj dobra rada" z KDAB rozważa: Choosing the Right Programming Language for Your Embedded Linux Device
- Nowa ustawa o ochronie praw autorskich - opis problemu i szkic ustawy
- Alg. kompresji LZW
- Popr. 14. Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- Arch. Prog. Nieuprzywilejowanych w pełnej wer. na nowej s. WWW energokod.pl
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
Najnowsze wątki
- 2025-03-24 Spawanie filamentem
- 2025-03-23 Rozkaz 5-2025: O Umorzeniu Postępowania Sądowego
- 2025-03-23 Rozkaz 4-2025: O Ochronie Praw Autorskich
- 2025-03-23 Rozkaz 3-2025: O Zaprzestaniu Bratobójczych Walk Na Ukrainie
- 2025-03-23 Rozkaz 2-2025: O Zaprzestaniu Zaciągania Kredytów
- 2025-03-23 Rozkaz 1-2025: O Uchwaleniu Totaliztycznych Praw i Obowiązków Człowieka
- 2025-03-23 Waga z legalizacją
- 2025-03-23 Nowy VW 208 :-)
- 2025-03-23 ile Tesla ma gwarancji?
- 2025-03-22 OT Silnik sie przegrzewa
- 2025-03-22 Przenoszenie przez wifi na nowego Androida
- 2025-03-22 Warszawa => Senior Account Manager <=
- 2025-03-22 Wrocław => Konsultant wdrożeniowy Comarch XL (Logistyka, WMS, Produk
- 2025-03-22 Warszawa => Spedytor Międzynarodowy <=
- 2025-03-22 Warszawa => NMS System Administrator <=