* F02SDF Example Program Text * Mark 14 Revised. NAG Copyright 1989. * .. Parameters .. INTEGER NMAX, MAMAX, MBMAX, LDA, LDB, LWORK PARAMETER (NMAX=10,MAMAX=5,MBMAX=5,LDA=2*MAMAX+1, + LDB=2*MBMAX+1,LWORK=NMAX*(MAMAX+2)) INTEGER NIN, NOUT PARAMETER (NIN=5,NOUT=6) * .. Local Scalars .. DOUBLE PRECISION RELEP, RMU INTEGER I, IFAIL, J, K, K1, K2, MA, MB, N LOGICAL SYM * .. Local Arrays .. DOUBLE PRECISION A(LDA,NMAX), B(LDB,NMAX), D(30), VEC(NMAX), + WORK(LWORK) INTEGER IWORK(NMAX) * .. External Subroutines .. EXTERNAL F02SDF * .. Intrinsic Functions .. INTRINSIC MIN * .. Executable Statements .. WRITE (NOUT,*) 'F02SDF Example Program Results' * Skip heading in data file READ (NIN,*) READ (NIN,*) N, MA, MB IF (N.GT.0 .AND. N.LE.NMAX .AND. MA.GE.0 .AND. MA.LE.MAMAX .AND. + MB.LE.MBMAX) THEN DO 20 I = 1, N K1 = MA + 1 - MIN(MA,I-1) K2 = MA + 1 + MIN(MA,N-I) READ (NIN,*) (A(K,I),K=K1,K2) 20 CONTINUE DO 40 I = 1, N K1 = MB + 1 - MIN(MB,I-1) K2 = MB + 1 + MIN(MB,N-I) READ (NIN,*) (B(K,I),K=K1,K2) 40 CONTINUE READ (NIN,*) RMU, D(1) SYM = .FALSE. RELEP = 0.0D0 IFAIL = 1 * CALL F02SDF(N,MA+1,MB+1,A,LDA,B,LDB,SYM,RELEP,RMU,VEC,D,IWORK, + WORK,LWORK,IFAIL) * WRITE (NOUT,*) IF (IFAIL.EQ.0) THEN WRITE (NOUT,99999) 'Corrected eigenvalue = ', RMU + D(30) WRITE (NOUT,*) WRITE (NOUT,*) 'Eigenvector is' WRITE (NOUT,99998) (VEC(I),I=1,N) ELSE IF (IFAIL.GT.0) THEN WRITE (NOUT,99997) 'Error in F02SDF. IFAIL =', IFAIL IF (IFAIL.EQ.7 .OR. IFAIL.EQ.9) THEN WRITE (NOUT,*) WRITE (NOUT,*) 'Successive corrections to RMU were' WRITE (NOUT,*) DO 60 J = 1, 29 IF (D(J).EQ.0.0D0) GO TO 80 WRITE (NOUT,99996) D(J) 60 CONTINUE END IF ELSE WRITE (NOUT,99995) IFAIL END IF END IF 80 CONTINUE * 99999 FORMAT (1X,A,F8.4) 99998 FORMAT (1X,5F9.4) 99997 FORMAT (1X,A,I5) 99996 FORMAT (1X,E20.4) 99995 FORMAT (1X,' ** F02SDF returned with IFAIL = ',I5) END