1[/
2
3THIS FILE IS AUTOMATICALLY GENERATED, PLEASE DO NOT EDIT!
4
5]
6
7[section gesvx]
8
9[heading Prototype]
10There is one prototype of `gesvx` available, please see below.
11``
12gesvx( const char fact, MatrixA& a, MatrixAF& af, VectorIPIV& ipiv,
13        char& equed, VectorR& r, VectorC& c, MatrixB& b, MatrixX& x, Scalar >,
14        VectorFERR& ferr, VectorBERR& berr );
15``
16
17
18[heading Description]
19
20`gesvx` (short for $FRIENDLY_NAME) provides a C++
21interface to LAPACK routines SGESVX, DGESVX, CGESVX, and ZGESVX.
22`gesvx` uses the LU factorization to compute the solution to a complex
23system of linear equations
24A * X = B,
25where A is an N-by-N matrix and X and B are N-by-NRHS matrices.
26
27Error bounds on the solution and a condition estimate are also
28provided.
29
30Description
31===========
32
33The following steps are performed:
34
351. If FACT = 'E', real scaling factors are computed to equilibrate
36the system:
37TRANS = 'N': diag(R)*A*diag(C) *inv(diag(C))*X = diag(R)*B
38TRANS = 'T': (diag(R)*A*diag(C))**T *inv(diag(R))*X = diag(C)*B
39TRANS = 'C': (diag(R)*A*diag(C))**H *inv(diag(R))*X = diag(C)*B
40Whether or not the system will be equilibrated depends on the
41scaling of the matrix A, but if equilibration is used, A is
42overwritten by diag(R)*A*diag(C) and B by diag(R)*B (if TRANS='N')
43or diag(C)*B (if TRANS = 'T' or 'C').
44
452. If FACT = 'N' or 'E', the LU decomposition is used to factor the
46matrix A (after equilibration if FACT = 'E') as
47A = P * L * U,
48where P is a permutation matrix, L is a unit lower triangular
49matrix, and U is upper triangular.
50
513. If some U(i,i)=0, so that U is exactly singular, then the routine
52returns with INFO = i. Otherwise, the factored form of A is used
53to estimate the condition number of the matrix A. If the
54reciprocal of the condition number is less than machine precision,
55INFO = N+1 is returned as a warning, but the routine still goes on
56to solve for X and compute error bounds as described below.
57
584. The system of equations is solved for X using the factored form
59of A.
60
615. Iterative refinement is applied to improve the computed solution
62matrix and calculate error bounds and backward error estimates
63for it.
64
656. If equilibration was used, the matrix X is premultiplied by
66diag(C) (if TRANS = 'N') or diag(R) (if TRANS = 'T' or 'C') so
67that it solves the original system before equilibration.
68
69The selection of the LAPACK routine is done during compile-time,
70and is determined by the type of values contained in type `MatrixA`.
71The type of values is obtained through the `value_type` meta-function
72 `typename value_type<MatrixA>::type`.
73The dispatching table below illustrates to which specific routine
74the code path will be generated.
75
76[table Dispatching of gesvx
77[  [ Value type of MatrixA ] [LAPACK routine] ]
78[  [`float`][SGESVX] ]
79[  [`double`][DGESVX] ]
80[  [`complex<float>`][CGESVX] ]
81[  [`complex<double>`][ZGESVX] ]
82
83]
84
85
86[heading Definition]
87Defined in header [headerref boost/numeric/bindings/lapack/driver/gesvx.hpp].
88
89
90[heading Parameters or Requirements on Types]
91
92[variablelist Parameters
93    [[MatrixA] [The definition of term 1]]
94    [[MatrixB] [The definition of term 2]]
95    [[MatrixC] [
96    The definition of term 3.
97
98    Definitions may contain paragraphs.
99    ]]
100]
101
102
103[heading Complexity]
104
105
106[heading Example]
107``
108#include <boost/numeric/bindings/lapack/driver/gesvx.hpp>
109using namespace boost::numeric::bindings;
110
111lapack::gesvx( x, y, z );
112
113``
114
115this will output
116
117``
118[5] 0 1 2 3 4 5
119``
120
121
122
123[heading Notes]
124
125
126[heading See Also]
127
128* Originating Fortran source files [@http://www.netlib.org/lapack/single/sgesvx.f sgesvx.f], [@http://www.netlib.org/lapack/double/dgesvx.f dgesvx.f], [@http://www.netlib.org/lapack/complex/cgesvx.f cgesvx.f], and [@http://www.netlib.org/lapack/complex16/zgesvx.f zgesvx.f] at Netlib.
129
130[endsect]
131