# ?gemip

Performs midpoint-inverse preconditioning of an interval linear system.

## Syntax

call sigemip(n, nrhs, a, lda, b, ldb, info)

call digemip(n, nrhs, a, lda, b, ldb, info)

call crgemip(n, nrhs, a, lda, b, ldb, info)

call zrgemip(n, nrhs, a, lda, b, ldb, info)

call ccgemip(n, nrhs, a, lda, b, ldb, info)

call zcgemip(n, nrhs, a, lda, b, ldb, info)

## Description

The routine ?gemip performs midpoint-inverse preconditioning of the interval linear system `A*X = B`. This is done through multiplying both matrices A and B by the midpoint-inverse matrix `inv((mid A))` in computer (rounded) interval arithmetic.

## Input Parameters

n

  INTEGER. The order of the matrix A.

nrhs

  INTEGER. The number of right-hand sides (`nrhs ≥ 0`).

a, b

  S_INTERVAL for sigemip.

  D_INTERVAL for digemip.

  CR_INTERVAL for crgemip.

  ZR_INTERVAL for zrgemip.

  CC_INTERVAL for ccgemip.

  ZC_INTERVAL for zcgemip.

  Arrays: `a (lda,*)`, `b (ldb,*)`.

  The array a contains the matrix A.

  The array b contains the matrix B, whose columns are the right-hand sides for the systems of equations.

  The second dimension of a must be at least `max(1,n)` and the second dimension of b must be at least `max(1,nrhs)`.

lda

  INTEGER. The first dimension of a, `lda ≥ max(1, n)`.

ldb

  INTEGER. The first dimension of b, `ldb ≥ max(1, n)`.

## Output Parameters

a

  Overwritten by the preconditioned matrix A.

b

  Overwritten by the preconditioned matrix B.

info

  INTEGER.

  If `info = 0`, the execution is successful.

  If `info ≥ 0`, the execution is not successful.

  If `info = -i`, the i-th parameter has an illegal value.

## Application Notes

Preconditioning may sometimes extend applicability of the algorithms for the solution of interval linear systems and/or improve the quality of the results produced by these algorithms.

In particular, interval Gauss method, interval Householder method and interval Gauss-Seidel iteration applied to interval linear systems with “wide” matrices that are not diagonally dominant should be preceded by preconditioning to yield better results. For Hansen-Bliek-Rohn procedure, the midpoint-inverse preconditioning is recommended if the middle matrix of the system is far from diagonal.

## Fortran 90 Code for Preconditioning Interval Linear System

The following piece of Fortran code presents an example of how you can perform preconditioning of the interval linear system

and then solve it by using the interval Gauss method:

----------------------------------------------------------------------------------------------
`. . . . . .`
`USE INTERVAL_ARITHMETIC`
`. . . . . .`
`TYPE(D_INTERVAL) :: A(2,2), B(2,2)`
`INTEGER :: N = 2, NRHS = 2, LDA = 2, LDB = 2, INFO`
`CHARACTER(1) :: TRANS = 'n'`
`. . . . . .`
`A(1,1) = DINTERVAL(2.,4.); A(1,2) = DINTERVAL(-2.,1.)`
`A(2,1) = DINTERVAL(-1.,2.); A(2,2) = DINTERVAL(2.,4.)`
`B(1,1) = DINTERVAL(0.,2.); B(2,1) = DINTERVAL(0.,2.)`
`B(1,2) = DINTERVAL(-2.,2.); B(2,2) = DINTERVAL(-2.,2.)`
`. . . . . .`
`CALL DIGEMIP( N, NRHS, A, LDA, B, LDB, INFO )`
`CALL DIGEGAS( TRANS, N, NRHS, A, LDA, B, LDB, INFO )`

----------------------------------------------------------------------------------------------

For more code examples on using this routine, see “Interval Linear Solvers Code Examples” .

Parent topic: Auxiliary and Utility Routines