Provided by: scalapack-doc_1.5-11_all bug

NAME

       SLAREF  -  applie  one  or several Householder reflectors of size 3  to one or two matrices (if column is
       specified) on either their  rows or columns

SYNOPSIS

       SUBROUTINE SLAREF( TYPE, A, LDA, WANTZ, Z, LDZ, BLOCK, IROW1, ICOL1, ISTART, ISTOP, ITMP1, ITMP2,  LILOZ,
                          LIHIZ, VECS, V2, V3, T1, T2, T3 )

           LOGICAL        BLOCK, WANTZ

           CHARACTER      TYPE

           INTEGER        ICOL1, IROW1, ISTART, ISTOP, ITMP1, ITMP2, LDA, LDZ, LIHIZ, LILOZ

           REAL           T1, T2, T3, V2, V3

           REAL           A( LDA, * ), VECS( * ), Z( LDZ, * )

PURPOSE

       SLAREF applies one or several Householder reflectors of size 3
          to one or two matrices (if column is specified) on either their
          rows or columns.

ARGUMENTS

       TYPE    (global input) CHARACTER*1
               If  'R': Apply reflectors to the rows of the matrix (apply from left) Otherwise: Apply reflectors
               to the columns of the matrix Unchanged on exit.

       A       (global input/output) REAL array, (LDA,*)
               On entry, the matrix to receive the reflections.  The updated matrix on exit.

       LDA     (local input) INTEGER
               On entry, the leading dimension of A.  Unchanged on exit.

       WANTZ   (global input) LOGICAL
               If .TRUE., then apply any column reflections to Z as well.  If .FALSE.,  then  do  no  additional
               work on Z.

       Z       (global input/output) REAL array, (LDZ,*)
               On entry, the second matrix to receive column reflections.  This is changed only if WANTZ is set.

       LDZ     (local input) INTEGER
               On entry, the leading dimension of Z.  Unchanged on exit.

       BLOCK   (global input) LOGICAL
               If  .TRUE.,  then  apply  several reflectors at once and read their data from the VECS array.  If
               .FALSE., apply the single reflector given by V2, V3, T1, T2, and T3.

       IROW1   (local input/output) INTEGER
               On entry, the local row element of A.  Undefined on output.

       ICOL1   (local input/output) INTEGER
               On entry, the local column element of A.  Undefined on output.

       ISTART  (global input) INTEGER
               Specifies the "number" of the first reflector.  This is used as an index into VECS  if  BLOCK  is
               set.  ISTART is ignored if BLOCK is .FALSE..

       ISTOP   (global input) INTEGER
               Specifies  the  "number"  of  the last reflector.  This is used as an index into VECS if BLOCK is
               set.  ISTOP is ignored if BLOCK is .FALSE..

       ITMP1   (local input) INTEGER
               Starting range into A.  For rows, this is the local first column.  For columns, this is the local
               first row.

       ITMP2   (local input) INTEGER
               Ending  range  into  A.  For rows, this is the local last column.  For columns, this is the local
               last row.

               LILOZ LIHIZ   (local input) INTEGER These serve the same purpose as ITMP1,ITMP2 but  for  Z  when
               WANTZ is set.

       VECS    (global input) REAL array of size 3*N (matrix
               size)  This holds the size 3 reflectors one after another and this is only accessed when BLOCK is
               .TRUE.

               V2 V3 T1 T2 T3      (global input/output)  REAL  This  holds  information  on  a  single  size  3
               Householder reflector and is read when BLOCK is .FALSE., and overwritten when BLOCK is .TRUE.

               Implemented by:  G. Henry, May 1, 1997