Obliczam dowolny ułamek, albo i nawet wpisuję stałe typu: 7/15, lub 1/360, itp.
i potem używam to w obliczeniach i wychodzą błędy.
Przykładowo obliczamy wyrażenie typu:
s = -1/3 a + 4/3 b;
i tu wiadomo że dla a = b powinno być: s = a dokładnie,
no ale z obliczeń tak nie będzie;
double c1 = -1/3, c2 = 4/3;
c = c1 + c2,
i wcale nie będzie całe 1, lecz coś chyba mniej nieco.
No i chodzi mi właśnie o wyliczenie tych błędów reprezentacji,
tj. ile jest: e1 = c1 + 1/3 i e2 = c2 - 4/3 ?
Tego nie można obliczyć wprost, czyli tak:
double e1 = c1 - 1/3;
ponieważ to będzie równoważne z tym: c1 - c1 = 0.
Ale przecież błąd jest tu około taki: 0.0000000000000000333333333333333333,
czyli spokojnie wejdzie do double w postaci: 3.333333333333333e-17
bo zasięg jest tu aż do 1e-300, chyba.
No ale jak to obliczyć?
1/360 - fl(1/360) = ?
i inne takie - w zasadzie dowolne liczby.
fl(1e44/5465333333333333333) - 1e44/5465333333333333333 = ?