像 SymPy 这样的 Haskell 库?

标签 haskell symbolic-math computer-algebra-systems

关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。












我们不允许提出有关书籍、工具、软件库等建议的问题。您可以编辑问题,以便可以用事实和引用来回答它。


7年前关闭。







Improve this question




我需要操作 1 + sqrt(3) 之类的表达式,并执行基本的算术运算,例如加法、减法和除法。我希望结果采用某种规范形式,以便它可以用作 map 中的键。由于舍入问题,将 1 + sqrt(3) 转换为浮点数是不可行的。

我在 Python 中使用 SymPy 来完成这项任务。 Haskell 是否有等效的本地库?

最佳答案

请查看the numbers package .如果您只需要存储精确的数字,例如“1 + √3”,您可能需要使用 Data.Number.CReal而不是符号算术。它存储表达式,并且可以在需要时计算到任意位数。

Prelude Data.Number.CReal> let cx = 1 + sqrt (3 :: CReal)
Prelude Data.Number.CReal> showCReal 400 cx 
"2.7320508075688772935274463415058723669428052538103806280558069794519330169088000370811461867572485756756261414154067030299699450949989524788116555120943736485280932319023055820679748201010846749232650153123432669033228866506722546689218379712270471316603678615880190499865373798593894676503475065760507566183481296061009476021871903250831458295239598329977898245082887144638329173472241639845878553977"

包中还有一个 Data.Number.Symbolic 模块,但描述说“它主要用于调试”。

关于像 SymPy 这样的 Haskell 库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3295345/

相关文章:

haskell - 如何根据运行时值创建有界实例?

haskell - yesod 安装失败

z3 - 如何使用 z3 BitVec 或 Int 作为数组索引?

Julia 符号微分

r - 在R或Matlab中绘制符号函数

为自己的 CAS 应用程序进行类似 Mathematica (LaTeX) 的排版

f# - C#库重载^运算符。如何使用**代替?

haskell - 在 Haskell 编译期间如何在不同位置包含代码?

performance - Haskell 程序与 Perl 相比性能低下

c - C 中的代数运算