私は(ほぼ)IEEE 854準拠の浮動小数点実装をTeX(これは32ビット整数のみをサポートしています)に書いています。この標準は、+
、-
、*
、/
、比較、剰余、およびsqrt
の結果を指定します。これらの操作のために、結果は、(丸めモードに従って)表現可能な数値に厳密な結果を丸めると同一であるべきです。非常に大きな正弦波の標準
IEEEは、超越関数(sin
、exp
...)が忠実な結果をもたらすべきであることを指定していることを思い出しているようです(デフォルトの丸めモードでは、正確な結果を表す2つの表現可能な数値)。小数の正弦を計算することは簡単です:[0,2 * pi]の範囲の数値を得るために2 * piの倍数だけシフトさせ、[0、pi/4] 、およびテイラーシリーズを使用します。
ここで、sin(1e300)を計算したいとします。そのためには、1e300 modulo 2 * piを見つける必要があります。それはpiの300(316?)小数を知ることを必要とします、なぜなら16小数しかないので、結果は何の意味も持たないからです(特に忠実ではありません)。
sin(1e300)
の結果と同様の非常に大きな数値には何の基準がありますか?
他の浮動小数点実装は何をしますか?
+1興味深い問題の良い説明(これまで考えていなかった) – pavium