LP-311 Remove basic/advanced stabilization tab auto-switch (autotune/txpid lock issues)
[librepilot.git] / ground / gcs / src / libs / eigen / Eigen / OrderingMethods
blob7c0f1fffff655b49d7b368f4720ae84a2c56ecdc
1 #ifndef EIGEN_ORDERINGMETHODS_MODULE_H
2 #define EIGEN_ORDERINGMETHODS_MODULE_H
4 #include "SparseCore"
6 #include "src/Core/util/DisableStupidWarnings.h"
8 /** 
9   * \defgroup OrderingMethods_Module OrderingMethods module
10   *
11   * This module is currently for internal use only
12   * 
13   * It defines various built-in and external ordering methods for sparse matrices. 
14   * They are typically used to reduce the number of elements during 
15   * the sparse matrix decomposition (LLT, LU, QR).
16   * Precisely, in a preprocessing step, a permutation matrix P is computed using 
17   * those ordering methods and applied to the columns of the matrix. 
18   * Using for instance the sparse Cholesky decomposition, it is expected that 
19   * the nonzeros elements in LLT(A*P) will be much smaller than that in LLT(A).
20   * 
21   * 
22   * Usage : 
23   * \code
24   * #include <Eigen/OrderingMethods>
25   * \endcode
26   * 
27   * A simple usage is as a template parameter in the sparse decomposition classes : 
28   * 
29   * \code 
30   * SparseLU<MatrixType, COLAMDOrdering<int> > solver;
31   * \endcode 
32   * 
33   * \code 
34   * SparseQR<MatrixType, COLAMDOrdering<int> > solver;
35   * \endcode
36   * 
37   * It is possible as well to call directly a particular ordering method for your own purpose, 
38   * \code 
39   * AMDOrdering<int> ordering;
40   * PermutationMatrix<Dynamic, Dynamic, int> perm;
41   * SparseMatrix<double> A; 
42   * //Fill the matrix ...
43   * 
44   * ordering(A, perm); // Call AMD
45   * \endcode
46   * 
47   * \note Some of these methods (like AMD or METIS), need the sparsity pattern 
48   * of the input matrix to be symmetric. When the matrix is structurally unsymmetric, 
49   * Eigen computes internally the pattern of \f$A^T*A\f$ before calling the method.
50   * If your matrix is already symmetric (at leat in structure), you can avoid that
51   * by calling the method with a SelfAdjointView type.
52   * 
53   * \code
54   *  // Call the ordering on the pattern of the lower triangular matrix A
55   * ordering(A.selfadjointView<Lower>(), perm);
56   * \endcode
57   */
59 #ifndef EIGEN_MPL2_ONLY
60 #include "src/OrderingMethods/Amd.h"
61 #endif
63 #include "src/OrderingMethods/Ordering.h"
64 #include "src/Core/util/ReenableStupidWarnings.h"
66 #endif // EIGEN_ORDERINGMETHODS_MODULE_H