SUBROUTINE PDSYMR(NFILE,N,A,LDA) C This routine reads an n x n matrix A from a file, and checks to see C that it is symmetrix and positive definite. C Inputs: C NFILE File number from which to read matrix in full row and column C form, one row per record C N Order of matrix C LDA Leading dimension of matrix C Output: C A Matrix IMPLICIT REAL*8 (A-H,O-Z) PARAMETER(LD=100) COMMON /SCRA/V1(LD),V2(LD),A1(LD,LD),A2(LD,LD) DIMENSION A(LDA,N) C Check for symmetry DO 10 I=1,N 10 READ(NFILE,*,END=110,ERR=120)(A(I,J),J=1,N) DO 20 I=1,N DO 20 J=1,I 20 IF(A(I,J).NE.A(J,I))GO TO 130 C Check for positive definite CALL DPDCK(A,LDA,N,INFO) IF (INFO.NE.0) GO TO 140 RETURN C Termination 110 WRITE(6,115)I 115 FORMAT(/,' *** UNEXPECTED END-OF-FILE, MATRIX ROW',I3) CALL TERM 120 WRITE(6,125)I 125 FORMAT(/,' *** READ ERROR, MATRIX ROW',I3) CALL TERM 130 WRITE(6,135)J,I 135 FORMAT(/,' *** MATRIX ASYMETRY, ELEMENTS',I3,' AND',I3) CALL TERM 140 WRITE(6,145) 145 FORMAT(/,' *** MATRIX IS NOT POSITIVE DEFINITE') CALL TERM END