Previous Up Next

12.3.1  Pour traduire un programme Xcas en C++

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.


Previous Up Next