SLAREF(3)     ScaLAPACK routine of NEC Numeric Library Collection    SLAREF(3)



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 reflec-
               tor 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  col-
               umn.  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  pur-
               pose 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, November 17, 1996



ScaLAPACK routine               31 October 2017                      SLAREF(3)