纯C符号计算库

14

是否存在一个纯C编写的符号计算库?这里的符号计算是指以符号形式操作数学方程。我知道有MathematicaSympy,但我对创建一个高性能的纯C实现的符号计算库来绑定到脚本语言感兴趣,特别是Ruby。

似乎有需要像这样的符号数学库。随着时间的推移,理想情况下,可以像libgit2一样构建出一个中央C实现的项目,并分支出各种实现,以便创建绑定到其他语言的库。


3
我不知道有任何基于C的符号数学库。不过,有许多这样的库是用C++编写的,因此您可以在它们周围创建一个薄薄的C层。 - ipapadop
@ipapadop 需要一个 纯C 实现... 话说,您能否指导我如何查找泛化符号计算算法的资源? - rudolph9
“泛化符号计算”是什么意思?拿一本更大的数学教材,尝试提取数学规则并将其放入您的数学表达式分析器中。 - Agnius Vasiliauskas
4个回答

7

Mathomatic是用C语言实现的,可能适合您的目的。

Mathomatic™是一种可移植的命令行教育CAS和计算器软件,完全使用C编程语言编写。它是自由开源软件(FOSS),根据GNU Lesser General Public License(LGPL版本2.1)发布,并自1986年以来一直在不断发展。该软件可以符号性地解决、简化、组合和比较代数方程,并同时执行必要的广义标准、复数、模数和多项式算术。它还做了一些微积分,非常易于编译/安装、学习和使用。

开发人员手册中获得:

Mathomatic源代码也可以编译为一个符号数学库,可从任何C兼容程序调用,并且在大多数操作系统中独立。


不幸的是,这个包的作者已经去世,这个软件不再维护。最新版本被存档在GitHub上,并且上面的链接已经更新。


5

您有没有看过GAP?它的网站上写道:

GAP是一个计算离散代数的系统,特别强调计算群论。GAP提供了一种编程语言,一个包含成千上万个函数的库,这些函数实现了用GAP语言编写的代数算法,以及大量的代数对象数据库。还可以查看概述和数学功能描述。GAP用于研究和教学,用于研究群及其表示、环、向量空间、代数、组合结构等。该系统(包括源代码)可自由分发。您可以研究并轻松修改或扩展它以适应您的特殊需求。

根据其维基百科页面,GAP是用C实现的,源代码可免费获取。


这里是我在GAP网站上找到的计算机代数系统列表。 - rudolph9
Gap甚至有一个并行实现(ParGap),基于MPI构建。 - rudolph9
GAP的packages非常棒!这正是我一直在寻找的,谢谢! - rudolph9

4

我给你点了赞,这个信息确实很有用,但是我正在寻找一个_纯C_实现,所以我不能接受你的答案... 话虽如此,你能否指导我去哪里寻找泛化符号计算算法的资源? - rudolph9

3
您可以从Maxima开始,使用GCL将其从Common Lisp翻译成C。

GCL是GNU项目的官方Common Lisp。它的设计利用了系统的C编译器将其编译为本机目标代码。

肯定有一个选项来保留中间的C源文件。

GCL目前在11个GNU/Linux架构(x86 powerpc s390 sparc arm alpha ia64 hppa m68k mips mipsel)、Windows、Sparc Solaris和FreeBSD上编译自身和主要的免费软件Lisp应用程序Maxima、ACL2和Axiom。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接