#include <iostream>
#include <exprtk.hpp>

int main()
{
    double x = 2.0;
    exprtk::symbol_table<double> variables;
    variables.add_variable("x", x);
    exprtk::expression<double> expression;
    expression.register_symbol_table(variables);
    exprtk::parser<double> parser;
    if (!parser.compile("x^2 + 1", expression)) {
        std::cerr << parser.error() << '\n';
        return 1;
    }
    std::cout << expression.value() << '\n';
    x = 3.0;
    std::cout << expression.value() << '\n';
}
