Numworks+Giac
Posted: 03 Sep 2017, 09:32
J'ai partiellement reussi a integrer giac dans l'application de calculs, sur le simulateur uniquement bien sur (pas assez de flash pour la calculatrice physique).
Voici comment:
1/ Installer Giac/Xcas sur Mac, ca doit aussi marcher sous Linux (je n'ai pas teste)
2/ Dans le Makefile principal ajouter
Sur Mac, il est peut-etre necessaire de mettre
3/ Modifier apps/calculation/calculation.cpp, remplacer
par
Ensuite recompiler, par exemple avec gcc-7
Lancer ./app.elf, essayez par exemple int(1/x,1,2), observez que l'input est remplace le resultat exact du calcul fait par giac (en mode geogebra). J'aurais bien voulu remplacer l'output par le resultat mais ca ne marche pas parce qu'il y a surement un post-traitement qui veut un resultat approche. Mais l'objectif est atteint de mon cote, ca marche et c'est tres facile a mettre en oeuvre.
Voici comment:
1/ Installer Giac/Xcas sur Mac, ca doit aussi marcher sous Linux (je n'ai pas teste)
2/ Dans le Makefile principal ajouter
- Code: Select all
LDFLAGS = -lgiac
Sur Mac, il est peut-etre necessaire de mettre
- Code: Select all
LDFLAGS = -L/Applications/usr/lib -lgiac
3/ Modifier apps/calculation/calculation.cpp, remplacer
- Code: Select all
void Calculation::setContent(const char * c, Context * context) {
...
}
par
- Code: Select all
extern "C" const char * caseval(const char *);
void Calculation::setContent(const char * c, Context * context) {
reset();
#if 0
strlcpy(m_inputText, c, sizeof(m_inputText));
#else
static const char * bidon=caseval("init geogebra");
const char * ans=caseval(c);
strlcpy(m_inputText,ans,sizeof(m_inputText));
#endif
Evaluation<double> * evaluation = input()->evaluate<double>(*context);
evaluation->writeTextInBuffer(m_outputText, sizeof(m_outputText));
delete evaluation;
}
Ensuite recompiler, par exemple avec gcc-7
- Code: Select all
make PLATFORM=simulator CC=gcc-7 CXX=g++-7 LD=g++-7
Lancer ./app.elf, essayez par exemple int(1/x,1,2), observez que l'input est remplace le resultat exact du calcul fait par giac (en mode geogebra). J'aurais bien voulu remplacer l'output par le resultat mais ca ne marche pas parce qu'il y a surement un post-traitement qui veut un resultat approche. Mais l'objectif est atteint de mon cote, ca marche et c'est tres facile a mettre en oeuvre.