154 SUBROUTINE dorbdb6( M1, M2, N, X1, INCX1, X2, INCX2, Q1, LDQ1, Q2,
155 $ ldq2, work, lwork, info )
163 INTEGER INCX1, INCX2, INFO, LDQ1, LDQ2, LWORK, M1, M2,
167 DOUBLE PRECISION Q1(ldq1,*), Q2(ldq2,*), WORK(*), X1(*), X2(*)
173 DOUBLE PRECISION ALPHASQ, REALONE, REALZERO
174 parameter ( alphasq = 0.01d0, realone = 1.0d0,
176 DOUBLE PRECISION NEGONE, ONE, ZERO
177 parameter ( negone = -1.0d0, one = 1.0d0, zero = 0.0d0 )
181 DOUBLE PRECISION NORMSQ1, NORMSQ2, SCL1, SCL2, SSQ1, SSQ2
196 ELSE IF( m2 .LT. 0 )
THEN
198 ELSE IF( n .LT. 0 )
THEN
200 ELSE IF( incx1 .LT. 1 )
THEN
202 ELSE IF( incx2 .LT. 1 )
THEN
204 ELSE IF( ldq1 .LT. max( 1, m1 ) )
THEN
206 ELSE IF( ldq2 .LT. max( 1, m2 ) )
THEN
208 ELSE IF( lwork .LT. n )
THEN
212 IF( info .NE. 0 )
THEN
213 CALL xerbla(
'DORBDB6', -info )
222 CALL dlassq( m1, x1, incx1, scl1, ssq1 )
225 CALL dlassq( m2, x2, incx2, scl2, ssq2 )
226 normsq1 = scl1**2*ssq1 + scl2**2*ssq2
233 CALL dgemv(
'C', m1, n, one, q1, ldq1, x1, incx1, zero, work,
237 CALL dgemv(
'C', m2, n, one, q2, ldq2, x2, incx2, one, work, 1 )
239 CALL dgemv(
'N', m1, n, negone, q1, ldq1, work, 1, one, x1,
241 CALL dgemv(
'N', m2, n, negone, q2, ldq2, work, 1, one, x2,
246 CALL dlassq( m1, x1, incx1, scl1, ssq1 )
249 CALL dlassq( m2, x2, incx2, scl2, ssq2 )
250 normsq2 = scl1**2*ssq1 + scl2**2*ssq2
256 IF( normsq2 .GE. alphasq*normsq1 )
THEN
260 IF( normsq2 .EQ. zero )
THEN
275 CALL dgemv(
'C', m1, n, one, q1, ldq1, x1, incx1, zero, work,
279 CALL dgemv(
'C', m2, n, one, q2, ldq2, x2, incx2, one, work, 1 )
281 CALL dgemv(
'N', m1, n, negone, q1, ldq1, work, 1, one, x1,
283 CALL dgemv(
'N', m2, n, negone, q2, ldq2, work, 1, one, x2,
288 CALL dlassq( m1, x1, incx1, scl1, ssq1 )
291 CALL dlassq( m1, x1, incx1, scl1, ssq1 )
292 normsq2 = scl1**2*ssq1 + scl2**2*ssq2
298 IF( normsq2 .LT. alphasq*normsq1 )
THEN
subroutine dgemv(TRANS, M, N, ALPHA, A, LDA, X, INCX, BETA, Y, INCY)
DGEMV
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine dlassq(N, X, INCX, SCALE, 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