laqp3rk#

Functions

void slaqp3rk(
    const INT           m,
    const INT           n,
    const INT           nrhs,
    const INT           ioffset,
          INT*          nb,
    const f32           abstol,
    const f32           reltol,
    const INT           kp1,
    const f32           maxc2nrm,
          f32* restrict A,
    const INT           lda,
          INT*          done,
          INT*          KB,
          f32*          maxc2nrmk,
          f32*          relmaxc2nrmk,
          INT* restrict jpiv,
          f32* restrict tau,
          f32* restrict vn1,
          f32* restrict vn2,
          f32* restrict auxv,
          f32* restrict F,
    const INT           ldf,
          INT* restrict iwork,
          INT*          info
);
void slaqp3rk(const INT m, const INT n, const INT nrhs, const INT ioffset, INT *nb, const f32 abstol, const f32 reltol, const INT kp1, const f32 maxc2nrm, f32 *restrict A, const INT lda, INT *done, INT *KB, f32 *maxc2nrmk, f32 *relmaxc2nrmk, INT *restrict jpiv, f32 *restrict tau, f32 *restrict vn1, f32 *restrict vn2, f32 *restrict auxv, f32 *restrict F, const INT ldf, INT *restrict iwork, INT *info)#

SLAQP3RK computes a step of truncated QR factorization with column pivoting of a real M-by-N matrix block A(IOFFSET+1:M,1:N) by using Level 3 BLAS as.

A * P(KB) = Q(KB) * R(KB).

The routine tries to factorize NB columns from A starting from the row IOFFSET+1 and updates the residual matrix with BLAS 3 xGEMM. The number of actually factorized columns is returned is smaller than NB.

Block A(1:IOFFSET,1:N) is accordingly pivoted, but not factorized.

The routine also overwrites the right-hand-sides B matrix stored in A(IOFFSET+1:M,N+1:N+NRHS) with Q(KB)**T * B.

Parameters

in
m

The number of rows of the matrix A. m >= 0.

in
n

The number of columns of the matrix A. n >= 0.

in
nrhs

The number of right hand sides. nrhs >= 0.

in
ioffset

The number of rows that must be pivoted but not factorized.

inout
nb

On entry, the factorization block size. On exit, possibly reduced.

in
abstol

The absolute tolerance for maximum column 2-norm.

in
reltol

The relative tolerance for maximum column 2-norm.

in
kp1

The index of the column with the maximum 2-norm (0-based).

in
maxc2nrm

The maximum column 2-norm of the original matrix.

inout
A

Double precision array, dimension (lda, n+nrhs).

in
lda

The leading dimension of the array A. lda >= max(1, m).

out
done

1 if factorization is complete, 0 otherwise.

out
KB

The number of factorized columns.

out
maxc2nrmk

The maximum column 2-norm of the residual matrix.

out
relmaxc2nrmk

The ratio maxc2nrmk / maxc2nrm.

out
jpiv

Integer array, dimension (n). Column pivot indices.

out
tau

Double precision array, dimension (min(m-ioffset, n)).

inout
vn1

Double precision array, dimension (n). Partial column norms.

inout
vn2

Double precision array, dimension (n). Exact column norms.

out
auxv

Double precision array, dimension (nb). Auxiliary vector.

out
F

Double precision array, dimension (ldf, nb). Matrix F.

in
ldf

The leading dimension of the array F. ldf >= max(1, n+nrhs).

out
iwork

Integer array, dimension (n-1).

out
info

  • = 0: successful exit

  • = j (1 <= j <= n): NaN detected in column j

  • = j (n+1 <= j <= 2*n): Inf detected in column j-n

Functions

void dlaqp3rk(
    const INT           m,
    const INT           n,
    const INT           nrhs,
    const INT           ioffset,
          INT*          nb,
    const f64           abstol,
    const f64           reltol,
    const INT           kp1,
    const f64           maxc2nrm,
          f64* restrict A,
    const INT           lda,
          INT*          done,
          INT*          KB,
          f64*          maxc2nrmk,
          f64*          relmaxc2nrmk,
          INT* restrict jpiv,
          f64* restrict tau,
          f64* restrict vn1,
          f64* restrict vn2,
          f64* restrict auxv,
          f64* restrict F,
    const INT           ldf,
          INT* restrict iwork,
          INT*          info
);
void dlaqp3rk(const INT m, const INT n, const INT nrhs, const INT ioffset, INT *nb, const f64 abstol, const f64 reltol, const INT kp1, const f64 maxc2nrm, f64 *restrict A, const INT lda, INT *done, INT *KB, f64 *maxc2nrmk, f64 *relmaxc2nrmk, INT *restrict jpiv, f64 *restrict tau, f64 *restrict vn1, f64 *restrict vn2, f64 *restrict auxv, f64 *restrict F, const INT ldf, INT *restrict iwork, INT *info)#

DLAQP3RK computes a step of truncated QR factorization with column pivoting of a real M-by-N matrix block A(IOFFSET+1:M,1:N) by using Level 3 BLAS as.

A * P(KB) = Q(KB) * R(KB).

The routine tries to factorize NB columns from A starting from the row IOFFSET+1 and updates the residual matrix with BLAS 3 xGEMM. The number of actually factorized columns is returned is smaller than NB.

Block A(1:IOFFSET,1:N) is accordingly pivoted, but not factorized.

The routine also overwrites the right-hand-sides B matrix stored in A(IOFFSET+1:M,N+1:N+NRHS) with Q(KB)**T * B.

Parameters

in
m

The number of rows of the matrix A. m >= 0.

in
n

The number of columns of the matrix A. n >= 0.

in
nrhs

The number of right hand sides. nrhs >= 0.

in
ioffset

The number of rows that must be pivoted but not factorized.

inout
nb

On entry, the factorization block size. On exit, possibly reduced.

in
abstol

The absolute tolerance for maximum column 2-norm.

in
reltol

The relative tolerance for maximum column 2-norm.

in
kp1

The index of the column with the maximum 2-norm (0-based).

in
maxc2nrm

The maximum column 2-norm of the original matrix.

inout
A

Double precision array, dimension (lda, n+nrhs).

in
lda

The leading dimension of the array A. lda >= max(1, m).

out
done

1 if factorization is complete, 0 otherwise.

out
KB

The number of factorized columns.

out
maxc2nrmk

The maximum column 2-norm of the residual matrix.

out
relmaxc2nrmk

The ratio maxc2nrmk / maxc2nrm.

out
jpiv

Integer array, dimension (n). Column pivot indices.

out
tau

Double precision array, dimension (min(m-ioffset, n)).

inout
vn1

Double precision array, dimension (n). Partial column norms.

inout
vn2

Double precision array, dimension (n). Exact column norms.

out
auxv

Double precision array, dimension (nb). Auxiliary vector.

out
F

Double precision array, dimension (ldf, nb). Matrix F.

in
ldf

The leading dimension of the array F. ldf >= max(1, n+nrhs).

out
iwork

Integer array, dimension (n-1).

out
info

  • = 0: successful exit

  • = j (1 <= j <= n): NaN detected in column j

  • = j (n+1 <= j <= 2*n): Inf detected in column j-n

Functions

void claqp3rk(
    const INT           m,
    const INT           n,
    const INT           nrhs,
    const INT           ioffset,
          INT*          nb,
    const f32           abstol,
    const f32           reltol,
    const INT           kp1,
    const f32           maxc2nrm,
          c64* restrict A,
    const INT           lda,
          INT*          done,
          INT*          KB,
          f32*          maxc2nrmk,
          f32*          relmaxc2nrmk,
          INT* restrict jpiv,
          c64* restrict tau,
          f32* restrict vn1,
          f32* restrict vn2,
          c64* restrict auxv,
          c64* restrict F,
    const INT           ldf,
          INT* restrict iwork,
          INT*          info
);
void claqp3rk(const INT m, const INT n, const INT nrhs, const INT ioffset, INT *nb, const f32 abstol, const f32 reltol, const INT kp1, const f32 maxc2nrm, c64 *restrict A, const INT lda, INT *done, INT *KB, f32 *maxc2nrmk, f32 *relmaxc2nrmk, INT *restrict jpiv, c64 *restrict tau, f32 *restrict vn1, f32 *restrict vn2, c64 *restrict auxv, c64 *restrict F, const INT ldf, INT *restrict iwork, INT *info)#

CLAQP3RK computes a step of truncated QR factorization with column pivoting of a complex M-by-N matrix block A(IOFFSET+1:M,1:N) by using Level 3 BLAS as.

A * P(KB) = Q(KB) * R(KB).

The routine tries to factorize NB columns from A starting from the row IOFFSET+1 and updates the residual matrix with BLAS 3 xGEMM. The number of actually factorized columns is returned is smaller than NB.

Block A(1:IOFFSET,1:N) is accordingly pivoted, but not factorized.

The routine also overwrites the right-hand-sides B matrix stored in A(IOFFSET+1:M,N+1:N+NRHS) with Q(KB)**H * B.

Parameters

in
m

The number of rows of the matrix A. m >= 0.

in
n

The number of columns of the matrix A. n >= 0.

in
nrhs

The number of right hand sides. nrhs >= 0.

in
ioffset

The number of rows that must be pivoted but not factorized.

inout
nb

On entry, the factorization block size. On exit, possibly reduced.

in
abstol

The absolute tolerance for maximum column 2-norm.

in
reltol

The relative tolerance for maximum column 2-norm.

in
kp1

The index of the column with the maximum 2-norm (0-based).

in
maxc2nrm

The maximum column 2-norm of the original matrix.

inout
A

Complex*16 array, dimension (lda, n+nrhs).

in
lda

The leading dimension of the array A. lda >= max(1, m).

out
done

1 if factorization is complete, 0 otherwise.

out
KB

The number of factorized columns.

out
maxc2nrmk

The maximum column 2-norm of the residual matrix.

out
relmaxc2nrmk

The ratio maxc2nrmk / maxc2nrm.

out
jpiv

Integer array, dimension (n). Column pivot indices.

out
tau

Complex*16 array, dimension (min(m-ioffset, n)).

inout
vn1

Single precision array, dimension (n). Partial column norms.

inout
vn2

Single precision array, dimension (n). Exact column norms.

out
auxv

Complex*16 array, dimension (nb). Auxiliary vector.

out
F

Complex*16 array, dimension (ldf, nb). Matrix F.

in
ldf

The leading dimension of the array F. ldf >= max(1, n+nrhs).

out
iwork

Integer array, dimension (n-1).

out
info

  • = 0: successful exit

  • = j (1 <= j <= n): NaN detected in column j

  • = j (n+1 <= j <= 2*n): Inf detected in column j-n

Functions

void zlaqp3rk(
    const INT            m,
    const INT            n,
    const INT            nrhs,
    const INT            ioffset,
          INT*           nb,
    const f64            abstol,
    const f64            reltol,
    const INT            kp1,
    const f64            maxc2nrm,
          c128* restrict A,
    const INT            lda,
          INT*           done,
          INT*           KB,
          f64*           maxc2nrmk,
          f64*           relmaxc2nrmk,
          INT*  restrict jpiv,
          c128* restrict tau,
          f64*  restrict vn1,
          f64*  restrict vn2,
          c128* restrict auxv,
          c128* restrict F,
    const INT            ldf,
          INT*  restrict iwork,
          INT*           info
);
void zlaqp3rk(const INT m, const INT n, const INT nrhs, const INT ioffset, INT *nb, const f64 abstol, const f64 reltol, const INT kp1, const f64 maxc2nrm, c128 *restrict A, const INT lda, INT *done, INT *KB, f64 *maxc2nrmk, f64 *relmaxc2nrmk, INT *restrict jpiv, c128 *restrict tau, f64 *restrict vn1, f64 *restrict vn2, c128 *restrict auxv, c128 *restrict F, const INT ldf, INT *restrict iwork, INT *info)#

ZLAQP3RK computes a step of truncated QR factorization with column pivoting of a complex M-by-N matrix block A(IOFFSET+1:M,1:N) by using Level 3 BLAS as.

A * P(KB) = Q(KB) * R(KB).

The routine tries to factorize NB columns from A starting from the row IOFFSET+1 and updates the residual matrix with BLAS 3 xGEMM. The number of actually factorized columns is returned is smaller than NB.

Block A(1:IOFFSET,1:N) is accordingly pivoted, but not factorized.

The routine also overwrites the right-hand-sides B matrix stored in A(IOFFSET+1:M,N+1:N+NRHS) with Q(KB)**H * B.

Parameters

in
m

The number of rows of the matrix A. m >= 0.

in
n

The number of columns of the matrix A. n >= 0.

in
nrhs

The number of right hand sides. nrhs >= 0.

in
ioffset

The number of rows that must be pivoted but not factorized.

inout
nb

On entry, the factorization block size. On exit, possibly reduced.

in
abstol

The absolute tolerance for maximum column 2-norm.

in
reltol

The relative tolerance for maximum column 2-norm.

in
kp1

The index of the column with the maximum 2-norm (0-based).

in
maxc2nrm

The maximum column 2-norm of the original matrix.

inout
A

Complex*16 array, dimension (lda, n+nrhs).

in
lda

The leading dimension of the array A. lda >= max(1, m).

out
done

1 if factorization is complete, 0 otherwise.

out
KB

The number of factorized columns.

out
maxc2nrmk

The maximum column 2-norm of the residual matrix.

out
relmaxc2nrmk

The ratio maxc2nrmk / maxc2nrm.

out
jpiv

Integer array, dimension (n). Column pivot indices.

out
tau

Complex*16 array, dimension (min(m-ioffset, n)).

inout
vn1

Double precision array, dimension (n). Partial column norms.

inout
vn2

Double precision array, dimension (n). Exact column norms.

out
auxv

Complex*16 array, dimension (nb). Auxiliary vector.

out
F

Complex*16 array, dimension (ldf, nb). Matrix F.

in
ldf

The leading dimension of the array F. ldf >= max(1, n+nrhs).

out
iwork

Integer array, dimension (n-1).

out
info

  • = 0: successful exit

  • = j (1 <= j <= n): NaN detected in column j

  • = j (n+1 <= j <= 2*n): Inf detected in column j-n