]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MINICERN/mathlib/gen/c/cpolyz64.F
Merging the VirtualMC branch to the main development branch (HEAD)
[u/mrichter/AliRoot.git] / MINICERN / mathlib / gen / c / cpolyz64.F
diff --git a/MINICERN/mathlib/gen/c/cpolyz64.F b/MINICERN/mathlib/gen/c/cpolyz64.F
deleted file mode 100644 (file)
index 6859e17..0000000
+++ /dev/null
@@ -1,264 +0,0 @@
-*
-* $Id$
-*
-* $Log$
-* Revision 1.1.1.1  1996/04/01 15:01:53  mclareni
-* Mathlib gen
-*
-*
-#include "gen/pilot.h"
-#if defined(CERNLIB_DOUBLE)
-      SUBROUTINE WPOLYZ(C,N,MAXIT,Z0,H)
-C
-#include "gen/imp64.inc"
-C
-      CHARACTER NAME*(*)
-      PARAMETER (NAME = 'WPOLYZ')
-#endif
-#if !defined(CERNLIB_DOUBLE)
-      SUBROUTINE CPOLYZ(C,N,MAXIT,Z0,H)
-C
-      CHARACTER NAME*(*)
-      PARAMETER (NAME = 'CPOLYZ')
-#endif
-C
-C     Based on
-C      T. Pomentale, Homotopy methods for polynomial equations,
-C      J. Inst. Maths Applics 13 (1974) 201-213
-
-C     Revised version of a routine originally written by T. Pomentale
-
-#include "gen/defc64.inc"
-     + C(0:*),Z0(*),F(100),B(100),Z,CN,CD,FZ,FF,F1,F2,V,ZZ,Z1,ZV,IU
-      LOGICAL LMD
-      DIMENSION H(*)
-      CHARACTER*80 ERRTXT
-
-      PARAMETER (EPS = 1D-14)
-#if defined(CERNLIB_CRAY)
-      PARAMETER (IU = (0E0,1E0))
-#endif
-#if !defined(CERNLIB_CRAY)
-      PARAMETER (IU = (0D0,1D0))
-#endif
-      PARAMETER (R0 = 0, R1 = 1, BIG1 = 1D7, BIG2 = BIG1/10, HF = R1/2)
-      PARAMETER (FAC1 = 9*R1/10, FAC2 = 2+100*FAC1*EPS)
-      PARAMETER (PI = 3.14159 26535 89793 24D0, PI2 = 2*PI)
-
-#if defined(CERNLIB_QF2C)
-#include "defdr.inc"
-#endif
-#if defined(CERNLIB_DOUBLE)
-      TST(Z1,ZV)=DREAL(Z1)*DREAL(ZV)+DIMAG(Z1)*DIMAG(ZV)
-#endif
-#if !defined(CERNLIB_DOUBLE)
-      TST(Z1,ZV)=REAL(Z1)*REAL(ZV)+AIMAG(Z1)*AIMAG(ZV)
-#endif
-
-      IF(N .LE. 0) RETURN
-      IF(C(0) .EQ. 0) THEN
-       CALL MTLPRT(NAME,'C209.1','A(0) = 0')
-       RETURN
-      ENDIF
-      IF(N .EQ. 1) THEN
-       Z0(1)=-C(1)/C(0)
-       H(1)=0
-       RETURN
-      ENDIF
-      IF(N .EQ. 2) THEN
-       H(1)=0
-       H(2)=0
-       Z0(2)=(-C(1)+SQRT(C(1)**2-4*C(0)*C(2)))/(2*C(0))
-       Z0(1)=-Z0(2)-C(1)/C(0)
-       RETURN
-      ENDIF
-      LMD=.FALSE.
-      DO 1 K = 1,N
-    1 LMD=LMD .OR. Z0(K) .NE. 0
-      M=0
-      WN=SQRT(N+R0)
-      Z=1+IU
-      N1=N
-
-      DO 3 K = 1,N+1
-      H(K)=1
-    3 B(K)=C(K-1)
-    6 DO 10 K = 1,N-2
-      IF(B(N1+1) .EQ. 0) GO TO 18
-      IF(LMD) Z=Z0(K)
-      IF(M .GE. MAXIT) THEN
-       CALL MTLPRT(NAME,'C209.2','TOO MANY ITERATIONS')
-       RETURN
-      ENDIF
-
-      S=BIG1
-      DO 61 I = 1,N1+1
-   61 F(I)=B(I)
-      ZA=ABS(Z)
-      HH=HF*ABS(B(1))
-      DO 62 I = 2,N1+1
-      F(I)=Z*F(I-1)+F(I)
-      D=ABS(F(I))
-   62 HH=ZA*HH+D
-      DO 63 L = 1,2
-      DO 63 I = 2,N1-L+1
-   63 F(I)=Z*F(I-1)+F(I)
-      M=M+1
-      IF(D .LE. EPS*(FAC2*HH-D)) GO TO 13
-
-    7 D1=S
-    8 NI=0
-      V=Z
-      FZ=F(N1+1)
-      FF=FZ
-      F1=F(N1)
-      F2=F(N1-1)
-
-    9 NI=NI+1
-      IH=0
-      Z=V
-      F(N1+1)=FF
-      F(N1)=F1
-      F(N1-1)=F2
-   11 IH=IH+1
-      IF(IH .GT. NI) GO TO 9
-      CN=F(N1+1)-(NI-IH)*FZ/(NI+R0)
-      CD=F(N1)**2-2*F(N1-1)*CN
-      CN=CN*F(N1)
-      IF(ABS(CN) .GT. 10*ABS(CD)) GO TO 9
-      Z=Z-CN/CD
-      IF(M .GE. MAXIT) THEN
-       CALL MTLPRT(NAME,'C209.2','TOO MANY ITERATIONS')
-       RETURN
-      ENDIF
-
-      DO 71 I = 1,N1+1
-   71 F(I)=B(I)
-      ZA=ABS(Z)
-      HH=HF*ABS(B(1))
-      DO 72 I = 2,N1+1
-      F(I)=Z*F(I-1)+F(I)
-      D=ABS(F(I))
-   72 HH=ZA*HH+D
-      DO 73 L = 1,2
-      DO 73 I = 2,N1-L+1
-   73 F(I)=Z*F(I-1)+F(I)
-      M=M+1
-      ERR=EPS*(FAC2*HH-D)
-      IF(D .LE. ERR) GO TO 13
-      S=ABS(F(N1+1))
-      IF(S .LE. FAC1*D1) GO TO 7
-      IF(S .LT. BIG2*ERR) GO TO 13
-      S1=ABS(F(N1))
-      S2=ABS(F(N1-1))
-      S3=1+ABS(Z)
-      IF(2*S1 .GT. S2*S3 .OR. 10*S .LT. S1*S3) GO TO 11
-
-      ZZ=Z
-      KK=2
-      M1=1
-      S=S1/S2
-   40 DT=PI2/KK
-      DO 42 J=1,KK,M1
-      ZV=S*EXP(IU*(J*DT))
-      Z=ZZ+ZV
-      IF(M .GE. MAXIT) GO TO 44
-      DO 41 I = 1,N1+1
-   41 F(I)=B(I)
-      DO 43 L = 0,1
-      DO 43 I = 2,N1-L+1
-   43 F(I)=Z*F(I-1)+F(I)
-      M=M+1
-      IF(F(N1) .NE. 0) THEN
-       Z1=(ABS(F(N1))*F(N1+1))/F(N1)
-       IF(TST(Z1,ZV) .LT. 0) GO TO 44
-      ENDIF
-   42 CONTINUE
-      M1=2
-      KK=2*KK
-      IF(KK .LE. 8) GO TO 40
-
-   44 S2=1
-      S=ABS(F(N1+1))
-      S1=ABS(F(N1))
-      IF(S .GT. S1*(1+ABS(Z))) S2=S1/(2*S)
-      Z=Z-S2*F(N1+1)/F(N1)
-      IF(M .GE. MAXIT) THEN
-       CALL MTLPRT(NAME,'C209.2','TOO MANY ITERATIONS')
-       RETURN
-      ENDIF
-      DO 81 I = 1,N1+1
-   81 F(I)=B(I)
-      DO 83 L = 0,2
-      DO 83 I = 2,N1-L+1
-   83 F(I)=Z*F(I-1)+F(I)
-      M=M+1
-      GO TO 8
-
-   18 Z=0
-      H(K)=0
-
-   13 IF(Z .EQ. 0) GO TO 53
-      X=ABS(B(N1+1))
-      Z1=1
-      JR=0
-      DO 51 J = 2,N1
-      Z1=Z*Z1
-      Y=ABS(Z1*B(N1-J+2))
-      IF(Y .GT. X) THEN
-       X=Y
-       JR=J-1
-      ENDIF
-   51 CONTINUE
-      IF(JR .GT. 0) THEN
-       B(N1+1)=-B(N1+1)/Z
-       DO 52 J = N1,N1-JR+2,-1
-   52  B(J)=(B(J+1)-B(J))/Z
-       DO 55 J = N1-JR+1,N1
-   55  B(J)=B(J+1)
-      ENDIF
-      DO 54 J = 2,N1-JR
-   54 B(J)=B(J)+Z*B(J-1)
-
-   53 N1=N1-1
-      Z0(K)=Z
-   10 CONTINUE
-      Z0(N)=(-B(2)+SQRT(B(2)**2-4*B(1)*B(3)))/(2*B(1))
-      Z0(N-1)=-Z0(N)-B(2)/B(1)
-      IF(B(3) .EQ. 0) H(N)=0
-      IF(B(2) .EQ. 0 .AND. B(3) .EQ. 0) H(N-1)=0
-   12 CONTINUE
-
-      DO 14 K=1,N
-      IF(H(K) .EQ. 0) GO TO 14
-      H(K)=0
-
-      DO 91 I = 1,N+1
-   91 F(I)=C(I-1)
-      ZA=ABS(Z0(K))
-      HH=HF*ABS(C(0))
-      DO 92 I = 2,N+1
-      F(I)=Z0(K)*F(I-1)+F(I)
-      D=ABS(F(I))
-   92 HH=ZA*HH+D
-      DO 93 L = 1,2
-      DO 93 I = 2,N-L+1
-   93 F(I)=Z0(K)*F(I-1)+F(I)
-      IF(F(N+1) .EQ. 0 .AND. F(N) .EQ. 0) GO TO 14
-      ERR=EPS*(FAC2*HH-D)
-      IF(D .LE. ERR) THEN
-       S=WN*ERR
-      ELSE
-       S=WN*ABS(F(N+1))
-      ENDIF
-      S1=SQRT(ABS(F(N)**2-2*F(N-1)*F(N+1)))
-      IF(S .LE. 10*S1*ABS(Z0(K))) THEN
-       H(K)=S/S1
-      ELSE
-       WRITE(ERRTXT,103) M
-       CALL MTLPRT(NAME,'C209.3',ERRTXT)
-      ENDIF
-   14 CONTINUE
-      RETURN
-103   FORMAT('BOUND FOR Z0',I3,' CANNOT BE FOUND')
-      END