Sie speichern π nicht mit ungewöhnlicher Gleitkommapräzision. Sie verwenden einen falschen Wert für π mit doppelter Genauigkeit. Um ungefähr 3.1415926536 in Binärform zu approximieren , sind mindestens 38 Bit erforderlich:
3.14159265359922… > 11.001001000011111101101010100010001001
Beachten Sie, dass 2 ^ -36 ungefähr 1,5e-11 ist, was mit dem nachfolgenden 99 übereinstimmt. Gleitkomma mit doppelter Genauigkeit hat eine 52-Bit-Bedeutung. Um cos(pi/2)
als -5e-12 zu bewerten , wäre die einzig mögliche Wahl ein 48-Bit-Typ, was sehr seltsam wäre.
In der Nähe von 0 und π, wo die Ableitung nahezu Null ist, kann cos (θ) nicht sehr genau berechnet werden:
cos(3.1415926536) ≈ -0.999999999999999999999947911
Das unterscheidet sich von -1 um ungefähr 5.2e-23, was kleiner als ε für ist double
, und wird daher cos(3.1415926536)
als genau -1 berechnet ... was falsch ist.
In der Nähe von ± π / 2 beträgt die Ableitung [ -sin (θ) ] nahezu ± 1, sodass der Fehler am Eingang zum Ausgang wird.
cos(1.57079632679961) ≈ -4.71338076867830836e-12
cos(1.57079632679962) ≈ -4.72338076867830836e-12
cos(1.57079632680000) ≈ -5.10338076867830836e-12
Ich habe zufällig einen TI-Rechner, der eine Ziffer weniger anzeigt und cos(π/2)
als -5.2e-12 berechnet . Es ist jedoch elektronisch sehr unterschiedlich und wurde entwickelt, um einen genauen Wert für anzugeben cos(90°)
.
Ich würde vermuten, dass in Spotlight cos(pi/2)
berechnet wird, indem ein Wert für π abgerufen, in eine Dezimalzeichenfolge konvertiert , dieser als (exakter, rationaler) Binärwert gespeichert wird der wahre Wert von π / 2. Sie sollten herausfinden, ob cos(pi/2 + cos(pi/2))
es näher an Null liegt (es könnte -2,2e-35 sein).
Die Multiplikation mit einer Zweierpotenz sollte nur den Exponenten beeinflussen, nicht den Signifikanten. Es kann möglich sein, durch wiederholtes Halbieren oder Verdoppeln zu bestimmen, wie gerundet wird.