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