メインコンテンツ

divide

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

説明

c = divide(T,a,b) は、a の要素に対して b の要素による除算を実行します。結果の cnumerictype オブジェクト T により指定された数値型をもちます。

すべて折りたたむ

この例では、divide 関数の精度を制御する方法を説明します。

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

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

IEEE® 標準の倍精度浮動小数点数の仮数は 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 = 
'11001100110011001100110011001100110011001100110011001100110011001100110011001101'

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

入力引数

すべて折りたたむ

出力の数値型。numerictype オブジェクトとして指定します。

分子。スカラー、ベクトル、行列または多次元配列として指定します。

入力 ab は、同じサイズであるか、互換性のあるサイズでなければなりません。詳細については、基本的な演算で互換性のある配列サイズを参照してください。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | fi
複素数のサポート: あり

分母。実数のスカラー、ベクトル、行列または多次元配列として指定します。

入力 ab は、同じサイズであるか、互換性のあるサイズでなければなりません。詳細については、基本的な演算で互換性のある配列サイズを参照してください。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | fi
複素数のサポート: あり

出力引数

すべて折りたたむ

解。スカラー、ベクトル、行列または多次元配列として返されます。

c のサイズは ab の次元の暗黙的な拡張で決まります。詳細については、基本的な演算で互換性のある配列サイズを参照してください。

アルゴリズム

すべて折りたたむ

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

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

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

拡張機能

すべて展開する

バージョン履歴

R2006a より前に導入

すべて展開する