floating

Luna-Flow/floating 是面向 MoonBit 的任意精度浮点算术库:提供任意精度下具有 IEEE 754 语义的二进制值、IEEE 754 与 General Decimal Arithmetic 十进制数,以及遵循 IEEE 1788 的经认证区间(球)算术。精度、舍入、指数范围、特殊值、状态标志、陷阱和包络在每个 API 中都是显式的值,而不是隐藏的全局状态。本手册记录当前分支;当前发布版本为 0.8.0。

安装

moon add Luna-Flow/floating@0.8.0

然后在 moon.pkg 中导入所需的包,例如 "Luna-Flow/floating/bin_float"。本模块需要 MoonBit 工具链 0.10 或更高版本(moonc ≥ 0.10)。它依赖 Luna-Flow/arithmetic(舍入模式、上下文、checked 与 contextual trait)和 Luna-Flow/luna-generic(代数 trait);当你直接使用 Luna-Flow/arithmetic 的类型时,需要自行添加它。快速上手将带你完成第一个程序。

指南

指南阅读目的
快速上手选择包、安装、初始值、上下文与失败模型
数值语义共享术语:精确值与舍入结果、舍入函数、ulp 与单位舍入误差、标志、量子、带符号零、NaN、包络
架构包的分层、数值核心流水线、经认证的初等函数、不变量
验证检查关卡、已发布的符合性声明及其复现方法
性能审计优化算术路径的证明与证据
仓库约定文档规则与评审清单

包地图

每个包都有教程(如何使用)、API 参考(可以调用什么)和设计页面(为何如此设计)。四个数值核心还有符合性页面和性能页面。

数值核心

包用途页面
bin_float任意精度二进制浮点、IEEE 754 二进制运算以及 binary16/32/64/128 交换格式教程 · API · 设计 · 符合性 · 性能
decimalIEEE 754 任意精度十进制,提供逐运算的标志以及 DPD/BID 交换格式教程 · API · 设计 · 符合性 · 性能
decimal_gda带粘滞状态与陷阱的 General Decimal Arithmetic教程 · API · 设计 · 符合性 · 性能
ball_float外向舍入的裸区间与带装饰区间(IEEE 1788)教程 · API · 设计 · 符合性 · 性能

组合与共享词汇

包用途页面
defSign、PartialOrder、Floating trait、谓词以及重新导出的 arithmetic 类型教程 · API · 设计
bin_float_checked在首个错误处停止的二进制流水线教程 · API · 设计
decimal_checked累积标志的 IEEE 十进制流水线教程 · API · 设计
decimal_gda_checked串联传递状态并在陷阱处停止的 GDA 流水线教程 · API · 设计
ball_float_checked在首个错误处停止的区间流水线教程 · API · 设计
semantic用于跨包比较的精确且与表示无关的投影教程 · API · 设计

表达式与语料前端

包用途页面
numeric_expr与宿主无关的数值表达式语法及求值教程 · API · 设计
frontend/gda_expr解析并执行 GDA .decTest 文件教程 · API · 设计
frontend/itl_expr解析并执行 ITF1788 区间测试行教程 · API · 设计
frontend/mpfr_expr解析并执行固定版本的 MPFR 见证数据教程 · API · 设计
frontend/testfloat_expr解析并执行 Berkeley TestFloat 向量教程 · API · 设计

符合性测试命令行

包用途页面
cli四个符合性测试后端的原生调度器教程 · API · 设计
cli/gda_expr_cli.decTest 运行的文件与输出适配器教程 · API · 设计
cli/itl_expr_cliITF1788 运行的文件与 JSON 适配器教程 · API · 设计
cli/mpfr_expr_cliMPFR 见证数据运行的命令适配器教程 · API · 设计
cli/testfloat_expr_cliTestFloat 运行的命令适配器教程 · API · 设计

基础设施与证据

包用途页面
internal共享的精确有理数、大整数、解析、规范化与舍入辅助函数教程 · API · 设计
internal/conformance源位置、确定性分片、用例处置与汇总教程 · API · 设计
internal/runner_cli共享的 CLI 选项、文件、诊断信息与 JSON教程 · API · 设计
consistency白盒的跨包定律与 API 审计教程 · API · 设计
doc_examples由 just docs 运行的可执行文档示例教程 · API · 设计
bench共享的 Maremark 基准测试基础设施教程 · API · 设计
bench/bin_float二进制算术与初等函数基准测试教程 · API · 设计
bench/decimalIEEE 十进制基准测试教程 · API · 设计
bench/decimal_gdaGDA 十进制基准测试教程 · API · 设计
bench/ball_float区间算术基准测试教程 · API · 设计

应用接口包括各数值核心、def 和 checked 包装器;semantic 和 numeric_expr 是暂定的集成接口。其他包之所以公开接口,是因为仓库工具需要组合它们,其设计页面会给出范围更窄的稳定性承诺。

阅读路径

  • 初次接触本库。 阅读快速上手,然后阅读所选包的教程,例如 bin_float 教程或 decimal 教程。阅读时可随时查阅数值语义中的术语。
  • 在应用或库中使用。 先通读一遍数值语义,然后以所用包的 API 页面为依据进行开发。在依赖某项标准行为之前,请查看对应的符合性页面;对于流水线,请阅读相应 checked 包装器的教程。
  • 参与贡献。 阅读架构、验证和仓库约定,然后阅读你要修改的包的设计页面。修改优化路径时,还需阅读性能审计以及该包的性能页面。

证据快照

  • 固定版本的 GDA official 语料通过了 64,986/64,986 条合法的可执行标量行,official0 通过了 16,124/16,124 条。其余 141 条 # 占位行或非标量行属于诊断性排除项。
  • 二进制 TestFloat level-1 矩阵在 binary16/32/64/128 上通过了 254,227,872 个向量,涵盖融合乘加、余数、舍入到整数、整数转换和比较谓词,此外还通过了固定版本的 MPFR 平方根与初等函数见证数据。
  • 严格的 ITF1788 汇总通过了 4,656/4,656 个选定的区间用例。
  • IEEE 十进制检查关卡在四个目标平台上覆盖 decimal32/64/128 的 DPD 与 BID 编码、标志和算术。

这些有限的结果并不意味着支持每一种运算、每一个未来的语料修订版或每一个实数输入。在将某项结果转化为兼容性声明之前,请先阅读该包的符合性页面。

权威依据

pkg.generated.mbti 定义哪些内容是公开的,源码和测试定义行为;如果页面与生成的接口不一致,以接口为准。