@@ -160,7 +160,7 @@ SUBROUTINE SLACN2( N, V, X, ISGN, EST, KASE, ISAVE )
160
160
* ..
161
161
* .. Local Scalars ..
162
162
INTEGER I, JLAST
163
- REAL ALTSGN, ESTOLD, TEMP
163
+ REAL ALTSGN, ESTOLD, TEMP, XS
164
164
* ..
165
165
* .. External Functions ..
166
166
INTEGER ISAMAX
@@ -171,7 +171,7 @@ SUBROUTINE SLACN2( N, V, X, ISGN, EST, KASE, ISAVE )
171
171
EXTERNAL SCOPY
172
172
* ..
173
173
* .. Intrinsic Functions ..
174
- INTRINSIC ABS, NINT, REAL , SIGN
174
+ INTRINSIC ABS, NINT, REAL
175
175
* ..
176
176
* .. Executable Statements ..
177
177
*
@@ -199,7 +199,11 @@ SUBROUTINE SLACN2( N, V, X, ISGN, EST, KASE, ISAVE )
199
199
EST = SASUM( N, X, 1 )
200
200
*
201
201
DO 30 I = 1 , N
202
- X( I ) = SIGN ( ONE, X( I ) )
202
+ IF ( X(I).GE. ZERO ) THEN
203
+ X(I) = ONE
204
+ ELSE
205
+ X(I) = - ONE
206
+ END IF
203
207
ISGN( I ) = NINT ( X( I ) )
204
208
30 CONTINUE
205
209
KASE = 2
@@ -232,7 +236,12 @@ SUBROUTINE SLACN2( N, V, X, ISGN, EST, KASE, ISAVE )
232
236
ESTOLD = EST
233
237
EST = SASUM( N, V, 1 )
234
238
DO 80 I = 1 , N
235
- IF ( NINT ( SIGN ( ONE, X( I ) ) ).NE. ISGN( I ) )
239
+ IF ( X(I).GE. ZERO ) THEN
240
+ XS = ONE
241
+ ELSE
242
+ XS = - ONE
243
+ END IF
244
+ IF ( NINT ( XS ).NE. ISGN( I ) )
236
245
$ GO TO 90
237
246
80 CONTINUE
238
247
* REPEATED SIGN VECTOR DETECTED, HENCE ALGORITHM HAS CONVERGED.
@@ -244,7 +253,11 @@ SUBROUTINE SLACN2( N, V, X, ISGN, EST, KASE, ISAVE )
244
253
$ GO TO 120
245
254
*
246
255
DO 100 I = 1 , N
247
- X( I ) = SIGN ( ONE, X( I ) )
256
+ IF ( X(I).GE. ZERO ) THEN
257
+ X(I) = ONE
258
+ ELSE
259
+ X(I) = - ONE
260
+ END IF
248
261
ISGN( I ) = NINT ( X( I ) )
249
262
100 CONTINUE
250
263
KASE = 2
0 commit comments