0

私は組み込みプラットフォームで作業しており、いくつかのアルゴリズムで浮動小数点乗算を行うためのより高速な方法が必要です。高速な実装を知っている人はいますか?速度のために精度を犠牲にすることができます。

4

1 に答える 1

1

ターゲットに FPU がある場合、可能な限り高速に浮動小数点乗算を実行します。ただし、FPU がない場合は、代わりに固定小数点演算を使用することをお勧めします。

C で固定小数点演算を使用することは、組み込みの固定小数点データ型がないという事実によって複雑になります。すべての操作は明示的な関数呼び出しであり、C++ ではあまり自然でも読みやすくもありませんが、次のようにfixedクラスを定義することは可能です。演算子と関数のオーバーロード (固定小数点の使用は単にfloatordoubleを置き換えるケースでありfixed、型間の自動変換を含みます)。単純な算術演算子だけでなく、包括的な数学ライブラリを含むそのようなライブラリの 1 つがここにあります。ARM では、通常、ソフトウェア浮動小数点よりも 5 倍高速です。

C++ コードの使用が心配な場合は、ほとんどの場合、C++ コンパイルを使用して固定小数点ライブラリをサポートできますが、基本的に組み込みfixed型があるかのように C コードを記述できます。つまり、このライブラリの利点を得るために C++ を使用したり、C++ を熟知したりする必要はなく、C としてコンパイルされた同じコードのオーバーヘッドはありません。

于 2013-05-31T15:38:51.993 に答える