Developer Reference for Intel® oneAPI Math Kernel Library for C

ID 766684
Date 3/22/2024
Public
Document Table of Contents

p?latrz

Reduces an upper trapezoidal matrix to upper triangular form by means of orthogonal/unitary transformations.

Syntax

void pslatrz (MKL_INT *m , MKL_INT *n , MKL_INT *l , float *a , MKL_INT *ia , MKL_INT *ja , MKL_INT *desca , float *tau , float *work );

void pdlatrz (MKL_INT *m , MKL_INT *n , MKL_INT *l , double *a , MKL_INT *ia , MKL_INT *ja , MKL_INT *desca , double *tau , double *work );

void pclatrz (MKL_INT *m , MKL_INT *n , MKL_INT *l , MKL_Complex8 *a , MKL_INT *ia , MKL_INT *ja , MKL_INT *desca , MKL_Complex8 *tau , MKL_Complex8 *work );

void pzlatrz (MKL_INT *m , MKL_INT *n , MKL_INT *l , MKL_Complex16 *a , MKL_INT *ia , MKL_INT *ja , MKL_INT *desca , MKL_Complex16 *tau , MKL_Complex16 *work );

Include Files

  • mkl_scalapack.h

Description

The p?latrzfunction reduces the m-by-n(m n) real/complex upper trapezoidal matrix sub(A) = [A(ia:ia+m-1, ja:ja+m-1)A(ia:ia+m-1, ja+n-l:ja+n-1)] to upper triangular form by means of orthogonal/unitary transformations.

The upper trapezoidal matrix sub(A) is factored as

sub(A) = ( R 0 )*Z,

where Z is an n-by-n orthogonal/unitary matrix and R is an m-by-m upper triangular matrix.

Input Parameters

m

(global)

The number of rows in the distributed matrix sub(A). m 0.

n

(global)

The number of columns in the distributed matrix sub(A). n 0.

l

(global)

The number of columns of the distributed matrix sub(A) containing the meaningful part of the Householder reflectors. l > 0.

a

(local)

Pointer into the local memory to an array of size lld_a * LOCc(ja+n-1). On entry, the local pieces of the m-by-n distributed matrix sub(A), which is to be factored.

ia

(global)

The row index in the global matrix A indicating the first row of sub(A).

ja

(global)

The column index in the global matrix A indicating the first column of sub(A).

desca

(global and local) array of size dlen_.

The array descriptor for the distributed matrix A.

work

(local)

Workspace array of size lwork.

lworknq0 + max(1, mp0), where

iroff = mod(ia-1, mb_a),

icoff = mod(ja-1, nb_a),

iarow = indxg2p(ia, mb_a, myrow, rsrc_a, nprow),

iacol = indxg2p(ja, nb_a, mycol, csrc_a, npcol),

mp0 = numroc(m+iroff, mb_a, myrow, iarow, nprow),

nq0 = numroc(n+icoff, nb_a, mycol, iacol, npcol),

numroc, indxg2p, and numroc are ScaLAPACK tool functions; myrow, mycol, nprow, and npcol can be determined by calling the function blacs_gridinfo.

Output Parameters

a

On exit, the leading m-by-m upper triangular part of sub(A) contains the upper triangular matrix R, and elements n-l+1 to n of the first m rows of sub(A), with the array tau, represent the orthogonal/unitary matrix Z as a product of m elementary reflectors.

tau

(local)

Array of sizeLOCr(ja+m-1). This array contains the scalar factors of the elementary reflectors. tau is tied to the distributed matrix A.

Application Notes

The factorization is obtained by Householder's method. The k-th transformation matrix, Z(k), which is used (or, in case of complex functions, whose conjugate transpose is used) to introduce zeros into the (m - k + 1)-th row of sub(A), is given in the form


Equation

where


Equation

tau is a scalar and z( k ) is an (n-m)-element vector. tau and z( k ) are chosen to annihilate the elements of the k-th row of sub(A). The scalar tau is returned in the k-th element of tau, indexed k-1, and the vector u( k ) in the k-th row of sub(A), such that the elements of z(k ) are in A( k, m + 1 ), ..., A( k, n ). The elements of R are returned in the upper triangular part of sub(A).

Z is given by

Z =  Z(1)Z(2)...Z(m).

See Also