2011-07-20 3 views
0

これはアルゴリズムの高速化とストレージスペースの削減をもたらし、これはソフトウェアが過去数十年のハードウェア上で動作するための重要な機能であったと考えていますが、これはまだ重要な機能ですか?計算が正確な合理的な算術で行われた場合、丸め誤差は全くなくなり、致命的なキャンセルやそれに類することをもはや心配する必要がなくなるので、多くのアルゴリズムが単純化されます。標準的なコンピュータアルゴリズムで数値が丸められているのはなぜですか?

+4

いいえ、数字は丸められません。 CPUはあなたが与えるすべてのビットを使用します。 10の代わりに2つの指でカウントすると、浮動小数点値を制限された桁数に丸めることによって隠された副作用があります。そうでなければ10/3の問題と違いはありませんが、あなたが3本の指で数えると素晴らしい結果しか得られないものです。 –

+3

すべての数値が合理的であるわけではありません。正確さにかかわらず、コンピュータ上で正確にpiを乗算することはできません。 – Wyzard

+1

不合理な番号http://en.wikipediaを忘れないでください。org/wiki/Irrational_number – MadcoreTom

答えて

3

浮動小数点は、任意精度のシンボルパッケージよりもはるかに高速であり、12-16の有効数字は、通常、非整数計算が関係する厳しい科学/エンジニアリングアプリケーションにとって十分です。

1

多くの数値アルゴリズムでは、十分に機能するには固定精度の数値が必要です。このような計算はハードウェアで実装することができます。数値はレジスタに完全に収まるため、任意の精度計算はソフトウェアで実装する必要があり、両者のパフォーマンスには大きな違いがあります。生き残るために数字を決める人には、Xの量が遅いものであればOKかどうかを問う人に尋ねます。彼らはおそらく「それは完全に実行不可能です」と言うでしょう。

また、任意の精度を持つことは実用的でなく、不可能であることがわかります。たとえば、小数点以下の桁数は、十分に速くなり、いくつかの値を落とすことができます。そして、あなたは正方形に戻ります:丸められた数の問題!

最後に、特定の精度を超える数値は、とにかく問題にならないことがあります。例えば、一般に有効数字のn桁は実験の不確実性のレベルを反映すべきである。

だから、どのアルゴリズムを覚えていますか?

0

伝統的に、整数演算はハードウェアで実装する方が簡単で安価です(ダイのスペースを少なくして、そこにユニットを追加することができます)。特にDSPセグメントに入ると、これは大きな違いを生むことがあります。

1

大部分の計算では、答えを正確に計算するために必要な数値のサイズは、計算に手間がかかりすぎるほど大きくなります。多くの計算では、可能である。数十回の反復で単純な3次IIRフィルタのようなものを実行しても、分母に数千ビットの分数が必要であると考えてください。数千回の反復(ほとんど例外的な操作ではない)アルゴリズムを実行すると、宇宙の原子が存在するより多くのビットを分母に必要とする可能性があります。

2

プログラミング言語ABCは可能な限り有理数(x/yはxとyが整数)を使用しました。分子と分母が大きい非常にになっていたので

時々、計算が非常に遅くなります。

したがって、分子と分母に何らかの制限を設けないと、それは悪い考えです。

関連する問題