00001 SUBROUTINE CLAGTM( TRANS, N, NRHS, ALPHA, DL, D, DU, X, LDX, BETA,
00002 $ B, LDB )
00003
00004
00005
00006
00007
00008
00009
00010 CHARACTER TRANS
00011 INTEGER LDB, LDX, N, NRHS
00012 REAL ALPHA, BETA
00013
00014
00015 COMPLEX B( LDB, * ), D( * ), DL( * ), DU( * ),
00016 $ X( LDX, * )
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079 REAL ONE, ZERO
00080 PARAMETER ( ONE = 1.0E+0, ZERO = 0.0E+0 )
00081
00082
00083 INTEGER I, J
00084
00085
00086 LOGICAL LSAME
00087 EXTERNAL LSAME
00088
00089
00090 INTRINSIC CONJG
00091
00092
00093
00094 IF( N.EQ.0 )
00095 $ RETURN
00096
00097
00098
00099 IF( BETA.EQ.ZERO ) THEN
00100 DO 20 J = 1, NRHS
00101 DO 10 I = 1, N
00102 B( I, J ) = ZERO
00103 10 CONTINUE
00104 20 CONTINUE
00105 ELSE IF( BETA.EQ.-ONE ) THEN
00106 DO 40 J = 1, NRHS
00107 DO 30 I = 1, N
00108 B( I, J ) = -B( I, J )
00109 30 CONTINUE
00110 40 CONTINUE
00111 END IF
00112
00113 IF( ALPHA.EQ.ONE ) THEN
00114 IF( LSAME( TRANS, 'N' ) ) THEN
00115
00116
00117
00118 DO 60 J = 1, NRHS
00119 IF( N.EQ.1 ) THEN
00120 B( 1, J ) = B( 1, J ) + D( 1 )*X( 1, J )
00121 ELSE
00122 B( 1, J ) = B( 1, J ) + D( 1 )*X( 1, J ) +
00123 $ DU( 1 )*X( 2, J )
00124 B( N, J ) = B( N, J ) + DL( N-1 )*X( N-1, J ) +
00125 $ D( N )*X( N, J )
00126 DO 50 I = 2, N - 1
00127 B( I, J ) = B( I, J ) + DL( I-1 )*X( I-1, J ) +
00128 $ D( I )*X( I, J ) + DU( I )*X( I+1, J )
00129 50 CONTINUE
00130 END IF
00131 60 CONTINUE
00132 ELSE IF( LSAME( TRANS, 'T' ) ) THEN
00133
00134
00135
00136 DO 80 J = 1, NRHS
00137 IF( N.EQ.1 ) THEN
00138 B( 1, J ) = B( 1, J ) + D( 1 )*X( 1, J )
00139 ELSE
00140 B( 1, J ) = B( 1, J ) + D( 1 )*X( 1, J ) +
00141 $ DL( 1 )*X( 2, J )
00142 B( N, J ) = B( N, J ) + DU( N-1 )*X( N-1, J ) +
00143 $ D( N )*X( N, J )
00144 DO 70 I = 2, N - 1
00145 B( I, J ) = B( I, J ) + DU( I-1 )*X( I-1, J ) +
00146 $ D( I )*X( I, J ) + DL( I )*X( I+1, J )
00147 70 CONTINUE
00148 END IF
00149 80 CONTINUE
00150 ELSE IF( LSAME( TRANS, 'C' ) ) THEN
00151
00152
00153
00154 DO 100 J = 1, NRHS
00155 IF( N.EQ.1 ) THEN
00156 B( 1, J ) = B( 1, J ) + CONJG( D( 1 ) )*X( 1, J )
00157 ELSE
00158 B( 1, J ) = B( 1, J ) + CONJG( D( 1 ) )*X( 1, J ) +
00159 $ CONJG( DL( 1 ) )*X( 2, J )
00160 B( N, J ) = B( N, J ) + CONJG( DU( N-1 ) )*
00161 $ X( N-1, J ) + CONJG( D( N ) )*X( N, J )
00162 DO 90 I = 2, N - 1
00163 B( I, J ) = B( I, J ) + CONJG( DU( I-1 ) )*
00164 $ X( I-1, J ) + CONJG( D( I ) )*
00165 $ X( I, J ) + CONJG( DL( I ) )*
00166 $ X( I+1, J )
00167 90 CONTINUE
00168 END IF
00169 100 CONTINUE
00170 END IF
00171 ELSE IF( ALPHA.EQ.-ONE ) THEN
00172 IF( LSAME( TRANS, 'N' ) ) THEN
00173
00174
00175
00176 DO 120 J = 1, NRHS
00177 IF( N.EQ.1 ) THEN
00178 B( 1, J ) = B( 1, J ) - D( 1 )*X( 1, J )
00179 ELSE
00180 B( 1, J ) = B( 1, J ) - D( 1 )*X( 1, J ) -
00181 $ DU( 1 )*X( 2, J )
00182 B( N, J ) = B( N, J ) - DL( N-1 )*X( N-1, J ) -
00183 $ D( N )*X( N, J )
00184 DO 110 I = 2, N - 1
00185 B( I, J ) = B( I, J ) - DL( I-1 )*X( I-1, J ) -
00186 $ D( I )*X( I, J ) - DU( I )*X( I+1, J )
00187 110 CONTINUE
00188 END IF
00189 120 CONTINUE
00190 ELSE IF( LSAME( TRANS, 'T' ) ) THEN
00191
00192
00193
00194 DO 140 J = 1, NRHS
00195 IF( N.EQ.1 ) THEN
00196 B( 1, J ) = B( 1, J ) - D( 1 )*X( 1, J )
00197 ELSE
00198 B( 1, J ) = B( 1, J ) - D( 1 )*X( 1, J ) -
00199 $ DL( 1 )*X( 2, J )
00200 B( N, J ) = B( N, J ) - DU( N-1 )*X( N-1, J ) -
00201 $ D( N )*X( N, J )
00202 DO 130 I = 2, N - 1
00203 B( I, J ) = B( I, J ) - DU( I-1 )*X( I-1, J ) -
00204 $ D( I )*X( I, J ) - DL( I )*X( I+1, J )
00205 130 CONTINUE
00206 END IF
00207 140 CONTINUE
00208 ELSE IF( LSAME( TRANS, 'C' ) ) THEN
00209
00210
00211
00212 DO 160 J = 1, NRHS
00213 IF( N.EQ.1 ) THEN
00214 B( 1, J ) = B( 1, J ) - CONJG( D( 1 ) )*X( 1, J )
00215 ELSE
00216 B( 1, J ) = B( 1, J ) - CONJG( D( 1 ) )*X( 1, J ) -
00217 $ CONJG( DL( 1 ) )*X( 2, J )
00218 B( N, J ) = B( N, J ) - CONJG( DU( N-1 ) )*
00219 $ X( N-1, J ) - CONJG( D( N ) )*X( N, J )
00220 DO 150 I = 2, N - 1
00221 B( I, J ) = B( I, J ) - CONJG( DU( I-1 ) )*
00222 $ X( I-1, J ) - CONJG( D( I ) )*
00223 $ X( I, J ) - CONJG( DL( I ) )*
00224 $ X( I+1, J )
00225 150 CONTINUE
00226 END IF
00227 160 CONTINUE
00228 END IF
00229 END IF
00230 RETURN
00231
00232
00233
00234 END