Main Content

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

精度と範囲

メモ

丸め手法が呼び出されるかオーバーフローやアンダーフローが発生するかを把握するには、選択した固定小数点データ型およびスケーリングの精度と範囲に注意しなければなりません。

範囲

範囲とは、固定小数点データ型とスケーリングで表現できる数値の範囲です。以下に、語長 wl、スケーリング S およびバイアス B の 2 の補数の固定小数点数で表現可能な数値の範囲を示します。

データ型が符号付きと符号なしの固定小数点数のどちらでも、異なるビット パターン数は 2wl です。

たとえば、2 の補数では、ゼロと同様に負の数値も表現しなければならないので、最大値は 2wl -1 – 1 です。ゼロの表現は 1 つしかないため、正の数値と負の数値の数が異なります。つまり、2wl1 の表現はありますが、2wl1 の表現はありません。

オーバーフローの処理

固定小数点のデータ型は有限範囲内の数値を表すため、演算の結果がその範囲の数値より大きいまたは小さい場合、オーバーフローとアンダーフローが発生する可能性があります。

Fixed-Point Designer™ ソフトウェアでは、オーバーフローを "飽和" または "ラップ" できます。飽和は、正のオーバーフローを使用する範囲内の最大の正の数値として表し、負のオーバーフローを使用する範囲内の最大の負の数値として表します。ラップはモジュロ演算を使用して、オーバーフローをそのデータ型の表現可能な範囲内にキャストします。

fi オブジェクトを作成するとき、オーバーフローはすべて飽和されます。既定の fimath の OverflowAction プロパティは saturate です。fipref オブジェクトの LoggingMode プロパティを on に設定すると、オーバーフローやアンダーフローのログを作成できます。詳細は、LoggingModeを参照してください。

精度

固定小数点数の精度は、そのデータ型とスケーリングで表現できる連続値間の差異で、最下位ビットの値と等価です。最下位ビットの値、つまり数値の精度は小数部のビット数によって決まります。固定小数点値は、そのデータ型とスケーリングの精度の半分以内で表現できます。

たとえば、2 進小数点の右側が 4 ビットの固定小数点の表現は、精度が 2-4、つまり 0.0625 であり、最下位ビットの値になります。このデータ型とスケーリングの範囲内の数値はすべて (2-4)/2、つまり 0.03125 以内で表現でき、これは精度が半分になります。これは有限精度の数値を表す例です。

丸め手法

数値を有限精度で表す場合、使用可能な範囲のすべての数値を正確に表すことができるとは限りません。指定したデータ型とスケーリングで数値を正確に表すことができない場合は、丸め手法を使用して値を表現可能な数値にキャストします。丸め演算では精度が失われますが、演算のコストと生じるバイアスの量は丸め手法によって異なります。コストとバイアスの間のトレードオフにおける柔軟性を最大にするため、Fixed-Point Designer ソフトウェアでは現在、以下の丸め手法がサポートされています。

  • Ceiling は、正の無限大方向の最も近い表現可能な数値に丸めます。

  • Convergent は、最も近い表現可能な数値に丸めます。等距離の場合、convergent は最も近い偶数に丸めます。これはツールボックスで提供される最もバイアスの小さい丸め手法です。

  • Zero は、ゼロ方向の最も近い表現可能な数値に丸めます。

  • Floor は 2 の補数切り捨てに等しく、負の無限大方向の最も近い表現可能な数値に丸めます。

  • Nearest は、最も近い表現可能な数値に丸めます。等距離の場合、nearest は、正の無限大方向の最も近い表現可能な数値に丸めます。これは fi オブジェクトの作成と fi 算術で既定の丸め手法です。

  • Round は、最も近い表現可能な数値に丸めます。等距離の場合、round メソッドは次のように丸めます。

    • 正の数値は、正の無限大方向の最も近い表現可能な数値に丸めます。

    • 負の数値は、負の無限大方向の最も近い表現可能な数値に丸めます。

丸め手法の選択-  丸め手法には、それぞれ固有の一連の特性があります。これらの特性により、その丸め手法が適しているかどうかが設計要件に応じて異なります。設計要件を把握し、各丸め手法の特性を理解することで、どれが最もニーズに合うかを判断できます。考慮すべき重要な特性は次のとおりです。

  • コスト — 使用しているハードウェアと関係なく、丸め手法にどれくらいの処理コストが必要か

    • 低 — 手法に必要な処理サイクル数は少ない。

    • 中 — 手法に必要な処理サイクル数は中程度である。

    • 高 — 手法に必要な処理サイクル数は多い。

    メモ

    ここで示すコストの推定は、ハードウェアに依存しません。一部のプロセッサには丸めモードが内蔵されているので、各丸めモードの実際のコストを計算するには、使用するハードウェアを十分に検討してください。

  • バイアス — 丸めた値から元の値を引いた期待値 Ε(θ^θ) は何か

    • Ε(θ^θ)<0 — この丸め手法によって負のバイアスが生じる。

    • Ε(θ^θ)=0 — この丸め手法はバイアスなし。

    • Ε(θ^θ)>0 — この丸め手法によって正のバイアスが生じる。

  • オーバーフローの可能性 — 丸め手法によってオーバーフローが生じる可能性があるか

    • あり — 丸めた値が表現可能な値の最小値または最大値を超える可能性がある。

    • なし — 丸めた値が表現可能な値の最小値または最大値を超える可能性はない。

次の表では、Fixed-Point Designer 製品で使用できるさまざまな丸め手法を比較します。

Fixed-Point Designer の丸めモードコストバイアスオーバーフローの可能性
正方向大きい正の数値あり
最も近い偶数方向バイアスなしあり
ゼロ方向
  • 負のサンプルでは大きい正の数値

  • 正の数値と負の数値が均等に分布するサンプルではバイアスなし

  • 正のサンプルでは大きい負の数値

なし
負方向大きい負の数値なし
最も近い正の整数方向小さい正の数値あり
最も近い整数方向
  • 負のサンプルでは小さい負の数値

  • 正の数値と負の数値が均等に分布するサンプルではバイアスなし

  • 正のサンプルでは小さい正の数値

あり
最も簡潔
(Simulink® のみ)
処理によって異なるなし