---
name: "dlaln2"
section: "3lapack"
platform: "linux"
package: "liblapack-doc"
version: "3.2.1-8"
release: "Debian 6.0 (Squeeze)"
platforms: ["linux"]
url: "https://new.carta.tech/dlaln2/3lapack"
---

# dlaln2(3lapack)

solves a system of the form (ca A - w D ) X = s B or (ca A' - w D) X = s B with possible scaling ("s") and perturbation of A

## NAME

DLALN2 - solves a system of the form (ca A - w D ) X = s B or (ca A' - w D) X = s B with possible scaling ("s") and perturbation of A

## SYNOPSIS

- SUBROUTINE DLALN2(

  LTRANS, NA, NW, SMIN, CA, A, LDA, D1, D2, B, LDB, WR, WI, X, LDX, SCALE, XNORM, INFO )

- LOGICAL

  LTRANS

- INTEGER

  INFO, LDA, LDB, LDX, NA, NW

- DOUBLE

  PRECISION CA, D1, D2, SCALE, SMIN, WI, WR, XNORM

- DOUBLE

  PRECISION A( LDA, \* ), B( LDB, \* ), X( LDX, \* )

## PURPOSE

DLALN2 solves a system of the form  (ca A - w D ) X = s B or (ca A' - w D) X = s B   with possible scaling ("s") and perturbation of A.  (A' means A-transpose.) A is an NA x NA real matrix, ca is a real scalar, D is an NA x NA real diagonal matrix, w is a real or complex value, and X and B are NA x 1 matrices -- real if w is real, complex if w is complex.  NA may be 1 or 2.\
 If w is complex, X and B are represented as NA x 2 matrices, the first column of each being the real part and the second being the imaginary part.\
 "s" is a scaling factor (.LE. 1), computed by DLALN2, which is so chosen that X can be computed without overflow.  X is further scaled if necessary to assure that norm(ca A - w D)\*norm(X) is less than overflow.\
 If both singular values of (ca A - w D) are less than SMIN, SMIN\*identity will be used instead of (ca A - w D).  If only one singular value is less than SMIN, one element of (ca A - w D) will be perturbed enough to make the smallest singular value roughly SMIN. If both singular values are at least SMIN, (ca A - w D) will not be perturbed.  In any case, the perturbation will be at most some small multiple of max( SMIN, ulp\*norm(ca A - w D) ).  The singular values are computed by infinity-norm approximations, and thus will only be correct to a factor of 2 or so.\
 Note: all input quantities are assumed to be smaller than overflow by a reasonable factor.  (See BIGNUM.)\

## ARGUMENTS

- LTRANS (input) LOGICAL

  \=.TRUE.:  A-transpose will be used.\
   \=.FALSE.: A will be used (not transposed.)

- NA (input) INTEGER

  The size of the matrix A.  It may (only) be 1 or 2.

- NW (input) INTEGER

  1 if "w" is real, 2 if "w" is complex.  It may only be 1 or 2.

- SMIN (input) DOUBLE PRECISION

  The desired lower bound on the singular values of A.  This should be a safe distance away from underflow or overflow, say, between (underflow/machine precision) and  (machine precision \* overflow ).  (See BIGNUM and ULP.)

- CA (input) DOUBLE PRECISION

  The coefficient c, which A is multiplied by.

- A (input) DOUBLE PRECISION array, dimension (LDA,NA)

  The NA x NA matrix A.

- LDA (input) INTEGER

  The leading dimension of A.  It must be at least NA.

- D1 (input) DOUBLE PRECISION

  The 1,1 element in the diagonal matrix D.

- D2 (input) DOUBLE PRECISION

  The 2,2 element in the diagonal matrix D.  Not used if NW=1.

- B (input) DOUBLE PRECISION array, dimension (LDB,NW)

  The NA x NW matrix B (right-hand side).  If NW=2 ("w" is complex), column 1 contains the real part of B and column 2 contains the imaginary part.

- LDB (input) INTEGER

  The leading dimension of B.  It must be at least NA.

- WR (input) DOUBLE PRECISION

  The real part of the scalar "w".

- WI (input) DOUBLE PRECISION

  The imaginary part of the scalar "w".  Not used if NW=1.

- X (output) DOUBLE PRECISION array, dimension (LDX,NW)

  The NA x NW matrix X (unknowns), as computed by DLALN2. If NW=2 ("w" is complex), on exit, column 1 will contain the real part of X and column 2 will contain the imaginary part.

- LDX (input) INTEGER

  The leading dimension of X.  It must be at least NA.

- SCALE (output) DOUBLE PRECISION

  The scale factor that B must be multiplied by to insure that overflow does not occur when computing X.  Thus, (ca A - w D) X  will be SCALE\*B, not B (ignoring perturbations of A.)  It will be at most 1.

- XNORM (output) DOUBLE PRECISION

  The infinity-norm of X, when X is regarded as an NA x NW real matrix.

- INFO (output) INTEGER

  An error flag.  It will be set to zero if no error occurs, a negative number if an argument is in error, or a positive number if  ca A - w D  had to be perturbed. The possible values are:\
   \= 0: No error occurred, and (ca A - w D) did not have to be perturbed. = 1: (ca A - w D) had to be perturbed to make its smallest (or only) singular value greater than SMIN. NOTE: In the interests of speed, this routine does not check the inputs for errors.
