Page 1 sur 1
libgiac pari giacpy et sage
Publié : mer. sept. 03, 2014 10:23 am
par frederic han
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
Re: libgiac pari giacpy et sage
Publié : mer. sept. 03, 2014 12:47 pm
par parisse
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...
Re: libgiac pari giacpy et sage
Publié : mar. oct. 07, 2014 10:00 pm
par frederic han
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.
Re: libgiac pari giacpy et sage
Publié : mer. oct. 08, 2014 5:41 am
par parisse
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.
Re: libgiac pari giacpy et sage
Publié : mer. oct. 08, 2014 7:15 am
par frederic han
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:
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.
Re: libgiac pari giacpy et sage
Publié : mer. oct. 08, 2014 7:27 am
par parisse
ah ben c'est bizarre, maintenant ca a l'air de marcher.
weber(1+I) n'a pas de partie imaginaire avec gp.
Re: libgiac pari giacpy et sage
Publié : mer. oct. 08, 2014 7:55 am
par frederic han
effectivement, avec pari 2.5.5
Code : Tout sélectionner
? weber(1+I)
%1 = 1.0811782878393746833655992417658285836 - 0.14233982193131805512395869109512286588*I
avec pari 2.7.2