-
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.
atman.pl!wsisiz.edu.pl!newsfeed.neostrada.pl!unt-exc-02.news.neostrada.pl!unt-s
po-a-02.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
From: "slawek" <h...@s...pl>
Newsgroups: pl.comp.programming
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>
<a...@g...com>
In-Reply-To: <a...@g...com>
Subject: Re: Błędny epsilon - this is not a bug, this is ?
Date: Thu, 1 Nov 2012 21:24:13 +0100
MIME-Version: 1.0
Content-Type: text/plain; format=flowed; charset="iso-8859-2"; reply-type=original
Content-Transfer-Encoding: 8bit
X-Priority: 3
X-MSMail-Priority: Normal
Importance: Normal
X-Newsreader: Microsoft Windows Live Mail 15.4.3555.308
X-MimeOLE: Produced By Microsoft MimeOLE V15.4.3555.308
Lines: 63
Message-ID: <5092da70$0$1225$65785112@news.neostrada.pl>
Organization: Telekomunikacja Polska
NNTP-Posting-Host: 62.69.202.124
X-Trace: 1351801456 unt-rea-b-01.news.neostrada.pl 1225 62.69.202.124:62743
X-Complaints-To: a...@n...neostrada.pl
Xref: news-archive.icm.edu.pl pl.comp.programming:200462
[ ukryj nagłówki ]Użytkownik "kenobi" napisał w wiadomości grup
dyskusyjnych:a8bc94f7-d49a-40e5-875e-8a1e51abe57a@go
oglegroups.com...
> czy ten epsilon (2.2? 1.1?) to jest moze po prostu 'roznica' miedzy
> kolejnymi doublemi
>czy to jest pól tej róznicy czy co? Ile wynosi
Celna uwaga.
Ja "od zawsze" jakoś tak byłem przyzwyczajony (epsilonowo-deltowa definicja
granicy funkcji), że epsilon to "coś małego", takie że owszem nie jest to
zero, ale w istocie rzeczy jest to najmniejsza wartość jaka da się użyć w
obliczeniach. Kwestia jak zapisane są liczby (dwójkowo, trójkowo, czy może
analogowo np. napięcie elektryczne) - to zupełnie inny problem. Czyli
definicja sup { epsilon in R : 1+epsilon > 1 } wydaje mi się zupełnie
naturalna i zrozumiała nawet dla 10-latka. Oraz najbardziej przydatna - nie
interesuje mnie, co za krasnale siedzą w CPU/FPU/APU - byle liczyły "jak
trzeba".
Oczywiście dla hodowców krasnali - tj. dla konstruktorów procesorów itd. -
epsilon może być równy matematycznie pojętej różnicy pomiędzy liczbą 1
zapisaną w (no w czym, FPU czy RAM?)... a najmniej różną od niej liczbą
nieco większą. "Matematycznie pojętą" oznacza, że nie musi być tak, ze da
się policzyć (1+epsilon) - 1 na danej maszynce (tj. w FPU) - ale, że
teoretycznie tyle.
Tyle że w float.h jest wprost napisany warunek 1.0 + x != 1.0 .
Niechlujstwo jest w tym, że jak damy x = -10.0, to wychodzi 1.0 + (-10.0)
czyli w przybliżeniu -9.0. A w przybliżeniu dlatego, że FPU trochę
zaokrągli. W każdym razie warunek z definicji będzie spełniony. Ale
oczywiście to jest czepialstwo, bo "wiadomo o co chodzi". Że ma być x > 0.
czyli dodatnie.
Mniej oczywistym błędem jest to, że liczba double x = 1.111E-16 też daje 1.0
+ x != 1.0, czyli spełnia warunek. Natomiast MS uważa że epsilon > 2.22E-16
.
I możemy się spierać, jak zdefiniować epsilon - ale po prostu to co jest we
float.h jest wewnętrznie sprzeczne.
A teraz wiki - w tym samym haśle jest jednocześnie, że epsilon jest równe
1.11E-16 i że jest równe 2.22E-16. Nieważne jak definiujemy epsilon - ale
ponieważ 1.11E-16 != 2.22E-16 (w sensie matematycznym i w sensie FPU też) -
to znaczy, że w Wikipedii (EN) jest pomyłka. Albo w jednym miejscu, albo w
drugim, albo w obu. To logiczne (jak mawiał Spock).
Jeszcze o roli epsilona. Gdy służy do np. wyboru kroku jako sqrt(epsilon),
to nie ma wielkiego znaczenia, czy jest 1.11E-16 czy 2.22E-16.
Problemy mogą być, gdy np. uznamy że wolno zaokrąglać wartości mniejsze niż
epsilon zapisując je jako konkretnie zero. Albo gdy mniejsze od epsilon*coś.
Tego typu praktyki były w obliczeniach w Mathematica'e swego czasu - jak
część Im(z) < epsilon*coś to uznawało, że liczba jest czysto rzeczywista.
Przy "dobrym epsilon" zaokrąglenie w zero jest sensowne. Przy złym - będą
błędy. Jak duże? A to już zależy od szczegółów. Podobnie jak to było z
"Pentium bug".
Następne wpisy z tego wątku
- 01.11.12 21:30 slawek
- 01.11.12 23:23 slawek
- 02.11.12 09:05 AK
- 02.11.12 09:08 AK
- 02.11.12 09:37 AK
- 02.11.12 09:49 slawek
- 02.11.12 10:11 slawek
- 02.11.12 10:45 slawek
- 02.11.12 10:58 Roman W
- 02.11.12 12:28 kenobi
- 02.11.12 12:36 kenobi
- 02.11.12 15:54 slawek
- 02.11.12 15:59 slawek
- 02.11.12 22:05 Michoo
- 03.11.12 10:14 slawek
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