Lorsqu’un programme Xcas (par exemple nomprog) a des variables typées, on pourra le traduire en C++ et le compiler grâce à la commande cpp suivi du nom du
programme (par exemple cpp(nomprog))
Cela va créer un fichier giac_nomprog.cpp et un fichier
libgiac_nomfichier.so sur le disque dur.
Attention le nom du fichier doit avoir plus qu’une lettre.
Par exemple :
truc(n:integer):={return 2*n+1;} puis
cpp(truc)
On obtient :
1
et cela a créé sur le disque dur le fichier giac_truc.cpp qui est
un fichier C++ et le fichier libgiac_truc.so qui est
le fichier C++ compilé :
Voici ce que contient giac_truc.cpp :
#include <giac/giac.h>
using namespace std;
namespace giac {
giac::gen truc(int n_i,const giac::context * contextptr){
giac::makevecteur(return 2*n_i+1)
}
giac::gen _truc(const giac::gen & g,const giac::context * contextptr){
return truc(g,contextptr);
}
const string _truc_s("truc");
unary_function_eval __truc(0,&_truc,_truc_s);
unary_function_ptr at_truc(&__truc,0,true);
}
La commande insmode(nomprog) utilisé dans une session Xcas va lire
le module compilé libgiac_truc.so sur le disque dur.
On peut alors utiliser le même nom nomprog) dans cette session Xcas
mais le programme sera plus efficace grâce à la compilation.