* F01CWF Example Program Text * Mark 18 Revised. NAG Copyright 1997. * .. Parameters .. INTEGER NIN, NOUT PARAMETER (NIN=5,NOUT=6) INTEGER NMAX, LDA, LDB, LDC PARAMETER (NMAX=6,LDA=NMAX,LDB=LDA,LDC=LDA) * .. Local Scalars .. COMPLEX *16 ALPHA, BETA INTEGER I, IFAIL, J, M, N, NCOLA, NCOLB, NROWA, NROWB CHARACTER TRANSA, TRANSB * .. Local Arrays .. COMPLEX *16 A(LDA,NMAX), B(LDB,NMAX), C(LDC,NMAX) * .. External Subroutines .. EXTERNAL F01CWF, X04DAF * .. Executable Statements .. WRITE (NOUT,*) 'F01CWF Example Program Results' WRITE (NOUT,*) * Skip heading in data file READ (NIN,*) 20 CONTINUE * Skip Subexample heading READ (NIN,*,END=80) * Read matrices A and B. READ (NIN,*) NROWA, NCOLA, TRANSA, ALPHA * Check that the arrays are large enough to hold the matrices. IF (NROWA.LE.LDA .AND. NCOLA.LE.NMAX) THEN DO 40 I = 1, NROWA READ (NIN,*) (A(I,J),J=1,NCOLA) 40 CONTINUE READ (NIN,*) NROWB, NCOLB, TRANSB, BETA IF (NROWB.LE.LDB .AND. NCOLB.LE.NMAX) THEN DO 60 I = 1, NROWB READ (NIN,*) (B(I,J),J=1,NCOLB) 60 CONTINUE IF (TRANSA.EQ.'N' .OR. TRANSA.EQ.'n') THEN M = NROWA N = NCOLA ELSE M = NCOLA N = NROWA END IF IFAIL = 1 * * Add the two matrices A and B. CALL F01CWF(TRANSA,TRANSB,M,N,ALPHA,A,LDA,BETA,B,LDB,C,LDC, + IFAIL) * IF (IFAIL.EQ.0) THEN * Print the result matrix C. WRITE (NOUT,99999) TRANSA, TRANSB WRITE (NOUT,99998) ALPHA, BETA CALL X04DAF('G','X',M,N,C,LDC,'Matrix C:',IFAIL) WRITE (NOUT,*) GO TO 20 ELSE WRITE (NOUT,99997) IFAIL END IF END IF END IF 80 CONTINUE * 99999 FORMAT (1X,'TRANSA = ''',A,''', TRANSB = ''',A,''',') 99998 FORMAT (1X,'ALPHA = (',1P,E11.4,',',E11.4,'), BETA = (',E11.4,',', + E11.4,')') 99997 FORMAT (1X,/1X,' ** F01CWF returned with IFAIL = ',I5) END