Developer Reference for Intel® oneAPI Math Kernel Library for C

ID 766684
Date 11/07/2023
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

p?laqr5

Performs a single small-bulge multi-shift QR sweep.

Syntax

void pslaqr5(MKL_INT* wantt, MKL_INT* wantz, MKL_INT* kacc22, MKL_INT* n, MKL_INT* ktop, MKL_INT* kbot, MKL_INT* nshfts, float* sr, float* si, float* h, MKL_INT* desch, MKL_INT* iloz, MKL_INT* ihiz, float* z, MKL_INT* descz, float* work, MKL_INT* lwork, MKL_INT* iwork, MKL_INT* liwork);

void pdlaqr5(MKL_INT* wantt, MKL_INT* wantz, MKL_INT* kacc22, MKL_INT* n, MKL_INT* ktop, MKL_INT* kbot, MKL_INT* nshfts, double* sr, double* si, double* h, MKL_INT* desch, MKL_INT* iloz, MKL_INT* ihiz, double* z, MKL_INT* descz, double* work, MKL_INT* lwork, MKL_INT* iwork, MKL_INT* liwork);

Include Files

  • mkl_scalapack.h

Description

This auxiliary function called by p?laqr0 performs a single small-bulge multi-shift QR sweep by chasing separated groups of bulges along the main block diagonal of a Hessenberg matrix H.

Input Parameters

wantt

(global) scalar

wanttis non-zero if the quasi-triangular Schur factor is being computed. wantt is set to zero otherwise.

wantz

(global) scalar

wantzis non-zero if the orthogonal Schur factor is being computed. wantz is set to zero otherwise.

kacc22

(global)

Value 0, 1, or 2. Specifies the computation mode of far-from-diagonal orthogonal updates.

= 0: p?laqr5 does not accumulate reflections and does not use matrix-matrix multiply to update far-from-diagonal matrix entries.

= 1: p?laqr5 accumulates reflections and uses matrix-matrix multiply to update the far-from-diagonal matrix entries.

= 2: p?laqr5 accumulates reflections, uses matrix-matrix multiply to update the far-from-diagonal matrix entries, and takes advantage of 2-by-2 block structure during matrix multiplies.

n

(global) scalar

The order of the Hessenberg matrix H and, if wantzis non-zero, the order of the orthogonal matrix Z.

ktop, kbot

(global) scalar

These are the first and last rows and columns of an isolated diagonal block upon which the QR sweep is to be applied. It is assumed without a check that either ktop = 1 or H(ktop,ktop-1) = 0 and either kbot = n or H(kbot+1,kbot) = 0.

nshfts

(global) scalar

nshfts gives the number of simultaneous shifts. nshfts must be positive and even.

sr, si

(global) Array of size nshfts

sr contains the real parts and si contains the imaginary parts of the nshfts shifts of origin that define the multi-shift QR sweep.

h

(local) Array of size lld_h * LOCc(n)

On input h contains a Hessenberg matrix H.

desch

(global and local)

array of size dlen_.

The array descriptor for the distributed matrix H .

iloz, ihiz

(global)

Specify the rows of the matrix Z to which transformations must be applied if wantzis non-zero. 1 ilozihizn

z

(local) array of size lld_z * LOCc(n)

If wantzis non-zero, then the QR Sweep orthogonal similarity transformation is accumulated into the matrix Z(iloz:ihiz,kbot:ktop) from the right. If wantzequals zero, then z is unreferenced.

descz

(global and local) array of size dlen_.

The array descriptor for the distributed matrix Z.

work

(local workspace) array of size lwork

lwork

(local)

The size of the work array (lwork1).

If lwork=-1, then a workspace query is assumed.

iwork

(local workspace) array of size liwork

liwork

(local)

The size of the iwork array (liwork1).

If liwork=-1, then a workspace query is assumed.

Output Parameters

h

A multi-shift QR sweep with shifts sr(j)+i*si(j) is applied to the isolated diagonal block in rows and columns ktop through kbot of the matrix H.

z

If wantzis non-zero, z is updated with transformations applied only to the submatrix Z(iloz:ihiz,kbot:ktop).

work[0]

On exit, if info = 0, work[0] returns the optimal lwork.

iwork[0]

On exit, if info = 0, iwork[0] returns the optimal liwork.

See Also