Transformer une expression BASIC
e en une fonction C
f telle que
f(x0)=e|x=x0 est assez facile. Il suffit de prendre l'expression au format tokénisé (donc soit lue directement comme argument, soit tokénisée avec
push_parse_text) et de:
- soit appliquer une fonction comme
push_substitute_simplify (c'est dans
unknown.h, mais premièrement le fonctionnement me semble assez facile à deviner vu son prototype et deuxièmement il y a les détails dans la documentation du SDK de TI)
- soit faire son travail à la main:
ESI expression;
float f(float x)
{
ESI top_estack_backup=top_estack;
volatile float result;
TRY
push_Float(x);
push_quantum_pair(VAR_X_TAG,EQ_TAG);
push_expr_quantum(expression,WITH_TAG);
NG_approxESI(top_estack);
result=estack_number_to_Float(top_estack);
ONERR
result=NAN;
ENDTRY
top_estack=top_estack_backup;
return result;
}
void _main(void)
{
expression=top_estack;
//...
}
Le problème est que toi, tu veux une fonction implicite. C'est plus compliqué. Soit tu évalues la valeur de la différence des 2 côtés de l'équation aux paires (x,y) comme dans mon exemple avec une variable et tu travailles avec ça (c'est comme ça que marche l'"implicit plotter" de AMS), soit tu travailles avec le
solve du BASIC.