丸め
数値を有限精度で表す場合、使用可能な範囲のすべての数値を正確に表すことができるとは限りません。固定小数点数に対する演算の結果は、この数の元の形式より長いレジスタに通常格納されます。結果を元の形式に戻すときは、丸め手法を使用して値を表現可能な数値にキャストします。丸め演算では精度が失われ、量子化誤差と計算ノイズが生じます。丸め演算のコストと生じるバイアスの量は丸め手法によって異なります。
丸め手法の選択
丸め手法には、それぞれ固有の一連の特性があります。これらの特性により、その丸め手法が適しているかどうかが設計要件に応じて異なります。設計要件を把握し、各丸め手法の特性を理解することで、どれが最もニーズに合うかを判断できます。考慮すべき重要な特性は次のとおりです。
コスト — 使用しているハードウェアと関係なく、丸め手法にどれくらいの処理コストが必要か
低 — 手法に必要な処理サイクル数は少ない。
中 — 手法に必要な処理サイクル数は中程度である。
高 — 手法に必要な処理サイクル数は多い。
メモ
ここで示すコストの推定は、ハードウェアに依存しません。一部のプロセッサには丸めモードが内蔵されているので、各丸めモードの実際のコストを計算するには、使用するハードウェアを十分に検討してください。
バイアス — 丸めた値から元の値を引いた期待値 は何か
— この丸め手法によって負のバイアスが生じる。
— この丸め手法はバイアスなし。
— この丸め手法によって正のバイアスが生じる。
Fixed-Point Designer の丸めモード
コストとバイアスの間のトレードオフにおける柔軟性を最大にするため、Fixed-Point Designer™ 製品では現在、以下の丸め手法がサポートされています。
Fixed-Point Designer の丸めモード | 説明 | 等距離の場合の処理 | コスト | バイアス |
---|---|---|---|---|
正方向 | 正の無限大方向の最も近い表現可能な数値に丸めます。 | N/A | 低 | 大きい正の数値 |
最も近い偶数方向 | 最も近くの表現可能な数値に丸めます。 | 等距離のときは最も近い偶数に丸められます。 | 高 | バイアスなし |
負方向 | 負の無限大方向の最も近い表現可能な数値に丸めます。2 の補数切り捨てと同等です。 | N/A | 低 | 大きい負の数値 |
最も近い正の整数方向 | 最も近くの表現可能な数値に丸めます。 | 等距離のときは、正の無限大方向の最も近い表現可能な数値に丸められます。 | 中 | 小さい正の数値 |
最も近い整数方向 | 最も近くの表現可能な数値に丸めます。 |
| 高 |
|
最も簡潔 (Simulink® のみ) | Floor と Zero のどちらかを自動的に選択し、最も効率の高いコードを生成します。 | N/A | 低 | 処理によって異なる |
ゼロ方向 | ゼロ方向の最も近い表現可能な数値に丸めます。 | N/A | 低 |
|
診断のための丸めモードの選択
正方向の丸めと負方向の丸めは、診断に役立つことがあります。たとえば、一連の算術演算を実行すると、ワード サイズの制限により丸めが生じるので、正確な解がわからなくなることがあります。各演算が、2 回実行され、正の無限大方向の丸めと負の無限大方向の丸めが 1 回ずつ発生する場合は、正しい解の上限と下限を求めます。次に、結果が十分正確であるか、追加の解析が必要であるかを判断します。