@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会直接拒绝。- 当前实现中,
sign()对NaN返回Sign::Zero。
访问、规范化与比较
classifyprecisionsignsignificandexponent2is_zeronormalizedwith_precisionulpcompareminmaxclamp
说明:
clamp在边界无序或出现NaN时会直接拒绝。ulp()对非有限值返回NaN。
算术与转换
negabsaddsubmuldiv
支持的运算符:
+-*/- 一元
-
特殊值行为:
NaN一般会传播。- 异号的
inf - inf会得到NaN。 - 除以零时会根据分子类别得到
inf或NaN。
checked 算术接口
当前直接导出的 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