DCHUD(3F)

DCHUD - DCHUD updates an augmented Cholesky decomposition of the triangular part of an augmented QR decomposition. Specifically, given an upper triangular matrix R of order P, a row vector X, a column vector Z, and a scalar Y, DCHUD determines a untiary matrix U and a scalar ZETA such that

As shipped in IRIX 6.5.30. Unchanged since IRIX 6.5.

NAME
     DCHUD   - DCHUD updates an augmented Cholesky decomposition of the
     triangular part of an augmented QR decomposition.  Specifically, given an
     upper triangular matrix R of order P, a row vector X, a column vector Z,
     and a scalar Y, DCHUD determines a untiary matrix U and a scalar ZETA
     such that


        (R  Z)     (RR   ZZ )
        U  * (    )  =  (        ) ,
        (X  Y)     ( 0  ZETA)

     where RR is upper triangular.  If R and Z have been obtained from the
     factorization of a least squares problem, then RR and ZZ are the factors
     corresponding to the problem with the observation (X,Y) appended.  In
     this case, if RHO is the norm of the residual vector, then the norm of
     the residual vector of the updated problem is DSQRT(RHO**2 + ZETA**2).
     DCHUD will simultaneously update several triplets (Z,Y,RHO).  For a less
     terse description of what DCHUD does and how it may be applied, see the
     LINPACK guide.

     The matrix U is determined as the product U(P)*...*U(1), where U(I) is a
     rotation in the (I,P+1) plane of the form

        (     C(I)      S(I) )
        (                    ) .
        (    -S(I)      C(I) )

     The rotations are chosen so that C(I) is double precision.


SYNOPSYS
      SUBROUTINE DCHUD(R,LDR,P,X,Z,LDZ,NZ,Y,RHO,C,S)

DESCRIPTION
     On Entry

     R DOUBLE PRECISION(LDR,P), where LDR .GE. P.
        R contains the upper triangular matrix
        that is to be updated.  The part of R
        below the diagonal is not referenced.

     LDR INTEGER.
        LDR is the leading dimension of the array R.

     P INTEGER.
        P is the order of the matrix R.

     X DOUBLE PRECISION(P).
        X contains the row to be added to R.  X is
        not altered by DCHUD.
     Z DOUBLE PRECISION(LDZ,N)Z), where LDZ .GE. P.
        Z is an array containing NZ P-vectors to
        be updated with R.

     LDZ INTEGER.
        LDZ is the leading dimension of the array Z.

     NZ INTEGER.
        NZ is the number of vectors to be updated
        NZ may be zero, in which case Z, Y, and RHO
        are not referenced.

     Y DOUBLE PRECISION(NZ).
        Y contains the scalars for updating the vectors
        Z.  Y is not altered by DCHUD.

     RHO DOUBLE PRECISION(NZ).
        RHO contains the norms of the residual
        vectors that are to be updated.  If RHO(J)
        is negative, it is left unaltered.  On Return RC

     RHO contain the updated quantities.

     Z


     C DOUBLE PRECISION(P).
        C contains the cosines of the transforming
        rotations.

     S DOUBLE PRECISION(P).
        S contains the sines of the transforming
        rotations.  LINPACK.  This version dated 08/14/78 .  G. W. Stewart,
     University of Maryland, Argonne National Lab.

     DCHUD uses the following functions and subroutines. Extended BLAS DROTG
     Fortran DSQRT