lasy2#

Functions

void slasy2(
    const INT  ltranl,
    const INT  ltranr,
    const INT  isgn,
    const INT  n1,
    const INT  n2,
    const f32* TL,
    const INT  ldtl,
    const f32* TR,
    const INT  ldtr,
    const f32* B,
    const INT  ldb,
          f32* scale,
          f32* X,
    const INT  ldx,
          f32* xnorm,
          INT* info
);
void slasy2(const INT ltranl, const INT ltranr, const INT isgn, const INT n1, const INT n2, const f32 *TL, const INT ldtl, const f32 *TR, const INT ldtr, const f32 *B, const INT ldb, f32 *scale, f32 *X, const INT ldx, f32 *xnorm, INT *info)#

SLASY2 solves for the N1 by N2 matrix X, 1 <= N1,N2 <= 2, in.

   op(TL)*X + ISGN*X*op(TR) = SCALE*B,
where TL is N1 by N1, TR is N2 by N2, B is N1 by N2, and ISGN = 1 or -1. op(T) = T or T**T, where T**T denotes the transpose of T.

Note

In the interests of speed, this routine does not check the inputs for errors.

Parameters

in
ltranl

If nonzero, op(TL) = TL**T. Otherwise op(TL) = TL.

in
ltranr

If nonzero, op(TR) = TR**T. Otherwise op(TR) = TR.

in
isgn

The sign in the equation (+1 or -1).

in
n1

The order of matrix TL. N1 may only be 0, 1 or 2.

in
n2

The order of matrix TR. N2 may only be 0, 1 or 2.

in
TL

N1 by N1 matrix TL, dimension (ldtl, 2).

in
ldtl

Leading dimension of TL. ldtl >= max(1, n1).

in
TR

N2 by N2 matrix TR, dimension (ldtr, 2).

in
ldtr

Leading dimension of TR. ldtr >= max(1, n2).

in
B

N1 by N2 right-hand side matrix, dimension (ldb, 2).

in
ldb

Leading dimension of B. ldb >= max(1, n1).

out
scale

Scale factor. Chosen <= 1 to prevent overflow.

out
X

N1 by N2 solution matrix, dimension (ldx, 2).

in
ldx

Leading dimension of X. ldx >= max(1, n1).

out
xnorm

Infinity-norm of the solution.

out
info

  • = 0: successful exit.

  • = 1: TL and TR have too close eigenvalues, so TL or TR is perturbed to get a nonsingular equation.

Functions

void dlasy2(
    const INT  ltranl,
    const INT  ltranr,
    const INT  isgn,
    const INT  n1,
    const INT  n2,
    const f64* TL,
    const INT  ldtl,
    const f64* TR,
    const INT  ldtr,
    const f64* B,
    const INT  ldb,
          f64* scale,
          f64* X,
    const INT  ldx,
          f64* xnorm,
          INT* info
);
void dlasy2(const INT ltranl, const INT ltranr, const INT isgn, const INT n1, const INT n2, const f64 *TL, const INT ldtl, const f64 *TR, const INT ldtr, const f64 *B, const INT ldb, f64 *scale, f64 *X, const INT ldx, f64 *xnorm, INT *info)#

DLASY2 solves for the N1 by N2 matrix X, 1 <= N1,N2 <= 2, in.

   op(TL)*X + ISGN*X*op(TR) = SCALE*B,
where TL is N1 by N1, TR is N2 by N2, B is N1 by N2, and ISGN = 1 or -1. op(T) = T or T**T, where T**T denotes the transpose of T.

Note

In the interests of speed, this routine does not check the inputs for errors.

Parameters

in
ltranl

If nonzero, op(TL) = TL**T. Otherwise op(TL) = TL.

in
ltranr

If nonzero, op(TR) = TR**T. Otherwise op(TR) = TR.

in
isgn

The sign in the equation (+1 or -1).

in
n1

The order of matrix TL. N1 may only be 0, 1 or 2.

in
n2

The order of matrix TR. N2 may only be 0, 1 or 2.

in
TL

N1 by N1 matrix TL, dimension (ldtl, 2).

in
ldtl

Leading dimension of TL. ldtl >= max(1, n1).

in
TR

N2 by N2 matrix TR, dimension (ldtr, 2).

in
ldtr

Leading dimension of TR. ldtr >= max(1, n2).

in
B

N1 by N2 right-hand side matrix, dimension (ldb, 2).

in
ldb

Leading dimension of B. ldb >= max(1, n1).

out
scale

Scale factor. Chosen <= 1 to prevent overflow.

out
X

N1 by N2 solution matrix, dimension (ldx, 2).

in
ldx

Leading dimension of X. ldx >= max(1, n1).

out
xnorm

Infinity-norm of the solution.

out
info

  • = 0: successful exit.

  • = 1: TL and TR have too close eigenvalues, so TL or TR is perturbed to get a nonsingular equation.