home *** CD-ROM | disk | FTP | other *** search
- Changes to the 1.31.2 version
- 1) trans2.c: mppsi: replace a=mplog(affsr... by:
- affsr(x,a=cgetr(l));a=mplog(a);
- 2) gen1.c: gadd: type 2+ type 4: replace signe(y) by signe(y[1]).
- 3) gen1.c: gadd: type 10+ type 11: after if(gcmp0(x)) ... else { replace by:
- i=signe(y)?valp(y)+ly-gval(x,vx):valp(y)+3-gval(x,vx);
- if(i<3) z=gcopy(y);else { same as before }
- 4) gen2.c: gpui: replace long m by unsigned long m.
- 5) mp.c: addir: replace lgef(x)-expo(y)>>5 by lgef(x)-(expo(y)>>5).
- 6) mp.c: addrr: towards the end, after if(m) { k=0;... replace
- for(i=lp1-1;... by for(i=lp1-1-j;...
- 7) mp.c: cgetg: replace x*4 by ((unsigned short x)<<2).
- 8) mp.c: dvmdii: after if((long)z==0xffffffff){...} replace p1[1]=... by
- if(lx!=(dec+2)) {p1[1]=p1[0];setsigne(p1,sy);} else {avma=av;p1=gzero;}
- 9) mp.c: dvmdii: later, replace p3[1]=p3[0] by
- if(lg(p3)<3) p3[1]=2;else {p3[1]=p3[0];setsigne(p3,sy);}
- 10) usersch3.tex: in numer, replace the library syntax denom by numer.
- 11) usersch3.tex: replace additionnal by additional.
- 12) usersch4.tex: replace lint ar by {\tt lint} at.
- 13) Changed slighly the README and INSTALLATION files.
- 14) trans1.c: transc: case 13,14: replace varn(x) by gvar(x).
-
- Changes to the 1.31.3 version
- 15) mp.c: divrr: towards the middle, replace if(z[i]==si) {qp=0xffffffff;
- addll(si,z[i+1]);} by
- if(z[i]==si) {qp=0xffffffff;k=addll(si,z[i+1]);} (the only change is the
- k= in front of addll).
- 16) mp.c: mulrr: line 3 after declarations,
- replace z=cgetr(3);z[2]=0;z[1]=e+0x800000;return z; by
- z=cgetr(3);z[2]=0;z[1]=e;return z;
- 17) In gen1.c, write code to allow type 3 by type 6 or 8 operations.
- Specifically:
- gadd, case 3+case 6 and 8:
- case 6 : z=cgetg(ly,ty);z[2]=lcopy(y[2]);z[1]=ladd(x,y[1]);break;
- case 8 : z=cgetg(ly,ty);z[1]=y[1];z[3]=lcopy(y[3]);z[2]=ladd(x,y[2]);
- break;
- gmul, case 3*case 6 and 8:
- case 6 : z=cgetg(ly,ty);z[1]=lmul(x,y[1]);z[2]=lmul(x,y[2]);break;
- case 8 : z=cgetg(ly,ty);z[1]=y[1];z[2]=lmul(x,y[2]);z[3]=lmul(x,y[3]);
- break;
- gdiv, case 6/case 3: fall through with cases 1,2,4,5.
-
- Changes to the 1.31.4 version
- 18) In gen1.c, gdiv: type 1/type 6 falls through with type 1/type 8;
- repeat the same code for type 3/type 6 and 8.
- 19) In gen1.c, gdiv: case 8/case 3: fall through with cases 1,4,5
- instead of falling through with case 7.
- 20) Corrected a few misprints and details in the manual.
- 21) In mp.c, affsi: replace if(!s) x[1]=2; by
- if(!s) {x[1]=2;return;}
- 22) In arith.c, isprime and ispsp: add after {: long av=avma;x=gabs(x);
- and before each of the three returns, add avma=av (and put {} after
- the first 2 ifs).
- 23) trans3.c: written agm().
- 24) bibli2.c: written initell(),coordch(),pointch(),hell(),ordell(),
- oncurve(),powell(),addell(),subell(),matell().
- 25) gp.c changed version number to 1.32.
- 26) arith.c: classno, declare a long k2, and in the two lines following
- if(tabla[j2]==k) {, replace k by k2 (3 times) (but leave tabla[j2]==k).
- 27) in erreurs.h and messages.c, added the three error messages initeler1,
- initeler2, heller1.
- 28) written forprime().
- 29) In gen1.c: gmul, case 1*case 7, start with if(signe(x)) {...} and before
- the break add else z=gzero;. Similarly in case 4,5*case 7, except that
- one starts with if(signe(x[1])) instead. Similarly again in gdiv,
- for case 1/case 7 and case 4,5/case 7. Finally, in gen3.c: gmulsg,
- similarly but starting with if(s) instead of if(signe(x)).
- 30) In init.c: err, added talker, which simply prints the message.
- Made the corresponding changes in messages.c and erreurs.h.
- 31) In arith.c: classno, insert lines to check for stack overflow
- (limite etc...)
- 32) In bibli1.c: lllgram, replace p2=x at the beginning by p2=gcopy(x).
- 33) Wrote issquarefree(),isfundamental().
- 34) Added a few error messages.
- 35) Unified the genpari.h files for the different versions. We need now
- gencom.h, containing all the common declarations, and which in principle
- is now the only file to change when a new function is added. Then
- gen68k.h, containing the 680x0 specific declarations, genport.h for the
- others. Finally, genpari68k.h and genpariother.h are simply 3 includes.
- 36) Updated the manual for version 1.32.
- 37) trans1.c: transc, output an error message for type 16.
- 38) trans3.c: slight cleanup of polylog functions, but no corrected bugs.
- 39) mp.c: in most places where a C-integer is involved (divsi, modsi, etc...)
- add hiremainder=0; before execution of divll(). This is was a severe bug
- of the portable versions.
- 40) More changes in the manual, and explanations of the polylog functions.
- 41) polarit.c: squff, replace p1=gadd(gabs(a[da+2],4),... by
- p1=gadd(p2=gabs(a[da+2],4),... and 3 lines later, replace a[da+2] by p2.
- 42) bibli2.c: wrote zell(), addsell(), powsell(), apell2().
- 43) Polished and rewrote kronecker(),krogs() and kross().
- 44) Wrote apell().
- 45) Wrote glogagm(),theta(),thetanullk().
- 46) mp.c: cmpir, change lgef(y) into lg(y).
- 47) In many places, replace gerepile(,,0)/4 by gerepile(,,0)>>2, and before
- adding displacement, check if pointer is universal or not.
- 48) trans2.c: hyperu, after if(ex) {y=cgetg(3,6)...}, add:
- else y=cgetr(l);
- 49) gen3.c: gsubst, case 11,case 10,13,14, after the else, replace
- e=gval(y,v) by e=gvar(y,gvar(y));
- three lines after, replace else p1=taylor(y,v,l); by
- else p1=gdiv(greffe(y[1],l),greffe(y[2],l));
- 50) gen3.c: gsubst, case 11, case 11 vx=vy, 10 line addition in case
- vy!=vx.
- 51) gen3.c: precision, replace if((tx=typ(x))==2)... by
- if (tx==2) return signe(x) ? lg(x) : 2-(expo(x)>>5);
- and add tx=typ(x) in declaration.
- 52) arith.c: sfcont, case 13,14 change definition of l1, and at the end copy
- y to vector of correct length.
- 53) es.c: sori and bruti, add a default printing the codeword in hex:
- break;default: printf("08x ",*g);
- 54) mp.c: affir,shifti,mulsr, test whether shift is zero.
- 55) mp.c: divrs, replace z[lx-1]=shiftl... by
- shiftl(garde,sh);k=hiremainder; and start for loop at i=lx-1.
- 56) mp.c: rtodbl, replace exp2(ex-co) by exp2(ex+1-co).
- 57) mp.c: gerepile!!! Finally found the two year old bug. Needs change if
- typ(ll)==10, and also when the GEN after l is not complete.
- 58) mp.s: same of course.
- 59) arith.c: divisors, change gerepile(tetpil,av,... into gerepile(av,tetpil,.
- 60) bibli1.c: tayl, between p1[vx+1]=lpolx[v]; and p1[v+1]=lpolx[vx]; insert
- for(i=vx+1;i<v;i++) p1[i+1]=lpolx[i];
- 61) changevar() available under gp.
- 62) mp.c: modis, change return (y>0) .... to
- return (signe(x)>0) ? stoi(hiremainder) : stoi(abs(y)+hiremainder);
- 63) polarit.c: polgcd, set gcd > 0 in case of type 1,2,4,5.
- 64) polarit.c: with code from R. Schroeppel, finished writing factpol, hence
- factor.
- 65) updated the manual.
-
- Release version of pari-1.32
-
- -------------------------------------------------------------------------------
-
- Retour en France et au francais.
-
- 1) bibli2.c: remplace les occurences de lint par qlint
- 2) gencom.h: ajoute #undef PI avant le #define PI
- 3) mp.c: itos(), remplacer -p1 par -((long)p1)
- et dans divss(), resss(),divsi(),divis() remplacer -hiremainder par
- -((long)hiremainder)
- 4) trans3.c: wf(), enlever les ,prec aux 2 appels de inteta.
- 5) bibli2.c: subsell(), remplacer addsell(z1,zp) par addsell(e,z1,zp), et idem dans
- subell(), remplacer addell(z1,zp) par addell(e,z1,zp).
- 6) gen2.c: gaffect() case 7-->case 3, remplacer val=pvaluation(y[1],&p1); par
- val=pvaluation(y[1],x[2],&p1);
- 7) versionsparc.c et versionport.c: divll(), enlever les (ulong) devant
- hiremainder.
- 8) mp.c: divss(), remplacer abs(x),abs(y) par (ulong)abs(x),(ulong)abs(y).
- 9) trans2.c: mpgamdz(), remplacer p1=mpgamd(s) par p1=mpgamd(s,l).
- 10) trans2.c: gach(), remplacer y=glog(p1) par y=glog(p1,prec).
- 11) trans2.c: eint1(), remplacer mplog(x,prec) par mplog(x) et mpexp(gneg(x),prec)
- par mplog(negr(x)).
- 12) arith.c: fin de classno2(), la ligne commencant par p5=addrr... enlever le ,4 final.
- 13) trans1.c: transc(), remplacer roots(x[1]) par roots(x[1],prec).
- 14) gen2.c: gaffect(), case 10--> case 12, remplacer gmod(x,y[1],y[2]) par
- gmodz(x,y[1],y[2]).
- 15) arith.c: isprime() et ispsp(), rajouter au debut if(typ(x)!=1) err(arither1); et
- remplacer x=gabs(x) par x=absi(x).
- 16) arith.c: kro8(), remplacer gmul(p2,p2)-gmul2n(... par gmul(p2,p2),gmul2n(...
- et mettre au debut av=avma et a la fin avant le return avma=av.
- 17) gen3.c: deriv(), remplacer ggrando(polx[vx],vx,e+lx-2) par ggrando(polx[vx],e+lx-2).
- 18) trans3.c: polylog(), remplacer gnorm(x,prec) par gnorm(x).
- 19) alglin.c: caract(), if(tx==12) remplacer caract(p2) par caract(p2,v).
- 20) bibli1.c: lindep(), fin, remplacer gtrans(p4,p3) par gtrans(p4).
- 21) mp.c: addrr(), dans le else avant if(sx==sy), ajouter m=0; apres
- flag=2;p2=x;
- 22) mp.c: dvmdii(), dans le if(p1[i]==si), remplacer addll(si,p1[i+1])
- par k=addll(si,p1[i+1]).
- 23) changements de nature cosmetiques dans differents programmes.
- 24) alglin.c: gnorml2(), commencer par y=gzero; puis if(lx>1)
- mettre av=avma;y=gnorm(x[1]);et remplacer y=gerepile... par
- if(lx>2) y=gerepile.
- 25) gen3.c: gdivmod(), remplacer else(gdivmoder) par
- else err(gdivmoder).
- 26) gp.c: changer *tch=='\{' en *tch=='{'
-
- Chargement Mac par Dominique
-
- -----------------------------------------------
-
- 27) Dans example, mattrans.c, changer gscalmat(r,lx) en gscalmat(r,lx-1).
- 28) Inclut dans la version 1.32 les programmes keri() et kerr() de C. Batut,
- et modifie le manuel en consequence.
- 29) polarit.c: squff, remplace gsqrt(p1,4) par gaddsg(1,racine(p1)), et enlever
- le gfloor.
- 30) init.c: catchinterrupt(), ajoute signal(SIGINT,catchinterrupt) avant err().
- 31) polarit.c: factmod(), ajoute else err(impl,"factmod for p>=2^31"); apres
- psim=itos(p);
- 32) bibli2.c: dans forprime() et prodeuler(), remplacer
- while(gcmpgs(a,prime)>0) prime+= *p++; par
- while((*p)&&gcmpgs(a,prime)>0) prime+= *p++;if(!*p) err(recprimer);
- 33) Ajoute un ; juste avant le \ de l'avant derniere ligne de Makefile.port.
- 34) polarit.c: a plusieurs endroits (factmod et squff), remplace gmodulo par
- gmodulcp.
- 35) bibli1.c: ecrit ordred().
- 36) gencom.h: change MAXBLOC de 1000 a 5000.
- 37) bibli2.c: fordiv(), ajouter killvalue(ep) avant le return gnil.
- 38) polarit.c: split(), remplacer av=avma;if(p==2) par
- av=avma;
- if(p==2)
- {
- w=gmul(gpuigs(polx[v],m-1),unmodp);m+=2;
- for(w0=w,j=1;j<d;j++) w=gmod(gadd(w0,gmul(w,w)),*t);
- }
- else
- {
- w=gmul(stopoly(m++,p,v),unmodp);
- wm=gpui(gmodulo(w,*t),q);w=gsub(*(wm+2),unmodp);
- }
- 39) polarit.c: factmod(), apres else av=avma (ligne 5 executable) mettre
- if(lgef(f)==3) {avma=av;y=cgetg(3,19);y[1]=lgetg(1,18);y[2]=lgetg(1,18);return y;}
- 40) gen1.c: gmul(), enleve un printf de debuggage oublie.
-
- disquette dominique (pas encore la 1.32.2 definitive)
-
- ----------------------------------------------------------------------
-
- 41) ajoute kerreel
- 42) ajoute apell1, optimisation pour p < 2^30
- 43) supprime les #ifdef macintosh de init.c et messages.c, il n'en reste
- plus que dans plot.c et gp.c
- 44) ajoute genparimac.h et Makefile.mac pour uniformiser la distribution
- 45) supprime 24 declarations de variables locales inutilisees.
- 46) bibli2.c: interverti apell() et apell1().
- 47) gen3.c: modifie gmodulo() et gmodulcp() pour qu'ils acceptent
- mod(scalaire,polynome).
- 48) polarit.c: modifie content() pour qu'il accepte n'importe quel type, et
- dans anal.c et message.c, appel a content() possible de gp.
- 49) mp.s et mp.c: expi rendait toujours 1 de trop. Soustraire 1 avant de partir.
- 50) es.c: sori(), corrige la sortie du type 12: pas de test signe(g[2])<0.
- 51) polarit.c: ggcd() case 1, case 3, remplacer if(!gcmp1(z)) par if(!gcmp1(p1)).
- 52) polarit.c: squff() a deux endroits, remplacer pro&0xffff+rem par (pro&0xffff)+rem.
- 53) polarit.c: squff() remplacer GEN tabd[NOMDEP][30] par GEN tabd[NOMBDEP][500] (ou mieux
- faire une allocation dynamique).
- 54) alglin.c : Dans kerreel,eigen,jacobi remplacer
- affsr(1,eps=cgetr(prec)) ou affsr(0,eps=cgetr(prec));
- par :
- eps=cgetr(3);eps[2]=0x80000000;eps[1]=0x01800010-((prec-2)<<5);
- Ajouter le parametre prec dans kerreel et eigen.
- Dans eigen() : remplacer ssesp=kerreel(z) Par : ssesp=kerreel(z,prec)
- 55) arith.c: classno() rajouter au debut (avant les hash)
- if(gcmpgs(x,12)<=0) return gun;
- et deplacer le test x=0 ou 3 mod 4 au debut.
- 56) trans3.c: sagm(), remplacer while(ep<pp) par
- while((ep<pp)&&(!gcmp0(p1))).
- 57) top,bot et avma sont maintenant definis dans init.c. Les reservations
- de memoire dans mp.s, sparc.s et versionport.c pour
- ces trois variables sont supprimees.
- 58) corrige quelques typos dans le manuel.
- 59) ecrit les fonctions gtoser() (series dans gp) et gtopoly() (poly dans gp),
- et decrit leur fonction dans le manuel.
- 60) ecrit gtovec() (vec dans gp) et manuel.
- 61) bibli2.c: ordell() change if(signe(d)) en if(!gcmp0(d)).
- et p3=gsub(gsqrt(d,prec),p2) en p3=gsqrt(d,prec).
- et elimine le message d'erreur au cas ou il n'y a pas de point
- mod p.
- 62) bibli2.c: powsell1(), ajouter la declaration du parametre formel
- long n!!.
- 63) bibli2.c: apell(), trouve la bug 1439. Declarer une variable sellpt f2;
- puis remplacer la ligne if(bcon>1) powssell1(cp4,p,bcon,&f,&f); par
- if(bcon>1) powssell1(cp4,p,bcon,&f,&f2);else f2=f;
- ensuite 12 lignes plus loin remplacer addsell1(cp4,p,&fh,&f,&fh) par
- addsell1(cp4,p,&fh,&f2,&fh), et idem 3 lignes plus loin remplacer
- powssell(cp4,p,s,&f,&fg) par powssell1(cp4,p,s,&f2,&fg). Par contre, laisser
- le powssell1(cp4,p,p3,&f,&fh) apres trouve (c'etait justement ca la bug: f etait
- detruit, on utilise donc provisoirement f2).
-
- Prerelease de la version 1.33 (en attente de confirmation Bernardi).
-
- 64) mp.s (si si!) gerepile (encore!): remplacer le bhi 8$ qui se trouve juste avant
- movl #gerper,sp@- par un bhi 4$.
- 65) Simplification de la fonction divmod, declaree statique dans bibli2.c
- 66) Reecriture mpfact, 25% plus rapide sur 5000!.
- 67) Ajout d'un paragraphe et d'une reference a install dans usersch4.tex
- 68) typo dans usersch4.tex
-
- Version 1.33 definitive, le 13/6/90 a 0h.
-
- ----------------------------------------------------------------------
-
- 69) Change le library mode de hermite a hnf.
- 70) Introduit la commande \v (version).
- 71) bibli2.c: sumalt(): remplacer if(gexpo(p1)<... par if(gcmp0(p1)||(gexpo(p1)<...
- 72) trans2.c: gacos() et gach(): remplacer setvalp(y,0) par setexpo(y,0).
- 73) polarit.c: factor(), dans le if(gcmp0(x)) remplacer y=cgetg(2,19) par
- y=cgetg(3,19).
- 74) gen1.c: gadd() case 11+ case 13,14 remplacer if(lz<1) par if(lz<3).
- 75) anal.c, messages.c, gencom.h, trans3.c, usersch3.tex: modifications assez
- profondes de tout ce qui concerne les polylogarithmes, sauf polylog
- lui-meme. En particulier, suppression des fonctions dm2, dm3, dst3, trilog
- (conserve dilog), modification de dm (qui s'appelle maintenant polylogd),
- et ecriture de polylogp.
- 76) trans2.c: dans les commentaires de mpbern() et bernvec(), changer nomb en
- 2*nomb.
- 77) bibli2.c: plot(), ajouter un printf("\n"); avant et apres le trace.
- 78) gen1.c: gmul() type 11*type 11: remplacer tout par:
- case 11: if(lx>ly) {k=ly;ly=lx;lx=k;p1=y;y=x;x=p1;}
- if (gcmp0(x)||gcmp0(y))
- {
- z=cgetg(3,11);
- z[1]=0x8000+valp(x)+valp(y);
- setvarn(z,vx);
- }
- else
- {
- l=avma;p1=cgeti(lx);z=cgetg(lx,ty);
- setvalp(z,valp(x)+valp(y));setvarn(z,vx);setsigne(z,1);
- for (i=2;i<lx;i++)
- {
- p1[i]=!gcmp0(y[i]);z[i]=p1[i]?lmul(x[2],y[i]):zero;
- }
- for(i=3;i<lx;i++)
- if(!gcmp0(x[i]))
- for(j=2;j<=lx+1-i;j++)
- if(p1[j]) z[i+j-2]=ladd(z[i+j-2],gmul(x[i],y[j]));
- tetpil=avma;z=gerepile(l,tetpil,gcopy(z));
- normalize(&z);
- }
- break;
- Ceci ameliore considerablement (d'un facteur 2 a 20 parfois) la
- multiplication de deux series.
- 79) trans3.c: ecrit jbesselh(), version primitive (a ameliorer quand l'argument
- est proche de zero).
- 80) anal.c: change la definition de mod() en gmodulcp, et ajoute modp() qui est
- l'ancien mod(), i.e. qui cree un nouveau bloc.
- 81) gen1.c: ameliore la division case 11/case 11 en testant des le debut les zeros
- du diviseur.
- 82) trans2.c: ecrit cxgamma() et cxpsi(), et fait quelques modifs de
- presentation dans mppsi() et mpgamma().
- 83) bibli2.c: ecrit forstep(), et modifie forpari() pour qu'ils acceptent des
- bornes non entieres. Ajoute des messages d'erreur.
- 84) arith.c: classno(), replace if(gcmpgs(x,12)<=0) by if(gcmpgs(x,-12)>=0).
- 85) bibli2.c: les modifs (83) de forstep et forpari etaient fausses. Les remplacer par
- la nouvelle version.
- 86) plot.c: ecrit ploth2().
- 87) arith.c: commence a ecrire nucomp() (ne pas utiliser).
- 88) Ajoute anell() (ou ca?)
- 89) Jacobi entierement re-ecrit
- 90) dans eigen remplacer rr=roots(p,5) par : rr=roots(p,prec)
- 91) dans sqred2 ajouter : if (typ(a)!=19) err(kerer1);
-
- -----------
-
- Le 21/8/90
-
- 92) alglin.c: gtrans(), case 19 remplacer lx=lg(x) par
- if((lx=lg(x))==1) return cgetg(1,19).
- 93) polarit.c: subres(): remplacer if(dy==3) return gun;av=avma;/*p3=...*/ p3=gun;p4=gun; par
- av=avma;p4=content(y);
- if(dy==3) {tetpil=avma;return gerepile(av,tetpil,gpuigs(p4,dx-3));}
- p3=content(x); /*p3=gun;p4=gun; */.
- Ensuite, remplacer if(varn(x)!=varn(y)) return gun; par
- if(varn(x)!=varn(y))
- return (varn(x)<varn(y))?gpuigs(y,lgef(x)-3):gpuigs(lgef(y)-3);
- Enfin, remplacer if((tx<10)||(ty<10)) return gun par
- if((tx<10)||(ty<10))
- {
- if(tx==10) return gpuigs(y,lgef(x)-3);
- if(ty==10) return gpuigs(x,lgef(y)-3);
- else return gun;
- }.
- 94) alglin.c: greal() et gimag() case 13 et case 14 ne doivent pas etre traites
- comme types vect/mat. Declarer GEN p1, p2 et long tetpil au debut, et apres
- case 14 mettre
- dans greal():
- av=avma;p1=gadd(gmul(greal(x[1]),greal(x[2])),gmul(gimag(x[1]),gimag(x[2])));
- p2=gadd(gsqr(greal(x[2])),gsqr(gimag(x[2])));tetpil=avma;
- z=gerepile(av,tetpil,gdiv(p1,p2));break;
- dans gimag():
- av=avma;p1=gsub(gmul(gimag(x[1]),greal(x[2])),gmul(greal(x[1]),gimag(x[2])));
- p2=gadd(gsqr(greal(x[2])),gsqr(gimag(x[2])));tetpil=avma;
- z=gerepile(av,tetpil,gdiv(p1,p2));break;
- 95) mp.c: mpent() remplacer les & dans les deux while par des
- &&. Puis, mettre les5 lignes allant de for(i=d+2;(i>=2)&&...
- jusqu'a } a l'interieur de if(f){ ... }.
- 96) Supprimer des affectations de variables inutiles:
- alglin.c gauss() (av), rank (y). arith.c mpsqrtmod() (av2)
- regula() (p4). bibli1.c lll() (dx). bibli2.c initell() (r0)
- apell1() (av2) hell() (w). mp.c mulir() (lx) modss() (p1).
- trans1.c gexp() (tx) mpsc1() (l3) mpsincos() (l).
- trans2.c kbessel() et hyperu() (lbin2). trans3.c sagm() (tx)
- jbesselh() (p3).
- 97) gen3.c truecoeff() mettre des {} autour du if..;else.
- 98) plotdummy.c rajouter return gnil dans les deux fonctions.
- 99) trans2.c (et anal.c, gencom.h, messages.c) ecrit gzeta().
- 100) Mis a jour le manuel.
- (Version 1.34 devrait etre prete bientot)
- 101) reecrit gzeta() avec estimation rigoureuse de l'erreur.
- 102) (C. Batut) reecrit lll et lllgram. C'est beaucoup plus stable.
- 103) Ecrit la division sparc 64/32 -> 32,32. Cela gagne environ 20%
- sur une sparcstation.
- 104) Inclus un fichier mp.asm qui devrait etre la copie conforme de
- mp.s mais avec une syntaxe plus standard.
- 105) bug dans bibli2: addell() , ligne 10, remplacer gadd(e[4],gmul(x1,...
- par gadd(gsub(e[4],gmul(e[1],y1)),gmul(x1,...
- 106) gen2.c: reecrit completement la fonction gval(), qui est
- maintenant une macro de la fonction ggval utlisable tres generalement
- et appelable par la fonction valuation() sous GP.
- au passage, ecrit une fonction poldivis(), analogue de mpdivis mais
- pour les polynomes.
- 107) arith.c: primeform(), supprimer la ligne if(gcmp0(b)) err(sqrter5);
-
- ------ Disquette envoyee a Dominique le 4/10/90 a 12h
-
- 108) base.c: hnf() inclus du code pour eviter les debordements de pile:
- long lim=(avma+bot)>>1; au debut, puis juste avant l'accolade fermante du
- for(i=li-1;i>=1;i--), mettre:
- if(avma<lim) {tetpil=avma;y=gerepile(av,tetpil,gcopy(y));}
- 109) (suite de 103) Grace a l'aide de Dik Winter, ameliore encore de
- 15% la division 64/32 sparc (sparc.s).
- 110) Enleve quelques variables inutilement declarees (sauf dans
- nucomp qui est en cours d'ecriture).
- 111) Ecrit ploth2 pour mac et XWindows. Remanie le Makefile.sun3 en y ajoutant
- les remarques pour construire la version XWindows. Utilisation forcee de cc
- pour assembler mp.s . Suppression des ifdef dans plot.sun. plot.c est supprime
- ce n'est plus qu'un lien vers plot.sun ou bien plot.X
- 112) Bug mod(3,5)*mod(3,5): dans gen1.c, partout ou il y a des affectations z[1]=x[1]
- ou z[1]=y[1] correspondant aux types 3, 8 ou 12, remplacer par z[1]=copyifstack(x[1])
- (resp. y[1]). Dans gen2.c, gcopy(), quand i est entre lontyp[tx] et lontyp2[tx],
- remplacer y[i]=x[i] par y[i]=copyifstack(x[i]). Dans gencom.h, declarer
- extern GEN RAVYZARC, modifier la macro isonstack, et rajouter la macro copyifstack
- comme suit:
-
- #define isonstack(x) (RAVYZARC=(GEN)(x),((RAVYZARC>=(GEN)bot)&&(RAVYZARC<(GEN)top)))
- #define copyifstack(x) (RAVYZARC=(GEN)(x),((RAVYZARC>=(GEN)bot)&&(RAVYZARC<(GEN)top))?lcopy(RAVYZARC):(long)RAVYZARC)
- Enfin, dans init.c, declarer GEN RAVYZARC dans la liste des variables globales communes.
- 113) Remanie les Makefiles.
- 114) Suite de 112: dans gen2.c, gneg() et gpuigs() meme modifs.
- (J'espere que je n'en ai pas rate d'autres).
- 115) Inclus une gestion de pile (preserve) dans lll et programmes
- associes, ce qui fait que lll peut traiter de grandes matrices
- sans overflow.
- 116) base.c: Ecrit smith(), reduction de Smith.
- 117) Suite de 112 et 114. Encore meme modifs dans gen1.c, gen3.c, alglin.c.
- 118) gen3.c: ground() et grndtoi() case 19 remplacer dans le premier for, y[1]=x[1]
- par y[i]=x[i] (ca a le meme effet mais c'est plus logique).
-
- Le 16/10/90 release de la version 1.34 beta
-
- 119) Encore des modifs comme 112 oublies, y compris en sens inverse (i.e. des z[1]=lcopy a
- remplacer par z[1]=copyifstack dans certains cas.
- 120) gen1.c, gmul() case 7* case 8, remplacer cgetg(3,8) par cgetg(4,8).
- 121) alglin.c, messages.c, anal.c, gencom.h. ecrit les fonction detreel (detr sous gp),
- invmulmatreel(), invmatreel() (matinvr sous gp).
- 122) gen3.c: gmul2n, enlever case 8 des cases 10,6,11,... et remplacer par
- case 8 : y=cgetg(lx,tx);y[1]=copyifstack(x[1]);for(i=2;i<lx;i++) y[i]=lmul2n(x[i],n);
- break;
- 123) gen3.c: gdiventres, nettoyage: remplacer deux fois des copy de zero par zero.
- 124) trans1.c: mpcs1(), remplacer alpha=gcmp0(p1) ? ... par
- if(gcmp0(p1)) alpha=1000000.0;
- else {m=expo(p1);alpha=(m< -1023) ? -1-m*LOG2 : -1-log(fabs(rtodbl(p1)));}
- 125) mp.c: modifier le code de rtodbl() pour que l'on renvoie 0.0 au lieu d'une erreur
- en cas d'underflow: remplacer la premiere ligne par
- if((!s)||((ex=expo(x))< -1023)) return 0.0; et supprimer le ex=expo(x) qui suit.
- 126) supprime rtodbl() et dbltor() de mp.s, genport.h, et deplace de mp.c a gen2.c.
- Inclus les declarations dans gencom.h. Le patch mac n'est plus necessaire.
-
-
- Release internationale de la version 1.34
- ____________________________________________________________________________________
-
- Numerotation recommence a 1.
-
- 1) gen2.c: gneg(), mettre un message d'erreur en cas de negation d'une forme quadratique.
- 2) es.c: sori(), changer if ((typy>2)&&(typy<17)) en
- if ((typy>2)&&(typy<15))
- 3) gen3.c: ginv() changer typ==9 en typ==16.
- 4) ajoute la fonction anell() qui avait disparue (???).
- 5) Mis un peu partout le type 15 (formes quadratiques de discriminant >0). Desole Dominique,
- on enlevera 15 et 16 si cela devient genant.
- 6) bibli1.c: ecrit minim().
- 7) polarit.c: factmod() vers la fin remplacer t[1]=gcopy(t[1]) par
- t[1]=gdiv(t[1],((GEN)t[1])[lgef(t[1])-1])
- et mettre la ligne commencant par "if (expos[j]) t[j]=...."
- juste avant la ligne "for(k=1;k<j....".
- 8) base.c: ecrit une nouvelle version de hnf(), a priori meilleure.
- 9) Makefile.sun3: remplacer 8 blancs avant cc ... mp.s par un TAB.
- 10) gp.c: infile() et outfile(), traiter correctement le cas ou on ne peut pas ouvrir un
- fichier.
- 11) gp.c: rajouter la reinitialisation du prompt a "? " (ou "?\ " pour le mac) en cas de \k.
- 12) BUG IMPORTANTE POUR LA VERSION PORT: dans versionport.c, divll() remplacer
- else{dbl-=(C4/2);p=(ulong)dbl;p|=0x80000000;} par:
-
- else
- {
- if(dbl>=C4) p=0xffffffff;
- else{dbl-=(C4/2);p=(ulong)dbl;p|=0x80000000;}
- }
- 13) bugs dans lllgram
- ajouter errger2 (matrice non carree)
- et errger3 (matrice non definie)
- 14) gen2.c: gpui() exponentiation des series incorrectes ; corrections faites.
- 15) gp.c: rajouter un blanc en cas de changement de prompt.
- 16) gen3.c recip() remplacer y[i]=y[i]+decal par
- if(y[i]<av6) y[i]+=decal
- et u[k]=u[k]+decal par u[k]+=decal
- 17) Gros changements dus a Dominique pour traiter plus correctement les
- entrees-sorties, en particulier dans es.c et gp.c.
- 18) Un grand nombre de fonctions void declarees explicitement void.
- 19) Remplacement du pari.el de A. Hoffmann par celui de David Carlisle.
- 20) gen3.c: gfloor() remplacer signe(x) par gsigne(x).
- 21) trans1.c: gsqrt() case 3: remplacer y[1]=x[1] par
- y[1]=copyifstack(x[1]).
- 22) bibli1.c: gprec() case 7: changer y[4]=lcopy(x[4]) par
- y[4]=lmodii(x[4],y[3]).
- 23) bibli1.c: ecrit gconvpe() (conversion p-adique--> entier ou rationnel)
- et incorpore dans trunc.
- 24) corrige divers bugs dans gp.c
- 25) gencom.h: ajoute les macros mulri et lmulri.
- 26) gp.c: apres unused characters... ajoute pariputc('\n').
- 27) Version 2.4 de pari.el.
- 28) gen2.c: ggval() case 19: remplacer val=0 par val=2147483647.
- 29) gen2.c: ggval() case 10 et 11: modifier pour autoriser la valuation p-adique
- d'un polynome/serie, et corrige le case 11.
- 30) polarit.c: ecrit sturmpart() (et modifie les autres fichiers en consequence).
- 31) Change le decoupage de trans2.c et trans3.c, coupe en deux alglin.c, arith.c
- et polarit.c, et change les Makefiles.
- 32) Remplace tous les gmodulo restants (dans polarit1.c et arith1.c) par des gmodulcp.
- 33) Enleve tous les talker restants et remplace par des err normales (recompile tout).
- 34) Ecrit newtonpoly().
- 35) Reecrit completement rootmod(), renomme l'ancien en rootmod2().
- 36) Ecrit approxp(), apprgen().
- 37) Ecrit rootpadic().
- 38) alglin1.c: extract() remplacer if(in>=lx) err(extracter3);
- par if((in>=lx)||(in<=0)) err(extracter3);
- 39) gen2.c: ggval() case 7: remplace val=valp(x) par
- val=signe(x[4])?valp(x):valp(x)+precp(x).
- 40) Modifie le manuel a plusieurs endroits, ainsi que users.tex et index.tex.
- 41) Ecrit smallpolred(), factoredpolred(), factoredbase(), factoreddiscf().
- 42) Modifie quelques lignes de factmod() pour pouvoir factoriser modulo un p>=2^31.
- 43) Modifie gen1.c, gen2.c et gen3.c pour que les operations entre entiers modulo
- et p-adiques soient legales.
- 44) Ecrit bittest().
- 45) Fait une petite modif a gsigne() dans le cas 4 et 5 (pas une bug), et modifie
- rootmod pour que les racines soient "ordonnees".
- 46) BUG DANS mp.c: dvmdii(): dans le if(ly==3) remplacer p2[1]=(sy<<24)+3 par
- p2[1]=(sx<<24)+3 (comme le suivant).
- 47) Ecrit polred2() (pas tres different de polred()).
- 48) versionport.c: divll() (le vieux, ou est passe le nouveau ?), remplacer
- if(dbl>=C4) par if(dbl>C4-1).
- 49) mp.c: divrr() remplacer if(!ldif) {y0=y[lz+2];y[lz+2]=0;}
- par if(!ldif) {y0=y[lz];y[lz]=0;}
- et if(!ldif) y[lz+2]=y0; par if(!ldif) y[lz]=y0;
- Enfin, remplacer for(i=2;i<=lz;i++) z[i-1]=x[i];
- par:
- for(i=2;i<=lz-1;i++) z[i-1]=x[i];
- z[lz-1]=(lx>lz) ? x[lz] : 0;
- 50) mp.s: _divis: apres 4$:, juste avant le divull d1,d3:d4 ajouter moveq #0,d3
- (remarque: cela ne semble pas affecter les sun3 et les MacII que d3 ne soit pas
- initialise a 0. Mais ca plante d'autres 68020).
- Corrections semblables dans _divss, _modss, _resss: apres movem d2-d3,-(sp), mettre
- moveq #0,d3, puis apres l'etiquette 1$, remplacer divsl d1,d3:d4 par:
- bpl 9$
- moveq #-1,d3
- 9: divsl d1,d3:d4
-
- 51) es.c: bruti(), ligne 6 du case 10: remplacer sanssigne par 0.
- 52) arith1.c: sfcont(), case 4,5: dans le if(signe(p3)<0) remplacer
- addiiz(p3,p2,p3);affii(p3,p1); par
- p4=addii(p3,p2);affii(p4,p1);cgiv(p4);
- Puis, au debut de ce meme case 4,5 remplacer p1=gcopy(x[1]) par
- if(lgef(x[1])>=lgef(x[2])) p1=lcopy(x[1]);else affii(x[1],p1=cgeti(lgef(x[2])));
- 53) trans2.c: ggamma(), cxgamma() et mpgamma(): quelques changements pour avoir une
- erreur en cas d'entier negatif ou nul (modifie le message gamer2 dans messages.c).
- 54) ecrit(!!!) gtype() (type sous gp).
- 55) arith1.c: classno2() reecrit pour marcher en cas de discriminants non fondamentaux.
- (classno(x) utilise classno2(x) pour x>0).
- 56) arith1.c: regula() (et erreurs.h, messages.c) ajoute un test et un message d'erreur
- quand l'argument du regulateur est un carre.
- 57) Dans de nombreux endroits, modifie le traitement du zero p-adique pour
- qu'il ne depende que de valp et pas de precp.
- 58) polarit1.c: enlever #define vvalp et remplacer par valp partout.
- 59) gen2.c: ggval() case 7: remplacer signe(x[4]) par valp(x).
- 60) messages.c: and factorpadic a rajouter au message rootper1.
- 61) polarit2.c: content() ajoute avant le case 10:
-
- case 19: if(lx==1) return gun;
- p1=content(x[1]);l=avma;
- for(i=2;i<lx;i++) {tetpil=avma;p1=ggcd(p1,content(x[i]));}
- if(l==avma) return gcopy(p1);
- else return gerepile(l,tetpil,p1);
- 62) polarit2.c: ggcd() case 1,case 3 remplacer z[1]=y[1] par
- z[1]=copyifstack(y[1]).
- idem case 3,case 3 remplacer ? z[1] par ? copyifstack(x[1]).
- case 1 rajouter
- case 7 : z=gpuigs(y[2],min(valp(y),ggval(x,y[2])));break;
- case 3 rajouter la meme chose.
- 63) (suite de 62) case 4,5 remplacer tout par
-
- case 4 :
- case 5 :
- switch(ty)
- {
- case 4:
- case 5: z=cgetg(3,4);
- z[2]=lmulii(x[2],y[2]);l=avma;
- p1=mulii(x[1],y[2]);
- p2=mulii(x[2],y[1]);tetpil=avma;
- z[1]=lpile(l,tetpil,mppgcd(p1,p2));
- gredsp(&z);break;
- case 6:
- case 8: z=gun;break;
- case 7 : z=gpuigs(y[2],min(valp(y),ggval(x,y[2])));break;
- }break;
- case 7: if((ty!=7)||(!gegal(x[2],y[2]))) z=gun;
- else z=gpuigs(y[2],min(valp(y),valp(x)));break;
- 64) Remplacer tout les return gcopy(gun) par return gun.
- 65) polarit2.c: content() changer le default: les premieres lignes sont
-
- default: f=1;
- if(tx!=15) {for(i=lontyp[tx];(i<lx)&&f;i++) f=(typ(x[i])==1);i=lx-1;}
- else i=lx-2;
- p1=(GEN)x[i];l=avma;
-
- puis remplacer i>=3 par i>lontyp[tx], i>=2 par i>=lontyp[tx].
- 66) A changer les Makefile pour install (-c, -m, -s a voir).
- Changer les numeros de version.
- 67) gen2.c: cvtop() remplacer (7 fois) les pvaluation(x,y,&z) par ggval(x,y).
- 68) gen2.c: ecrit gcvtop() (et modifie le message d'erreur cvtoper2 dans
- messages.c).
- 69) polarit1.c: en train d'ecrire factorpadic() et padicff().
- 70) Toutes les fonctions a partir de approxp(): remplacer valp(x) par
- ggval(x,p), ou p a ete mis convenablement (egal a a[2]).
- 71) ggval() remplacer if(gcmp0(x)) par if(gcmp0(x)&&(tx!=7)&&(tx!=11)).
- 72) Modifie quelques endroits dans le manuel.
- 73) polarit1.c: rootpadic() cas r==1, remplacer yi[4]=p1[2] par
- yi[4]=lcopy(p1[2]).
- 74) gen2.c ggval() case 12: remplacer tp!=1 par tp!=10.
- 75) polarit1.c: enleve approxp() et incorpore apprint() a apprgen(), et
- legerement modifie apprgen.
- 76) gen3.c: ecrit isexactzero() (pas identique a isnull()).
- 77) gen2.c: Modifie normalizepol() pour ne chasser que les zeros exacts.
- Desormais, un polynome "nul" peut avoir une lgef>2, et les coefficients
- sont alors significatifs.
- 78) polarit2.c: primpart() changer if(lgef(x)==2) z=gzero en
- if(!signe(x)) z=gcopy(x);
- 79) gen1.c: gadd() fin du case 10,case 10 remplacer apres z[i]=lcopy(x[i])
- tout ce qui suit jusqu'au break par:
- z[1]=x[1];setsigne(z,1);normalizepol(&z);break;
- 80) gen1.c: gadd(), gmul(), gdiv() changer le debut du case 10 case <10.
- 81) gen2.c: Modifie ggval() case 12 pour accepter valuation / entier et case 10
- en changeant gcmp0 en iszero.
- 82) polarit2.c: factpol() remplace fa[30] par fa, mettre un lx=lgef(x) au
- debut, puis un fa=cgetg(lx,17);for(i=1;i<lx;i++) fa[i]=zero; et enfin
- quelques typecasts.
- 83) gen3.c: deriv() et integ(), modifie quelques trucs pour tenir compte de la
- modification des polynomes nuls.
- 84) mp.s: gerepile() (!!!) etiquette 7:, remplacer movl 40(sp),d0 par
- movl d0,d1
- movl 40(sp),d0
- puis 2 lignes apres remplacer cmpl d0,a0 par cmpl d0,d1.
- (ceci corrige entre autres l'erreur de reorder([])).
-
- *********************A FAIRE SUR ELLIPTIC.C DE DOMINIQUE**********************
- 85) remplacer tres souvent (peut etre partout) pvaluation(x,p,&p9) par
- ggval(x,p).
- 86) ghell(): apres grandn=pval... mettre les 3 lignes suivantes dans un
- if(grandn), suivi de else avma=av2, ou av2=avma est mist apres
- z=hell(e,a,prec) et declare.
- Modifs essentiellement identiques pour ghell2() et ghell3().
- ******************************************************************************
- 87) es.c: modifier 4 lignes de bruti.
- 88) mp.s: nombreuses modifications (simplifications) dues au remplacement par
- des _gzero.
-
- ----------------------------------------------------
-
- Version 1.34.90 (pre alpha version de la 1.35)
-
- 89) gpreadline.c: changer buffer=strdup("\\q") en strcpy("\\q",buffer).
- 90) bibli2.c: sumpos() changer 4 lignes apres le debut,
- newvalue(ep,cgetr(prec)) en
-
- p1=cgeti(prec+1);p1[1]=0x1000001+prec;
- newvalue(ep,p1);
- 91) deplace eulsum() de bibli1.c a bibli2.c.
- 92) bibli2.c: sumalt() dans le grand if(gcmp0(p1)||....) rajouter la condition
- &&(jterm>=10) pour eviter les arrets triviaux.
- 93) anal.c: dans les case 1,....200, partout ou il y a des itos(), tester
- avant si le type est egal a 1, et sinon envoyer l'erreur caseer. Ajouter
- cette erreur dans erreurs.h et messages.c.
- 94) dans padicff(), change pro[++j]=p1[k] en pro[++j]=(long)lift(p1[k]).
- 95) incorpore factorpadic a anal.c et messages.c.
- 96) Fini d'ecrire padicff et factorpadic.
- 97) alglin2.c: caract() mettre le setvarn(p5,v) apres le p5[1]=0x01000004
- et non pas avant.
- 98) polarit1.c: dans apprgen() et apprgen12() remplacer ggval par gmaxval
- (sauf a la division par p^ggval ou on teste simplement a zero), ou
- #define gmaxval(x,y) (gcmp0(x)?BIGINT:ggval(x,y)).
- 99) polarit1.c: apprgen12() rajouter un lift() devant p1=poleval(...).
- 100) arith2.c: primeform() ajouter la variable long prec et remplacer a la fin
- cgetr(3) par cgetr(prec). De plus, dans classno() ajouter ,3 dans l'appel
- de primeform.
- 101) arith2.c: rhoreal(): debut, changer tout le calcul de l en
- l=max(lg(x[4]),((-expo(x[4]))>>5)+2);if(l<=2) l=3;
- gencom.h: rajouter (apres min) la definition de max.
- 102) polarit1.c: bezoutpol() modifier les 5 lignes apres le while(signe(w3)).
- 103) presque partout: verifier systematiquement si les decalages sont
- necessaires a l'aide de la macro adecaler(x,tetpil,anavma).
- 104) mis a jour manuel et pari.menu. Modifie messages.c en remplacant constant
- polynomial in roots par zero polynomial.
- 105) polarit1.c: roots(), retourner le vecteur vide au lieu d'une erreur en cas
- de polynome constant non nul.
- 106) gp.c (et gpreadline.c) enlever le #define BUFFSIZE fixe et le remplacer
- par un long paribuffsize modifiable par -b. Changer le stacksize de 500
- a 1000 dans gencom.h. Modifie manuel, pari.el, usage() en consequence.
- 107) bibli1.c: lllgram() apres le if(!gcmp0(r=ground(...))) enlever le ; (!!!)
- et mettre else mu1=coeff(mu,k,k-1).
- 108) bibli1.c: polrecip() avant return y ajouter normalizepol(&y).
- 109) bibli1.c: lindep2() remplacer l'appel lll(p4,prec) par
- lll(p4,(prec<<1)-2).
- 110) bibli1.c (et messages.c, anal.c et gencom.h) ajoute la fonction algdep2().
- 111) bibli1.c, anal.c, messages.c: ecrit polredreal().
- 112) bibli1.c: modifie la derniere ligne de polred(), polredreal(),
- factoredpolred(), smallpolred() pour que la trace soit toujours >=0.
- 113) gen3.c: lift() corrige le case 11.
- 114) polarit1.c: apprgen() et apprgen12() remplacer if((vv=1)... par
- if((vv==1)....
- 115) polarit1.c: rootmod() remplacer gcmpgs(p,stoi(4)) par gcmpgs(p,4).
- 116) polarit1.c: apprgen() et apprgen12() remplacer idiot2=ggrando(p,1)
- par idiot2=gcmpgs(p,gdeux) ? ggrando(p,2) : ggrando(p,1);
- 117) polarit1.c: rootpadic(), traiter correctement la creation de yi dans
- le cas p=2.
- 118) polarit1.c: apprgen() et apprgen12(), encore des modifs pour p=2.
- 119) polarit1.c: rootpadic() etc... changer les cgetg(,17) en cgetg(,18).
- 120) gen3.c: gsubst() modifier le case 12 (de toutes facons il va falloir
- modifier tous les case 12).
- 122) polarit1.c: apprgen12() modifie l'utilisation de idiot et idiot2.
- La factorisation p-adique pour p>2 a l'air de marcher completement
- maintenant.
- 123) polarit1.c: apprgen12() enleve un lift() apres p1=.
- 124) Saut quantique: modification complete du traitement du case 12,
- qui devient le case 9. Modifs trop nombreuses pour etre detaillees.
- 125) gen1.c: gadd() dans le cas ty==10, et e==2, sortir le setvarn(z,vy)
- du else.
- 126) gen3.c: gmul2n() corriger le case 13,14 et rajouter case 9.
- 127) es.c: ecrire() remplacer 2 fois dec>=deceff par dec>deceff.
- 128) polarit1.c: padicff() modifier l'appel a apprgen9 pour que dans le cas
- du degre 1, apprgen soit appele.
- 129) Enleve tous les gcopy((g)zero) et gcopy((g)un) et remplace par gzero et
- gun.
- 130) Reecriture complete de elliptic.c par dominique, avec algorithme de Tate.
- 131) arith2.c: classno() Oublie de remttre com=0 vers la fin, et remplacer
- if(cmpii(fh[2],ftest[2])) com= -com par
- if(!cmpii(fh[2],ftest[2])) com= -com.
- 132) elliptic.c: apell() changer la declaration multiple table[100] en une
- declaration dynamique, et ajouter des unsigned long (2 fois) a la fin,
- au moment du calcul de q.
- 133) elliptic.c: modifie quelques 19 en 20 pour la longueur donne par initell().
- 134) elliptic.c: coordch(), mis correctement le calcul de eta1, eta2 et
- volume.
- 135) mp.s: (pendant de la correction 49) divrr() juste avant dext:
- remplacer les instructions commencant par bne 2$ par
- bne 2$
- movl a3@(-8),a6@(-20)
- clrl a3@(-8)
- 2$: subqw #1,d6
- bgt 3$
- movl a3@(-4),a6@(-24)
- clrl a3@(-4)
- 3$: moveq #0,d6
-
- et plus loin, apres bcdf:, autour de 7$ echanger
- a5@(-8) et a5@(-4).
-
- Enfin, dans dvrr:, mettre apres movl a0@,a6@(-10):
- movw a2@(2),d6
- subw #2,d6
-
- et apres le dbra d0, 1$:
-
- cmpw d7,d6 | l2>l1 ?
- bgt 4$
- clrl a4@(-4) | Si l2<=l1, y(m+1) n'existe pas
- | a4 pointe apres y(m+1)
- 4$: movl a0,a2.
- Enfin, dans divri apres 2$, apres le bsr getr (alloc. du resultat) ajouter
- movl _avma,a3 | eviter le chevauchement.
- subql #8,a3
- movl a3,_avma
- movl #2,a3@ | Hack pour que giv rende ceci
- (l'instruction suivante etant movl a0,a3).
- 136) polarit2.c: sturm(), et es.c: sori(), remplacer les signe par gsigne (dans sori,
- uniquement quand typy==4 ou 5.
- 137) mp.s: mulir(), en 2$+3 remplacer movw a1@(2),d0 par addqw #1,d0.
- Dans mulrr() et mulir(), remplacer le link a6,#-8 par link a6,#-16.
- 138) mp.s: mulir(), juste avant bsr murr, ajouter
- exg a1,a2 | Il faut que a2 soit le plus court!
- movw a2@(2),d0 | Mettre l'inf des longueurs dans d0 pour murr
- 139) mp.s: changer toute la fin de mulrr()
-
- munzr: movw a2@(2),d0
- clrl a6@(-12) | Initialiser flag a 0
- cmpw a1@(2),d0
- bls 1$
- movw a1@(2),d0 | d0.w contient L+2=inf(L1,L2)+2
- exg a1,a2 | a2 pointe sur le + court
- bra 2$
- 1$: bne 2$
- lea a1@(0,d0:w:4),a3 | a3 pointe sur x[L+1]
- movl a3,a6@(-12) | longueurs egales: flag egal adresse
- movl a3@,a6@(-16) | sauvegarde de x[L+1]
- clrl a3@
- 2$: bsr getr
- movl a0,a6@(-8)
- bsr murr | effectuer la multiplication
- tstl a6@(-12)
- beq mulrrf
- movl a6@(-12),a1
- movl a6@(-16),a1@ | remettre x[L+1]
- mulrrf: movl a6@(-8),d0 | adresse du resultat
- moveml sp@+,d2-d7/a2-a4
- unlk a6
- rts
-
- et enlever le movw a2@(2),d0 a la troisieme ligne de murr.
- 140) mp.c: mulrr() et mulir() remplacer le premier if(p1) (apres garde=hiremainder)
- (ou son equivalent dans mulir) par:
- if(p1)
- {
- mulll(p1,y[3]);garde=addll(hiremainder,garde);p2=mulll(p1,y[2]);
- hiremainder+=overflow;garde=addll(p2,garde);z[lz-1]=overflow+hiremainder;
- }
- else z[lz-1]=0; (pas le if else dans mulir).
- 141) Un peu partout remplacer les occurences de gpi par des mppi().
- 142) ecrit pnqn() (arith1.c, anal.c, messages.c, erreurs.h, gencom.h,
- pari.menu, manuel).
- 143) versionport.c: ne pas oublier de remettre la fin du commentaire de divll
- et d'enlever celui de la fin de l'ancien divll.
- 144) Un certain nombre de modifs d'ordre essentiellement esthetique, y compris
- le changement de nom de fc en gcf.
- 145) mp.c: mulrr() et mulir(), modif 140 incorrecte. remplacer la meme chose par
- if(p1)
- {
- mulll(p1,y[3]);p2=addmul(p1,y[2]);
- garde=addll(p2,garde);z[lz-1]=overflow+hiremainder;
- }
- 146) mp.c: divrr() changer tout le if(lz==3) en
-
- if(ly==3) /* Ce n'est pas une erreur: c'est bien ly et pas lz ici */
- {
- i=x[2];si=(lx>3)?x[3]:0;
- if((ulong)i<(ulong)y[2])
- {
- hiremainder=i;z[2]=divll(si,y[2]);
- z[1]=ex1-1;return z;
- }
- else
- {
- hiremainder=((ulong)i)>>1;
- z[2]=(i&1)?divll((((ulong)si)>>1)|(0x80000000),y[2]):divll(((ulong)si)>>1,y[2]);
- z[1]=ex1;return z;
- }
- }
- 147) mp.s: reecrit dvrr(). Les versions port, sparc et 68k ont maintenant l'air
- de coincider parfaitement.
- 148) arith1.c: ajouter un troisieme parametre a sfcont() pour limiter la
- longueur des fractions continues, et ecrit et installe la fonction
- gboundcf() (boundcf() sous gp).
- 149) arith1.c: ecrit et installe la fonction gcf2() (cf2() sous gp).
- 150) elliptic.c: globalreduction() ajoute verification type de e1 correct.
- 151) elliptic.c: installe la fonction smallinitell(), et legerement modifie
- les messages.
- 152) elliptic.c: quelques petites modifs pour accepter un vecteur de longueur
- 14, et mis a jour le manuel.
- 153) trans1.c: pasqrt() corrige des bugs dans le traitement des racines carrees
- 2-adiques et modifie le manuel.
- 154) trans2.c etc...: ecrit et installe glngamma().
- 155) arith2.c: modifie le code pour supprimer les longjmp.
- 156) trans2.c: mpbern() mettre nomb=0 si nomb<0.
- 157) trans2.c et trans3.c: modif analogue a la 141 pour les bernoulli: ne pas
- utiliser toute la precision disponible.
- 158) trans2.c: mpgamma(), cxgamma(), mplngamma(), cxlngamma() corrige pour les
- arguments de grand module.
- 159) elliptic.c: initell() modifie pour que dans le cas p-adique toutes les
- composantes soient du type p-adique.
- 160) bibli1.c: minim(), ajoute eps a la borne pour arrondir correctement.
- 161) Remplace des malloc() par newbloc() et free() par killbloc().
- 162) Ecrit setprecision() et getprecision().
-
- ------------------- version 1.34.95 --------------------------------
-
- 163) elliptic.c: subell() apres le premier if(), et subsell() au debut,
- rajouter: if(lg(z2)<3) return gcopy(z1);
- powell(), powsell() et powssell(), apres le if(!s) (ou le if(!n)) rajouter
- if(lg(z)<3) return gcopy(z);
- 164) polarit2.c: squff(), changer if(!klim) en
- kd=da>>1;if((!klim)||(klim>kd)) klim=kd;
- 165) gp.c et gpreadline.c: ajoute nbchi=dec=glbfmt[2];apres z=readseq(&tch);
- (au cas ou GP aurait fait appel a setprecision()).
- Modifie setprecision() et deplace de gp.c a bibli1.c, ainsi que
- setserieslength.
- 166) gp.c, gpreadline.c, init.c, gencom.h: rendu paribuffsize global, et modifs
- en consequence pour qu'il soit initialise par init().
- anal.c, truc(): change le newbloc(1000) par newbloc(paribuffsize>>1).
- 167) gp.c et gpreadline.c: globs() et tous les appels a globs(), ajouter
- comme parametres parisize et primelimit, et les faire imprimer. Modif
- semblable pour escape(). Enfin, dans globs() changer
- thestring[20] en thestring[70], et le nom primes en primelimit.
- 168) alglin2.c: invmulmat() ajoute la verification des tailles.
- 169) bibli1.c: ordred() modifie la fin pour que, comme polred, on ne renvoie
- que les polynomes minimaux.
- 170) bibli1.c: polredreal() modifie la multiplication par base, incorrecte a
- cause du nouveau traitement du type 9 (se trouve peut-etre a d'autres
- endroits).
- 171) bibli1.c: polred() et polredreal(), nettement acceleres en tenant compte
- des denominateurs.
- 172) Modifie le nom de la fonction bibliotheque setprecision en setprecr (le
- nom de la fonction gp ne change pas).
- 173) Enleve quelques variables inutilisees.
- 174) Dans arith1.c et arith2.c, remplace random() par rand().
- 175) trans3.c: jbesselh() juste apres le case 5, rajouter av=avma.
- 176) bibli1.c: polredreal() accelere en en calculant la matrice des traces
- autrement.
- 177) base.c, erreurs.h, messages.c: ajoute deux verifications et messages
- d'erreur dans factoredbase().
- 178) base.c: ...base() mettre la variable correcte.
- 179) init.c: init() creer polx[255] et polun[255].
- 180) alglin2.c: caract() et gnorm() case 9: changer completement d'algorithme,
- utiliser un resultant.
- 181) bibli1.c: factoredpolred(), smallpolred(), ordred() memes modifs que la
- modif 171.
- 182) users.tex et index.tex change l'espacement des points (!)
- 183) gp.c et gpreadline.c: envoyer le prompt seulement quand infile==stdin.
- et dans pari.el version 2.6 remplacer \n\n\n par \n (a voir pour 2.7).
- 184) bibli1.c: polred() et tous les autres, mise du signe finale modifiee.
- 185) legerement modifie appa.tex et INSTALLATION.
- 186) pari.el 2.7 de David Carlisle recu et installe.
- 187) modifie legerement pari.el, users.tex et index.tex suivant lettres de
- D. Carlisle et D. Bernardi.
-
- ----------------------- release preliminaire de la version 1.35 ------------
-
- 188) Corrige quelques erreurs d'impression dans le manuel.
- 189) elliptic.c: zell(), le resultat n'etait correct qu'au signe pres
- modulo le reseau. Modifie un peu au pif. A verifier.
- 190) elliptic.c: zell(), corriger si c0=0.
- 191) mp.s: suivant une suggestion de R. Schroeppel, modifie mulii(),
- mulir(), mulrr(), dvmdii() et divrr() pour que les boucles internes de
- multiplication ne necessitent que 7 instructions. Gain 5% en vitesse.
- 192) arith1.c: mppgcd() completement reecrit en utilisant la version
- simple de l'algorithme binaire. L'ancienne version s'appelle mppgcd1().
- Ecrit egalement le bezout correspondant, mais pour l'instant il semble
- plus lent, donc pas en service.
- 193) base.c: tous les programmes (3 fois) changer n=lg(x)-3 en n=lgef(x)-3.
- 194) bibli1.c: lindep2(), remplacer lll(p4,.. par gmul(p4,lll(p4,..., et
- rajouter un parametre variable long bit. D'ou modif dans algdep2(), anal.c,
- messages.c et le manuel.
- 195) usersch3.tex: modifie le paragraphe lll: cela ne rend plus la meme
- chose!
- 196) es.c: ecrire() corrige l'ecriture d'un reel en format exponentiel.
-
- ------------------- Release internationale de la version 1.35---------------
-
-