libgiac pari giacpy et sage

Librairie C++ de calcul formel/ C++ symbolic computation library

Modérateur : xcasadmin

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

libgiac pari giacpy et sage

Message par frederic han » mer. sept. 03, 2014 10:23 am

Salut,
dans la version sage de giacpy on se heurte au probleme suivant:
A la fois sage et la libgiac (s'il elle compilee avec pari) initialisent pari, ce qui pose des problemes pour le control C et aussi d'autres conflits.
Actuellement ca ne me semble pas tres genant de desactiver pari dans le giac spkg, mais pour l'avenir, est ce que tu aurais la possibilite de donner un moyen pour qu'une application desactive juste cette etape d'initialisation de pari?
Fred

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

Re: libgiac pari giacpy et sage

Message par parisse » mer. sept. 03, 2014 12:47 pm

Je n'ai pas d'idee, en tout cas pas par une option, parce qu'elle sera lue apres initialisation.
C'est un probleme de la libpari dynamique en fait. C'est pari_init_opts qui devrait flaguer qu'elle est deja initialisee si elle est rappelee, question a poser sur pari-dev?
Une solution c'est peut-etre d'utiliser une version statique de libpari. Sinon, il faudrait ajouter une variable booleenne dans un autre fichier .o, mis a vrai par defaut, et linker avec encore un autre fichier .o si on fait libgiac pour sage, ce dernier fichier .o contenant un affectation a faux du booleen, tout ca avant l'initialisation de pari.o qui pourrait tester la variable booleenne. Un vrai cauchemard, d'autant que le linker ne charge pas les .o dans le meme ordre, il faudrait sans doute en plus des pointeurs de controle pour s'assurer de l'ordre...

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

Re: libgiac pari giacpy et sage

Message par frederic han » mar. oct. 07, 2014 10:00 pm

Bonjour Bernard,

giac n'est pas la seule librairie dans cette situation, cf le thread sur pari devel:
http://pari.math.u-bordeaux.fr/archives ... html#00011

J'ai essaye le patche suivant:

Code : Tout sélectionner

--- a/src/pari.cc	2014-07-02 11:05:07.000000000 +0200
+++ b/src/pari.cc	2014-10-03 17:21:23.000000000 +0200
@@ -96,7 +96,7 @@
 
   struct giac_pari_init {
     giac_pari_init(long maxprime) { 
-      do_giac_pari_init(maxprime);
+      if(!avma){ do_giac_pari_init(maxprime);}
     }
   };
   static long pari_maxprime=100000;
qui fonctionne bien pour moi (linux amd64) avec icas d'une part et giacpy sous sage d'autre part.

qu'en penses tu? il me semble que le seul risque est si quelqu'un fait pari_close() avant d'initialiser giac.

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

Re: libgiac pari giacpy et sage

Message par parisse » mer. oct. 08, 2014 5:41 am

J'ai essayé, mais ça ne marche pas ensuite pour par exemple weber(1+i).
Je pense qu'il vaudrait mieux compiler avec pari désactivé pour sage et activé sinon, ou alors avec pari en statique.

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

Re: libgiac pari giacpy et sage

Message par frederic han » mer. oct. 08, 2014 7:15 am

parisse a écrit :J'ai essayé, mais ça ne marche pas ensuite pour par exemple weber(1+i).
Dans quelle configuration le test ne marche pas? (j'ai essaye avec pari 2.5 en dynamique et je peux faire dans icas:

Code : Tout sélectionner

pari();
pari_weber(1+i)
sans problemes.

En revanche avec pari 2.7.2 (en dynamique) que je patche giac ou pas pari_weber perd la partie complexe.
parisse a écrit : Je pense qu'il vaudrait mieux compiler avec pari désactivé pour sage et activé sinon, ou alors avec pari en statique.
Mais on ne pourra pas toujours controler cela, par exemple dans fedora le paquet sage prend les librairies communes et pas de spkg, et on n'aura pas le droit de mettre pari en statique dans la libgiac.

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

Re: libgiac pari giacpy et sage

Message par parisse » mer. oct. 08, 2014 7:27 am

ah ben c'est bizarre, maintenant ca a l'air de marcher.
weber(1+I) n'a pas de partie imaginaire avec gp.

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

Re: libgiac pari giacpy et sage

Message par frederic han » mer. oct. 08, 2014 7:55 am

effectivement, avec pari 2.5.5

Code : Tout sélectionner

? weber(1+I)
%1 = 1.0811782878393746833655992417658285836 - 0.14233982193131805512395869109512286588*I
avec pari 2.7.2

Code : Tout sélectionner

? weber(1+I)
%1 = 1.0811782878393746833655992417658285836

Répondre