丸めモードとオーバーフロー モードの fimath
fi オブジェクトを使用して演算前に設定した丸めモードとオーバーフロー アクションのみがその演算結果に影響します。fi オブジェクトを MATLAB® で作成すると、丸めまたはオーバーフローの設定を変更しても値には影響しません。たとえば、fi オブジェクト a と b を考えてみます。
p = fipref('NumberDisplay', 'RealWorldValue',... 'NumericTypeDisplay', 'none', 'FimathDisplay', 'none'); T = numerictype('WordLength',8,'FractionLength',7); F = fimath('RoundingMethod','Floor','OverflowAction','Wrap'); a = fi(1,T,F)
a =
-1b = fi(1,T)
b =
0.9922OverflowAction が Wrap に設定されている fimath オブジェクト F を使用して a を作成したため、a の値は -1 にラップします。一方、Saturate の既定の OverflowAction の値を使用して b を作成したため、その値は 0.9922 に飽和します。
ここで、fimath オブジェクト F を b に代入します。
b.fimath = F
b =
0.9922この代入処理とそのオーバーフローと飽和は、b を作成したときに発生するため、それに新しい fimath オブジェクト F を代入したとき、その値は変わりません。
メモ
ローカル fimath をもたず、浮動小数点値から作成された fi オブジェクトは、常に Nearest の RoundingMethod と Saturate の OverflowAction を使用して構成されます。fi オブジェクトを別の RoundingMethod プロパティと OverflowAction プロパティで構成するには、使用する RoundingMethod プロパティと OverflowAction プロパティを fi コンストラクターで指定します。
fimath オブジェクトとそのプロパティについての詳細は、fimath オブジェクト プロパティを参照してください。