template<typename Scalar_>
class Eigen::CauchyLU< Scalar_ >
Partially pivoted O(n^2) LU solver for square Cauchy systems (Gohberg-Kailath-Olshevsky).
A Cauchy matrix satisfies the displacement equation \( D_x C - C D_y = \mathbf{1}\mathbf{1}^T \), and – crucially – this structure survives row permutations. The GKO algorithm exploits it to compute the row-pivoted factorization P*C = L*U in O(n^2) operations: at each step the current column of the Schur complement is generated from O(n) data, the largest entry is chosen as pivot, and the Schur complement stays Cauchy-like with updated generators. This gives Cauchy systems what the Levinson world lacks: genuine partial pivoting at fast-algorithm cost.
Usage follows the usual decomposition style, including the transposed and adjoint solves of SolverBase (from the same factorization):
CauchyLU()
Definition Cauchy.h:337
Matrix< double, Dynamic, 1 > VectorXd
The factors are stored densely (O(n^2) memory, like the dense LU decompositions).
References: I. Gohberg, T. Kailath, V. Olshevsky, "Fast Gaussian elimination
with partial pivoting for matrices with displacement structure," Math. Comp. 64 (1995).
- Template Parameters
-
| Scalar_ | the scalar type, real or complex. |
- See also
- class Cauchy
template<typename Scalar_>
template<int Rows_, int Cols_>
Factorizes the square Cauchy matrix C as P*C = L*U by the GKO recursion with partial pivoting. The Schur complement retains the form
\[ S_{ij}=\frac{a_i b_j}{x_i-y_j}, \qquad
a_i\leftarrow a_i\frac{x_i-x_k}{x_i-y_k},\quad
b_j\leftarrow b_j\frac{y_j-y_k}{y_j-x_k}. \]
This follows from the rank-one displacement \(D_x C-C D_y=\mathbf{1}\mathbf{1}^T\).
- See also
- solve