OCaml中进行任意高精度的数学计算怎么办

OCaml自带的数据类型是有点单薄


不过好在我们可以借助第三方类库来实现高精度数学计算。接下来给大家介绍一下:

ocaml/Zarith

概述

该库在任意精度整数上实现算术和逻辑运算。

该模块仅命名为Z. 它的接口类似于OCaml 标准库中的Int32,Int64和模块的接口,但有一些附加功能。Nativeint有关文档,请参阅z.mli文件。

该实现使用 GMP(GNU 多精度算术库)来计算大整数。但是,小整数表示为未装箱的 Caml 整数,以节省空间并提高性能。大整数在 Caml 堆中分配,绕过 GMP 的内存管理并实现比 MLGMP 库更好的 GC 行为。对小整数的计算使用一种特殊的、更快的路径(在 C 或 OCaml 中)避开对 GMP 的调用,而对大整数的计算使用来自 GMP 的低级 MPN 函数。

可以使用 OCaml 的多态比较运算符(=、<、>等)正确比较任意精度整数。

其他功能包括:

  • 一个Q有理数模块,建立在Z(见q.mli)之上
  • 一个兼容层,它实现了与旧库Big_int_Z中的 Big_int 相同的 API ,但在内部使用NumZ

要求

  • OCaml,版本 4.04.0 或更高版本。
  • GMP 库或 MPIR 库,包括开发文件。
  • GCC 或 Clang 或与 gcc 兼容的 C 编译器和汇编器(其他编译器可能工作)。
  • Findlib 包管理器(可选,推荐)。
发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章