PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wie bekommt man den exponent von doubles


SimonX
2004-06-14, 10:53:51
Gibt es da eine Standardfunktion die einem den Exponent eines doubles gibt? Das IEEE Format hat das ja direct als Bit-Wert, nur habe ich keine Standardfunktion gefunden die einem das als integer liefert.

Ich brauche das, um dan erwarteten Fehler bei Rechenoperationen zu verfolgen.

Z.b.:

1000000000000+0.000000000001

Doubles habe eine Präzision von 16 digits.

Somit ist hier der Fehler 1e (16-13) = 1e-3 = 0.001

DocEW
2004-06-14, 11:05:42
Ich glaube nicht, daß es eine Standardfunktion gibt (welche Sprache benutzt du überhaupt?). Kannst du aber doch relativ leicht ausrechnen, indem du zählst, wie oft du durch 2 Teilen mußt, um die Zahl kleiner als 1 zu machen. Oder so ähnlich, ich kann mir nie merken, ob IEEE normiert ist und der Exponent mit Bias abgespeichert wird usw.

Trap
2004-06-14, 11:24:56
Bei IEEE754 doubles ist der Exponent in Bias-Darstellung gespeichert.

Es gibt soweit ich weiß keine fertige Funktion, du könntest die log-Funktionen benutzen oder selbst direkt auf die Bits zugreifen.

Was ist der Exponent eine denormalisierten Zahl oder von NaN, +inf oder -inf?

Obligaron
2004-06-14, 14:13:41
Wie wäre es mit http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_crt_frexp.asp ?

MfG,
Obligaron

Trap
2004-06-14, 16:32:55
Scheint zu passen. Ist sogar definiert was bei +-inf oder Nan passiert.

http://www.opengroup.org/onlinepubs/007908799/xsh/frexp.html