00001 SUBROUTINE SLAPTM( N, NRHS, ALPHA, D, E, X, LDX, BETA, B, LDB )
00002
00003
00004
00005
00006
00007
00008 INTEGER LDB, LDX, N, NRHS
00009 REAL ALPHA, BETA
00010
00011
00012 REAL B( LDB, * ), D( * ), E( * ), X( LDX, * )
00013
00014
00015
00016
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 REAL ONE, ZERO
00068 PARAMETER ( ONE = 1.0E+0, ZERO = 0.0E+0 )
00069
00070
00071 INTEGER I, J
00072
00073
00074
00075 IF( N.EQ.0 )
00076 $ RETURN
00077
00078
00079
00080 IF( BETA.EQ.ZERO ) THEN
00081 DO 20 J = 1, NRHS
00082 DO 10 I = 1, N
00083 B( I, J ) = ZERO
00084 10 CONTINUE
00085 20 CONTINUE
00086 ELSE IF( BETA.EQ.-ONE ) THEN
00087 DO 40 J = 1, NRHS
00088 DO 30 I = 1, N
00089 B( I, J ) = -B( I, J )
00090 30 CONTINUE
00091 40 CONTINUE
00092 END IF
00093
00094 IF( ALPHA.EQ.ONE ) THEN
00095
00096
00097
00098 DO 60 J = 1, NRHS
00099 IF( N.EQ.1 ) THEN
00100 B( 1, J ) = B( 1, J ) + D( 1 )*X( 1, J )
00101 ELSE
00102 B( 1, J ) = B( 1, J ) + D( 1 )*X( 1, J ) +
00103 $ E( 1 )*X( 2, J )
00104 B( N, J ) = B( N, J ) + E( N-1 )*X( N-1, J ) +
00105 $ D( N )*X( N, J )
00106 DO 50 I = 2, N - 1
00107 B( I, J ) = B( I, J ) + E( I-1 )*X( I-1, J ) +
00108 $ D( I )*X( I, J ) + E( I )*X( I+1, J )
00109 50 CONTINUE
00110 END IF
00111 60 CONTINUE
00112 ELSE IF( ALPHA.EQ.-ONE ) THEN
00113
00114
00115
00116 DO 80 J = 1, NRHS
00117 IF( N.EQ.1 ) THEN
00118 B( 1, J ) = B( 1, J ) - D( 1 )*X( 1, J )
00119 ELSE
00120 B( 1, J ) = B( 1, J ) - D( 1 )*X( 1, J ) -
00121 $ E( 1 )*X( 2, J )
00122 B( N, J ) = B( N, J ) - E( N-1 )*X( N-1, J ) -
00123 $ D( N )*X( N, J )
00124 DO 70 I = 2, N - 1
00125 B( I, J ) = B( I, J ) - E( I-1 )*X( I-1, J ) -
00126 $ D( I )*X( I, J ) - E( I )*X( I+1, J )
00127 70 CONTINUE
00128 END IF
00129 80 CONTINUE
00130 END IF
00131 RETURN
00132
00133
00134
00135 END