用于实现数学函数的领域特定语言(DSL)

  • 主要观点:物理、几何、金融和概率相关软件常调用sin等库函数,多年来有许多算法用于实现这些数学函数,不同平台等有专用数学库,但编写此类库易出错,因此创建了 MegaLibm 以简化和确保安全。
  • 关键信息

    • 各类软件依赖库函数,新算法不断被发现。
    • 平台等专用数学库性能优势大,但编写易出错。
    • MegaLibm 通过编程语言理论工具简化安全编写。
  • 重要细节

    • Symbolic Expression Types:MegaLibm 用更严格类型系统跟踪实现的实值表达式,如Impl<e>类型,通过typecheck操作 AST 进行类型检查,还可通过approx函数表示近似计算及输入范围。
    • Approximationapprox像类型系统中的cast,可插入验证工具确保近似边界成立,如使用 Sollya 或 Gelpia 检查。
    • Range Reduction:利用类型系统捕捉常见实现错误,如asin函数的范围缩减技巧,right构造可减少x的域并重建输出,通过verify函数检查使用的等式。
    • Tunable Compilation:MegaLibm 编译为 C 语言,通过关键字参数暴露低级别控制,如polynomial构造可调整多项式评估形式和精度,支持迭代、数据驱动的调优工作流。
    • Jupyter as UI:MegaLibm 适合在 Jupyter 中使用,通过plot_lambdacompare_plot_lambda函数绘制和比较实现的准确性,其他函数利用 Jupyter 内联显示合成结果,方便记录决策,提高维护性。
    • Using MegaLibm:MegaLibm 是研究项目,代码在 Github 上但状况不佳,但已在其他项目中显示成果,如 Herbie 数值修复工具正在研究使用类似 DSL 作为 IR,其设计风格有望在其他验证和合成工具中广泛应用。
阅读 11
0 条评论