В MathGL есть специальные классы mglExpr и mglExprC для вычисления формул заданных строкой для действительных и комплексных чисел соответственно. Классы определены в #include <mgl2/data.h> и #include <mgl2/datac.h> соответственно. При создании класса происходит разбор формулы в древовидную структуру. А при вычислении только выполняется достаточно быстрый обход по дереву. В данный момент нет различия между верхним и нижним регистром. Если аргумент какой-либо функции лежит вне её области определения, то возвращается NaN. See Текстовые формулы.
mglExpr: mglExpr (const char *expr) ¶mglExprC: mglExprC (const char *expr) ¶HMEX mgl_create_expr (const char *expr) ¶HAEX mgl_create_cexpr (const char *expr) ¶Разбирает формулу expr и создает древовидную структуру, содержащую последовательность вызова функций и операторов для последующего быстрого вычисления формулы с помощью функций Calc() и/или CalcD().
mglExpr: ~mglExpr () ¶mglExprC: ~mglExprC () ¶void mgl_delete_expr (HMEX ex) ¶void mgl_delete_cexpr (HAEX ex) ¶Удаляет объект типа mglExpr.
mglExpr: mreal Eval (mreal x, mreal y, mreal z) ¶mglExprC: dual Eval (dual x, dual y, dual z) ¶mreal mgl_expr_eval (HMEX ex, mreal x, mreal y, mreal z) ¶dual mgl_cexpr_eval (HAEX ex, dual x, dual y, dual z) ¶Вычисляет значение формулы для 'x','r'=x, 'y','n'=y, 'z','t'=z, 'a','u'=u.
mglExpr: mreal Eval (mreal var[26]) ¶mglExprC: dual Eval (dual var[26]) ¶mreal mgl_expr_eval_v (HMEX ex, mreal *var) ¶dual mgl_cexpr_eval_v (HMEX ex, dual *var) ¶Вычисляет значение формулы для переменных в массиве var[0,...,’z’-’a’].