Я пытаюсь понять, как использовать Mathematica из C через Mathlink.
Если я просто хочу вычислить значение встроенной функции, я могу сделать
MLPutFunction( lp, "RiemannSiegelZ", 1L);
MLPutDouble(lp, val);
, и все в порядке .
Теперь, если мне нужно значение производной, все становится еще хуже:
MLPutFunction( lp, "RiemannSiegelZ'", 1L);
MLPutDouble(lp, val);
не работает. Я попытался вставить функцию "D", но у меня ничего не получалось. Лучший способ, который я смог найти так далеко, - это
char query[128];
sprintf(query, "N[RiemannSiegelZ'[%.20lf]]", val);
MLPutFunction(lp, "ToExpression", 1);
MLPutString(lp, query);
, что он действительно работает, но он очень медленный, вероятно, потому, что я прошу Mathematica проанализировать выражение, а не просто вызвать функцию ... Есть ли способ лучше?