giac et sage?

Utilisation de Xcas

Modérateur : xcasadmin

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

Re: giac et sage?

Message par frederic han » mar. mars 01, 2011 11:19 pm

Salut,

j'ai change:

ligne 834 de icas.cc
if (bs && s[bs-1]==63 && insage){
car je n'y arrivais pas avec tab. et en console ca sortait le ls

et j'ai remis le retour chariot:
ligne 889
// if (!insage)
celui la est utile, ce sont ceux qui accompagnaient le Time qui etaient genant et qui sont deja retires.

La ca marche (sauf les echanges de matrices mais ca ne se regle pas au meme endroit )

je vais mettre un brouillon sur ma page:

http://www.math.jussieu.fr/~han/xcas/

fred

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

Re: giac et sage?

Message par loic » mer. mars 02, 2011 7:47 am

bonjour,

J'allais écrire dans le forum pour le problème du nom du répertoire dans le fichier spkg mais je vois avec plaisir que ce fil a été prolongé!

Je viens de télécharger le dernier spkg sur le site et à l'installation, j'ai ce pb de compilation (dès le début de la compilation)

Code : Tout sélectionner

config.status: creating po/Makefile
Adding link . to giac in src
Making install in src
make[1]: entrant dans le répertoire « /home/loic/Documents/sage-4.6.1/spkg/build/giac-0_9_1/src/src »
/bin/bash ../libtool --tag=CXX   --mode=compile g++ -DHAVE_CONFIG_H -I. -I..  -DIN_GIAC -I. -I.. -I. -I..     -I/home/loic/Documents/sage-4.6.1/local/include  -O2 -D_I386_  -I/home/loic/Documents/sage-4.6.1/local/include -fno-strict-aliasing -DGIAC_GENERIC_CONSTANTS -MT input_lexer.lo -MD -MP -MF .deps/input_lexer.Tpo -c -o input_lexer.lo input_lexer.cc
libtool: compile:  g++ -DHAVE_CONFIG_H -I. -I.. -DIN_GIAC -I. -I.. -I. -I.. -I/home/loic/Documents/sage-4.6.1/local/include -O2 -D_I386_ -I/home/loic/Documents/sage-4.6.1/local/include -fno-strict-aliasing -DGIAC_GENERIC_CONSTANTS -MT input_lexer.lo -MD -MP -MF .deps/input_lexer.Tpo -c input_lexer.cc  -fPIC -DPIC -o .libs/input_lexer.o
input_lexer.ll: In function ‘int giac::find_or_make_symbol(const std::string&, giac::gen&, void*, const giac::context*)’:
input_lexer.ll:1348: error: conversion from ‘const unsigned int’ to ‘const giac::gen’ is ambiguous
gen.h:561: note: candidates are: giac::gen::gen(const giac::unary_function_ptr*, int) <near match>
gen.h:554: note:                 giac::gen::gen(giac::Tref_tensor<giac::gen>*) <near match>
gen.h:550: note:                 giac::gen::gen(giac::ref_symbolic*) <near match>
gen.h:547: note:                 giac::gen::gen(giac::ref_vecteur*, short int) <near match>
gen.h:545: note:                 giac::gen::gen(giac::ref_identificateur*) <near match>
gen.h:532: note:                 giac::gen::gen(const giac_float&)
gen.h:530: note:                 giac::gen::gen(double)
gen.h:525: note:                 giac::gen::gen(giac::ref_mpz_t*) <near match>
gen.h:520: note:                 giac::gen::gen(int128_t)
gen.h:518: note:                 giac::gen::gen(longlong)
gen.h:513: note:                 giac::gen::gen(size_t)
gen.h:508: note:                 giac::gen::gen(int)
make[1]: *** [input_lexer.lo] Erreur 1
make[1]: quittant le répertoire « /home/loic/Documents/sage-4.6.1/spkg/build/giac-0_9_1/src/src »
make: *** [install-recursive] Erreur 1

real	0m40.550s
user	0m32.386s
Une petite idée?


Si je comprends bien, Frédéric travaille sur un script python pour assurer l'interface entre sage et giac, bravo!

Sera-t-il possible à terme à son avis de carrément pouvoir appeler giac de manière transparente (sans avoir systématiquement à expliciter les giac(....) pour convertir les objets). En gros, ce que j'aimerais, c'est pouvoir utiliser giac à la place de maxima dans Sage (tout en conservant la syntaxe actuelle de Sage)

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

Re: giac et sage?

Message par parisse » mer. mars 02, 2011 9:03 am

Je rajoute une conversion explicite de unsigned int vers int dans input_lexer.ll j'espere que ca resoudra le probleme.
Je mets aussi a jour le spkg avec les modifs de Frederic dans icas.cc. J'ajoute aussi un lien depuis la page de compilation de giac vers la page de Frederic.

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

Re: giac et sage?

Message par loic » mer. mars 02, 2011 1:13 pm

Bien, à présent, le package compile.
Sur ma debian, j'ai du rajouter le package mesa-common-dev pour que ça passe

En revanche, sur la page de Frédéric Han, il est dit de télécharger le fichier sage.py
Je l'ai ensuite placé dans: sage-4.6.1/devel/sage-main/sage/interfaces/

Mais lorsque je lance sage, la commande

Code : Tout sélectionner

sage: from giac import giac
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)

/home/loic/Documents/sage-4.6.1/<ipython console> in <module>()

ImportError: No module named giac
Une idée?

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

Re: giac et sage?

Message par frederic han » mer. mars 02, 2011 6:20 pm

Salut, le spkg compile bien pour moi aussi, et la doc n'a pas eu a se compiler pour s'installer.

pour le giac.py

from giac va chercher giac.py dans le repertoire courant, ca permet de l'utiliser sans droits.

la tu peux faire:

from sage.interfaces.giac import giac

mais je me demande si ca n'est pas plutot dans:

sage-4.6.1/devel/sage/build/sage/interfaces qu'il vaut mieux le mettre.

(en tout cas c'est la que j'ai teste pour l'avoir dans le notebook)

ensuite tu peux mettre:

from giac import gic,giac_console,Giac dans le all.py (du rep interfaces)

et

dans:

build/sage/structure/sage_object.pyx

def _giac_(self, G=None):
if G is None:
import sage.interfaces.giac
G = sage.interfaces.giac.giac
return self._interface_(G)

def _giac_init_(self):
import sage.interfaces.giac
I = sage.interfaces.giac.giac
return self._interface_init_(I)

puis pour creer les pyc tu peux executer sage puis giac(2) avec les bons droits, puis ensuite ca devrait marcher avec des droits quelconques


Pour la syntaxe simple, pour l'instant des trucs comme cela marchent:

x,y=giac('x'),giac('y')

giac.int(1+cos(x),x)

Fred

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

Re: giac et sage?

Message par loic » mer. mars 02, 2011 9:26 pm

Merci bcp, je teste ça dès que possible

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

Re: giac et sage?

Message par frederic han » lun. mars 07, 2011 9:52 pm

J'ai un peu ameliore.

pour que les elements du SR soient reconnus, pi, sqrt(5)...
il faut ajouter quelque trucs dans d'autres fichiers.
J'ai mis un diff pour sage 4.6.2 sur ma page:
http://www.math.jussieu.fr/~han/xcas

avec ca on moins besoin des guillemets
_=vars('x,y')
sage: giac.solve(x^2+x*y-4,x)
[1/2*(-y+sqrt(y^2+16)),1/2*(-y-sqrt(y^2+16))]

en revanche je ne m'attendais pas du tout a ce que:
l=giac.plot(sin(x),x)
l
ou giac.display(l,'green') m'ouvre une fenetre avec le bon dessin!

NB:
sage: giac.plot3d(x^2+y^2+1,x,y)
Done
marche une fois, mais pas 2 fois.
sage: giac.plot3d(x^2+y^2+1,x,y)
XRequest.145: BadDrawable (invalid Pixmap or Window parameter) 0x2a00003

Fred

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

Re: giac et sage?

Message par parisse » mar. mars 08, 2011 6:40 am

oui, ça le fait aussi en ligne de commande, je ne sais pas trop pourquoi, je vais essayer de creuser un peu.

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

Re: giac et sage?

Message par parisse » mer. mars 09, 2011 8:19 am

Ca devrait marcher avec la mise a jour du source. Je vais aussi mettre a jour les binaires.

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

Re: giac et sage?

Message par frederic han » mer. mars 09, 2011 2:56 pm

En fait ca a l'air de marcher si je modifie la fenetre, mais si je clique simplement sur OK sans toucher a rien, le coup suivant reste gris.


Fred

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

Re: giac et sage?

Message par parisse » mer. mars 09, 2011 3:04 pm

tu as fait quoi? Je viens d'essayer plan(z=0) ok puis plan(z=1) ok plan(z=2) ca marche bien chez moi.
Edit: je viens de reessayer avec la version du deb, et la ca plante. Ca marche par contre dans mon repertoire de developpement, avec compilation -g et binaire statique. Etrange...

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

Re: giac et sage?

Message par frederic han » mer. mars 09, 2011 3:32 pm

J'ai compile le source d'aujourd'hui.

plot3d(sin(x*y),x,y)

marche tant que j'agrandi la fenetre avant de quitter
Fred

NB: pour ton spkg sur ta page il reste un "pour x64" alors qu'il marche bien en 32 bits aussi

Fred

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

Re: giac et sage?

Message par parisse » mer. mars 09, 2011 4:18 pm

On va en rester là alors (de toutes façons je suis à court d'idées pour faire marcher à tous les coups).
J'enlève le x64.
a+

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

Re: giac et sage?

Message par frederic han » mar. mars 15, 2011 2:42 pm

En fait je me suis rendu compte que si javais une fenetre grise, alors en l'agrandissant, la bonne image apparaissait.


A part cela, j'ai un peu mis a jour, et l'interface est assez rapide.
Ex: http://people.math.jussieu.fr/~han/xcas ... -bench.txt
(Si quelqu'un a l'occasion de faire des tests sur une marchine plus rapide)


NB: le patch est a priori pour 4.6.2, il devrait un peu raler pour d'autres versions, mais s'en sortir tout de meme.
(il y a essentiellement 1 fichier giac.py nouveau et quelques petites entrees dans d'autres fichiers)

Fred

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

Re: giac et sage?

Message par parisse » jeu. mars 17, 2011 12:31 pm

oui, l'interface parait assez rapide. Ton post sur sage-devel n'a pas eu beaucoup de succes (mais il y a eu quand meme 36 clics depuis ta page vers une de mes pages depuis), peut-etre qu'un bon benchmark dans un domaine ou sage est lent et giac rapide aurait plus d'effet...

Répondre