让程序支持自定义的数学计算器是常用功能,找了几个用来数学表达式解析求值的库,有几个看起来很不错。

各个数学表达式求值的综合对比

对比结果如下,ExprTK得分最高, TinyExpr得分最低,

GitHub - ArashPartow/math-parser-benchmark-project: C++ Mathematical Expression Parser Benchmark

1、TinyExpr

TinyExpr is a very small recursive descent parser and evaluation engine for math expressions. It's handy when you want to add the ability to evaluate math expressions at runtime without adding a bunch of cruft to your project.

In addition to the standard math operators and precedence, TinyExpr also supports the standard C math functions and runtime binding of variables.

https://github.com/codeplea/tinyexpr

2、Exprtk

C++数学表达式工具包库(ExprTk)是一个通用、易于使用、易于集成、运行时效率极高的数学表达式解析器和评估引擎。ExprTk支持多种形式的函数、逻辑和向量处理语义,并且非常容易扩展。

http://www.partow.net/programming/exprtk/

3、Muparser

许多应用程序需要解析数学表达式。muparser的主要目标是提供一种快速、简单和安全的方法来完成这一任务。muparser是一个用C++编写的可扩展的高性能数学表达式解析器库。它的工作原理是将数学表达式转换为字节码,并预先计算表达式的常量部分。为了获得最佳性能,muparser允许使用OpenMP并行计算表达式。使用OpenMP并行计算表达式。

该库在设计时考虑了可移植性,应该在每个标准兼容的C++编译器上编译。构建系统基于CMake。该代码在32位和64位架构上运行,并已使用Visual Studio 2019,CLANG和GCC进行了测试。提供代码示例是为了帮助您了解其用法。该库是开源的,并根据BSD -第2条“简化”许可证分发。最新稳定版本的源代码存档可在此处下载:

muparser库处于“生产”状态。代码更改保持在最低限度,几乎没有主动开发。主要的重点放在bug修复和保持归档与当前一代的C++编译器兼容。

https://beltoforion.de/en/muparser/

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐