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.