Skip to content

bin_float 一致性说明

本文记录 0.7.1 二进制浮点语义与验证边界。有限测试全部通过是 声明范围内的证据,不是对所有实数输入的形式化证明。

标准、论文与参考实现

  • IEEE 754-2019:interchange format、舍入方向、带符号零、NaN、异常标志与 before/after rounding 的 tininess 语义。
  • Fousse、Hanrot、Lefèvre、Pélissier、Zimmermann, MPFR: A Multiple-Precision Binary Floating-Point Library with Correct Rounding, ACM TOMS 33(2), 2007:任意精度的“精确结果、仅一次舍入”模型。
  • Berkeley SoftFloat/TestFloat 3e:独立产生 IEEE 结果位与异常标志的参考 实现和测试向量。

数学语义与算法

有限非零值表示 dyadic 实数

(-1)^negative * coefficient * 2^exponent2,其中 coefficient 是非负的 BinCoeff

非零 coefficient 会移除 2 因子以规范化;+0-0 不会合并。无穷、qNaN、 sNaN、NaN 符号及 payload 都是显式状态。

add_ctxsub_ctxmul_ctxdiv_ctxsqrt_ctxpow_int_ctx 的 顺序固定为:先处理 IEEE 特殊值;在 dyadic/有理数或平方根界上计算精确数学 结果;按目标精度和方向仅舍入一次;最后做指数范围/subnormal 量化,并从该过程 导出五个 IEEE 标志。实现不会根据测试 ID、测试数值或向量格式选择分支。

例如 binary16 0x0400 * 0x3BFF 的结果位为 0x0400,标志仍为 inexact | underflow。after-rounding tininess 依据目标精度、无界指数的舍入 结果,而不能由最终 normal 编码倒推。

固定语料与结果

完整门禁定义见 testdata/bin_float/README.md

来源范围结果
TestFloat 3e level 1、seed 14 格式 × 5 运算 × 5 舍入 × 2 tininess7,461,360 / 7,461,360
MPFR 4.2.2 tests/data/sqrt全部可执行十六进制 sqrt 行1,055 / 1,055
MPFR 4.2.2 pow_si 固定语料4 种精度 × 5 种受支持舍入 × 6 组输入120 / 120
MPFR 4.2.2 elementary 固定语料29 运算 × 3 精度 × 6 舍入 × 4 组固定 seed 输入2,088 / 2,088
可选 MPFR elementary 压力、seed 20260715每个不少于三运算的 family 至少 100,000 例966,744 / 966,744
提交的 smokeTestFloat、sqrt、pow_si 与 elementary 见证2,271 / 2,271
TestFloat 3e level 2binary16 的全部已声明运算/方向/tininess50,205,600 / 50,205,600

binary16 level-2 结果是额外的流式压力证据,不将更大的 binary32/64/128 level-2 语料误写为已完成声明。对非 NaN,解释器严格比较编码位和异常位。期望结果为 NaN 时,只比较 quiet-NaN 类别和异常位:IEEE 754 允许新生成 NaN 的 payload 选择;实现本身仍保留选中的 输入 NaN 的符号/payload,并 quiet sNaN。--level 2 使用有界分块而不丢行, 但属于巨大的可选压力语料,未计入上述已通过的有限门禁声明。 同样,966,744 行 MPFR 结果是可选生成压力证据;可复现的发布边界仍是哈希固定的 2,088 行语料。

声明边界

证据稳定性

固定矩阵是本版本的证据边界;新增操作必须单独定义语料合同和 oracle,不能从现有通过结果外推。

证据记录

每次门禁同时记录格式、舍入、tininess、编码结果和异常位;summary 文件是可复核的机器证据。

上述结果覆盖四个 interchange format 上的 contextual 加、减、乘、除和平方根, 以及 24、53、113 bit、全部六种项目舍入模式下声明的 29 个 elementary 运算。 不宣称 FMA、remainder、转换、比较、min/max、total order、十进制格式或全部 IEEE 754 操作或全部实数输入的一致性。elementary 生成器通过 MPFR 要求的 mpfr_round_nearest_away_begin/end 协议实现 nearest-away,绝不把明确禁止的 MPFR_RNDNA 值直接传给通用 elementary 函数。

日常运行 just conformance smoke binary;完整固定门禁运行 just gate binary