ocaml - 在 Num 模块中表示无穷大

标签 ocaml infinity

Num模块,据说:

Numbers (type num) are arbitrary-precision rational numbers, plus the special elements 1/0 (infinity) and 0/0 (undefined).

我希望找到这个无穷大,但找不到。然后我猜想我可以手工创建它:

let infinity = let one = Int 1 and zero = Int 0 in one // zero

但是流浪汉:

Exception: Failure "create_ratio infinite or undefined rational number".

那么,好吧,Pervasives 中有这个 val infinity : float,让我们找到一个 num_from_float。哦,没有这个功能...

那么,有人知道如何用 Num 表示正无穷大和负无穷大吗?

最佳答案

默认情况下,特殊号码处于禁用状态。此行为可以通过 Arith_status 进行控制模块。例如,要允许分母为零,请使用以下命令:

Arith_status.set_error_when_null_denominator false

一旦设置了标志,您的无穷大定义就可以正常工作:

let infinity = let one = Int 1 and zero = Int 0 in one // zero;;
val infinity : Num.num = <num 1/0>
float_of_num infinity;;
- : float = infinity

关于ocaml - 在 Num 模块中表示无穷大,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39832107/

相关文章:

python - Python 中是否有_rational_ 区间算术的实现?

file - 在 OCaml 的父目录中创建文件?

ocaml - 使用 "ocamlfind"使 OCaml 编译器和顶层查找(项目特定)库

json - (+/-) JSON 导入中的无穷大

perl - 如何在 Perl 中创建或测试 NaN 或无穷大?

Java 泛型和 Infinity(比较)

list - 如何更改记录中的部分值?

parallel-processing - OCaml 的并行化能力状况如何?

f# - 在 F# 和/或 OCaml 中表示时间序列的最标准、最有效的方法是什么

Ruby CSV gem 返回 Infinity 而不是 double