@@ -167,14 +167,13 @@ SUBROUTINE SORBDB6( M1, M2, N, X1, INCX1, X2, INCX2, Q1, LDQ1, Q2,
167167* =====================================================================
168168*
169169* .. 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 )
173172 REAL NEGONE, ONE, ZERO
174173 PARAMETER ( NEGONE = - 1.0E0 , ONE = 1.0E0 , ZERO = 0.0E0 )
175174* ..
176175* .. Local Scalars ..
177- INTEGER I
176+ INTEGER I, IX
178177 REAL NORMSQ1, NORMSQ2, SCL1, SCL2, SSQ1, SSQ2
179178* ..
180179* .. External Subroutines ..
@@ -215,12 +214,21 @@ SUBROUTINE SORBDB6( M1, M2, N, X1, INCX1, X2, INCX2, Q1, LDQ1, Q2,
215214* space
216215*
217216 SCL1 = REALZERO
218- SSQ1 = REALONE
217+ SSQ1 = REALZERO
219218 CALL SLASSQ( M1, X1, INCX1, SCL1, SSQ1 )
220219 SCL2 = REALZERO
221- SSQ2 = REALONE
220+ SSQ2 = REALZERO
222221 CALL SLASSQ( M2, X2, INCX2, SCL2, SSQ2 )
223222 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
224232*
225233 IF ( M1 .EQ. 0 ) THEN
226234 DO I = 1 , N
@@ -239,10 +247,10 @@ SUBROUTINE SORBDB6( M1, M2, N, X1, INCX1, X2, INCX2, Q1, LDQ1, Q2,
239247 $ INCX2 )
240248*
241249 SCL1 = REALZERO
242- SSQ1 = REALONE
250+ SSQ1 = REALZERO
243251 CALL SLASSQ( M1, X1, INCX1, SCL1, SSQ1 )
244252 SCL2 = REALZERO
245- SSQ2 = REALONE
253+ SSQ2 = REALZERO
246254 CALL SLASSQ( M2, X2, INCX2, SCL2, SSQ2 )
247255 NORMSQ2 = SCL1** 2 * SSQ1 + SCL2** 2 * SSQ2
248256*
@@ -255,6 +263,12 @@ SUBROUTINE SORBDB6( M1, M2, N, X1, INCX1, X2, INCX2, Q1, LDQ1, Q2,
255263 END IF
256264*
257265 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
258272 RETURN
259273 END IF
260274*
@@ -281,10 +295,10 @@ SUBROUTINE SORBDB6( M1, M2, N, X1, INCX1, X2, INCX2, Q1, LDQ1, Q2,
281295 $ INCX2 )
282296*
283297 SCL1 = REALZERO
284- SSQ1 = REALONE
298+ SSQ1 = REALZERO
285299 CALL SLASSQ( M1, X1, INCX1, SCL1, SSQ1 )
286300 SCL2 = REALZERO
287- SSQ2 = REALONE
301+ SSQ2 = REALZERO
288302 CALL SLASSQ( M1, X1, INCX1, SCL1, SSQ1 )
289303 NORMSQ2 = SCL1** 2 * SSQ1 + SCL2** 2 * SSQ2
290304*
@@ -293,11 +307,11 @@ SUBROUTINE SORBDB6( M1, M2, N, X1, INCX1, X2, INCX2, Q1, LDQ1, Q2,
293307* truncate it to zero.
294308*
295309 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
298312 END DO
299- DO I = 1 , M2
300- X2(I ) = ZERO
313+ DO IX = 1 , 1 + (M2 -1 ) * INCX2, INCX2
314+ X2(IX ) = ZERO
301315 END DO
302316 END IF
303317*
0 commit comments