SYNOPSIS
- SUBROUTINE DLAREF(
- 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
- DOUBLE PRECISION T1, T2, T3, V2, V3
- DOUBLE PRECISION A( LDA, * ), VECS( * ), Z( LDZ, * )
PURPOSE
DLAREF applies one or several Householder reflectors of size 3to 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) DOUBLE PRECISION 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) DOUBLE PRECISION 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) DOUBLE PRECISION 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) DOUBLE PRECISION 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