2016-11-30 16 views
-1

結果に近似を使用する場合(例えば、根を計算したり、いくつかの制限で除算する場合など)、正確な結果を何も知らなくても、結果?正確な結果を計算せずに15の10進数で結果を出力できますか?

私が取り組んでいる具体的な問題は、ニュートンの方法を使って2分の1(ビットシフト)だけを使ってC++でa/bを近似することです。近似は、15進数の15桁まで正確でなければなりません。しかし、私はbの正確な結果を知ることができない/ b!= 2、または私は間違っていますか?

すべての回答ありがとうございます。

+1

どのように値を表現しようとしていますか?固定小数点または 'double'値として。後者の場合、[浮動小数点数学は壊れていますか?](http://stackoverflow.com/questions/588004/is-floating-point-math-broken)を参照してください。 –

+0

@πάνταῥεῖ、私は 'double'値を使用していますが、これは私の質問にどう答えますか?小数点以下15桁を保証するので、単にdouble型を使うだけで十分ですか? –

+0

あなたの現在のコードを共有できますか? –

答えて

0

式を解く堅牢な方法は、各反復で範囲が狭くなるルートを含む範囲を計算することです。範囲が狭くなると停止します。例では1e-15未満です。

ニュートンは範囲を使用しませんが、ニュートンを2で除算する方法を想像できません。

+0

こんにちは@Eugene、 a/bは、乗算、加算、および減算のみを使用してニュートンの方法で計算できますが、乗算には除算を使用するKaratsubaのアルゴリズムが使用されます。 –