Afin que vous ne vous lanciez pas dans des choses potentiellement inutiles:
J'avais tenté, il y a quelques temps désormais, de porter sur TI-83 Premium CE des moteurs CAS légers en C:
- EigenMath (qui a eu des ports sur calculatrices, déjà)
- Mathomatic (pas de port sur calculatrice que je sache ?)
J'ai fini par réussir à les builder tous les deux, mais manque de pot, l'un et/ou l'autre manquait de stack et de heap (voire les deux, en fait), et un des deux était par ailleurs trop gros pour rentrer dans un 8xp
Bref, chou blanc donc, c'est pas cette piste là qu'il faut explorer (oui, j'ai essayer d'alléger plein de trucs de tous les côtés, non ça ne suffit pas).
Voilà donc TI rassuré, apparemment ce ne sera pas demain la veille qu'on aura un vrai moteur de calcul formel sur CE
Par la suite, plus récemment, j'avais commencé à regarder avec Mateo si l'on pouvait se mettre à porter le coeur de nDerive depuis le code TI-Basic vers du code C ANSI.
Mais très peu de temps après avoir commencé à mettre en place les fichiers, j'ai trouvé presque par hasard le programme "
difft". Comme nDerive, ce n'est pas un moteur de calcul formel, mais "juste" le minimum en C pour parser (et en toute rigueur
) l'entrée, et donner les différentes parties au dispatcheur de calcul de dérivée (j'ai pas regardé dans le code précisément, mais je suppose que ça suit l'arbre de manière récursive jusqu'au bout) - on y retrouve donc assez simplement les règles de bases de dérivations, et les dérivées de quelques fonctions trigo etc.
Après un peu d'effort (dont un module d'output sous forme de string simplement, et non graphique comme c'est par défaut), j'ai réussi à le builder et à le faire fonctionner sur CE
Ceci est cependant juste un
proof-of-concept - dans l'état actuel (un de mes projets sur le Project Builder), il exécute uniquement la dérivée de cette fonction, puisque je n'ai pas codé d'input, ni lors de l'exécution (en tapant caractere par caractère), ni en amont (par exemple, en tapant l'expression d'abord sur l'écran de calcul, puis en lançant le programme juste après, qui se chargera de récupérer et parser Ans).
Un assez gros défaut, par ailleurs, et spécifique à difft, c'est qu'il attend l'input d'une façon très spécifique, avec des parenthèses, obligatoires, et très judicieusement placées
(et autant le dire tout de suite, c'est chiant) - sinon ça ne fonctionne tout simplement pas. Autre chose: Il n'est pas capable de simplifier les résultats non plus (hé ouim on rappel que ce n'est pas un CAS)...
( D'ailleurs, c'est marrant mais difft est même capable de donner les étapes de dérivées (et c'est normal après tout, puisqu'il suffit de suivre chaque appel à la bonne fonction de dérivée appelée (en gros, lors de chaque opérateur/fonction, quelle règle de dérivation est suivie), c'est sympa )Enfin bref, "difft" fonctionne à priori, mais aurait quand même besoin de grosses améliorations côté input au minimum.
Sinon, Hamza m'a partagé une version 100% Lua du moteur de dérivation de nDerive - il serait sans doute plus intéressant (et plus simple) de se baser la dessus désormais pour "convertir" ce code Lua en code C ANSI.
Si ça intéresse quelqu'un, je suppose qu'Hamza pourra partager son fichier .lua - et puis tant qu'à faire, autant utiliser le Project Builder (en mode projet multi-utilisateurs)...