C MATVECZ.F OF N.TAJIMA'S FORTRAN BENCH-MARK TESTS (VER.2) C MULTIPLIES COMPLEX (HERMITE) MATRIX TO VECTOR "NSOL*ITER" TIMES C IN ORDER TO CALCULATE LARGEST "NSOL" (REAL) EIGENVALUES. C HISTORY: 98/6/24-26 C C NON-STANDARD COMPLEX*16 FUNCTIONS USED IN THIS PROGRAM ARE: C (1) REAL*8 DBLE(COMPLEX*16) : REAL PART C (2) REAL*8 DIMAG(COMPLEX*16) : IMAGINARY PART C (3) COMPLEX*16 DCONJG(COMPLEX*16) : COMPLEX CONJUGATE C PROGRAM MTVCZ IMPLICIT REAL*8 (A-H,O-Z) COMPLEX*16 B A=1 B=(1.0D0,0.3D0) NSOL=3 ITER=1000 CALL MTVCZ1(A,B,NSOL,ITER) END C SUBROUTINE MTVCZ1(A,B,NSOL,ITER) IMPLICIT REAL*8 (A-H,O-Z) COMPLEX*16 B,Z,H,V1,V2 PARAMETER(N=723,MSOL=10) COMMON /CMNLEG/ H(N,N),V1(N),V2(N),EG(MSOL) IF(NSOL .GT. MSOL) STOP 1 WRITE(6,900) N,N,NSOL,ITER 900 FORMAT(' MULTIPLY ',I4,'*',I4,' COMPLEX MATRIX TO VECTOR' & ,I5,'*',I7,' TIMES') DO 10 I=1,N H(I,I)=I-A/I DO 10 J=1,I-1 H(I,J)=B/(I-J)**2 10 H(J,I)=DCONJG(H(I,J)) DO 80 L=1,NSOL Z=(3.0D0,1.0D0)*SQRT(6.0D0/(10.0D0*N*(N+1)*(2*N+1))) DO 20 I=1,N 20 V1(I)=Z*I E=0 DO 60 K=1,ITER S=0 DO 40 I=1,N Z=0 DO 30 J=1,N 30 Z=Z+V1(J)*H(J,I) V2(I)=Z S=S+DBLE(Z)**2+DIMAG(Z)**2 40 CONTINUE C* E0=E E=SQRT(S) C* WRITE(6,910) K,E,ABS(E-E0),L C*910 FORMAT(' ',I10,F12.6,1PE12.4,' :L=',I4) F=1/E DO 50 I=1,N 50 V1(I)=F*V2(I) 60 CONTINUE EG(L)=E DO 70 I=1,N DO 70 J=1,N 70 H(J,I)=H(J,I)-V1(I)*E*DCONJG(V1(J)) C* WRITE(6,920) L,E,ABS(E-E0) C*920 FORMAT(' L=',I4,' E=',F12.6,' DE=',1PE12.4) 80 CONTINUE WRITE(6,930) (EG(L),L=1,NSOL) 930 FORMAT(' LARGEST EIGENVALUES=',3F13.5:/' ',6F13.5) END