visual-c++ - c++线性公式简化库

标签 visual-c++ boolean expression linear-algebra

可以简化如下公式的最好的(就使用和性能而言)C++/C++11 库是什么?

(a < 0 && b > 0) || (a < 0 && c > 0) || (a < 0 && c > 1) 

到(例如)
a < 0 && (b > 0 || c > 0)

我认为解释一件事非常重要(因为我看到这个问题被误解了)。

我不想简化 C/C++ 表达式——我知道,编译器可以做到。

我正在制作一个图形处理工具。在图的边缘,有一些关于其顶点的条件(假设顶点是 abc,这些条件类似于 a<bb>0 等 - 请注意,这些条件不表示为“字符串”,它们可以是任何函数或库调用)。在处理过程中,我将表达式收集在一起,在进一步的图形处理之前,我想简化它们。

条件和表达式将在运行时创建。

我希望能够向该库输入一些表达式,例如:
[...]
a = new Variable();
b = new Variable();
expr1 = lib.addExpr(a,0, lib.LESS);
expr2 = lib.addExpr(b,0, lib.MORE);
expr3 = lib.addExpr(expr1, expr2, lib.AND);
[...]
cout << lib.solve(exprn).getConditionsOf(a);

当然这个库可能会有更多漂亮的 API。我把它写成方法调用只是为了展示我期望的底层机制——强调我不需要源代码编译器或者这个问题与源代码编译优化无关。

最佳答案

您正在寻找可以处理 boolean 逻辑的 C++ 符号数学库。

以下是一些可以开始的:

  • SymbolicC++ : 用于 C++ 的强大的通用符号数学库,但不是专门用于 boolean 数学。
  • BoolStuff :不是一个通用的符号数学库,非常专注于 boolean 逻辑,但可能正是你想要的。
  • Logic Friday :独立的数字电路分析工具和 boolean 逻辑简化器,带有 C API。
  • 关于visual-c++ - c++线性公式简化库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13528124/

    相关文章:

    java - 嵌套 for 循环中的 If-else block - 编译器声称我需要一个返回语句

    Python Bool 和 int 比较和索引列表上的 boolean 值

    c# - 如何在动态选择中使用表达式创建 "inline if statement"以进行空检查

    javascript - 如何在javascript中开发正则表达式?

    visual-c++ - MFC AfxParseURL反向函数?

    c++ - 未解析的外部符号 "public: __thiscall Vector<int> [...]"

    c++ - Intellisense 与编译器 : "A namespace with this name does not exist" vs "not a class or struct name" 不一致

    c++ - 在 Visual C++ 和 clang 中使用 C++11 unordered_set

    python - 为什么我不能在 Python 中扩展 bool?

    r - 使用包中的评估调用包装 data.table