-
41. Data: 2012-11-05 11:07:52
Temat: Re: Błędny epsilon - this is not a bug, this is ?
Od: Michoo <m...@v...pl>
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
-
42. Data: 2012-11-05 11:52:16
Temat: 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:k76nvs$vn2$...@n...task.gda.pl...
> Przy zlym algorytmie (nie dbajacym o to aby ta kumulacja sie znosila)
> pomnozenie "maszynowego"
> epsilona nawet przez przyslowiowy milion nie wystarczy :)
O, to czekam na program przewidujący kumulację w Lotto. ;)
> Ja sie juz na tym (numeryce/matmie) neistety nie znam (numeryka zajmowalem
> sie rowno 25lat temu),
> ale skupainie sie na maszynowym epsilonie chyba jednak i dzis
> charakretyzuje (przynajmniej powinno)
> numeryczne zbureczanie.
A konkretnie czym się zajmowałeś 25 lat temu?
Rozumiem, że za takie samo "zbureczanie" (pisownię pozostawiłem bez zmian)
uważasz np. CFL?
-
43. Data: 2012-11-05 12:14:41
Temat: 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:k76ois$1r3$...@n...task.gda.pl...
> Glupi zburaczaly palancie :)
Nie pisz opinii na swój temat - to zdecydowanie NTG.
> Odra 1325/1305 to byl klon rodziny jak najbardziej angielskiego komputera
> (a wlasciwie calej rodziny) ICL 1900 :)
Delikatnie ujmując - kopia. Używane bywało tu i owdzie (ba, nawet był
program robiący papier toaletowy - maketape się nazywał).
> PS: I nie wyjezdzaj mi tu z komunizmem, bo moje inicjaly nie sa
> przypadkowe.
Oczywiście że nie są - inicjały to pierwsze litery z imienia i nazwiska,
nazwisko jest z dużym prawdopodobieństwem po ojcu ew. matce, imię to albo
jaki święty, albo inna tradycja. Gdzie tu przypadkowość? Chyba tylko w tym,
że kiedyś gdzieś była taka organizacja itd. - no, łatwiej i przyjemniej mieć
inicjały AK niż ZAIKSS czy UPA (np. Urszula Partycja A.).
-
44. Data: 2012-11-05 12:48:37
Temat: Re: Błędny epsilon - this is not a bug, this is ?
Od: "slawek" <s...@h...pl>
Użytkownik "Michoo" <m...@v...pl> napisał w wiadomości grup
dyskusyjnych:k783go$q3k$...@m...internetia.pl...
> Jest, ale wynika z czego innego niż myślisz.
Pożycz szklanej kuli - tej dzięki której wiesz co ja myślę. ;)
> 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.
Typ double (tj. zmienne tego typu) sam z siebie się nie potrafią dodawać.
> float.h jest częścią standardu i odnosi się do standardowych typów
Tj. o jakim standardzie piszesz?
> 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ć?
Owszem. I to jest /nieco/ dziwaczne uczucie, że chyba tak się powinno robić.
> 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.
Wyznanie, że mało znasz ludzi robiących obliczenia numeryczne, a w
szczególności wśród tych osób nikogo takiego co przykłada jakiekolwiek
znaczenie do wartości epsilon?
-
45. Data: 2012-11-05 13:04:18
Temat: Re: Błędny epsilon - this is not a bug, this is ?
Od: "slawek" <s...@h...pl>
Użytkownik "Adam Wysocki" <g...@s...invalid> napisał w wiadomości grup
dyskusyjnych:g...@n...chmurka.net...
> Czy ty się kiedyś ośle nauczysz wycinać cytaty? Czy przerasta to twoje
> zdolności intelektualne?
Panie Adamie, zadam takie osobiste pytanie: czy kiedykolwiek nauczy się pan
zachowywać cywilizowany poziom dyskusji, czy też przekracza to pana
możliwości w sensie tzw. kompetencji miękkich?
> Wycinać cytaty i zawijać wiersze.
Panie Adamie, czy mamy panu pomóc skonfigurować czytnik news'ów, czy jednak
potrafi sam pan to zrobić? Bo z pańskiej, dość panicznie brzmiącej (gdy
odczytać ją na głos), korespondencji wynika, iż niezawinięte wiersze są dla
pana źródłem niewyobrażalnej udręki. A jako ludzie dobrego serca chętnie
pomożemy.
-
46. Data: 2012-11-05 13:10:38
Temat: Re: Błędny epsilon - this is not a bug, this is ?
Od: Michoo <m...@v...pl>
On 05.11.2012 12:48, slawek wrote:
>
> Użytkownik "Michoo" <m...@v...pl> napisał w wiadomości grup
> dyskusyjnych:k783go$q3k$...@m...internetia.pl...
>> Jest, ale wynika z czego innego niż myślisz.
>
> Pożycz szklanej kuli - tej dzięki której wiesz co ja myślę. ;)
>
>> 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.
>
> Typ double (tj. zmienne tego typu) sam z siebie się nie potrafią dodawać.
Ale można je dodać zgodnie ze standardem i niezgodnie ze standardem.
>
>> float.h jest częścią standardu i odnosi się do standardowych typów
>
> Tj. o jakim standardzie piszesz?
ISO/IEC 9899:TC3
Tu jest nawet napisane znacznie dobitniej co ma być w EPS_DOUBLE:
The values given in the following list shall be replaced by constant
expressions with implementation-defined (positive) values that are less
than or equal to those shown:
- the difference between 1 and the least value greater than 1 that is
representable in the given floating point type, b1- p
Więc powyższe nie zostawia już chyba wątpliwości, która wartość jest
poprawna?
>
>> 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.
>
> Wyznanie, że mało znasz ludzi robiących obliczenia numeryczne,
Nie aż tak dużo - to fakt.
> a w
> szczególności wśród tych osób nikogo takiego co przykłada jakiekolwiek
> znaczenie do wartości epsilon?
Nie. Epsilon jako dokładność obliczeń (do czego się odwoływałeś) używa
się ewentualnie w opisie algorytmu. Jako wartość w programie przyjmuje
się różne EPS (odległość miedzy wartościami) zależnie od zakresu na
którym się pracuje, zazwyczaj do określenia relacji równoważności i są
to setki albo tysiące razy większe wartości niż EPS_DOUBLE podczas
liczenia na double.
W niektórych przypadkach gdy obliczenia są robione w okolicy "granic"
typów aby zachować informację o rozmiarze błędu używa się przedziałów.
--
Pozdrawiam
Michoo
-
47. Data: 2012-11-05 16:17:41
Temat: [off] Re: Błędny epsilon - this is not a bug, this is ?
Od: "AK" <n...@n...com>
Użytkownik "slawek" <s...@h...pl> napisał:
> Nie pisz opinii na swój temat - to zdecydowanie NTG.
Nie. Ja pisze o Tobie.
Burakiem (tak tak, mimo ze "hrabią" to jednak burakiem), chamem
i palantem zaczales byc dla mnie od momentu przeczytania tych
twych slow do Bartka:
"
@bartekltg
>Będziesz miał syf. To nie sa integery, nie powinno się działać
>na 'ostatnich bitach'.
@slawek
Nie będę miał. Nie znam twojej siostry. Te zdania mają tyle ze sobą
wspólnego, co podany przykład z liczbami integer.
"
i pozostaniesz dopóki nie przeczytam slow twych przeprosin do Bartka.
Nie trac czasu na sazniste "tlumaczace" cie epistoly jak poprzednio.
Mnie nie przekonaly kompletnie (mam nadzieje ze wiekszosci grupowiczow tez nie).
Tym bardziej, ze (jak sam sie chwalisz), masz "niebieska krew".
Do momentu ew. przeprosin bede dalej w stosunku do ciebie uzywal
tych zasadnych epitetow.
Co nie znaczy, ze bede sie jeszcze do ciebie odzywal.
AK
-
48. Data: 2012-11-05 16:33:32
Temat: Re: [off] Re: Błędny epsilon - this is not a bug, this is ?
Od: Marek Borowski <m...@...borowski.com>
On 2012-11-05 16:17, AK wrote:
> Użytkownik "slawek" <s...@h...pl> napisał:
>
>> Nie pisz opinii na swój temat - to zdecydowanie NTG.
>
> Nie. Ja pisze o Tobie.
>
> Burakiem (tak tak, mimo ze "hrabią" to jednak burakiem), chamem
> i palantem zaczales byc dla mnie od momentu przeczytania tych
> twych slow do Bartka:
>
> "
> @bartekltg
>> Będziesz miał syf. To nie sa integery, nie powinno się działać
>> na 'ostatnich bitach'.
>
> @slawek
> Nie będę miał. Nie znam twojej siostry. Te zdania mają tyle ze sobą
> wspólnego, co podany przykład z liczbami integer.
> "
> i pozostaniesz dopóki nie przeczytam slow twych przeprosin do Bartka.
> Nie trac czasu na sazniste "tlumaczace" cie epistoly jak poprzednio.
> Mnie nie przekonaly kompletnie (mam nadzieje ze wiekszosci grupowiczow
> tez nie).
> Tym bardziej, ze (jak sam sie chwalisz), masz "niebieska krew".
> Do momentu ew. przeprosin bede dalej w stosunku do ciebie uzywal
> tych zasadnych epitetow.
> Co nie znaczy, ze bede sie jeszcze do ciebie odzywal.
>
Daj spokoj, osoba o ktorej piszesz to jakis malutki czlowiek,
odreagowujacy swoje frustracje z realu w necie, ktory w kazdym poscie
obraza ludzi. Bardzo dziwie sie ze wogole ktos chce z nim wspolpracowac.
Napisze cos co moze powiekszyc jego rozdete ego (o ile wogole da sie
takiemu bufonowi je powiekszyc) - w jednym jest wyjatkowy, udalo mu sie
jako jedynej osobie przekonac mnie do dopisania jej do KF, co zreszta
polecam wszystkim.
Pozdrawiam
Marek
-
49. Data: 2012-11-05 19:38:58
Temat: Re: [off] Re: Błędny epsilon - this is not a bug, this is ?
Od: "slawek" <s...@h...pl>
Użytkownik "Marek Borowski" <m...@...borowski.com> napisał w wiadomości grup
dyskusyjnych:k78m8t$6v7$...@n...icm.edu.pl...
> takiemu bufonowi je powiekszyc) - w jednym jest wyjatkowy, udalo mu sie
> jako jedynej osobie przekonac mnie do dopisania jej do KF, co zreszta
Bardzo mądre zalecenie - jeżeli ktoś jest bufonem i/lub lemingiem - to od
razu powinien mnie dopisać do KF.
-
50. Data: 2012-11-05 19:53:06
Temat: Re: Błędny epsilon - this is not a bug, this is ?
Od: "slawek" <s...@h...pl>
Użytkownik "Michoo" <m...@v...pl> napisał w wiadomości grup
dyskusyjnych:k78amt$rth$...@m...internetia.pl...
> ISO/IEC 9899:TC3
Ok. Trzeba będzie sprostować w kilku miejscach - i powołanie się na
/konkretny/ standard ułatwi sprawę.