@bin_float.BinFloat
このページは現在の 0.2.0 基準における @bin_float.BinFloat を説明します。
表現
有限値は次の形で保存されます。
significand * 2^exponent2
加えて作業精度 precision を持ちます。
コンストラクタと保存形
BinFloat::makeBinFloat::zeroBinFloat::oneBinFloat::infBinFloat::nanBinFloat::from_intBinFloat::from_bigintBinFloat::from_floatBinFloat::from_double
補足:
- 公開された有限コンストラクタは正規化を行います。
compareはNaNに対して abort します。- 現在の実装では
sign()はNaNに対してSign::Zeroを返します。
参照・正規化・比較
classifyprecisionsignsignificandexponent2is_zeronormalizedwith_precisionulpcompareminmaxclamp
補足:
clampは境界が無順序またはNaNを含むと abort します。ulp()は非有限入力に対してNaNを返します。
算術と変換
negabsaddsubmuldiv
対応演算子:
+-*/- 単項
-
特殊値の挙動:
NaNは通常そのまま伝播します。- 符号が反対の
inf - infはNaNになります。 - ゼロ除算は分子のクラスに応じて
infまたはNaNになります。
checked 算術 API
現在直接公開されている checked helper:
sqrt_bounds_for_precisionsqrt_for_precisioncompare_checkeddiv_checkedsqrtpow_int
checked 挙動メモ:
sqrt*は非負の有限入力を必要とします。compare_checkedはNaNに対して unordered-comparison error を返します。div_checkedはゼロ除算で structured error を返します。pow_intは負指数かつゼロの底で division-by-zero error を返します。
Trait 面
BinFloat は現在次を実装します。
@def.Floating@arithmetic.SqrtChecked@arithmetic.DivChecked@arithmetic.CompareChecked@arithmetic.PowNatChecked@arithmetic.PowIntCheckedEq、Add、Sub、Mul、Div、Neg、Show