00001 SUBROUTINE DERRPS( PATH, NUNIT )
00002
00003
00004
00005
00006
00007
00008 INTEGER NUNIT
00009 CHARACTER*3 PATH
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 INTEGER NMAX
00031 PARAMETER ( NMAX = 4 )
00032
00033
00034 INTEGER I, INFO, J
00035
00036
00037 DOUBLE PRECISION A( NMAX, NMAX ), WORK( 2*NMAX )
00038 INTEGER PIV( NMAX )
00039
00040
00041 EXTERNAL ALAESM, CHKXER, DPSTF2, DPSTRF
00042
00043
00044 INTEGER INFOT, NOUT
00045 LOGICAL LERR, OK
00046 CHARACTER*32 SRNAMT
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 110 J = 1, NMAX
00063 DO 100 I = 1, NMAX
00064 A( I, J ) = 1.D0 / DBLE( I+J )
00065
00066 100 CONTINUE
00067 PIV( J ) = J
00068 WORK( J ) = 0.D0
00069 WORK( NMAX+J ) = 0.D0
00070
00071 110 CONTINUE
00072 OK = .TRUE.
00073
00074
00075
00076
00077
00078
00079
00080 SRNAMT = 'DPSTRF'
00081 INFOT = 1
00082 CALL DPSTRF( '/', 0, A, 1, PIV, 1, -1.D0, WORK, INFO )
00083 CALL CHKXER( 'DPSTRF', INFOT, NOUT, LERR, OK )
00084 INFOT = 2
00085 CALL DPSTRF( 'U', -1, A, 1, PIV, 1, -1.D0, WORK, INFO )
00086 CALL CHKXER( 'DPSTRF', INFOT, NOUT, LERR, OK )
00087 INFOT = 4
00088 CALL DPSTRF( 'U', 2, A, 1, PIV, 1, -1.D0, WORK, INFO )
00089 CALL CHKXER( 'DPSTRF', INFOT, NOUT, LERR, OK )
00090
00091
00092
00093 SRNAMT = 'DPSTF2'
00094 INFOT = 1
00095 CALL DPSTF2( '/', 0, A, 1, PIV, 1, -1.D0, WORK, INFO )
00096 CALL CHKXER( 'DPSTF2', INFOT, NOUT, LERR, OK )
00097 INFOT = 2
00098 CALL DPSTF2( 'U', -1, A, 1, PIV, 1, -1.D0, WORK, INFO )
00099 CALL CHKXER( 'DPSTF2', INFOT, NOUT, LERR, OK )
00100 INFOT = 4
00101 CALL DPSTF2( 'U', 2, A, 1, PIV, 1, -1.D0, WORK, INFO )
00102 CALL CHKXER( 'DPSTF2', INFOT, NOUT, LERR, OK )
00103
00104
00105
00106
00107 CALL ALAESM( PATH, OK, NOUT )
00108
00109 RETURN
00110
00111
00112
00113 END