Main Content

スケーリングされた double

スケーリングされた double とは

スケーリングされた double は浮動小数点数と固定小数点数のハイブリッドです。Fixed-Point Designer™ ソフトウェアでは、スケーリング、符号、語長の情報を保持したまま、これらを double として格納します。たとえば、固定小数点データ型 sfix16_En14 のストレージ コンテナーは int16 です。同等のスケーリングされた double データ型 flts16_En14 のストレージ コンテナーは、浮動小数点 double です。Fixed-Point Designer ソフトウェアでは、保存された浮動小数点 double にスケーリング情報を適用して実際値を求めます。値を double で格納すると、ほとんどの場合はオーバーフローと精度の問題を回避できます。

スケーリングされた double と double データ型の相違点

スケーリングされた double データ型と double データ型のストレージ コンテナーは、どちらも浮動小数点 double です。したがって、両方のデータ型オーバーライド設定 Double および Scaled double は、浮動小数点 double の範囲と精度の利点をもちます。スケーリングされた double は、指定されたデータ型とスケーリングに関する情報を保持しますが、double はこの情報を保持しません。スケーリングされた double には指定されたスケーリングに関する情報が保持されるため、オーバーフロー検出にも使用できます。

データ型 sfix16_En13 に摂氏 0.75001 度の値を格納する例を考えてみましょう。このデータ型の勾配とバイアスは次のとおりです。

  • 勾配は S=213 です。

  • バイアスは B=0 です。

スケーリング式 VV~=SQ+B, を使用します。ここで、V は実際値で、Q は格納された整数値です。

  • B=0.

  • V~=SQ=213Q=0.75001.

データ型 sfix16_En13 のストレージ コンテナーは 16 ビットなので、格納された整数 Q はこの 16 ビットに収まる整数としてのみ表現できます。したがって、Q の理想値は 6144 に量子化され、桁落ちが発生します。

データ型 sfix16_En13Double でオーバーライドすると、データ型は Double に変更され、スケーリングに関する情報が失われます。格納された値は実際値 0.75001 に等しくなります。

データ型 sfix16_En13Scaled Double でオーバーライドすると、データ型が flts16_En13 に変更されます。スケーリングは _En13 によって指定されているので、元のデータ型のスケーリングと同じになります。唯一異なる点は、double となった格納値を保持するためのストレージ コンテナーであるので、格納された値は 6144.08192 となります。この例は、スケーリングされた double を使用した場合の 1 つの利点として、量子化誤差の実質的な排除を示しています。

スケーリングされた double を使用する場合

固定小数点ツールを使用すると、シミュレーションの固定小数点信号に対してさまざまなデータ型オーバーライドを実行できるようになります。スケーリングされた double を使用して、倍精度数を使用している固定小数点データ型やスケーリングをオーバーライドすると、量子化誤差を回避できます。固定小数点データ型をオーバーライドすると、理想的な出力を表す浮動小数点ベンチマークが与えられます。

スケーリングされた double は次のような場合に役立ちます。

  • テストとデバッグ

  • オーバーフローの検出

  • 個々のサブシステムへのデータ型オーバーライドの適用

    データ型オーバーライドをモデル全体ではなくモデル内のサブシステムに適用した場合は、スケーリングされた double によって、モデルの固定小数点部分が一貫したデータ型を伝播するために必要とする情報が提供されます。

関連するトピック