Developer Reference for Intel® oneAPI Math Kernel Library for Fortran

ID 766686
Date 7/13/2023
Public

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

Document Table of Contents

?lasq1

Computes the singular values of a real square bidiagonal matrix. Used by ?bdsqr.

Syntax

call slasq1( n, d, e, work, info )

call dlasq1( n, d, e, work, info )

Include Files

  • mkl.fi

Description

The routine ?lasq1 computes the singular values of a real n-by-n bidiagonal matrix Z with diagonal d and off-diagonal e. The singular values are computed to high relative accuracy, in the absence of denormalization, underflow and overflow.

Input Parameters

n

INTEGER.The number of rows and columns in the matrix. n 0.

d

REAL for slasq1

DOUBLE PRECISION for dlasq1.

Array, DIMENSION (n).

On entry, d contains the diagonal elements of the bidiagonal matrix whose SVD is desired.

e

REAL for slasq1

DOUBLE PRECISION for dlasq1.

Array, DIMENSION (n).

On entry, elements e(1:n-1) contain the off-diagonal elements of the bidiagonal matrix whose SVD is desired.

work

REAL for slasq1

DOUBLE PRECISION for dlasq1.

Workspace array, DIMENSION(4n).

Output Parameters

d

On normal exit, d contains the singular values in decreasing order.

e

On exit, e is overwritten.

info

INTEGER.

= 0: successful exit;

< 0: if info = -i, the i-th argument had an illegal value;

> 0: the algorithm failed:

= 1, a split was marked by a positive value in e;

= 2, current block of Z not diagonalized after 100n iterations (in inner while loop) - on exit the current contents of d and e represent a matrix with the same singular values as the matrix with which ?lasq1 was originally called, and which the calling subroutine could use to finish the computation, or even feed back into ?lasq1;

= 3, termination criterion of outer while loop not met (program created more than n unreduced blocks.