Previous: zhpr Up: ../lapack-blas.html Next: zsymm


zhpr2


 NAME
      ZHPR2 - perform the hermitian rank 2 operation   A :=
      alpha*x*conjg( y' ) + conjg( alpha )*y*conjg( x' ) + A,

 SYNOPSIS
      SUBROUTINE ZHPR2 ( UPLO, N, ALPHA, X, INCX, Y, INCY, AP )

          COMPLEX*16   ALPHA

          INTEGER      INCX, INCY, N

          CHARACTER*1  UPLO

          COMPLEX*16   AP( * ), X( * ), Y( * )

 PURPOSE
      ZHPR2  performs the hermitian rank 2 operation

      where alpha is a scalar, x and y are n element vectors and A
      is an n by n hermitian matrix, supplied in packed form.

 PARAMETERS
      UPLO   - CHARACTER*1.
             On entry, UPLO specifies whether the upper or lower
             triangular part of the matrix A is supplied in the
             packed array AP as follows:

             UPLO = 'U' or 'u'   The upper triangular part of A is
             supplied in AP.

             UPLO = 'L' or 'l'   The lower triangular part of A is
             supplied in AP.

             Unchanged on exit.

      N      - INTEGER.
             On entry, N specifies the order of the matrix A.  N
             must be at least zero.  Unchanged on exit.

      ALPHA  - COMPLEX*16      .
             On entry, ALPHA specifies the scalar alpha.
             Unchanged on exit.

      X      - COMPLEX*16       array of dimension at least
             ( 1 + ( n - 1 )*abs( INCX ) ).  Before entry, the
             incremented array X must contain the n element vector
             x.  Unchanged on exit.

      INCX   - INTEGER.
             On entry, INCX specifies the increment for the ele-
             ments of X. INCX must not be zero.  Unchanged on

             exit.

      Y      - COMPLEX*16       array of dimension at least
             ( 1 + ( n - 1 )*abs( INCY ) ).  Before entry, the
             incremented array Y must contain the n element vector
             y.  Unchanged on exit.

      INCY   - INTEGER.
             On entry, INCY specifies the increment for the ele-
             ments of Y. INCY must not be zero.  Unchanged on
             exit.

      AP     - COMPLEX*16       array of DIMENSION at least
             ( ( n*( n + 1 ) )/2 ).  Before entry with  UPLO = 'U'
             or 'u', the array AP must contain the upper triangu-
             lar part of the hermitian matrix packed sequentially,
             column by column, so that AP( 1 ) contains a( 1, 1 ),
             AP( 2 ) and AP( 3 ) contain a( 1, 2 ) and a( 2, 2 )
             respectively, and so on. On exit, the array AP is
             overwritten by the upper triangular part of the
             updated matrix.  Before entry with UPLO = 'L' or 'l',
             the array AP must contain the lower triangular part
             of the hermitian matrix packed sequentially, column
             by column, so that AP( 1 ) contains a( 1, 1 ), AP( 2
             ) and AP( 3 ) contain a( 2, 1 ) and a( 3, 1 ) respec-
             tively, and so on. On exit, the array AP is overwrit-
             ten by the lower triangular part of the updated
             matrix.  Note that the imaginary parts of the diago-
             nal elements need not be set, they are assumed to be
             zero, and on exit they are set to zero.

             Level 2 Blas routine.

             -- Written on 22-October-1986.  Jack Dongarra,
             Argonne National Lab.  Jeremy Du Croz, Nag Central
             Office.  Sven Hammarling, Nag Central Office.
             Richard Hanson, Sandia National Labs.
 NAME

 SYNOPSIS

 rou-
 tine
 zrotg(ca,cb,c,s)
 sub-
 ble
     dou-                    complex
                             ca,cb,s
 ble
     dou-                    precision
                             c
 ble
     dou-                    precision
                             norm,scale
 ble
     dou-                    complex
                             alpha
     if                      (cdabs(ca)
                             .ne.
                             0.0d0)
                             go
                             to
                             10
     c                       =
                             0.0d0
     s                       =
                             (1.0d0,0.0d0)
     ca                      =
                             cb
     go                      to
                             20
     10                      con-
                             tinue
     scale                   =
                             cdabs(ca)
                             +
                             cdabs(cb)
     norm                    =
                             scale*dsqrt((cdabs(ca/dcmplx(scale,0.0d0)))**2
                             +
     *                       (cdabs(cb/dcmplx(scale,0.0d0)))**2)
     alpha                   =
                             ca
                             /cdabs(ca)
     c                       =
                             cdabs(ca)
                             /
                             norm
     s                       =
                             alpha
                             *
                             dconjg(cb)
                             /
                             norm
     ca                      =
                             alpha
                             *
                             norm
     20                      continue
     return
     end
 PUR-
 POSE
 NAME

 SYNOPSIS

 rou-
 tine
 zscal(n,za,zx,incx)
 sub-
     c                          scales
                                a
                                vec-
                                tor
                                by
                                a
                                con-
                                stant.
     c                          jack
                                dongarra,
                                3/11/78.
     c                          modified
                                to
                                correct
                                prob-
                                lem
                                with
                                nega-
                                tive
                                incre-
                                ment,
                                8/21/90.
 ble
     dou-                       complex
                                za,zx(1)
     integer                    i,incx,ix,n
     if(n.le.0)return
     if(incx.eq.1)go            to
                                20
     c                          code
                                for
                                incre-
                                ment
                                not
                                equal
                                to
                                1
     ix                         =
                                1
     if(incx.lt.0)ix            =
                                (-
                                n+1)*incx
                                +
                                1
     do                         10
                                i
                                =
                                1,n
     zx(ix)                     =
                                za*zx(ix)
     ix                         =
                                ix
                                +
                                incx
     10                         con-
                                tinue
     return
     c                          code
                                for
                                incre-
                                ment
                                equal
                                to
                                1
     20                         do
                                30
                                i
                                =
                                1,n
     zx(i)                      =
                                za*zx(i)
     30                         con-
                                tinue
     return
     end
 PUR-
 POSE