ドキュメンテーション

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

divide

2 つのオブジェクトの除算

構文

c = divide(T,a,b)

説明

c = divide(T,a,b) は、a の要素に対して b の要素による除算を実行します。結果の c は、numerictype オブジェクト T をもちます。

a および b が両方とも fi オブジェクトである場合、c は、a と同じ fimath オブジェクトをもちます。cfiFixed データ型をもち、入力のどちらか一方が fi 浮動点小数データ型をもつ場合、fi の浮動小数点は固定小数点値に変換されます。中間量は、afimath オブジェクトを使用して計算されます。「データ型の伝播ルール」を参照してください。

a および b は、いずれかがスカラーでない場合は、同じ次元にする必要があります。ab のいずれかがスカラーの場合、c はスカラーでない方のオブジェクトの次元になります。

ab のいずれかが fi オブジェクトで、他方が MATLAB® の組み込み数値型の場合、その組み込みオブジェクトは最高精度の小数部の長さを維持したままで fi オブジェクトの語長にキャストされます。中間量は、入力 fi オブジェクトの fimath オブジェクトを使用して計算されます。「データ型の伝播ルール」を参照してください。

a および b が両方とも MATLAB の組み込み double である場合、c は浮動小数点の商 a./b であり、numerictype T は無視されます。

    メモ:    関数 divide は、現在、[勾配 バイアス] 信号についてはサポートされません。

データ型の伝播ルール

Fixed-Point Designer™ ソフトウェアが numerictype オブジェクト T を使用するための構文の場合、関数 divide は、下の表のデータ型の伝播に関する規則に従います。一般にこれらのルールを要約すると、"浮動小数点データ型は伝播する" になります。このため、固定小数点と浮動小数点の両方の入力に使用できるコードを書くことができます。

入力 fi オブジェクト a および b のデータ型numerictype オブジェクト T のデータ型出力 c のデータ型

組み込み double

組み込み double

任意

組み込み double

fi Fixed

fi Fixed

fi Fixed

numerictype オブジェクト T のデータ型

fi Fixed

fi Fixed

fi double

fi double

fi Fixed

fi Fixed

fi single

fi single

fi Fixed

fi Fixed

fi ScaledDouble

fi numerictype オブジェクト T のプロパティをもつ ScaledDouble

fi double

fi double

fi Fixed

fi double

fi double

fi double

fi double

fi double

fi double

fi double

fi single

fi single

fi double

fi double

fi ScaledDouble

fi double

fi single

fi single

fi Fixed

fi single

fi single

fi single

fi double

fi double

fi single

fi single

fi single

fi single

fi single

fi single

fi ScaledDouble

fi single

fi ScaledDouble

fi ScaledDouble

fi Fixed

fi numerictype オブジェクト T のプロパティをもつ ScaledDouble

fi ScaledDouble

fi ScaledDouble

fi double

fi double

fi ScaledDouble

fi ScaledDouble

fi single

fi single

fi ScaledDouble

fi ScaledDouble

fi ScaledDouble

fi numerictype オブジェクト T のプロパティをもつ ScaledDouble

以下の例では、関数 fi divide の精度を示します。

まず、表現の先行する 1 を最上位ビットに配置する、語長 80 ビット、スケーリング 2^-83 の符号なし fi オブジェクトを作成します。倍精度浮動小数点値 0.1 でオブジェクトを初期化し、2 進数表現を確認します。

P = ...
fipref('NumberDisplay','bin',...
       'NumericTypeDisplay','short',...
       'FimathDisplay','none');
a = fi(0.1, false, 80, 83) 

a =
 
11001100110011001100110011001100110011001100110011010000
000000000000000000000000
      u80,83

IEEE® Standard の倍精度浮動小数点数の仮数は 52 ビットであるため、無限に繰り返す表現は、52 ビットの後切り捨てられます。

上記を、上記と同じ数値型に設定された商を使用した、固定小数点演算での 1/10 の計算と比較します。

T = numerictype('Signed',false,'WordLength',80,...
					      'FractionLength',83);
a = fi(1);
b = fi(10);
c = divide(T,a,b);
c.bin

ans =

11001100110011001100110011001100110011001100110011001100
110011001100110011001100

関数 divide を使用した場合、a および b の精度に関係なく、商は完全に 80 ビットまで計算されます。このため、fi オブジェクト c は、IEEE Standard の倍精度浮動小数点数が表現できるよりも、正確に 1/10 を表現します。

1000 ビットの精度の場合は、次のようになります。

T = numerictype('Signed',false,'WordLength',1000,...
					      'FractionLength',1003);
a = fi(1);
b = fi(10);
c = divide(T,a,b);c.bin

ans =
11001100110011001100110011001100110011001100110011001100
11001100110011001100110011001100110011001100110011001100
11001100110011001100110011001100110011001100110011001100
11001100110011001100110011001100110011001100110011001100
11001100110011001100110011001100110011001100110011001100
11001100110011001100110011001100110011001100110011001100
11001100110011001100110011001100110011001100110011001100
11001100110011001100110011001100110011001100110011001100
11001100110011001100110011001100110011001100110011001100
11001100110011001100110011001100110011001100110011001100
11001100110011001100110011001100110011001100110011001100
11001100110011001100110011001100110011001100110011001100
11001100110011001100110011001100110011001100110011001100
11001100110011001100110011001100110011001100110011001100
11001100110011001100110011001100110011001100110011001100
11001100110011001100110011001100110011001100110011001100
11001100110011001100110011001100110011001100110011001100
110011001100110011001100110011001100110011001100
この情報は役に立ちましたか?