2016-12-16 6 views
0

sin関数の倍精度バージョンの実装を探しています。 mpfrライブラリ(C/C++ソースコード)を読み込もうとしていますが、実際の実装に関連するコードは見つかりません。複数精度の基本関数の実装

このような場合に引数の削減がどのように実行されるかは、複数の精度で表現されています。piの逆数を表す巨大なLUTが格納されている可能性があります。場合によっては仮数サイズを意味する)。

具体的な情報源を教えてください。このコードは読み込みが非常に複雑です。

答えて

1

指数範囲が大きすぎるため、巨大なLUTでは範囲の縮小が実装されていません。これは不可能です。実行されるのは、十分な精度でpiを計算することです。次の三角関数の呼び出しのためにpiの値がキャッシュされ、さらに精度が必要になるたびにpiが再計算されます。

MPFRのソースを参照して、および/またはalgorithms.pdfをLaTeXのdocディレクトリからビルドして情報を入手できます。しかし、この文書は常に最新のものではなく、一部の情報が欠落している可能性があります。

+0

十分な精度ではどういう意味ですか?三角関数を評価するたびに計算されますか? – user8469759

+0

@ user8469759関数の実装は、(動的に決定される)ある精度を持つ変数で 'mpfr_const_pi'を呼び出します。たとえば、変数の精度が500ビットで、piのキャッシュされた値の精度が600ビットの場合、piは再計算されません。 piのキャッシュされた値の精度が400ビットの場合、関数 'mpfr_const_pi'はpiを再計算して少なくとも500ビットの精度を得ます。 – vinc17

+0

逆の代わりに 'pi'が必要なのはなぜですか(' 1/pi')? – user8469759