1 : C DEGRE3 SOURCE CHAT 05/01/12 22:41:03 5004 2 : SUBROUTINE DEGRE3(AS0,AS1,AS2,XR1,XI1,XR2,XI2,XR3,XI3) 3 : IMPLICIT INTEGER(I-N) 4 : IMPLICIT REAL*8(A-H,O-Z) 5 : -INC CCOPTIO 6 : C 7 : C 8 : C POLYNOME DE DEGRE 3 SOUS LA FORME 9 : C X3 + AS2*X2 + AS1*X + AS0 = 0 10 : C 11 : C 12 : C 13 : TR=SQRT(3.D0) 14 : Q=AS1/3.D0-AS2*AS2/9.D0 15 : R=(AS1*AS2-3.D0*AS0)/6.D0-AS2*AS2*AS2/27.D0 16 : D=Q*Q*Q+R*R 17 : C 18 : IF(IIMPI.EQ.9) THEN 19 : WRITE(6,*) 'Q ',Q 20 : WRITE(6,*) 'R ',R 21 : WRITE(6,*) 'D ',D 22 : ENDIF 23 : C 24 : IF(D) 1,2,2 25 : 2 SD=SQRT(D) 26 : S1=SIGN(1.D0,R+SD)*((ABS(R+SD))**(1.D0/3.D0)) 27 : S2=SIGN(1.D0,R-SD)*((ABS(R-SD))**(1.D0/3.D0)) 28 : XR1=S1+S2-AS2/3.D0 29 : XI1=0.D0 30 : XR2=-(S1+S2)/2.D0-AS2/3.D0 31 : XI2=TR*(S1-S2)/2.D0 32 : XR3=XR2 33 : XI3=-XI2 34 : GO TO 3 35 : 1 SD=SQRT(-D) 36 : RO=(R*R-D)**(1.D0/6.D0) 37 : ARG=ATAN2(SD,R)/3.D0 38 : if (abs(arg).lt.1e-7) arg=0.d0 39 : SOM=RO*COS(ARG) 40 : DIF=RO*SIN(ARG) 41 : XR1=SOM*2.D0-AS2/3.D0 42 : XI1=0.D0 43 : XR2=-SOM -AS2/3.D0-TR*DIF 44 : XI2=0.D0 45 : XR3=-SOM -AS2/3.D0+TR*DIF 46 : XI3=0.D0 47 : 3 CONTINUE 48 : RETURN 49 : END 50 : 51 :
© Cast3M 2003 - All rights reserved.
Disclaimer