Как представлять и упрощать символические выражения в GiNaC
Я новичок в библиотеке GiNac на C++ и борюсь с одной конкретной темой. Я хочу представлять и упрощать символические выражения (выражения с объединением, пересечением, а не с оператором) с помощью GiNac. Я пробовал следующий пример
#include <iostream>
#include <ginac/ginac.h>
using namespace std;
using namespace GiNaC;
int main()
{
symbol x("x"), y("y"), z("z");
ex boolean_expr = (!x || y) && (x || z);
cout << "Boolean expression: " << boolean_expr << endl;
ex simplified_expr = normal(boolean_expr);
cout << "Simplified expression: " << simplified_expr << endl;
return 0;
}
Но я продолжаю получать ошибки, связанные с операторами ||, ! и &&. Например,
> note: candidate: ‘operator!(bool)’ <built-in>
> note: no known conversion for argument 1 from ‘GiNaC::symbol’ to `bool’
> error: no match for ‘operator!’ (operand type is `GiNaC::symbol’)
Я также пытался заменить ||, ! и && на or, not и соответственно, но получил аналогичные ошибки.
> error: no match for ‘operator!’ (operand type is ‘GiNaC::symbol’)
ex boolean_expr = not(x) or y and (x or not(z));
Итак, мой вопрос в том, как я могу представлять и или нет. Я использую Ginac 1.8.6 отсюда . Я также проверил руководство здесь , но не нашел ответа.