00001 SUBROUTINE DERRAB( NUNIT )
00002 IMPLICIT NONE
00003
00004
00005
00006
00007
00008
00009 INTEGER NUNIT
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 INTEGER NMAX
00027 PARAMETER ( NMAX = 4 )
00028
00029
00030 INTEGER I, INFO, ITER, J
00031
00032
00033 INTEGER IP( NMAX )
00034 DOUBLE PRECISION A( NMAX, NMAX ), AF( NMAX, NMAX ), B( NMAX ),
00035 $ C( NMAX ), R( NMAX ), R1( NMAX ), R2( NMAX ),
00036 $ W( 2*NMAX ), X( NMAX )
00037 DOUBLE PRECISION WORK(1)
00038 REAL SWORK(1)
00039
00040
00041 EXTERNAL CHKXER, DSGESV
00042
00043
00044 LOGICAL LERR, OK
00045 CHARACTER*32 SRNAMT
00046 INTEGER INFOT, NOUT
00047
00048
00049 COMMON / INFOC / INFOT, NOUT, OK, LERR
00050 COMMON / SRNAMC / SRNAMT
00051
00052
00053 INTRINSIC DBLE
00054
00055
00056
00057 NOUT = NUNIT
00058 WRITE( NOUT, FMT = * )
00059
00060
00061
00062 DO 20 J = 1, NMAX
00063 DO 10 I = 1, NMAX
00064 A( I, J ) = 1.D0 / DBLE( I+J )
00065 AF( I, J ) = 1.D0 / DBLE( I+J )
00066 10 CONTINUE
00067 B( J ) = 0.D0
00068 R1( J ) = 0.D0
00069 R2( J ) = 0.D0
00070 W( J ) = 0.D0
00071 X( J ) = 0.D0
00072 C( J ) = 0.D0
00073 R( J ) = 0.D0
00074 IP( J ) = J
00075 20 CONTINUE
00076 OK = .TRUE.
00077
00078 SRNAMT = 'DSGESV'
00079 INFOT = 1
00080 CALL DSGESV(-1,0,A,1,IP,B,1,X,1,WORK,SWORK,ITER,INFO)
00081 CALL CHKXER( 'DSGESV', INFOT, NOUT, LERR, OK )
00082 INFOT = 2
00083 CALL DSGESV(0,-1,A,1,IP,B,1,X,1,WORK,SWORK,ITER,INFO)
00084 CALL CHKXER( 'DSGESV', INFOT, NOUT, LERR, OK )
00085 INFOT = 4
00086 CALL DSGESV(2,1,A,1,IP,B,2,X,2,WORK,SWORK,ITER,INFO)
00087 CALL CHKXER( 'DSGESV', INFOT, NOUT, LERR, OK )
00088 INFOT = 7
00089 CALL DSGESV(2,1,A,2,IP,B,1,X,2,WORK,SWORK,ITER,INFO)
00090 CALL CHKXER( 'DSGESV', INFOT, NOUT, LERR, OK )
00091 INFOT = 9
00092 CALL DSGESV(2,1,A,2,IP,B,2,X,1,WORK,SWORK,ITER,INFO)
00093 CALL CHKXER( 'DSGESV', INFOT, NOUT, LERR, OK )
00094
00095
00096
00097 IF( OK ) THEN
00098 WRITE( NOUT, FMT = 9999 )'DSGESV'
00099 ELSE
00100 WRITE( NOUT, FMT = 9998 )'DSGESV'
00101 END IF
00102
00103 9999 FORMAT( 1X, A6, ' drivers passed the tests of the error exits' )
00104 9998 FORMAT( ' *** ', A6, ' drivers failed the tests of the error ',
00105 $ 'exits ***' )
00106
00107 RETURN
00108
00109
00110
00111 END