152 SUBROUTINE dorbdb6( M1, M2, N, X1, INCX1, X2, INCX2, Q1, LDQ1, Q2,
153 $ LDQ2, WORK, LWORK, INFO )
160 INTEGER , , INFO, , LDQ2, LWORK, M1, M2,
164 DOUBLE PRECISION Q1(,*), Q2(LDQ2,*), WORK(*), X1(*), X2(*)
170 DOUBLE PRECISION ALPHASQ, REALONE, REALZERO
171 parameter( alphasq = 0.01d0, realone = 1.0d0,
173 DOUBLE PRECISION NEGONE, ONE, ZERO
174 parameter( negone = -1.0d0, one = 1.0d0, zero = 0.0d0 )
178 DOUBLE PRECISION NORMSQ1, NORMSQ2, SCL1, , SSQ1, SSQ2
193 ELSE IF( m2 .LT. 0 )
THEN
195 ELSE IF( n .LT. 0 )
THEN
197 ELSE IF( incx1 .LT. 1 )
THEN
199 ELSE IF( incx2 .LT. 1 )
THEN
201 ELSE IF( ldq1 .LT.
max( 1, m1 ) )
THEN
203 ELSE IF( ldq2 .LT.
max( 1, m2 ) )
THEN
205 ELSE IF( lwork .LT. n )
THEN
209 IF( info .NE. 0 )
THEN
210 CALL xerbla(
'DORBDB6', -info )
219 CALL dlassq( m1, x1, incx1, scl1, ssq1 )
222 CALL dlassq( m2, x2, incx2, scl2, ssq2 )
223 normsq1 = scl1**2*ssq1 + scl2**2*ssq2
230 CALL dgemv(
'C', m1, n, one, q1, ldq1, x1, incx1, zero, work,
234 CALL dgemv(
'C', m2, n, one, q2, ldq2, x2, incx2, one, work, 1 )
236 CALL dgemv(
'N', m1, n, negone, q1, ldq1, work, 1, one, x1,
238 CALL dgemv( 'n
', M2, N, NEGONE, Q2, LDQ2, WORK, 1, ONE, X2,
243 CALL DLASSQ( M1, X1, INCX1, SCL1, SSQ1 )
246 CALL DLASSQ( M2, X2, INCX2, SCL2, SSQ2 )
247 NORMSQ2 = SCL1**2*SSQ1 + SCL2**2*SSQ2
253.GE.
IF( NORMSQ2 ALPHASQ*NORMSQ1 ) THEN
257.EQ.
IF( NORMSQ2 ZERO ) THEN
272 CALL DGEMV( 'c
', M1, N, ONE, Q1, LDQ1, X1, INCX1, ZERO, WORK,
276 CALL DGEMV( 'c
', M2, N, ONE, Q2, LDQ2, X2, INCX2, ONE, WORK, 1 )
278 CALL DGEMV( 'n
', M1, N, NEGONE, Q1, LDQ1, WORK, 1, ONE, X1,
280 CALL DGEMV( 'n
', M2, N, NEGONE, Q2, LDQ2, WORK, 1, ONE, X2,
285 CALL DLASSQ( M1, X1, INCX1, SCL1, SSQ1 )
288 CALL DLASSQ( M1, X1, INCX1, SCL1, SSQ1 )
289 NORMSQ2 = SCL1**2*SSQ1 + SCL2**2*SSQ2
295.LT.
IF( NORMSQ2 ALPHASQ*NORMSQ1 ) THEN
subroutine dlassq(n, x, incx, scl, sumsq)
DLASSQ updates a sum of squares represented in scaled form.
subroutine dorbdb6(m1, m2, n, x1, incx1, x2, incx2, q1, ldq1, q2, ldq2, work, lwork, info)
DORBDB6
subroutine dgemv(trans, m, n, alpha, a, lda, x, incx, beta, y, incy)
DGEMV