157 SUBROUTINE sorbdb6( M1, M2, N, X1, INCX1, X2, INCX2, Q1, LDQ1, Q2,
158 $ LDQ2, WORK, LWORK, INFO )
165 INTEGER INCX1, INCX2, INFO, LDQ1, LDQ2, LWORK, M1, M2,
169 REAL Q1(LDQ1,*), Q2(LDQ2,*), WORK(*), X1(*), X2(*)
175 REAL ALPHA, REALONE, REALZERO
176 parameter( alpha = 0.83e0, realone = 1.0e0,
178 REAL NEGONE, ONE, ZERO
179 parameter( negone = -1.0e0, one = 1.0e0, zero = 0.0e0 )
183 REAL EPS, NORM, NORM_NEW, SCL, SSQ
201 ELSE IF( m2 .LT. 0 )
THEN
203 ELSE IF( n .LT. 0 )
THEN
205 ELSE IF( incx1 .LT. 1 )
THEN
207 ELSE IF( incx2 .LT. 1 )
THEN
209 ELSE IF( ldq1 .LT. max( 1, m1 ) )
THEN
211 ELSE IF( ldq2 .LT. max( 1, m2 ) )
THEN
213 ELSE IF( lwork .LT. n )
THEN
217 IF( info .NE. 0 )
THEN
218 CALL xerbla(
'SORBDB6', -info )
222 eps = slamch(
'Precision' )
228 CALL slassq( m1, x1, incx1, scl, ssq )
229 CALL slassq( m2, x2, incx2, scl, ssq )
230 norm = scl * sqrt( ssq )
240 CALL sgemv(
'C', m1, n, one, q1, ldq1, x1, incx1, zero, work,
244 CALL sgemv(
'C', m2, n, one, q2, ldq2, x2, incx2, one, work, 1 )
246 CALL sgemv(
'N', m1, n, negone, q1, ldq1, work, 1, one, x1,
248 CALL sgemv(
'N', m2, n, negone, q2, ldq2, work, 1, one, x2,
253 CALL slassq( m1, x1, incx1, scl, ssq )
254 CALL slassq( m2, x2, incx2, scl, ssq )
255 norm_new = scl * sqrt(ssq)
261 IF( norm_new .GE. alpha * norm )
THEN
265 IF( norm_new .LE. n * eps * norm )
THEN
266 DO ix = 1, 1 + (m1-1)*incx1, incx1
269 DO ix = 1, 1 + (m2-1)*incx2, incx2
286 CALL sgemv(
'C', m1, n, one, q1, ldq1, x1, incx1, zero, work,
290 CALL sgemv(
'C', m2, n, one, q2, ldq2, x2, incx2, one, work, 1 )
292 CALL sgemv(
'N', m1, n, negone, q1, ldq1, work, 1, one, x1,
294 CALL sgemv(
'N', m2, n, negone, q2, ldq2, work, 1, one, x2,
299 CALL slassq( m1, x1, incx1, scl, ssq )
300 CALL slassq( m2, x2, incx2, scl, ssq )
301 norm_new = scl * sqrt(ssq)
307 IF( norm_new .LT. alpha * norm )
THEN
308 DO ix = 1, 1 + (m1-1)*incx1, incx1
311 DO ix = 1, 1 + (m2-1)*incx2, incx2
subroutine xerbla(srname, info)
subroutine sgemv(trans, m, n, alpha, a, lda, x, incx, beta, y, incy)
SGEMV
subroutine slassq(n, x, incx, scale, sumsq)
SLASSQ updates a sum of squares represented in scaled form.
subroutine sorbdb6(m1, m2, n, x1, incx1, x2, incx2, q1, ldq1, q2, ldq2, work, lwork, info)
SORBDB6