# ?latdf

Uses the LU factorization of the n-by-n matrix computed by ?getc2 and computes a contribution to the reciprocal Dif-estimate.

## Syntax

call slatdf( ijob, n, z, ldz, rhs, rdsum, rdscal, ipiv, jpiv )

call dlatdf( ijob, n, z, ldz, rhs, rdsum, rdscal, ipiv, jpiv )

call clatdf( ijob, n, z, ldz, rhs, rdsum, rdscal, ipiv, jpiv )

call zlatdf( ijob, n, z, ldz, rhs, rdsum, rdscal, ipiv, jpiv )

## Include Files

• Fortran: mkl.fi
• C: mkl.h

## Description

The routine ?latdf uses the LU factorization of the n-by-n matrix Z computed by ?getc2 and computes a contribution to the reciprocal Dif-estimate by solving `Z*x = b` for x, and choosing the right-hand side b such that the norm of x is as large as possible. On entry `rhs = b` holds the contribution from earlier solved sub-systems, and on return `rhs = x`.

The factorization of Z returned by ?getc2 has the form `Z = P*L*U*Q`, where P and Q are permutation matrices. L is lower triangular with unit diagonal elements and U is upper triangular.

## Input Parameters

ijob

INTEGER.

`ijob = 2`: First compute an approximative null-vector e of Z using ?gecon, e is normalized, and solve for `Z*x = ±e-f` with the sign giving the greater value of 2-norm(x). This option is about 5 times as expensive as default.

`ijob ≠ 2` (default): Local look ahead strategy where all entries of the right-hand side b is chosen as either +1 or -1 .

n

INTEGER. The number of columns of the matrix Z.

z

REAL for slatdf/clatdf

DOUBLE PRECISION for dlatdf/zlatdf.

Array, DIMENSION (ldz, n)

On entry, the LU part of the factorization of the n-by-n matrix Z computed by ?getc2: `Z = P*L*U*Q`.

ldz

INTEGER. The leading dimension of the array Z. `lda ≥ max(1, n)`.

rhs

REAL for slatdf/clatdf

DOUBLE PRECISION for dlatdf/zlatdf.

Array, DIMENSION (n).

On entry, rhs contains contributions from other subsystems.

rdsum

REAL for slatdf/clatdf

DOUBLE PRECISION for dlatdf/zlatdf.

On entry, the sum of squares of computed contributions to the Dif-estimate under computation by ?tgsyL, where the scaling factor rdscal has been factored out. If `trans = 'T'`, rdsum is not touched.

Note that rdsum only makes sense when ?tgsy2 is called by ?tgsyL.

rdscal

REAL for slatdf/clatdf

DOUBLE PRECISION for dlatdf/zlatdf.

On entry, scaling factor used to prevent overflow in rdsum.

If `trans = T'`, rdscal is not touched.

Note that rdscal only makes sense when ?tgsy2 is called by ?tgsyL.

ipiv

INTEGER.

Array, DIMENSION (n).

The pivot indices; for `1 ≤ i ≤ n`, row i of the matrix has been interchanged with row ipiv(i).

jpiv

INTEGER.

Array, DIMENSION (n).

The pivot indices; for `1 ≤j≤ n`, column j of the matrix has been interchanged with column jpiv(j).

## Output Parameters

rhs

On exit, rhs contains the solution of the subsystem with entries according to the value of ijob.

rdsum

On exit, the corresponding sum of squares updated with the contributions from the current sub-system.

If `trans = 'T'`, rdsum is not touched.

rdscal

On exit, rdscal is updated with respect to the current contributions in rdsum.

If `trans = 'T'`, rdscal is not touched.

For more complete information about compiler optimizations, see our Optimization Notice.