-
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.
atman.pl!news.supermedia.pl!news.nask.pl!news.nask.org.pl!news.internetia.pl!no
t-for-mail
From: Michoo <m...@v...pl>
Newsgroups: pl.comp.programming
Subject: Re: Błędny epsilon - this is not a bug, this is ?
Date: Mon, 05 Nov 2012 11:07:52 +0100
Organization: Netia S.A.
Lines: 81
Message-ID: <k783go$q3k$1@mx1.internetia.pl>
References: <50924bb1$0$1308$65785112@news.neostrada.pl>
<a...@g...com>
<50926d86$0$1216$65785112@news.neostrada.pl>
<k6tusp$elk$1@node1.news.atman.pl>
<5092979f$0$1208$65785112@news.neostrada.pl>
<k6u5vk$cf9$1@node2.news.atman.pl>
<5092a72c$0$1311$65785112@news.neostrada.pl>
<k6u98u$fjc$1@node2.news.atman.pl>
<5092aefd$0$1232$65785112@news.neostrada.pl>
<b...@g...com>
<5092c4d8$0$1222$65785112@news.neostrada.pl>
<k700o6$52t$1@news.task.gda.pl>
<50939638$0$26708$65785112@news.neostrada.pl>
<k71ct6$fjv$1@mx1.internetia.pl>
<5094e05f$0$1312$65785112@news.neostrada.pl>
<k73isd$sfj$1@mx1.internetia.pl>
<50958b34$0$26700$65785112@news.neostrada.pl>
NNTP-Posting-Host: 83.238.197.12
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-2; format=flowed
Content-Transfer-Encoding: 8bit
X-Trace: mx1.internetia.pl 1352110424 26740 83.238.197.12 (5 Nov 2012 10:13:44 GMT)
X-Complaints-To: a...@i...pl
NNTP-Posting-Date: Mon, 5 Nov 2012 10:13:44 +0000 (UTC)
In-Reply-To: <50958b34$0$26700$65785112@news.neostrada.pl>
X-Tech-Contact: u...@i...pl
User-Agent: Mozilla/5.0 (X11; Linux i686 on x86_64; rv:10.0.6esrpre) Gecko/20120817
Icedove/10.0.6
X-Server-Info: http://www.internetia.pl/
Xref: news-archive.icm.edu.pl pl.comp.programming:200489
[ ukryj 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-29 Dławik CM
- 2024-11-29 [OT] Lewe oprogramowanie
- 2024-11-29 Błonie => Sales Specialist <=
- 2024-11-29 Warszawa => IT Expert (Network Systems area) <=
- 2024-11-29 Warszawa => Ekspert IT (obszar systemów sieciowych) <=
- 2024-11-29 Warszawa => Head of International Freight Forwarding Department <=
- 2024-11-29 Białystok => Inżynier Serwisu Sprzętu Medycznego <=
- 2024-11-29 Pómpy ciepła darmo rozdajoo
- 2024-11-29 Białystok => Application Security Engineer <=
- 2024-11-29 Białystok => Programista Full Stack (.Net Core) <=
- 2024-11-29 Gdańsk => Software .Net Developer <=
- 2024-11-29 Wrocław => Key Account Manager <=
- 2024-11-29 Gdańsk => Specjalista ds. Sprzedaży <=
- 2024-11-29 Chrzanów => Specjalista ds. public relations <=
- 2024-11-27 Re: UseGalileo -- PRODUKTY I APLIKACJE UŻYWAJĄ JUŻ DZIŚ SYSTEMU GALILEO