Developer Reference for Intel® oneAPI Math Kernel Library for Fortran

ID 766686
Date 10/31/2024
Public
Document Table of Contents

?laref

Applies Householder reflectors to matrices on their rows or columns.

Syntax

call slaref (type, a, lda, wantz, z, ldz, block, irow1, icol1, istart, istop, itmp1, itmp2, liloz, lihiz, vecs, v2, v3, t1, t2, t3 )

call dlaref (type, a, lda, wantz, z, ldz, block, irow1, icol1, istart, istop, itmp1, itmp2, liloz, lihiz, vecs, v2, v3, t1, t2, t3 )

call claref (type, a, lda, wantz, z, ldz, block, irow1, icol1, istart, istop, itmp1, itmp2, liloz, lihiz, vecs, v2, v3, t1, t2, t3 )

call zlaref (type, a, lda, wantz, z, ldz, block, irow1, icol1, istart, istop, itmp1, itmp2, liloz, lihiz, vecs, v2, v3, t1, t2, t3 )

Description

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

Input Parameters

type

(local)

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

(local)

REAL for slaref

DOUBLE PRECISION for dlaref

COMPLEX for claref

DOUBLE COMPLEX for zlaref

Array, (lld_a,LOCc(ja+n-1))

On entry, the matrix to receive the reflections.

lda

(local)

INTEGER.

On entry, the leading dimension of a.

Unchanged on exit.

wantz

(local)

LOGICAL.

If .TRUE., then apply any column reflections to z as well.

If .FALSE., then do no additional work on z.

z

(local)

REAL for slaref

DOUBLE PRECISION for dlaref

COMPLEX for claref

DOUBLE COMPLEX for zlaref

Array, (ldz,ncols), where the value ncols depends on other arguments. If wantz== .TRUE. and type 'R' then ncols = icol1 + 3*(lihiz - liloz + 1). Otherwise, ncols is unused.

On entry, the second matrix to receive column reflections.

This is changed only if wantz is set.

ldz

(local)

INTEGER.

On entry, the leading dimension of z.

Unchanged on exit.

block

(local)

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)

INTEGER.

On entry, the local row element of a.

icol1

(local)

INTEGER.

On entry, the local column element of a.

istart

(local)

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

(local)

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)

INTEGER.

Starting range into a. For rows, this is the local first column. For columns, this is the local first row.

itmp2

(local)

INTEGER.

Ending range into a. For rows, this is the local last column. For columns, this is the local last row.

liloz, lihiz

(local)

INTEGER.

These serve the same purpose as itmp1, itmp2 but for z when wantz is set.

vecs

(local)

REAL for slaref

DOUBLE PRECISION for dlaref

COMPLEX for claref

DOUBLE COMPLEX for zlaref

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

(local)

REAL for slaref

DOUBLE PRECISION for dlaref

COMPLEX for claref

DOUBLE COMPLEX for zlaref

This holds information on a single size 3 Householder reflector and is read when block is .FALSE., and overwritten when block is .TRUE.

Output Parameters

a

The updated matrix on exit.

z

This is changed only if wantz is set.

irow1

Undefined on output.

icol1

Undefined on output.

v2, v3, t1, t2, t3

Overwritten when block is .TRUE.