Message
par parisse » jeu. juil. 02, 2015 2:30 pm
SI tu fais string s("factor(sqrt(5)/x)"); puis gen g(s,&ct); et g=eval(g,1,&ct); ca marche aussi. Quand tu tapes une ligne de commande dans xcas ou icas, ca donne une chaine qui est parse en un gen puis evalue exactement comme dans l'exemple ci-dessus.
Le principe general c'est que les fonctions C ne doivent pas evaluer leurs arguments, car ils sont deja evalues. Sinon, on evaluerait plusieurs fois les memes objets. L'exception, ce sont les fonctions qui auto-quotent certains arguments (par exemple := ou solve ...).
Je ne sais pas trop pour python, mais ne peux-tu pas adopter le meme principe, evaluer systematiquement les gen cree a partir de chaines de caracteres, et ensuite appeler les fonctions C sans evaluer quoi que ce soit? Ca devrait donner le meme comportement que dans Xcas il me semble.