Go to the documentation of this file.00001 SUBROUTINE DLAPMT( FORWRD, M, N, X, LDX, K )
00002
00003
00004
00005
00006
00007
00008
00009 LOGICAL FORWRD
00010 INTEGER LDX, M, N
00011
00012
00013 INTEGER K( * )
00014 DOUBLE PRECISION X( LDX, * )
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 INTEGER I, II, IN, J
00059 DOUBLE PRECISION TEMP
00060
00061
00062
00063 IF( N.LE.1 )
00064 $ RETURN
00065
00066 DO 10 I = 1, N
00067 K( I ) = -K( I )
00068 10 CONTINUE
00069
00070 IF( FORWRD ) THEN
00071
00072
00073
00074 DO 50 I = 1, N
00075
00076 IF( K( I ).GT.0 )
00077 $ GO TO 40
00078
00079 J = I
00080 K( J ) = -K( J )
00081 IN = K( J )
00082
00083 20 CONTINUE
00084 IF( K( IN ).GT.0 )
00085 $ GO TO 40
00086
00087 DO 30 II = 1, M
00088 TEMP = X( II, J )
00089 X( II, J ) = X( II, IN )
00090 X( II, IN ) = TEMP
00091 30 CONTINUE
00092
00093 K( IN ) = -K( IN )
00094 J = IN
00095 IN = K( IN )
00096 GO TO 20
00097
00098 40 CONTINUE
00099
00100 50 CONTINUE
00101
00102 ELSE
00103
00104
00105
00106 DO 90 I = 1, N
00107
00108 IF( K( I ).GT.0 )
00109 $ GO TO 80
00110
00111 K( I ) = -K( I )
00112 J = K( I )
00113 60 CONTINUE
00114 IF( J.EQ.I )
00115 $ GO TO 80
00116
00117 DO 70 II = 1, M
00118 TEMP = X( II, I )
00119 X( II, I ) = X( II, J )
00120 X( II, J ) = TEMP
00121 70 CONTINUE
00122
00123 K( J ) = -K( J )
00124 J = K( J )
00125 GO TO 60
00126
00127 80 CONTINUE
00128
00129 90 CONTINUE
00130
00131 END IF
00132
00133 RETURN
00134
00135
00136
00137 END