丸めモードとオーバーフロー モードの 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 = -1
b = fi(1,T)
b = 0.9922
OverflowAction
が 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 オブジェクト プロパティを参照してください。