PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : FP-Genauigkeit in Dezimalstellen


aths
2003-12-11, 16:31:13
Bislang rechnete ich so:

log 2^(Bits in der Mantisse)

Das gilt aber nur für 0, ... genauer gesagt, für 0,5 - 0,99. Ich möchte es aber gerne "allgemeingültig". Angenommen, man hat dezimal 9,xxxxx. Dann braucht man für die 9 ja schon 4 Bitstellen.

Wie rechnet man also Mantissen-Länge in die "relevanten" Dezimalstellen genau um?

Gast
2003-12-11, 18:03:22
Vielleicht versteh ich dich nicht richtig. Aber soweit ich weiss werden gleit/punktkommazahlen erstmal "normalisiert" ,also die Mantise kleiner 1 gemacht und der Exponent (der ja nur für die Größenordnung) halt angepasst.

zeckensack
2003-12-11, 18:27:10
Das ist jetzt vielleicht nicht genau das, was du hören willst, aber egal ;)

FP zeichnet sich durch einen maximalen prozentualen Fehler aus.

Nehmen wir eine Darstellung mit nur 2 Bit Mantisse (normalisiert und mit "hidden bit").
Alle Zahlen aus dem Intervall [7.0;9.0) werden durch Rundung zu 8.0. Für die 8.0 selbst ist das präzise, und die schlimmstmögliche Abweichung ist 1.0, respektive 12.5% (=2^-3).

Du nimmst also x:=die Anzahl der Mantissenbits; die maximale Abweichung der Darstellung von der 'eigentlichen' Zahl ist dann 2^-(x+1). Mal von denormalisierten Zahlen, und überhaupt vom begrenzten Wertebereich abgesehen - Exponent ahoi :)

Dann musst du nur noch aus den Prozenten möglichst grosszügig die Dezimalstellen basteln. In unserem Beispiel ist der Fehler manchmal >=10%, also hat die Darstellung eigentlich überhaupt keine signifikanten Dezimalstellen :D

Davon würde ich erst sprechen, wenn der Fehler immer <10% ist (und sinngemäss für 10^-n).

Xmas
2003-12-11, 21:30:32
Original geschrieben von aths
Bislang rechnete ich so:

log 2^(Bits in der Mantisse)

Das gilt aber nur für 0, ... genauer gesagt, für 0,5 - 0,99. Ich möchte es aber gerne "allgemeingültig". Angenommen, man hat dezimal 9,xxxxx. Dann braucht man für die 9 ja schon 4 Bitstellen.

Wie rechnet man also Mantissen-Länge in die "relevanten" Dezimalstellen genau um?
Ich verstehe nicht ganz was du meinst. Du sagst das so als würdest du die 9 gar nicht mitzählen, dabei passt das doch. Mit 4 Bit Mantisse hast du floor(log(2^4)) = 1 signifikante Dezimalstelle. Bei 10 Bit Mantisse sind es gerade 3.

Gast
2003-12-11, 22:31:27
Was haben bitte signifikante Dezimalstellen damit zu tun ? :|

Xmas
2003-12-11, 23:25:15
Original geschrieben von Gast
Was haben bitte signifikante Dezimalstellen damit zu tun ? :|
Was meinst du?

aths
2003-12-12, 08:34:31
Original geschrieben von Xmas
Ich verstehe nicht ganz was du meinst. Du sagst das so als würdest du die 9 gar nicht mitzählen, dabei passt das doch. Mit 4 Bit Mantisse hast du floor(log(2^4)) = 1 signifikante Dezimalstelle. Bei 10 Bit Mantisse sind es gerade 3. Hm, jede Dezimalstelle braucht ja 3,32 Bits. Mit drei signifikanten 9-er Stellen dann 9,96 Bits, so dass die 10-Bit-Mantisse reichen sollte. Ok.