Developer Reference for Intel® oneAPI Math Kernel Library for C

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

?laqr6

Performs a single small-bulge multi-shift QR sweep collecting the transformations.

Syntax

void slaqr6(char* job, 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* ldh, MKL_INT* iloz, MKL_INT* ihiz, float* z, MKL_INT* ldz, float* v, MKL_INT* ldv, float* u, MKL_INT* ldu, MKL_INT* nv, float* wv, MKL_INT* ldwv, MKL_INT* nh, float* wh, MKL_INT* ldwh);

void dlaqr6(char* job, 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* ldh, MKL_INT* iloz, MKL_INT* ihiz, double* z, MKL_INT* ldz, double* v, MKL_INT* ldv, double* u, MKL_INT* ldu, MKL_INT* nv, double* wv, MKL_INT* ldwv, MKL_INT* nh, double* wh, MKL_INT* ldwh);

Include Files

  • mkl_scalapack.h

Description

This auxiliary function performs a single small-bulge multi-shift QR sweep, moving the chain of bulges from top to bottom in the submatrix H(ktop:kbot,ktop:kbot), collecting the transformations in the matrix V or accumulating the transformations in the matrix Z (see below).

This is a modified version of ?laqr5 from LAPACK 3.1.

Input Parameters

job

Set the kind of job to do in ?laqr6, as follows:

job = 'I': Introduce and chase bulges in submatrix

job = 'C': Chase bulges from top to bottom of submatrix

job = 'O': Chase bulges off submatrix

wantt

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

wantz

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

kacc22

Specifies the computation mode of far-from-diagonal orthogonal updates.

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

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

= 2: ?laqr6 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

n is the order of the Hessenberg matrix H upon which this function operates.

ktop, kbot

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

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

sr, si

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

Array of size ldh * n

On input h contains a Hessenberg matrix H.

ldh

ldh is the leading dimension of H just as declared in the calling function. ldh max(1,n).

iloz, ihiz

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

z

Array of size ldz * ktop

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

If wantzequals zero, then z is unreferenced.

ldz

ldz is the leading dimension of z just as declared in the calling function. ldzn.

v

(workspace) array of size ldv * nshfts/2

ldv

ldv is the leading dimension of v as declared in the calling function. ldv3.

u

(workspace) array of size ldu * (3*nshfts-3)

ldu

ldu is the leading dimension of u just as declared in the calling function. ldu3*nshfts-3.

nh

nh is the number of columns in array wh available for workspace. nh1 is required for usage of this workspace, otherwise the updates of the far-from-diagonal elements will be updated without level 3 BLAS.

wh

(workspace) array of size ldwh * nh

ldwh

Leading dimension of wh just as declared in the calling function. ldwh3*nshfts-3.

nv

nv is the number of rows in wv available for workspace. nv1 is required for usage of this workspace, otherwise the updates of the far-from-diagonal elements will be updated without level 3 BLAS.

wv

(workspace) array of size ldwv * 3*nshfts

ldwv

scalar

ldwv is the leading dimension of wv as declared in the in the calling function. ldwvnv.

OUTPUT Parameters

h

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

z

If wantzis non-zero, then the QR sweep orthogonal/unitary similarity transformation is accumulated into the matrix Z(iloz:ihiz,kbot:ktop) from the right.

If wantzequals zero, then z is unreferenced.

Application Notes

Notes

Based on contributions by Karen Braman and Ralph Byers, Department of Mathematics, University of Kansas, USA Robert Granat, Department of Computing Science and HPC2N, Umea University, Sweden

See Also