-
Data: 2012-11-05 11:07:52
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 03.11.2012 22:22, slawek wrote:
> Użytkownik "Michoo" napisał w wiadomości grup
> dyskusyjnych:k73isd$sfj$...@m...internetia.pl...
>
>> Nie chce mi się sprawdzać, ale oidp jest to zaokrąglanie do
>> najbliższego. Zresztą tylko taka forma by miała sens przy tej dyskusji
>> o dokładności.
>
> Czyli jednak są zaokrąglane - a nie przycinane?
Są przycinane do 64 bitów afaik na 4 sposoby:
- down
- up
- near
- trunc
Domyślne jest near.
Wolę słowo "przycinane", niż zaokrąglane, bo inaczej mamy "zaokrąglanie
przez obcięcie bitów", a tak jest "przycięcie bitów (z zaokrągleniem)".
> Wiem, marudzę.
Marudzisz, zwłaszcza, że najpierw błędnie napisałeś o zaokrąglaniu w górę.
>
>> Tak. I jak Ci już wspomniano - w praktyce nie interesuje programisty
>> dokładność maszynowa a odległość między dwiema liczbami, czyli 2*e.
>> Komentarz jest błędny w nagłówku a dobry w matlabie.
>
> Po drugie - czyli jednak mam rację - jest błąd w float.h ? Jest!
Jest, ale wynika z czego innego niż myślisz.
>
> Po pierwsze - właśnie sam napisałeś, że to co jest równe 2.2E-16 to
> odległość między dwiema liczbami i nie jest to epsilon. I znowu mam
> rację?! Dziwne.
Nie epsilon _maszynowy_ na FPU x86, które jak już wspomniano jest 80
bitowe. To, że dodanie ~połowy tej wartości wystarcza dla uzyskania
1.0+e!=1.0 wynika z tych 80 bitów i polityki near. W szerszym typie
wynik masz bliżej (1.0+2.2E-16) niż 1.0 więc jest zaokrąglane do
(1.0+2.2E-16) w momencie przycięcia do double. Jeżeli byś operował na
czystym double (64 bit) to zabraknie ci bitów na reprezentację tej sumy
i afaik nadal dostaniesz 1.0.
W związku z tym:
- 2.2E-16 nie jest najmniejszą wartością jaka na FPU x86 spowoduje
zajście nierówności. Jest najmniejszą taką wartością w typie double.
>
> Po trzecie - zamiast napisać, cyt., "nie interesuje programisty" -
> powinieneś napisać, iż ciebie nie interesuje. (Czyli po prostu nie
> uogólniać swoich opinii jako opinii wszystkich programistów, bo są to -
> być może nawet bardzo celne - ale wyłącznie twoje własne spostrzeżenia.)
float.h jest częścią standardu i odnosi się do standardowych typów
float(32 bit) i double (64 bit). Gdyby ten nagłówek oparto o corner-case
x86 to programista piszący np na VFP by się bardzo zdziwił, że ten
epsilon nie działa.
Na którymś z egzotycznych procesorów (niagara? alfa?) można było
ustawiać zaokrąglanie dla każdego rozkazu fpu. Wyobrażasz sobie, że w C
trzeba by przy każdej operacji float/double podawać prefix jak to
zaokrąglić?
>
> Podsumowując - dobrze jeżeli jest już poprawka w Wikipedii - to
> pozytywny rezultat dyskusji. A problem jest dużo bardziej poważny, niż
> mi się wydawało - po prostu nie wiadomo ile bitów mantysy jest naprawdę
> użyte (tj. czy będą użyte 64 bitowe liczby double, czy 80 bitowe
> rejestry FPU, zależy od humoru kompilatora).
I zazwyczaj nie ma to znaczenia. Nikt nie robi poważnej numeryki
opierając się o to, że na x86 połowa epsilona double wystarcza.
--
Pozdrawiam
Michoo
Następne wpisy z tego wątku
- 05.11.12 11:52 slawek
- 05.11.12 12:14 slawek
- 05.11.12 12:48 slawek
- 05.11.12 13:04 slawek
- 05.11.12 13:10 Michoo
- 05.11.12 16:17 AK
- 05.11.12 16:33 Marek Borowski
- 05.11.12 19:38 slawek
- 05.11.12 19:53 slawek
- 05.11.12 20:32 slawek
- 05.11.12 20:46 kenobi
- 05.11.12 21:35 Tomasz Sowa
- 05.11.12 22:11 kenobi
- 06.11.12 00:16 slawek
- 06.11.12 00:19 Tomasz Sowa
Najnowsze wątki z tej grupy
- 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?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
- Młodzi programiści i tajna policja
Najnowsze wątki
- 2024-11-24 Czy Sejm RP zahamuje proceder zabijania dla organów?
- 2024-11-24 Aby WKOOOORWIĆ ekofaszystów ;-)
- 2024-11-22 OC - podwyżka
- 2024-11-22 wyszedł z domu bez buta
- 2024-11-22 Bieda hud.
- 2024-11-24 DS1813-10 się psuje
- 2024-11-23 Białystok => Inżynier bezpieczeństwa aplikacji <=
- 2024-11-23 Szczecin => QA Engineer <=
- 2024-11-23 Warszawa => SEO Specialist (15-20h tygodniowo) <=
- 2024-11-22 Warszawa => Kierownik Działu Spedycji Międzynarodowej <=
- 2024-11-22 Warszawa => Senior Account Manager <=
- 2024-11-22 Warszawa => Key Account Manager <=
- 2024-11-22 Warszawa => DevOps Specialist <=
- 2024-11-22 Kraków => IT Expert (Network Systems area) <=
- 2024-11-22 Warszawa => Infrastructure Automation Engineer <=