giac et sage?

Utilisation de Xcas

Modérateur : xcasadmin

loic
Messages : 168
Inscription : ven. mars 14, 2008 7:20 pm

giac et sage?

Message par loic » jeu. févr. 24, 2011 4:59 pm

Bonjour,

Je viens de découvrir avec curiosité une version" sage" sur cette page:

http://www-fourier.ujf-grenoble.fr/~par ... le_fr.html

J'ai essayé d'installer le package sous sage 4.6.1 (c'est la dernière version)

Code : Tout sélectionner

loic-laptop:~$ ./Documents/sage-4.6.1/sage -i Téléchargements/giac-0_9_0.spkg 
Installing Téléchargements/giac-0_9_0.spkg
Calling sage-spkg on Téléchargements/giac-0_9_0.spkg
Warning: Attempted to overwrite SAGE_ROOT environment variable
giac-0_9_0
Machine:
Linux loic-laptop 2.6.32-5-amd64 #1 SMP Wed Jan 12 03:40:32 UTC 2011 x86_64 GNU/Linux
Deleting directories from past builds of previous/current versions of giac-0_9_0
Extracting package /home/loic/Téléchargements/giac-0_9_0.spkg ...
-rw-r--r-- 1 loic loic 17708473 23 févr. 22:52 /home/loic/Téléchargements/giac-0_9_0.spkg
Finished extraction
sage: After decompressing the directory giac-0_9_0 does not exist
This means that the corresponding .spkg needs to be downloaded
again.
http://www.sagemath.org//packages/optional/giac-0_9_0.spkg --> giac-0_9_0.spkg
[ ]
http://www.sagemath.org//packages/standard/giac-0_9_0.spkg --> giac-0_9_0.spkg
[ ]
http://www.sagemath.org//packages/experimental/giac-0_9_0.spkg --> giac-0_9_0.spkg
[ ]
http://www.sagemath.org//packages/archive/giac-0_9_0.spkg --> giac-0_9_0.spkg
[ ]
**********************************************************************
* Unable to download giac-0_9_0
* Please see http://www.sagemath.org//packages for a list of valid
* packages or check the package name.
**********************************************************************
/home/loic/Documents/sage-4.6.1/spkg/build
bunzip2: Can't open input file giac-0_9_0.spkg: No such file or directory.
tar: Ceci ne ressemble pas à une archive de type « tar »
tar: Arrêt avec code d'échec à cause des erreurs précédentes
tar: giac-0_9_0.spkg : la fonction open a échoué: Aucun fichier ou dossier de ce type
tar: Error is not recoverable: exiting now
Second download resulted in a corrupted package.


Il semble qu'il y ait un problème avec l'archive en elle-même car la compilation de se lance pas.

Sinon, quelques questions:
- Les discussions avec Sage ont-elles reprises?
- A-t-on un espoir de pouvoir utiliser un jour giac en alternative de maxima dans sage?

Merci d'avance

Loïc

Mon opinion: Sage est une véritable pieuvre tentaculaire quant à la multiplicité des logiciels utilisés.
Sa principale faiblesse, au vue des tests que j'ai (modestement) réalisé, est le calcul formel et notamment maxima.
Performance et fiabilité loin derrière Giac/XCas. (à mon avis ;))

parisse
Messages : 5739
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: giac et sage?

Message par parisse » ven. févr. 25, 2011 8:21 am

loic a écrit :Bonjour,

Je viens de découvrir avec curiosité une version" sage" sur cette page:

http://www-fourier.ujf-grenoble.fr/~par ... le_fr.html

J'ai essayé d'installer le package sous sage 4.6.1 (c'est la dernière version)
Je mets a jour le spkg a partir de la version 0.9.1, mais je n'ai pas le temps de tester pour le moment, dites-moi si ca marche!
Sinon, quelques questions:
- Les discussions avec Sage ont-elles reprises?
- A-t-on un espoir de pouvoir utiliser un jour giac en alternative de maxima dans sage?
Non, aucune discussion depuis longtemps. Je ne crois pas que les gens de sage soit reellement interesses pour collaborer avec giac, ou alors seulement dans la mesure ou je ferai tout le travail d'adaptation necessaire. Pourtant j'ai bien essaye a plusieurs reprises de montrer qu'en performances sur les calculs polynomiaux, giac etait interessant et qu'ailleurs giac se developpait dans des directions complementaires a sage (i.e. en calcul formel generaliste), mais j'ai l'impression qu'ils preferent redevelopper ca eux-memes plutot que collaborer a un travail d'adaptation (cf. par exemple le choix d'adapter ginac comme base pour les symboliques). C'est dommage...

loic
Messages : 168
Inscription : ven. mars 14, 2008 7:20 pm

Re: giac et sage?

Message par loic » ven. févr. 25, 2011 4:28 pm

une petite idée quant au message d'erreur ou pas du tout?

parisse
Messages : 5739
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: giac et sage?

Message par parisse » ven. févr. 25, 2011 5:55 pm

Non, pas d'idées, je ne sais pas comment fonctionne le système de build de sage.

frederic han
Messages : 1137
Inscription : dim. mai 20, 2007 7:09 am
Localisation : Paris
Contact :

Re: giac et sage?

Message par frederic han » dim. févr. 27, 2011 5:00 pm

Bonjour a tous,

j'ai fait quelques essais.

pour l'erreur: le paquet de bernard cree un repertoire: giac_spkg dans: spkg/build
mais il s'appelle giac-0_9_1.spkg ce qui pose probleme.

j'ai donc teste:

ln -s giac-0_9_1.spkg giac_spkg.spkg

puis sage -i giac_spkg.spkg

et la la compilation commence.

En fait, j'ai l'impression qu' a part pour la doc (hevea et quelques tex extra) et pour cocoa, sage dispose des headers necessaires par defaut pour compiler giac facilement (ainsi que des librairies pour l'executer). (ntl pari gmp ...)
Peut etre devrais tu dans ton spkg compiler la doc tex et le html pour minimiser les dependances extra sage?
le flag de compilation CXXFLAGS du fichier spkg-install ne devrait etre active qu'en amd64 peut etre peux tu mettre un test avec
(# Parisse told me to do this.
CXXFLAGS="-O2 -DSMARTPTR64 -D_I386_ $CXXFLAGS"; export CXXFLAGS
)
peut etre comme ca? (je n'ai pas de 64 pour tester)

if [ backquote uname -m backquote ] = "amd64" ; then ... fi


Mais attention, ce spkg ne sert que pour installer/compiler giac, si on l'a deja ca me semble moins utile.


J'ai donc plutot regarde comment sage utilisait maple ou macaulay2. (ie juste une petite interface qui lance un autre logiciel deja installe) Ca me semble plus simple (essentiellement un fichier python). mais c'est moins efficace que pour maxima ou singular.

j'arrive a lancer giac depuis sage et a executer des instructions telles que factoriser, mais il faut faire attention au temps perdu dans les echanges de donnees, car ca passe par un fichier. (on peut cependant affecter des variables giac



J'ai quelques questions:

1) avec read peut on enlever les [] de la reponse? ca ne m'a pas l'air tres genant mais ca n'est pas trop coherent avec les autres logiciels. (op(read "tutu")) ne marche pas lorsqu'il n'y a qu'un element, j'obtiens seq[4] au lieu de 4
2) y a t'il une facon d'avoir la completion par tabulation des instructions existantes comme sous xcas? ( l'aide avec ? est fonctionnelle sous sage aussi mais pour maple ils font les 2)
3) Peut t'on n'afficher que le resultat et retirer les retours chariots et le Time? la je l'ai mis dans le script python.

a+
Fred

parisse
Messages : 5739
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: giac et sage?

Message par parisse » dim. févr. 27, 2011 7:13 pm

frederic han a écrit : pour l'erreur: le paquet de bernard cree un repertoire: giac_spkg dans: spkg/build
mais il s'appelle giac-0_9_1.spkg ce qui pose probleme.

j'ai donc teste:

ln -s giac-0_9_1.spkg giac_spkg.spkg

puis sage -i giac_spkg.spkg
Salut!

Tu as une idée de comment automatiser la création du lien?
En fait, j'ai l'impression qu' a part pour la doc (hevea et quelques tex extra) et pour cocoa, sage dispose des headers necessaires par defaut pour compiler giac facilement (ainsi que des librairies pour l'executer). (ntl pari gmp ...)
Peut etre devrais tu dans ton spkg compiler la doc tex et le html pour minimiser les dependances extra sage?
Ils devraient y être pourtant. Il faut peut-etre rajouter les fichiers stamps pour que le Makefile ne croit pas qu'il faut les refaire.
le flag de compilation CXXFLAGS du fichier spkg-install ne devrait etre active qu'en amd64 peut etre peux tu mettre un test avec
(# Parisse told me to do this.
CXXFLAGS="-O2 -DSMARTPTR64 -D_I386_ $CXXFLAGS"; export CXXFLAGS
)
peut etre comme ca? (je n'ai pas de 64 pour tester)
En fait l'ajout de SMARTPTR64 est inutile sur amd64, il est automatique donc je l'enlève.

J'ai donc plutot regarde comment sage utilisait maple ou macaulay2. (ie juste une petite interface qui lance un autre logiciel deja installe) Ca me semble plus simple (essentiellement un fichier python). mais c'est moins efficace que pour maxima ou singular.
Oui, c'est bien l'interfaçage qui demande du travail. C'est déjà un beau résultat que tu as réussi à obtenir. A terme, on devrait même pouvoir faire mieux que maxima, puisqu'on devrait pouvoir appeler giac en mode librairie et non via des flux textes.
J'ai quelques questions:

1) avec read peut on enlever les [] de la reponse? ca ne m'a pas l'air tres genant mais ca n'est pas trop coherent avec les autres logiciels. (op(read "tutu")) ne marche pas lorsqu'il n'y a qu'un element, j'obtiens seq[4] au lieu de 4
pour enlever les [] de read, il suffit de mettre ligne 4788 de prog.cc return gen(v,_SEQ__VECT). Pour le seq[4] c'est parce que op renvoie une séquence dans xcas et pas un élément si la liste en contenait plusieurs. On peut aussi décider de ne renvoyer que v[0] si v.size()==1 dans prog.cc ligne 4788, ça donnerait:

Code : Tout sélectionner

return v.size()==1?v.front():gen(v,_SEQ__VECT)
Dis-moi ce que tu en penses.
2) y a t'il une facon d'avoir la completion par tabulation des instructions existantes comme sous xcas? ( l'aide avec ? est fonctionnelle sous sage aussi mais pour maple ils font les 2)
oui, il suffit de faire comme pour texmacs, mais ça nécessite que sage envoie une chaine particulière et qu'on lui retourne la liste des complétions, comme lignes 658 à 716 de icas.cc
3) Peut t'on n'afficher que le resultat et retirer les retours chariots et le Time? la je l'ai mis dans le script python.
a mon avis, le plus simple serait de rajouter un flag --sage de lancement de giac et de faire un traitement à part en recopiant et modifiant le code normal.

frederic han
Messages : 1137
Inscription : dim. mai 20, 2007 7:09 am
Localisation : Paris
Contact :

Re: giac et sage?

Message par frederic han » dim. févr. 27, 2011 9:55 pm

Salut,

je pense qu'il faut juste que le repertoire contenant le tout s'appelle
giac-0.9.1 au lieu de giac_spkg

ensuite j'ai teste sage -pkg giac-0.9.1 pour a creer un
giac-0.9.1.spkg et la sage -i giac-0.9.1.spkg commencait bien a compiler.

si tu ne peux pas changer le nom du repertoire alors appelle le fichier que tu donnes:
giac_spkg.spkg la il devrait compiler.

Pour la doc je n'avais pas vu que tu avais deja precompile.


NB: pour le -D SMARTPT64 j'ai eu des pb sous freebsd amd64 lorsque je ne l'avais pas. (a l'execution uniquement, mais ca compilait sans raler)

pour l'integration dans sage le plus sur est de faire une option giac --sage comme pour texmacs avec
1) pas de [] pour le resultat de read
2) pas de Time... juste le resultat
3) le script pour maple envoie bien des lettres a completer avec tabulation. (il les fait meme toutes pour creer un lexique)
comme ca ca limitera les effets de bord.

parisse
Messages : 5739
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: giac et sage?

Message par parisse » lun. févr. 28, 2011 7:48 am

Je viens de renommer le répertoire du spkg. Ca devrait donc compiler modulo la doc.
Pour le read, je viens de le changer comme indiqué hier.
Je mets dans icas.cc la reconnaissance de l'option --sage, avec suppression de l'affichage de time et du retour chariot. Comment marche précisément la reconnaissance d'une demande de complétion? Est-ce qu'il envoie en chaine à traiter par exemple "fac"+char(9)? Dans ce cas comment je renvoie la liste des complétions? Une liste de chaine séparée par un retour chariot?

frederic han
Messages : 1137
Inscription : dim. mai 20, 2007 7:09 am
Localisation : Paris
Contact :

Re: giac et sage?

Message par frederic han » lun. févr. 28, 2011 1:07 pm

il fait comme cela:
def completions(self, s):
"""
Return all commands that complete the command starting with the
string s. This is like typing s[Ctrl-T] in the maple interpreter.

EXAMPLES::

sage: c = maple.completions('di') # optional - maple
sage: 'divide' in c # optional - maple
True
"""
bs = chr(8)*len(s)
if self._expect is None:
self._start()
E = self._expect
E.sendline('%s%s%s'%(s,chr(20),bs))
t = E.timeout
E.timeout=0.3 # since some things have no completion
try:
E.expect('----')
except pexpect.TIMEOUT:
E.timeout = t
return []
E.timeout = t
v = E.before
E.expect(self._prompt)
E.expect(self._prompt)
return v.split()[2:]


et maple retourne une reponse par ligne, avec pour derniere ligne ---- sauf s'il n'y a pas de reponses la il ne retourne rien.
Fred

parisse
Messages : 5739
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: giac et sage?

Message par parisse » lun. févr. 28, 2011 1:29 pm

donc la chaine envoyée contient si j'ai bien compris le début de la fonction recherchée, un caractère espace puis autant de caractères chr(8) que dans le mot? ca parait bizarre. Il me semblerait plus simple de n'envoyer que le mot suivi par exemple de Ctrl-I qui est la touche de complétion standard. Mais bon, dis-moi ce que tu préfères vu que contrairement sans doute à maple, on peut choisir ce qu'on veut puisqu'on fait ça nous-mêmes.

frederic han
Messages : 1137
Inscription : dim. mai 20, 2007 7:09 am
Localisation : Paris
Contact :

Re: giac et sage?

Message par frederic han » lun. févr. 28, 2011 1:53 pm

non,
sous maple (lance avec maple -t) comme le fait sage, on tape juste le debut du mot puis control t et l'on obtient la liste des completions.

a part ca ton spkg n'a pas le meme nom que le repertoire donc sage -i ne le trouve pas.

ensuite j'ai un Pb de comilation (je suis en 32bits)

libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -DIN_GIAC -I. -I.. -I. -I.. -I/root/sage/local/include -I/root/sage/local/include -fno-strict-aliasing -DGIAC_GENERIC_CONSTANTS -MT pari.lo -MD -MP -MF .deps/pari.Tpo -c pari.cc -fPIC -DPIC -o .libs/pari.o
pari.cc: In function 'giac::gen giac::GEN2gen(long int* const&, const giac::vecteur&)':
pari.cc:263: error: 'lgeflist' was not declared in this scope
pari.cc: In function 'long int* giac::gen2GEN(const giac::gen&, const giac::vecteur&, const giac::context*)':
pari.cc:465: error: 'struct gp_data' has no member named 'env'
pari.cc: In function 'void giac::pari_lift_combine(const giac::vecteur&, const std::vector<giac::dbgprint_vector<giac::gen>, std::allocator<giac::dbgprint_vector<giac::gen> > >&, giac::gen&, std::vector<giac::dbgprint_vector<giac::gen>, std::allocator<giac::dbgprint_vector<giac::gen> > >&)':
pari.cc:579: error: 'combine_factors' was not declared in this scope
pari.cc: In function 'giac::gen giac::pari_exec(const std::string&, const giac::context*)':
pari.cc:596: error: 'struct gp_data' has no member named 'env'
pari.cc: In function 'giac::gen giac::in_pari(const giac::gen&, const giac::context*)':
pari.cc:655: error: 'struct gp_data' has no member named 'env'
pari.cc:658: error: 'struct gp_data' has no member named 'env'
pari.cc:678: error: invalid conversion from 'const char*' to 'char*'
make[1]: *** [pari.lo] Erreur 1
make[1]: quittant le répertoire « /mnt/sage-4.6.1/spkg/build/giac-0.9.1/src/src »
make: *** [install-recursive] Erreur 1

c'es chez moi ou il y a eu des changements ou est ce qu'il manque des headers?
Fred

parisse
Messages : 5739
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: giac et sage?

Message par parisse » lun. févr. 28, 2011 2:29 pm

le plus simple serait que tu me donnes la chaine précise que tu enverras via python vers giac --sage
par exemple si on veut les complétions de "fac", est-ce que je reçois la chaine "fac"+chr(9) ou bien "fac"+chr(20)+chr(8)+chr(8)+chr(8) (ce que j'ai compris pour le code que tu as envoyé) ou autre chose?
Pour le package, je n'ai pas compris, il s'appelle bien giac-0_9_1.spkg, et c'est maintenant le même nom que le répertoire (mis à jour ce matin).
Sinon, pour pari, il se peut que sage utilise une version plus récente de pari, pas encore supportée par giac, auquel cas il faudra rajouter --disable-pari dans le configure

Code : Tout sélectionner

./configure --prefix="$SAGE_LOCAL" --disable-pari

frederic han
Messages : 1137
Inscription : dim. mai 20, 2007 7:09 am
Localisation : Paris
Contact :

Re: giac et sage?

Message par frederic han » lun. févr. 28, 2011 3:25 pm

En fait je viens de me rendre compte qu'il recuperait une fois pour toute la liste de toutes les instructions, donc pour maple il le fait en envoyant successivement toutes les completions possibles, mais c'est plus simple et plus rapide de faire comme pour pari:

il envoie une instruction (pour pari: ?*) qui retourne la liste de toutes les fonctions.
sinon tu peux envoyer le mot+chr(9) comme sous xcas

pour le spkg ton repertoire s'appelle: giac_0.9.1 (en tout cas celui qu'il cree) et le fichier giac-0_9_1.spkg
il y a un sierpinski not found dans casgeo.tex (le fichier est sierpinsky1

pour pari ca a l'air d'etre: gp 2.4.3 svn-12623

a part ca ca compile

Fred

parisse
Messages : 5739
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: giac et sage?

Message par parisse » lun. févr. 28, 2011 5:57 pm

je viens de changer giac_0.9.1 en giac-0_9_1 et de rajouter --disable-pari, puisque giac fonctionne avec pari 2.3 mais je n'ai rien testé avec 2.4.
Je ferai le changement pour giac --sage et la complétion en principe demain.
a+

parisse
Messages : 5739
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: giac et sage?

Message par parisse » mar. mars 01, 2011 1:13 pm

Je viens de mettre à jour le spkg.
Chez moi (avec un sage qui date de quelques mois), sage -i marche, à condition d'avoir hevea installé (pas compris pourquoi il recompile certains fichiers tex).
J'ai mis à jour icas.cc, de sorte qu'une chaine se terminant par tab (code ascii 9) déclenche la recherche de complétions et les affiche 1 par ligne en terminant par ----. A noter aussi que giac --sage n'affiche plus le temps, ni de retour chariot après un résultat.

Répondre