nixp.ru v3.0

22 января 2017,
воскресенье,
06:47:00 MSK

DevOps с компанией «Флант»
XeNoN написал 8 марта 2006 года в 23:49 (256 просмотров) Ведет себя как мужчина; открыл 2 темы в форуме, оставил 6 комментариев на сайте.

Существует ли готовая библиотека по вычислению математических выражений типа:

f(x)=exp(x)-x*cos(x). Т.е. нужно получить значение f(x) при заданном х.

Я пока только одну нашел: libmath++, но хотелось бы знать есть ли другие?

XeNoN

Возможно я не ясно выразился. Мне нужно такое решение, чтобы я мог сделать нечто подобное:

char *math_expr = «exp(x)-x*cos(x)»;

duble y;

y = calculate(math_expr);

rgo

хЫх. например, gcc + libc.

можно примерно так:

FILE *f = fopen ("expr.c", "w");
fprintf (f, "#include \ndouble expr_func (double x) {return %s;}\n");
fclose (f);
system ("gcc -O2 expr.c");
system ("gcc -shared -o expr expr.c -lm");
void *h = dlopen ("expr", 0);
double (*f)(double) = (double (*)(double)) dlsym (h, "expr_func");
printf ("%lf\n", f (12345));

а можно, написать свой парсер/интерпретатор. Не так это сложно. Особенно если воспользоваться bison’ом.

ecobeingecobeing.ru
Экология и вегетарианство на благо всем живым существам Планеты.