Google はこの問題について沈黙を守っています。現在、Matlab の 16 ビット符号付き固定小数点のみに数値計算機を実装しています。ただし、16 ビット固定小数点の算術演算では、データ型が次のように展開されます。
>> a = int16(1.5 * 4)
a = 6
>> T = numerictype(1, 16, 2)
T = DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 16
FractionLength: 2
>> dis = reinterpretcast(a, T)
dis = 1.5000
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 16
FractionLength: 2
>> c = dis * dis
c = 2.2500
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 32
FractionLength: 4
変数c
が WordLength 16、FractionLength 2 のままであることを望みます。基になるデータ型を拡張せずに 16 ビット固定小数点の算術演算を行うことは可能ですか? オーバーフローとアンダーフローのリスクを冒します。どんな助けでも素晴らしいでしょう。
EDIT :fimath
コマンド ウィンドウに入力するとエラーが発生します。なぜこのエラーが発生するのですか?
>> F = fimath('OverflowAction','Wrap', 'RoundingMethod', 'Floor', ...
'ProductWordLength', 16, 'ProductFractionLength', 2);
No public field OverflowAction exists for class embedded.fimath.
Error in fimath (line 72)
this.(varargin{k}) = varargin{k+1};