C SAMPLE PROGRAM FOR DGEFS C PARAMETER (LDA=10) DOUBLE PRECISION A(LDA,LDA), B(LDA), WORK(LDA), RCOND INTEGER IWORK(LDA), I, J, N, ITASK, IND C C SET UP PROBLEM C N = 3 ITASK = 1 A(1,1) = 10.D0 A(2,1) = -3.D0 A(3,1) = 5.D0 A(1,2) = -7.D0 A(2,2) = 2.D0 A(3,2) = -1.D0 A(1,3) = 0.D0 A(2,3) = 6.D0 A(3,3) = 5.D0 B(1) = 7.D0 B(2) = 4.D0 B(3) = 10.D0 C C PRINT PROBLEM INFORMATION C WRITE (*,*) ' COEFFICIENT MATRIX =' DO 10 I = 1,N WRITE (*,800) (A(I,J), J = 1,N) 10 CONTINUE WRITE (*,*) ' RIGHT-HAND SIDE =' WRITE (*,800) (B(J), J = 1,N) C C SOLVE LINEAR SYSTEM C CALL DGEFS (A, LDA, N, B, ITASK, IND, WORK, IWORK, RCOND) C C PRINT RESULTS C WRITE (*,*) WRITE (*,*) 'DGEFS RESULTS' IF (IND .EQ. -10) THEN WRITE (*,*) ' ERROR CODE =', IND ELSE IF (IND .LT.0) THEN WRITE (*,*) ' ERROR CODE =', IND STOP ELSE WRITE (*,*) ' NUMBER OF ACCURATE DIGITS =', IND END IF C WRITE (*,*) ' SOLUTION =' WRITE (*,800) (B(J), J = 1,N) C C SOLVE LINEAR SYSTEM again C B(1) = 5.D0 B(2) = 1.D0 B(3) = 3.D0 WRITE (*,*) WRITE (*,*) ' RIGHT-HAND SIDE =' WRITE (*,800) (B(J), J = 1,N) ITASK = 2 CALL DGEFS (A, LDA, N, B, ITASK, IND, WORK, IWORK, RCOND) C C PRINT RESULTS C WRITE (*,*) WRITE (*,*) 'DGEFS RESULTS' IF (IND .EQ. -10) THEN WRITE (*,*) ' ERROR CODE =', IND ELSE IF (IND .LT.0) THEN WRITE (*,*) ' ERROR CODE =', IND STOP ELSE WRITE (*,*) ' NUMBER OF ACCURATE DIGITS =', IND END IF C WRITE (*,*) ' SOLUTION =' WRITE (*,800) (B(J), J = 1,N) C WRITE (*,*) WRITE (*,*) 'REFERENCE RESULTS FROM IBM PC/AT ' WRITE (*,*) ' NUMBER OF ACCURATE DIGITS = 5' WRITE (*,*) ' SOLUTION =' WRITE (*,*) ' 0.000000 -1.000000 1.000000' C STOP 800 FORMAT (4X, 3F12.6) END