Qt ma własne wątki QThread, druga biblioteka GUI to mogłoby być wx, on też ma swoje wątki, wxThread, ale skoro jesteś spętany tym co masz na serwerze, to nie wiem, czy wx'y tam są. A dlatego wx, że hmmm, zawsze dla mnie to był po prostu pierwszy wybór zaraz po Qt ;)
Z poziomu wątku nie można bezpośrednio czegoś wpisać do GUI, Qt wyrzuca wtedy błąd, ale możesz sobie przepisywać dane przez jakąś zmienną pośredniczącą ;)
libmatheval ma otwarte źródło, więc nawet jak nie zlinkujesz tego statycznie, to możesz dodać cały kod biblioteki do projektu i też będzie działać - może z drobnymi zmianami w ścieżkach do plików nagłówkowych itp. Robiłem tak kiedyś z jedną biblioteką do GUI współpracującą z SDL+OpenGL. A wzór możesz podawać bez zmiennej x i też będzie dobrze :)
Masz tu kod w libmatheval bez "f(x)" dla Twoich przykładowych danych (przerobiłem kod z tutoriala...):
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include <matheval.h>
/* Size of input buffer. */
#define BUFFER_SIZE 256
/* Program is demonstrating use of GNU libmatheval library of procedures
for evaluating mathematical functions. */
int
main (int argc, char **argv)
{
char buffer[BUFFER_SIZE]; /* Input buffer. */
int length; /* Length of above buffer. */
void *f; /* Evaluators for function and function derivative. */
strcpy(buffer,"sin( exp(2.21) + 2.5^3 )");
length = strlen (buffer);
if (length > 0 && buffer[length - 1] == '\n')
buffer[length - 1] = '\0';
/* Create evaluator for function. */
f = evaluator_create (buffer);
assert (f);
/* Calculate and print values of function. */
printf ("%g\n",evaluator_evaluate_x (f, 0.0));
/* Destroy evaluators. */
evaluator_destroy (f);
exit (EXIT_SUCCESS);
}
Daje wynik: -0.38206
Kąt w sinusie pobiera w radianach, nie doszukałem się jak wygląda tam funkcja rad2deg.
Python też tak standardowo interpretuje argumenty funkcji trygonometrycznych, daje mi wynik: -0.3820604233284872