Ticket #9620: pari-2.3.5.patch
| File pari-2.3.5.patch, 4.2 KB (added by rbk, 3 years ago) |
|---|
-
pari-2.3.5.p1
old new 182 182 gel(y,1) = Pi2n(-1, lg(x)); 183 183 gel(y,2) = mpach(x); 184 184 if (sx < 0) 185 {186 185 setsigne(y[1],-signe(y[1])); 186 else 187 187 setsigne(y[2],-signe(y[2])); 188 }189 188 return y; 190 189 191 190 case t_COMPLEX: … … 254 253 if (expo(x) < 0) return mpacos(x); 255 254 256 255 y = cgetg(3,t_COMPLEX); p1 = mpach(x); 257 if (sx < 0) gel(y,1) = mppi(lg(x)); 258 else { 259 gel(y,1) = gen_0; 256 if (sx < 0) { 257 gel(y,1) = mppi(lg(x)); 260 258 setsigne(p1,-signe(p1)); 261 } 259 } else gel(y,1) = gen_0; 262 260 gel(y,2) = p1; return y; 263 261 264 case t_COMPLEX: av = avma; 265 return gerepilecopy(av, mulcxmI(gach(x,prec))); 262 case t_COMPLEX: 263 av = avma; 264 p1 = gadd(x, gsqrt(gaddsg(-1,gsqr(x)), prec)); /* x + sqrt(x^2-1) */ 265 y = glog(p1,prec); 266 if (typ(y) == t_COMPLEX && signe(y[2]) > 0) y = gneg(y); 267 return gerepilecopy(av, mulcxI(y)); 266 268 267 269 case t_INTMOD: case t_PADIC: pari_err(typeer,"gacos"); 268 270 case t_SER: … … 502 504 } 503 505 /********************************************************************/ 504 506 /** **/ 505 /** AR G-HYPERBOLIC SINE**/507 /** AREA HYPERBOLIC SINE **/ 506 508 /** **/ 507 509 /********************************************************************/ 508 510 … … 545 547 sx = gsigne(p1); 546 548 sy = 0; 547 549 } 548 if (sx > 0 || (!sx && sy*sz<=0)) return gerepileupto(av, y); 549 550 p1 = mppi(prec); if (sy<0) setsigne(p1,-1); 551 return gerepileupto(av, gadd(gneg_i(y), pureimag(p1))); 550 return gerepileupto(av, y); 552 551 case t_INTMOD: case t_PADIC: pari_err(typeer,"gash"); 553 552 default: 554 553 av = avma; if (!(y = toser_i(x))) break; … … 570 569 } 571 570 /********************************************************************/ 572 571 /** **/ 573 /** AR G-HYPERBOLIC COSINE**/572 /** AREA HYPERBOLIC COSINE **/ 574 573 /** **/ 575 574 /********************************************************************/ 576 575 … … 601 600 if (absrnz_egal1(x)) { y = cgetimag(); gel(y,2) = mppi(lg(x)); return y; } 602 601 y = cgetg(3,t_COMPLEX); 603 602 av = avma; p1 = mpach(x); 604 setsigne(p1, -signe(p1));605 603 gel(y,1) = p1; 606 604 gel(y,2) = mppi(lg(x)); return y; 607 605 … … 609 607 av = avma; 610 608 p1 = gadd(x, gsqrt(gaddsg(-1,gsqr(x)), prec)); /* x + sqrt(x^2-1) */ 611 609 y = glog(p1,prec); 612 if ( typ(y) == t_COMPLEX && signe(y[2]) < 0) y = gneg(y);610 if (signe(y[1]) < 0) y = gneg(y); 613 611 return gerepileupto(av, y); 614 612 615 613 case t_INTMOD: case t_PADIC: pari_err(typeer,"gach"); … … 640 638 } 641 639 /********************************************************************/ 642 640 /** **/ 643 /** AR G-HYPERBOLIC TANGENT**/641 /** AREA HYPERBOLIC TANGENT **/ 644 642 /** **/ 645 643 /********************************************************************/ 646 644 … … 659 657 GEN 660 658 gath(GEN x, long prec) 661 659 { 660 long sx; 662 661 pari_sp av; 663 662 GEN a, y, p1; 664 663 665 664 switch(typ(x)) 666 665 { 667 666 case t_REAL: 668 if (!signe(x)) return real_0_bit(expo(x)); 667 sx = signe(x); 668 if (!sx) return real_0_bit(expo(x)); 669 669 if (expo(x) < 0) return mpath(x); 670 670 671 671 y = cgetg(3,t_COMPLEX); … … 675 675 p1 = logr_abs(p1); 676 676 setexpo(p1, expo(p1)-1); 677 677 gel(y,1) = gerepileuptoleaf(av, p1); 678 gel(y,2) = Pi2n(-1, lg(x)); return y; 678 gel(y,2) = Pi2n(-1, lg(x)); 679 if (sx > 0) 680 setsigne(y[2],-signe(y[2])); 681 return y; 679 682 680 683 case t_COMPLEX: 681 684 av = avma; p1 = glog( gaddgs(gdivsg(2,gsubsg(1,x)),-1), prec );
