@@ -167,14 +167,13 @@ SUBROUTINE SORBDB6( M1, M2, N, X1, INCX1, X2, INCX2, Q1, LDQ1, Q2,
167
167
* =====================================================================
168
168
*
169
169
* .. Parameters ..
170
- REAL ALPHASQ, REALONE, REALZERO
171
- PARAMETER ( ALPHASQ = 0.01E0 , REALONE = 1.0E0 ,
172
- $ REALZERO = 0.0E0 )
170
+ REAL ALPHASQ, REALZERO
171
+ PARAMETER ( ALPHASQ = 0.01E0 , REALZERO = 0.0E0 )
173
172
REAL NEGONE, ONE, ZERO
174
173
PARAMETER ( NEGONE = - 1.0E0 , ONE = 1.0E0 , ZERO = 0.0E0 )
175
174
* ..
176
175
* .. Local Scalars ..
177
- INTEGER I
176
+ INTEGER I, IX
178
177
REAL NORMSQ1, NORMSQ2, SCL1, SCL2, SSQ1, SSQ2
179
178
* ..
180
179
* .. External Subroutines ..
@@ -215,12 +214,21 @@ SUBROUTINE SORBDB6( M1, M2, N, X1, INCX1, X2, INCX2, Q1, LDQ1, Q2,
215
214
* space
216
215
*
217
216
SCL1 = REALZERO
218
- SSQ1 = REALONE
217
+ SSQ1 = REALZERO
219
218
CALL SLASSQ( M1, X1, INCX1, SCL1, SSQ1 )
220
219
SCL2 = REALZERO
221
- SSQ2 = REALONE
220
+ SSQ2 = REALZERO
222
221
CALL SLASSQ( M2, X2, INCX2, SCL2, SSQ2 )
223
222
NORMSQ1 = SCL1** 2 * SSQ1 + SCL2** 2 * SSQ2
223
+ IF ( NORMSQ1 .EQ. 0 ) THEN
224
+ DO IX = 1 , 1 + (M1-1 )* INCX1, INCX1
225
+ X1( IX ) = ZERO
226
+ END DO
227
+ DO IX = 1 , 1 + (M2-1 )* INCX2, INCX2
228
+ X2( IX ) = ZERO
229
+ END DO
230
+ RETURN
231
+ END IF
224
232
*
225
233
IF ( M1 .EQ. 0 ) THEN
226
234
DO I = 1 , N
@@ -239,10 +247,10 @@ SUBROUTINE SORBDB6( M1, M2, N, X1, INCX1, X2, INCX2, Q1, LDQ1, Q2,
239
247
$ INCX2 )
240
248
*
241
249
SCL1 = REALZERO
242
- SSQ1 = REALONE
250
+ SSQ1 = REALZERO
243
251
CALL SLASSQ( M1, X1, INCX1, SCL1, SSQ1 )
244
252
SCL2 = REALZERO
245
- SSQ2 = REALONE
253
+ SSQ2 = REALZERO
246
254
CALL SLASSQ( M2, X2, INCX2, SCL2, SSQ2 )
247
255
NORMSQ2 = SCL1** 2 * SSQ1 + SCL2** 2 * SSQ2
248
256
*
@@ -255,6 +263,12 @@ SUBROUTINE SORBDB6( M1, M2, N, X1, INCX1, X2, INCX2, Q1, LDQ1, Q2,
255
263
END IF
256
264
*
257
265
IF ( NORMSQ2 .EQ. ZERO ) THEN
266
+ DO IX = 1 , 1 + (M1-1 )* INCX1, INCX1
267
+ X1( IX ) = ZERO
268
+ END DO
269
+ DO IX = 1 , 1 + (M2-1 )* INCX2, INCX2
270
+ X2( IX ) = ZERO
271
+ END DO
258
272
RETURN
259
273
END IF
260
274
*
@@ -281,10 +295,10 @@ SUBROUTINE SORBDB6( M1, M2, N, X1, INCX1, X2, INCX2, Q1, LDQ1, Q2,
281
295
$ INCX2 )
282
296
*
283
297
SCL1 = REALZERO
284
- SSQ1 = REALONE
298
+ SSQ1 = REALZERO
285
299
CALL SLASSQ( M1, X1, INCX1, SCL1, SSQ1 )
286
300
SCL2 = REALZERO
287
- SSQ2 = REALONE
301
+ SSQ2 = REALZERO
288
302
CALL SLASSQ( M1, X1, INCX1, SCL1, SSQ1 )
289
303
NORMSQ2 = SCL1** 2 * SSQ1 + SCL2** 2 * SSQ2
290
304
*
@@ -293,11 +307,11 @@ SUBROUTINE SORBDB6( M1, M2, N, X1, INCX1, X2, INCX2, Q1, LDQ1, Q2,
293
307
* truncate it to zero.
294
308
*
295
309
IF ( NORMSQ2 .LT. ALPHASQ* NORMSQ1 ) THEN
296
- DO I = 1 , M1
297
- X1(I ) = ZERO
310
+ DO IX = 1 , 1 + (M1 -1 ) * INCX1, INCX1
311
+ X1(IX ) = ZERO
298
312
END DO
299
- DO I = 1 , M2
300
- X2(I ) = ZERO
313
+ DO IX = 1 , 1 + (M2 -1 ) * INCX2, INCX2
314
+ X2(IX ) = ZERO
301
315
END DO
302
316
END IF
303
317
*
0 commit comments