mpfr_expr_cli 设计
设计目标
用一条命令通过 frontend/mpfr_expr 运行一个 MPFR 参考文件,使二进制符合性工具无需了解三种文件格式,就能在 TestFloat 矩阵旁边加入 MPFR 证据。
数学背景
每一行断言 (以及标志),如 mpfr_expr 设计所述。运行器不对语义作任何增补;其汇总就是整个文件的前端汇总。
设计决策
根据内容检测格式
这些格式没有共同的文件头,因此运行器会查找标记:初等函数生成器写入 mpfr-elementary-v1,幂函数数据有一个包含 input_coefficient_hex 的文件头,而 MPFR 自带的 tests/data/sqrt 两者都没有。基于内容的检测使固定版本的上游文件可以原样使用。
不分片
MPFR 文件至多只有几千行;调用 parse_common_options 时传入 allow_shard=false,使分片选项被拒绝,而不是被静默忽略。
JSON 中的语料名称
JSON 的 corpus 字段给出检测到的格式以及生成数据所用的 MPFR 版本,使汇总报告能说明其证据来源。
正确性 / 不变式
- 每次调用恰好运行一个解析器,由文件内容决定。
- 当且仅当每一行都通过时退出码为
0;totalCases = passedCases + failedCases。 - 解析错误会在执行任何行之前以
2退出。
被否决的替代方案
--format选项。 与数据中已有的标记重复,且会成为不一致的来源。- 接受多个文件。 各文件的格式不同;每个进程处理一个文件可使报告没有歧义。
边界
- 不分片,也不过滤行。
- 仅支持
frontend/mpfr_expr的三种格式。