Как представлять и упрощать символические выражения в 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 отсюда . Я также проверил руководство здесь , но не нашел ответа.

0 ответов

Другие вопросы по тегам