-
21. Data: 2019-06-16 21:21:20
Temat: Re: Porównywanie liczb, double float
Od: AK <n...@n...net>
On 2019-06-12 17:27, J.F. wrote:
> Kto nie uczyl sie Fortranu, ten nie zna zycia :-)
O przepraszam ! Ja sie uczylem Agolu/Simuli!
PS: No dobra.. Fortranu też ;)
AK
-
22. Data: 2019-06-16 21:40:41
Temat: Re: Porównywanie liczb, double float
Od: AK <n...@n...net>
On 2019-06-12 16:54, Cezary Grądys wrote:
> W dniu 12.06.2019 o 14:29, Mateusz Viste pisze:
>
>>
>> Prawdziwi programiści nie używają liczb zmiennoprzecinkowych.
>>
>> Obowiązkowa lektura na wieczór:
>> http://perso.ens-lyon.fr/jean-michel.muller/goldberg
.pdf
>>
>
> Nie ma co przesadzać, liczby zmiennoprzecinkowe po to powstały, żeby je
> używać. Trzeba tylko porównywać je zakładając pewną dopuszczalną
> tolerancję.
No dooobra.
Zamieszcze tu po raz 473 w ciagu 20 lat podstawową formułkę
(Ba! KANON!), bo przy takiej wiedzy "mlodego pokolenia" znow
zaczną nam przychodzic ponaglenia o pilną zapłatę 0.00PLN.
a == b -> fabs(a - b) <= EPS
a != b -> fabs(a - b) > EPS
a < b -> (a - b) < -EPS
a > b -> (a - b) > EPS
a <= b -> (a - b) <= EPS
a >= b -> (a - b) >= -EPS
PS: Oczywiscie EPS moze miec rozna nature i wartosci zaleznie np.
od domeny (numeryka, finanse itp). Np. Moze byc bezwzgledne, ale
czesto bywa wzgledne, a w numeryce to juz w ogole...
Np. w optymalizacji moze byc dynamiczne (np zalezne nie tylko
od wartosci ale i innych cech funkcji, np gradientu) i sztuka
sama w sobie jest je dobierac/szacowac np w slabo zbieznych algorytmach
czy gdy np. funcja jest baaardzo stroma. No ale to juz zupelnie inna
"para kaloszy".
PS0: Oczywiscie w niektorych "higienicznych" przypadkach (np. szukanie
wartosci maksymalnej) dopuszczalne jest zwykłę >, ale to nie
łamie/przeczy w/w regułom.
AK
-
23. Data: 2019-06-16 21:43:50
Temat: Re: Porównywanie liczb, double float
Od: AK <n...@n...net>
On 2019-06-13 15:37, Pszemol wrote:
> "Mateusz Viste" <m...@n...pamietam> wrote in message
> news:5d00f035$0$15194$426a74cc@news.free.fr...
>> On Wed, 12 Jun 2019 07:17:45 -0500, Pszemol wrote:
>>> Pisząc w Visual Basic 6 gostek porównywał rezultat konwersji CDbl()
>>> stringu od którego odjął stałą numeryczną 1.8 do lokalnej zmiennej
>>> double.
>>
>> Prawdziwi programiści nie używają liczb zmiennoprzecinkowych.
>
> Faktem jest, że gdy zmienne nie skaczą dynamicznie od e-15 do e+15 to
> warto znaleźć zakres wariacji mierzonej zmiennej, oczekwianą dokładność
> i zamiast na float operować na long integer * 10000 na przykład...
1. ile masz takich przypadkow w zyciu (owszem, fraktale).
2. przy dzisiejszych koprocesorach ? Na pewno warto ?
/Kiedys zdecydowanie tak, wiec absolutnie podejscia nie potępiam/.
AK
-
24. Data: 2019-06-16 22:10:11
Temat: Re: Porównywanie liczb, double float
Od: Szyk Cech <s...@s...pl>
> Musialbym sobie przypomniec ... ale przy okazji Assemblera raczej nikt
> nie poruszal takiego watku.
Pierwsze publikacje o Asemblerze x86 pomijały 386 i koprocesor.
W takiej "Asembler nie tylko dla orłów" Grzegorza Michałka
(Intersoftland 1997) jest opisany 386 (i 486) z koprocesorem. I co
prawda nie rozwodzi się tam nad dokładnością obliczeń, ale... Podaje
jako jeden z możliwych błędów/wyjątków: "Utrata precyzji"/"Błąd
precyzji" - bit 6 rejestru stanu koprocesora.
> Przy C predzej, ale to gdzies na pograniczu.
Tak czy owak nie powinno się pomijać kilku słów komentarza, podczas
omawiania typów zmiennoprzecinkowych, na temat potencjalnych problemów
przy ich stosowaniu.
-
25. Data: 2019-06-17 09:21:05
Temat: Re: Porównywanie liczb, double float
Od: Mateusz Viste <m...@n...pamietam>
On Sun, 16 Jun 2019 21:43:50 +0200, AK wrote:
> On 2019-06-13 15:37, Pszemol wrote:
>> "Mateusz Viste" <m...@n...pamietam> wrote in message
>> news:5d00f035$0$15194$426a74cc@news.free.fr...
>>> On Wed, 12 Jun 2019 07:17:45 -0500, Pszemol wrote:
>>>> Pisząc w Visual Basic 6 gostek porównywał rezultat konwersji CDbl()
>>>> stringu od którego odjął stałą numeryczną 1.8 do lokalnej zmiennej
>>>> double.
>>>
>>> Prawdziwi programiści nie używają liczb zmiennoprzecinkowych.
>>
>> Faktem jest, że gdy zmienne nie skaczą dynamicznie od e-15 do e+15 to
>> warto znaleźć zakres wariacji mierzonej zmiennej, oczekwianą dokładność
>> i zamiast na float operować na long integer * 10000 na przykład...
>
> 1. ile masz takich przypadkow w zyciu (owszem, fraktale).
> 2. przy dzisiejszych koprocesorach ? Na pewno warto ?
> /Kiedys zdecydowanie tak, wiec absolutnie podejscia nie potępiam/.
Koprocesory nie mają tu nic do rzeczy - na 386SX też dało się korzystać z
float, mimo braku FPU. Oczywiście kosztem wydajności, ale nie o tym
przecież mówimy.
Float/Double ze swojej natury nie zapewnia dokładności i dlatego to je
skreśla w większości zastosowań w których ludzie intuicyjnie z nich
korzystają (głównie: liczenie pieniędzy). Fakt - są sytuacje kiedy float
*może* być dobrym rozwiązaniem: fraktale, przetwarzanie grafiki lub
dźwięku i generalnie wszystko, co nie wymaga ścisłego wyniku. Ale to -
przynajmniej z mojego punktu widzenia - specjalistyczne wyjątki.
Mateusz
-
26. Data: 2019-06-17 09:39:08
Temat: Re: Porównywanie liczb, double float
Od: Piotr Wyderski <p...@n...mil>
Mateusz Viste wrote:
> Prawdziwi programiści nie używają liczb zmiennoprzecinkowych.
Prawdziwi programiści nie używają liczb zmiennoprzecinkowych bezmyślnie.
A żeby to móc robić "zmyślnie" mają co najmniej półroczny zaawansowany
wykład z analizy numerycznej. Oczywiście zdarzają się i tacy, co byli
za mądrzy na studia i użeranie się z profesorami-debilami, dzięki czemu
m.in. Pszemol ma fun.
Pozdrawiam, Piotr
-
27. Data: 2019-06-17 09:43:43
Temat: Re: Porównywanie liczb, double float
Od: Piotr Wyderski <p...@n...mil>
AK wrote:
> No dooobra.
> Zamieszcze tu po raz 473 w ciagu 20 lat podstawową formułkę
> (Ba! KANON!), bo przy takiej wiedzy "mlodego pokolenia" znow
> zaczną nam przychodzic ponaglenia o pilną zapłatę 0.00PLN.
[ciach formułki]
I nie mówcie mi, że na macie NaNa, bo w każdej chwili mieć możecie!
(sprawdzić, czy nie ksiądz).
Pozdrawiam, Piotr
-
28. Data: 2019-06-17 09:48:10
Temat: Re: Porównywanie liczb, double float
Od: Piotr Wyderski <p...@n...mil>
AK wrote:
> 1. ile masz takich przypadkow w zyciu (owszem, fraktale).
Z okolic "numerków", to filtry Hogenauera chyba tylko. Tam przepełnienia
stałoprzecinkowe i ich wzajemna kompensacja
są podstawą całej sztuczki.
Pozdrawiam, Piotr
-
29. Data: 2019-06-17 09:53:42
Temat: Re: Porównywanie liczb, double float
Od: Mateusz Viste <m...@n...pamietam>
On Mon, 17 Jun 2019 09:39:08 +0200, Piotr Wyderski wrote:
> Prawdziwi programiści nie używają liczb zmiennoprzecinkowych bezmyślnie.
> A żeby to móc robić "zmyślnie" mają co najmniej półroczny zaawansowany
> wykład z analizy numerycznej. Oczywiście zdarzają się i tacy, co byli za
> mądrzy na studia i użeranie się z profesorami-debilami, dzięki czemu
> m.in. Pszemol ma fun.
Wszystko się zgadza, z tym że wniosek "był na studiach = wie co robi"
jest co najmniej nietrafiony. De facto studia - przynajmniej w sektorze
IT - to nic więcej jak strata czasu. Nie gwarantują one ani wiedzy, ani
pomyślunku, a zarówno to pierwsze jak i drugie można bez problemu nabyć
poza murami uczelni.
Mateusz
-
30. Data: 2019-06-17 12:59:41
Temat: Re: Porównywanie liczb, double float
Od: Piotr Wyderski <p...@n...mil>
Mateusz Viste wrote:
> Wszystko się zgadza, z tym że wniosek "był na studiach = wie co robi"
> jest co najmniej nietrafiony. De facto studia - przynajmniej w sektorze
> IT - to nic więcej jak strata czasu. Nie gwarantują one ani wiedzy, ani
> pomyślunku, a zarówno to pierwsze jak i drugie można bez problemu nabyć
> poza murami uczelni.
Studia w ogóle niczego nie gwarantują, bo nie od tego są. Mają tylko za
zadanie zmusić delikwenta do nauki rzeczy, których bez przymusu sam by
się nie nauczył. Między innymi właśnie "numerków". Rzetelny kurs analizy
numerycznej z realną opcją wylotu w przypadku niezaliczenia
nieco się różni od poczytania sobie ballady o floacie do podusi.
Dokładnie tak samo w przypadku algorytmiki i złożoności obliczeniowej. A
przynajmniej tak było w moich czasach.
Pozdrawiam, Piotr