2010-11-01 145 views
28

我在尋找一個很好的開源數學庫,可以做這樣的事情:OpenSouce C/C++數學表達式解析器庫

  • 解析數學。表達式 「1 + 1 *(3/5)」
  • 集成

有誰知道這樣的事情?

+1

表達分析和綜合評價是相當不同的,這取決於你如何複雜的整合需要 – 2010-11-01 17:59:04

+0

一些免費的調車場的算法Java和C++實現將表達式轉換爲逆波蘭表示法然後評估這些可以在這裏找到:http://www.technical-recipes.com/2011/a-mathematical-expression-parser-in-java -and-cpp/ – AndyUK 2013-07-27 15:06:39

+1

解析數學表達式的示例:https:// stack overflow.com/a/32853177 – 2017-04-06 10:52:26

回答

1

另一種方法是在應用程序中嵌入解釋語言並使用該語言的數學解析器。

LUA爲這個越來越受歡迎 - 見How to embed lua in c++ via SWIG

3

我一直使用用C++編寫的muParser進行解析。你不會得到一個可以整合的圖書館;沒有一個嚴肅的重量級的圖書館太簡單了。像Maxima,Octave等開源符號集成器存在,但它們很難與之交互,並且該功能不能輕易地與項目的其餘部分分離。

7

還有GNU libmatheval,它做評估和分化。整合是一個很大的問題,即使對於無辜的被積函數。

+0

+1,我以前沒有遇到過,看起來很有趣。 – Flexo 2010-11-02 11:38:53

0

MathPresso庫是解析器和數學表達式的JIT編譯器,當性能很重要時我使用它。

一些測試: 評估表達式「x/y +(x * x * y + 18.243 * y)/ z」 - 其中變量是雙精度浮點數。

  • C++函數:144.1每秒百萬
  • MathPresso評價:133.8百萬每秒