【发布时间】:2013-11-28 01:08:48
【问题描述】:
在 Clojure 中是否有使用惰性序列表示十进制扩展的包?
例如语法类似
(defn r `(B N x_1 x_2 x_3 ...))
可以以 B 为基数表示实数 r,并带有十进制扩展(以数学表示法)
r = N . x_1 x_2 x_3 ...
具有整数有效位 N 和十进制数字 0 ≤ x_i ≤ B-1。
如果该类型足够“智能”,它可以处理实数的不同十进制扩展作为有效输入,例如(10 0 9 9 9 ...) 和(10 1),并始终以后一种形式输出十进制扩展。它还应该能够处理溢出的数字,例如将(10 0 15) 减少到(10 1 5)。
使用实数的惰性序列表示而不是通常的十进制扩展是否有任何障碍?我不知道与浮点相比它的效率如何,但它可以方便地进行涉及实数的严格精确算术。例如,我认为有些算法可以递归计算 π 和 e 的小数展开式。
【问题讨论】:
-
在检查了 Clojure Toolbox 中的数学部分并在 Clojars 中进行了一些查询之后,我找不到任何可以执行此操作的库,但这听起来是一个不错的项目 :)
-
同意,听起来像是一个很酷的图书馆的机会。
标签: math clojure floating-point