libgiac pari giacpy et sage
Modérateur : xcasadmin
-
- Messages : 1137
- Inscription : dim. mai 20, 2007 7:09 am
- Localisation : Paris
- Contact :
libgiac pari giacpy et sage
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
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
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...
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...
-
- Messages : 1137
- Inscription : dim. mai 20, 2007 7:09 am
- Localisation : Paris
- Contact :
Re: libgiac pari giacpy et sage
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:
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.
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;
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
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.
Je pense qu'il vaudrait mieux compiler avec pari désactivé pour sage et activé sinon, ou alors avec pari en statique.
-
- Messages : 1137
- Inscription : dim. mai 20, 2007 7:09 am
- Localisation : Paris
- Contact :
Re: libgiac pari giacpy et sage
Dans quelle configuration le test ne marche pas? (j'ai essaye avec pari 2.5 en dynamique et je peux faire dans icas:parisse a écrit :J'ai essayé, mais ça ne marche pas ensuite pour par exemple weber(1+i).
Code : Tout sélectionner
pari();
pari_weber(1+i)
En revanche avec pari 2.7.2 (en dynamique) que je patche giac ou pas pari_weber perd la partie complexe.
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 a écrit : 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
ah ben c'est bizarre, maintenant ca a l'air de marcher.
weber(1+I) n'a pas de partie imaginaire avec gp.
weber(1+I) n'a pas de partie imaginaire avec gp.
-
- Messages : 1137
- Inscription : dim. mai 20, 2007 7:09 am
- Localisation : Paris
- Contact :
Re: libgiac pari giacpy et sage
effectivement, avec pari 2.5.5
avec pari 2.7.2
Code : Tout sélectionner
? weber(1+I)
%1 = 1.0811782878393746833655992417658285836 - 0.14233982193131805512395869109512286588*I
Code : Tout sélectionner
? weber(1+I)
%1 = 1.0811782878393746833655992417658285836