天道酬勤,学无止境

Symbolic Math Library in C/C++/Obj-C [closed]

I am trying to implement a graphing calculator on the iPhone. I am looking for a library that can take strings of expressions or functions and let me manipulate them (find derivatives, intercepts, zeros, etc). Does anything like this exist?

评论

There's GiNaC for C++. GPL-licensed and actively maintained, last update only a month ago. I found old links to many others that don't seem to exist anymore; perhaps people simply found it easier to use GiNaC?

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 是否有(某种程度上)高级数学Javascript库? [关闭](Are there any (somewhat) advanced mathematics Javascript libraries? [closed])
    问题 关闭。 此问题不符合堆栈溢出准则。 它当前不接受答案。 想要改善这个问题吗? 更新问题,使它成为Stack Overflow的主题。 5年前关闭。 改善这个问题 有没有其他可以为Javascript提供任何其他通用数学函数的库? 说出诸如范围之内的和,导数,积分等之类的东西。我可以想象不可能有很多事情,因此即使是执行粗略近似的库也会很有趣。 谢谢! 更新:如下所述,我想没有任何图书馆可以做我想做的事情。 本着这种精神,我开始建立自己的名为MathPlus的库。 回答1 当您要求积分和导数时,您要寻找什么? 数字还是符号? 不确定还是不确定? 单变量还是多变量? 等等。 尽管简化和显示远非简单(可能与直觉相反),但编写一个程序进行符号区分实际上并不难。 同样,数值微分和数值定积分很简单,具体取决于所需的精度。 (如果您需要一点,那很容易;如果您需要一些知识并且要执行许多操作,则需要进行认真的数值分析(算术)才能使它起作用;如果需要大量的精度,则需要一个bignum库,因此JS是太好了。) 在任何语言中,“当然”的符号集成都是极其困难的。 在这种情况下,您最好的选择是查询Wolfram | alpha这样的网站... 如果您需要澄清或扩展以上几点,请告诉我。 回答2 是的,这里有一个Sylvester,这是一个JavaScript库
  • C++中的符号计算(symbolic computation in C++)
    问题 我需要在 C++ 中进行分析集成。 例如,我应该整合这样的表达式: exp[I(xy)] , I是一个虚数。 我怎样才能在 C++ 中做到这一点? 我试过 GiNaC,但它只能对多项式进行积分。 我也尝试过 SymbolicC++。 它可以集成sine 、 cosine或exp(x)和ln(x)等ln(x) ,但它不是很强大。 例如,它不能对x*ln(x)进行积分,而x*ln(x)可以通过使用 Mathematica 或分部积分很容易获得。 是否有任何其他工具或库可以进行符号计算,例如 C++ 中的分析集成? 回答1 如果您需要进行符号集成,那么您可能不会比在 mathematica 或 maxima 中运行它更快——它们已经用(类似)C++ 编写了。 因此,除非您的方程有一个非常具体的公式,您可以以 Mathematica 或 Maxima 无法利用的方式加以利用,否则您可能不走运——至少您不会从现成的图书馆。 如果您需要进行数值求解,您可能有理由编写自己的代码来提高速度。 (我知道我是为生成偏微分方程的数值解而做的)。 回答2 我所知道的其他进行符号计算的 C++ 库是 SymEngine (https://github.com/symengine/symengine) 食人鱼 (https://github.com/bluescarni/piranha)
  • 在学习Objective-C之前先学习C(Learn C first before learning Objective-C [closed])
    问题 从目前的情况来看,这个问题不适合我们的问答形式。 我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意测验或进一步的讨论。 如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 9年前关闭。 作为一名有抱负的Apple开发人员,如果要在进入Objective-C并最终进入Cocoa Framework之前先学习C更好,那么我想征询社区的意见。 我的直觉说学习C,这将为我奠定良好的基础。 回答1 我会先学习C。 在转到Obj-C之前,我学习了C(并且在C中做了很多事情)。 我有很多同事,他们从来都不是真正的C程序员,他们从Obj-C开始,只学习了必要的C语言。 我时不时地看到他们如何完全在Obj-C中解决问题,有时会导致非常笨拙的解决方案。 通常,然后我用纯C代码替换一些Obj-C代码(毕竟,您可以随意混合它们,Obj-C方法的内容可以完全是纯C代码)。 没有任何侮辱任何Obj-C程序员的意图,Obj-C中有一些非常优雅的解决方案,这些解决方案由于对象的原因而变得更好用(并且看起来更好)(OOP编程可以使复杂程序变得比可爱得多)。函数编程;例如,多态是一个出色的功能)……我真的很喜欢Obj-C(比C ++还要多!我讨厌C ++语法,并且某些语言功能过于简单,会导致不良的开发模式恕我直言); 但是,当我有时重新编写同事的Obj
  • 最好的(便携式)跨平台任意精度数学库是什么? [关闭](What are the best (portable) cross-platform arbitrary-precision math libraries? [closed])
    问题 关闭。 此问题不符合堆栈溢出准则。 它当前不接受答案。 想要改善这个问题吗? 更新问题,使它成为Stack Overflow的主题。 5年前关闭。 改善这个问题 我正在寻找一个使用C或C ++编写的良好的任意精度数学库。 您能给我一些建议吗? 主要要求: 它必须处理任意大的整数-我的主要兴趣是整数。 如果您不知道任意大这个词是什么意思,请想象一下类似100000的东西! (阶乘为100000)。 在库初始化或对象创建期间,不必指定精度。 精度应仅受系统可用资源的限制。 它应利用平台的全部功能,并应本地处理“小”数字。 这意味着在64位平台上,计算(2 ^ 33 + 2 ^ 32)应该使用可用的64位CPU指令。 该库不应以与在同一平台上使用(2 ^ 66 + 2 ^ 65)相同的方式来计算该值。 它必须有效地处理加法( + ),减法( - ),乘法( * ),整数除法( / ),余数( % ),幂( ** ),增量( ++ ),减量( -- ),GCD,阶乘和其他常见的整数算术计算。 能够处理不会产生整数结果的函数(例如平方根和对数)是一个加号。 处理符号计算的能力甚至更好。 这是我到目前为止发现的内容: Java的BigInteger和BigDecimal类:到目前为止,我一直在使用它们。 我已经阅读了源代码,但是我不理解下面的数学原理。 它可能基于我从未学过的理论和算法。
  • log(10.0)可以编译,但log(0.0)不能使用未定义的引用?(log(10.0) can compile but log(0.0) cannot with undefined reference?)
    问题 对于以下C源代码: #include <math.h> int main(void) { double x; x = log(0.0); return 0; } 当我用gcc -lm编译时,我得到: /tmp/ccxxANVH.o: In function `main': a.c:(.text+0xd): undefined reference to `log' collect2: error: ld returned 1 exit status 但是,如果我将log(0.0)替换为log(10.0) ,则它可以成功编译。 我对此不太了解,因为无论它们是否具有数学意义,都应该进行编译-没有语法错误。 有人可以解释吗? 以防万一,我的gcc -v输出: Configured with: ../src/configure -v --with-pkgversion='Ubuntu 4.8.2-19ubuntu1' --with-bugurl=file:///usr/share/doc/gcc-4.8/README.Bugs --enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.8 --enable-shared --enable-linker-build
  • 我应该学习原生 iOS 开发(Objective-C)还是完善我在 Javascript 和 Titanium Appcelerator 方面的知识? [关闭](Should I learn native iOS development (Objective-C) or perfect my knowledge in Javascript and Titanium Appcelerator? [closed])
    问题 关闭。 这个问题是基于意见的。 它目前不接受答案。 想改善这个问题吗? 更新问题,以便通过编辑这篇文章用事实和引文来回答问题。 6年前关闭。 改进这个问题 基本上我需要你的建议我的好堆栈朋友:D 在过去的六个月中,我正在使用 Titanium Appcelerator 移动框架探索/学习/开发 iOS 应用程序。 我的经历大多是好的或非常好的。 Titanium 的一些负面部分会导致时间的积累,尤其是在设备上进行测试时。 仅使用 Xcode(本机)时,您的应用程序会立即在设备上启动,而使用 Titanium 时,您必须等待一段时间(1-2 分钟)才能构建应用程序,然后将其安装在设备上(iTunes 或 iPhone 配置)公用事业)。 基本上,您可以使用 Javascript + Titanium 本地完成的所有操作。 如果 Titanium 不支持 iOS 框架的某些部分,您可以构建一个原生的 Objective-C 模块并在您的 Javascript 代码中包含这些功能。 我现在使用 Titanium Appcelerator 和使用 Javascript 构建应用程序感觉非常舒服。 我还在为 iOS 构建一些模块时学习了一些 Objective-C。 例如。 我在我的第一个 iOS 应用程序拼写中使用的 DeviceMotion。 现在的问题是:
  • 如何在C / C ++ / Obj-C中编码处理负数的模(%)运算符(How to code a modulo (%) operator in C/C++/Obj-C that handles negative numbers)
    问题 我最讨厌C语言衍生的语言(作为数学家)是 (-1) % 8 // comes out as -1, and not 7 fmodf(-1,8) // fails similarly 最好的解决方案是什么? C ++允许模板和运算符重载,但对我而言,这两者都是晦涩难懂的地方。 实例感激不尽。 回答1 首先,我想指出,您甚至不能依靠(-1) % 8 == -1的事实。 您唯一可以依靠的是(x / y) * y + ( x % y) == x 。 但是,余数是否为负是实现定义的。 现在为什么在这里使用模板? int和long的重载就可以了。 int mod (int a, int b) { int ret = a % b; if(ret < 0) ret+=b; return ret; } 现在您可以像mod(-1,8)这样称呼它,它看起来像是7。 编辑:我发现我的代码中的错误。 如果b为负,则它将不起作用。 所以我认为这样更好: int mod (int a, int b) { if(b < 0) //you can check for b == 0 separately and do what you want return -mod(-a, -b); int ret = a % b; if(ret < 0) ret+=b; return ret; } 参考:C ++ 03第5
  • 找不到lgfortran(lgfortran not found)
    问题 我正在使用Ubuntu 10.04,并尝试编译一些使用gfortran的代码。 在某些时候,Makefiles会: -L. -lgfortran 我得到了错误 /usr/bin/ld: cannot find -lgfortran 尽管已安装: ldconfig -p | grep fortran libgfortran.so.3 (libc6,x86-64) => /usr/lib/libgfortran.so.3 我该如何解决? PS:Makefile: ## FLAGS CC:= gcc C++:= g++ CFLAGS:= -c -O -Dintel -g FC:= gfortran FFLAGS:= -c -O -cpp -g LD:= g++ LDFLAGS:= -O WETTER_CGAL_FLAGS:= -g #WETTER-Data WETTER_cgal: weather.cpp surface_alg.h $(WETTER_CGAL_OBJECTS) WATT_interface.h data.cpp $(C++) $(WETTER_CGAL_FLAGS) -c weather.cpp -frounding-math $(C++) -c data.cpp -frounding-math $(LD) $(WETTER_CGAL_OBJECTS)
  • What are the best (portable) cross-platform arbitrary-precision math libraries? [closed]
    Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers. Want to improve this question? Update the question so it's on-topic for Stack Overflow. Closed 5 years ago. Improve this question I’m looking for a good arbitrary precision math library in C or C++. Could you please give me some advices or suggestions? The primary requirements: It must handle arbitrarily big integers—my primary interest is on integers. In case that you don’t know what the word arbitrarily big means, imagine something like 100000! (the factorial of 100000). The precision must
  • Java or scala Library to parse latex or MathML string [closed]
    Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers. Want to improve this question? Update the question so it's on-topic for Stack Overflow. Closed 6 years ago. Improve this question I need to store a lot of equation and mathematical formula into database for my simulation experimentations, and i think it's better to use some mathML or latex string... but ... I make some googling request, and i'm very surprised because i don't find any eval library in java or scala to transform string latex or string mathML expression into equation in java /
  • 如何在Android和iOS上使用相同的C ++代码?(How to use the same C++ code for Android and iOS?)
    问题 带有NDK的Android支持C / C ++代码,而带有Objective-C ++的iOS也具有支持,那么如何编写带有在Android和iOS之间共享的本机C / C ++代码的应用程序? 回答1 更新。 即使在我写了四年后,这个答案还是很受欢迎,在这四年中,很多事情都发生了变化,所以我决定更新我的答案,以更好地适应当前的现实。 答案是不变的。 实施发生了一些变化。 我的英语也发生了变化,已经有了很大的提高,因此答案现在对于每个人来说都是可以理解的。 请查看存储库,以便您下载并运行下面将显示的代码。 答案 在显示代码之前,请仔细阅读下图。 每个操作系统都有其UI和特性,因此我们打算在这方面向每个平台编写特定的代码。 换句话说,我们打算使用C ++编写所有逻辑代码,业务规则和可以共享的东西,因此我们可以将相同的代码编译到每个平台。 在该图中,您可以在最低级别看到C ++层。 所有共享代码都在此段中。 最高级别是常规的Obj-C / Java / Kotlin代码,此处没有消息,最困难的部分是中间层。 iOS的中间层很简单; 您只需要配置项目以使用Obj-c的一个不同版本(称为Objective-C ++)进行构建即可,仅此而已,您就可以访问C ++代码。 在Android方面,事情变得越来越困难,在Java虚拟机下运行的Android上的Java和Kotlin这两种语言。
  • 纯C中的符号计算库(Symbolic Computation Library in pure C)
    问题 是否存在用纯C语言编写的符号计算库? 像以符号形式处理数学方程式一样的符号计算。 我知道这里有Mathematica和Sympy 。 但是,我有兴趣在高性能的纯C实现中创建符号计算库,以绑定到脚本语言,尤其是Ruby。 似乎他们需要这样的符号数学库。 随着时间的流逝,理想情况下,该库可以以与libgit2类似的方式构建,在该库中,有一个项目的中央C实现,并且为了创建与其他语言的绑定而分支了各种实现? 回答1 您是否看过GAP? 从其网站: GAP是一个用于计算离散代数的系统,特别着重于计算群论。 GAP提供了一种编程语言,数千种实现用GAP语言编写的代数算法的函数的库以及代数对象的大型数据库。 另请参见数学功能的概述和说明。 GAP用于研究和教学,以研究组及其表示,环,向量空间,代数,组合结构等。 该系统(包括源代码)是免费分发的。 您可以学习并轻松修改或扩展它以适合您的特殊用途。 根据其Wikipedia页面,GAP是用C实现的,并且源代码是免费提供的。 回答2 数学是用C实现的,可能适合您的目的。 Mathomatic™是一款可移植的命令行教育型CAS和计算器软件,完全使用C编程语言编写。 它是免费的开源软件(FOSS),根据GNU通用公共许可协议(LGPL 2.1版)发行,自1986年以来一直在持续开发。该软件可以同时象征性地求解,简化,组合和比较代数方程式
  • matlab工具箱
    matlab“最小系统”安装 组件Valuematlab必备安装simulink不用说simscape电力电子simscape driveline汽车动力总成建模工具simscape fluids液压antenna toolboxAntenna Toolbox™ 提供了设计、分析天线单元和阵列并使其可视化的功能和应用程序。您可以使用具有参数化几何结构的预定义单元或任意平面单元设计独立的天线并建立天线阵列。Data Acquisition Toolbox提供应用和功能,用于配置数据采集硬件,将数据读入MATLAB ®和Simulink ®,和将数据写入DAQ模拟和数字输出通道。该工具箱支持多种数据采集硬件,包括USB,PCI,PCI Express总线®,PXI ®,和PXI Express ®设备,从美国国家仪器公司®和其他供应商。Fixed-Point Designer™提供了丰富的数据类型和工具,用于在嵌入式硬件上优化和实现定点和浮点算法。它包括定点和浮点数据类型以及特定于目标的数值设置。使用 Fixed-Point Designer,您可以执行特定于目标的定点位真仿真。然后,您可以事先测试和调试溢出及精度损失等量化效应,之后再在硬件上实现设计Filter Design HDL Coder用于生成可合成、可移植的 VHDL® 和 Verilog® 代码,以实现在 FPGA 或
  • libc(glibc)在我们的Linux应用程序中起什么作用?(What is the role of libc(glibc) in our linux app?)
    问题 当我们使用gdb调试程序时,通常会看到在libc ( glibc ?)中定义了具有奇怪名称的函数。 我的问题是: libc/glibc是某些标准C / C ++函数(例如strcpy , strlen , malloc的标准实现吗? 或者,它不仅是如上所述的第一种用法,还是Unix / Linux系统调用(如open , close , fctl ? 如果是这样,为什么在没有libc情况下我们不能直接发出syscall? libc是否仅由一个lib( .a或.so )文件或多个lib文件组成(在这种情况下, libc是这组lib的通用名称)? 这些lib文件位于何处? libc和glibc什么区别? 回答1 libc实现了标准的C函数(例如strcpy()和POSIX函数(可能是系统调用)(例如getpid() 。 请注意,并非所有标准C函数都在libc -大多数数学函数都在libm 。 您不能像调用普通函数那样直接进行系统调用,因为对内核的调用不是普通函数调用,因此链接程序无法解决它们。 取而代之的是,使用特定于体系结构的汇编语言thunk来调用内核-您当然也可以在自己的程序中直接编写这些代码,但是您不需要这样做,因为libc为您提供了它们。 请注意,在Linux中,内核和libc的组合提供了POSIX API。 libc增加了可观的价值
  • Swift runtime documentation [closed]
    Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers. Want to improve this question? Update the question so it's on-topic for Stack Overflow. Closed 6 years ago. Improve this question I have been exploring Apple's swift documentation, and now i'm here to ask. Is documentation about Swift's runtime available? I have read The Swift Programming Language book. https://itunes.apple.com/us/book/swift-programming-language/id881256329?mt=11 I have watched WWDC videos. https://developer.apple.com/videos/wwdc/2014/ I have tried searching Swifts compiler
  • 我在哪里可以找到要扫描并连接到wifi的iOS Obj-C代码(私有API)(Where do I find iOS Obj-C code to scan and connect to wifi (private API))
    问题 我需要扫描并连接到wifi的示例obj-c代码。 私有API是可以的,我不会将应用发布到appStore。 我在cydia中找到了一个名为“ WiFiFoFum”的应用程序,该应用程序可以进行扫描和连接,但不幸的是,我找不到该应用程序的源代码。 有人知道我在哪里可以找到该代码吗? 谢谢 回答1 在此处找到答案:http://code.google.com/p/iphone-wireless/issues/detail?id=20 它在我的iPhone 4 v5.1.1上运行良好。 我能够扫描并连接到网络。 您可以在这里下载项目https://github.com/devinshively/wifiAssociate 这是一个引用: Apple80211Associate仍在工作(至少在3.1.2上)。 在iPhone OS 2和3之间,该框架已更改名称,因此您应按以下方式绑定功能: void *airportHandle; int (*Apple80211Open)(void *); int (*Apple80211BindToInterface)(void *, NSString *); int (*Apple80211Close)(void *); int (*Apple80211Info)(void *, NSDictionary**); int (
  • 我可以使用Python编写本机iPhone应用程序吗? [关闭](Can I write native iPhone apps using Python? [closed])
    问题 关门了。 这个问题需要更加集中。 它当前不接受答案。 想要改善这个问题吗? 更新问题,使其仅通过编辑此帖子即可将重点放在一个问题上。 1年前关闭。 改善这个问题 使用PyObjC,您可以使用Python编写适用于OS X的Cocoa应用程序。我可以使用Python编写本机iPhone应用程序吗? 回答1 目前尚不可用,目前仅有的可用于访问iPhone SDK的语言是C / C ++,Objective C和Swift。 没有技术上的理由说明为什么将来这种情况不会改变,但我不会在短期内屏住呼吸。 也就是说,Objective-C和Swift确实不是太吓人... 2016年带有NativeScript框架的Javascript现在可以使用。 回答2 由于Jay Freeman(saurik)的出色工作,您也可以在iPhone上使用PyObjC。 请参阅Python中的iPhone应用程序。 请注意,目前这需要越狱的iPhone。 回答3 看来现在这是开发人员可以做的事情:iOS开发人员协议昨天已更改,并且似乎已进行了某种修改,以使在您的应用程序中嵌入Python解释器合法: 3.3.2节—口译员 老的: 3.3.2应用程序本身不能以任何方式自身安装或启动其他可执行代码,包括但不限于通过使用插件体系结构,调用其他框架,其他API或其他方式。 除非Apple另行书面批准
  • 为什么 GCC-Windows 依赖于 cygwin?(Why does GCC-Windows depend on cygwin?)
    问题 我不是 C++ 开发人员,但我一直对编译器很感兴趣,而且我对修补 GCC 的一些东西(尤其是 LLVM)很感兴趣。 在 Windows 上,GCC 需要 POSIX 仿真层(cygwin 或 MinGW)才能正确运行。 这是为什么? 我使用了许多其他软件,用 C++ 编写并针对不同平台(Subversion、Firefox、Apache、MySQL)进行交叉编译,它们都不需要 cygwin 或 MinGW。 我对 C++ 最佳实践编程的理解是,您可以编写合理的平台中立代码并处理编译过程中的所有差异。 那么与 GCC 有什么关系呢? 为什么它不能在 Windows 上本地运行? 编辑: 好的,到目前为止的两个回复基本上说,“GCC 使用 posix 层,因为它使用 posix 标头”。 但这并不能真正回答问题。 假设我已经有一组我最喜欢的标准库的头文件。 为什么我仍然需要 posix 标头? GCC 是否需要 cygwin/mingw 才能实际运行? 或者它只需要头文件和库的仿真层? 如果是这样,为什么我不能给它一个包含所需资源的“lib”目录? 再次编辑: 好的,我会再次尝试澄清问题... 我还用 D 编程语言编写代码。 官方编译器名为“dmd”,Windows 和 linux 都有官方编译器二进制文件。 Windows 版本不需要任何类型的 POSIX 仿真。 Linux
  • Obj-C Calculator - Radians to Degrees
    I've been watching the Stanford CS193P lectures and I've been working on the assignment calculator. I got through the first assignment fairly easily, and I'm trying to do the extra credit for the assignment now. I'm stuck however at one of the extra credit questions: Implement a user-interface for choosing whether the operand to sin() or cos() is considered radians or degrees. When you call sin(x) in the C library, x is assumed to be in radians (i.e. 0 to 2π goes around the circle once), but users might want to enter 180 and press the sin button and get 0 instead of -0.8012 (which is the sine
  • Emojis messing with obj-c's sizeWithFont math
    In a UITableView that needs to display a long list of chatlike conversations, often containing emojis, a size calculation error occurs. My problem is, that if a string is just the right length, and I use sizeWithFont, I on my first measurement using sizewithfont get an incorrect length of the string, causing a "linebreak". I assume that it is because the string ":-)" is broader than the actual smiley icon. The evidence can be seen here : Now, over at some other stacks, some claim that sizeWithFont will only account for the string, not the Emoji, which for me doesn't make sense, since it gets