WPILibC++ 2024.3.2
|
Functions | |
template<typename MatrixType , typename ResultType > | |
void | matrix_sqrt_quasi_triangular_2x2_diagonal_block (const MatrixType &T, Index i, ResultType &sqrtT) |
template<typename MatrixType , typename ResultType > | |
void | matrix_sqrt_quasi_triangular_1x1_off_diagonal_block (const MatrixType &T, Index i, Index j, ResultType &sqrtT) |
template<typename MatrixType , typename ResultType > | |
void | matrix_sqrt_quasi_triangular_1x2_off_diagonal_block (const MatrixType &T, Index i, Index j, ResultType &sqrtT) |
template<typename MatrixType , typename ResultType > | |
void | matrix_sqrt_quasi_triangular_2x1_off_diagonal_block (const MatrixType &T, Index i, Index j, ResultType &sqrtT) |
template<typename MatrixType > | |
void | matrix_sqrt_quasi_triangular_solve_auxiliary_equation (MatrixType &X, const MatrixType &A, const MatrixType &B, const MatrixType &C) |
template<typename MatrixType , typename ResultType > | |
void | matrix_sqrt_quasi_triangular_2x2_off_diagonal_block (const MatrixType &T, Index i, Index j, ResultType &sqrtT) |
template<typename MatrixType , typename ResultType > | |
void | matrix_sqrt_quasi_triangular_diagonal (const MatrixType &T, ResultType &sqrtT) |
template<typename MatrixType , typename ResultType > | |
void | matrix_sqrt_quasi_triangular_off_diagonal (const MatrixType &T, ResultType &sqrtT) |
template<typename MatrixType > | |
void | matrix_log_compute_2x2 (const MatrixType &A, MatrixType &result) |
Compute logarithm of 2x2 triangular matrix. More... | |
int | matrix_log_get_pade_degree (float normTminusI) |
int | matrix_log_get_pade_degree (double normTminusI) |
int | matrix_log_get_pade_degree (long double normTminusI) |
template<typename MatrixType > | |
void | matrix_log_compute_pade (MatrixType &result, const MatrixType &T, int degree) |
template<typename MatrixType > | |
void | matrix_log_compute_big (const MatrixType &A, MatrixType &result) |
Compute logarithm of triangular matrices with size > 2. More... | |
template<typename MatrixType > | |
NumTraits< typenameMatrixType::Scalar >::Real | matrix_function_compute_mu (const MatrixType &A) |
template<typename Index , typename ListOfClusters > | |
ListOfClusters::iterator | matrix_function_find_cluster (Index key, ListOfClusters &clusters) |
Find cluster in clusters containing some value. More... | |
template<typename EivalsType , typename Cluster > | |
void | matrix_function_partition_eigenvalues (const EivalsType &eivals, std::list< Cluster > &clusters) |
Partition eigenvalues in clusters of ei'vals close to each other. More... | |
template<typename ListOfClusters , typename Index > | |
void | matrix_function_compute_cluster_size (const ListOfClusters &clusters, Matrix< Index, Dynamic, 1 > &clusterSize) |
Compute size of each cluster given a partitioning. More... | |
template<typename VectorType > | |
void | matrix_function_compute_block_start (const VectorType &clusterSize, VectorType &blockStart) |
Compute start of each block using clusterSize. More... | |
template<typename EivalsType , typename ListOfClusters , typename VectorType > | |
void | matrix_function_compute_map (const EivalsType &eivals, const ListOfClusters &clusters, VectorType &eivalToCluster) |
Compute mapping of eigenvalue indices to cluster indices. More... | |
template<typename DynVectorType , typename VectorType > | |
void | matrix_function_compute_permutation (const DynVectorType &blockStart, const DynVectorType &eivalToCluster, VectorType &permutation) |
Compute permutation which groups ei'vals in same cluster together. More... | |
template<typename VectorType , typename MatrixType > | |
void | matrix_function_permute_schur (VectorType &permutation, MatrixType &U, MatrixType &T) |
Permute Schur decomposition in U and T according to permutation. More... | |
template<typename MatrixType , typename AtomicType , typename VectorType > | |
void | matrix_function_compute_block_atomic (const MatrixType &T, AtomicType &atomic, const VectorType &blockStart, const VectorType &clusterSize, MatrixType &fT) |
Compute block diagonal part of matrix function. More... | |
template<typename MatrixType > | |
MatrixType | matrix_function_solve_triangular_sylvester (const MatrixType &A, const MatrixType &B, const MatrixType &C) |
Solve a triangular Sylvester equation AX + XB = C. More... | |
template<typename MatrixType , typename VectorType > | |
void | matrix_function_compute_above_diagonal (const MatrixType &T, const VectorType &blockStart, const VectorType &clusterSize, MatrixType &fT) |
Compute part of matrix function above block diagonal. More... | |
template<typename Scalar > | |
Scalar | stem_function_exp (Scalar x, int) |
The exponential function (and its derivatives). More... | |
template<typename Scalar > | |
Scalar | stem_function_cos (Scalar x, int n) |
Cosine (and its derivatives). More... | |
template<typename Scalar > | |
Scalar | stem_function_sin (Scalar x, int n) |
Sine (and its derivatives). More... | |
template<typename Scalar > | |
Scalar | stem_function_cosh (Scalar x, int n) |
Hyperbolic cosine (and its derivatives). More... | |
template<typename Scalar > | |
Scalar | stem_function_sinh (Scalar x, int n) |
Hyperbolic sine (and its derivatives). More... | |
template<typename MatA , typename MatU , typename MatV > | |
void | matrix_exp_pade3 (const MatA &A, MatU &U, MatV &V) |
Compute the (3,3)-Padé approximant to the exponential. More... | |
template<typename MatA , typename MatU , typename MatV > | |
void | matrix_exp_pade5 (const MatA &A, MatU &U, MatV &V) |
Compute the (5,5)-Padé approximant to the exponential. More... | |
template<typename MatA , typename MatU , typename MatV > | |
void | matrix_exp_pade7 (const MatA &A, MatU &U, MatV &V) |
Compute the (7,7)-Padé approximant to the exponential. More... | |
template<typename MatA , typename MatU , typename MatV > | |
void | matrix_exp_pade9 (const MatA &A, MatU &U, MatV &V) |
Compute the (9,9)-Padé approximant to the exponential. More... | |
template<typename MatA , typename MatU , typename MatV > | |
void | matrix_exp_pade13 (const MatA &A, MatU &U, MatV &V) |
Compute the (13,13)-Padé approximant to the exponential. More... | |
template<typename ArgType , typename ResultType > | |
void | matrix_exp_compute (const ArgType &arg, ResultType &result, true_type) |
template<typename ArgType , typename ResultType > | |
void | matrix_exp_compute (const ArgType &arg, ResultType &result, false_type) |
Variables | |
static const float | matrix_function_separation = 0.1f |
Maximum distance allowed between eigenvalues to be considered "close". More... | |
void Eigen::internal::matrix_exp_compute | ( | const ArgType & | arg, |
ResultType & | result, | ||
false_type | |||
) |
void Eigen::internal::matrix_exp_compute | ( | const ArgType & | arg, |
ResultType & | result, | ||
true_type | |||
) |
void Eigen::internal::matrix_exp_pade13 | ( | const MatA & | A, |
MatU & | U, | ||
MatV & | V | ||
) |
Compute the (13,13)-Padé approximant to the exponential.
After exit, \( (V+U)(V-U)^{-1} \) is the Padé approximant of \( \exp(A) \) around \( A = 0 \).
void Eigen::internal::matrix_exp_pade3 | ( | const MatA & | A, |
MatU & | U, | ||
MatV & | V | ||
) |
Compute the (3,3)-Padé approximant to the exponential.
After exit, \( (V+U)(V-U)^{-1} \) is the Padé approximant of \( \exp(A) \) around \( A = 0 \).
void Eigen::internal::matrix_exp_pade5 | ( | const MatA & | A, |
MatU & | U, | ||
MatV & | V | ||
) |
Compute the (5,5)-Padé approximant to the exponential.
After exit, \( (V+U)(V-U)^{-1} \) is the Padé approximant of \( \exp(A) \) around \( A = 0 \).
void Eigen::internal::matrix_exp_pade7 | ( | const MatA & | A, |
MatU & | U, | ||
MatV & | V | ||
) |
Compute the (7,7)-Padé approximant to the exponential.
After exit, \( (V+U)(V-U)^{-1} \) is the Padé approximant of \( \exp(A) \) around \( A = 0 \).
void Eigen::internal::matrix_exp_pade9 | ( | const MatA & | A, |
MatU & | U, | ||
MatV & | V | ||
) |
Compute the (9,9)-Padé approximant to the exponential.
After exit, \( (V+U)(V-U)^{-1} \) is the Padé approximant of \( \exp(A) \) around \( A = 0 \).
void Eigen::internal::matrix_function_compute_above_diagonal | ( | const MatrixType & | T, |
const VectorType & | blockStart, | ||
const VectorType & | clusterSize, | ||
MatrixType & | fT | ||
) |
Compute part of matrix function above block diagonal.
This routine completes the computation of fT
, denoting a matrix function applied to the triangular matrix T
. It assumes that the block diagonal part of fT
has already been computed. The part below the diagonal is zero, because T
is upper triangular.
void Eigen::internal::matrix_function_compute_block_atomic | ( | const MatrixType & | T, |
AtomicType & | atomic, | ||
const VectorType & | blockStart, | ||
const VectorType & | clusterSize, | ||
MatrixType & | fT | ||
) |
Compute block diagonal part of matrix function.
This routine computes the matrix function applied to the block diagonal part of T
(which should be upper triangular), with the blocking given by blockStart
and clusterSize
. The matrix function of each diagonal block is computed by atomic
. The off-diagonal parts of fT
are set to zero.
void Eigen::internal::matrix_function_compute_block_start | ( | const VectorType & | clusterSize, |
VectorType & | blockStart | ||
) |
Compute start of each block using clusterSize.
void Eigen::internal::matrix_function_compute_cluster_size | ( | const ListOfClusters & | clusters, |
Matrix< Index, Dynamic, 1 > & | clusterSize | ||
) |
Compute size of each cluster given a partitioning.
void Eigen::internal::matrix_function_compute_map | ( | const EivalsType & | eivals, |
const ListOfClusters & | clusters, | ||
VectorType & | eivalToCluster | ||
) |
Compute mapping of eigenvalue indices to cluster indices.
NumTraits< typenameMatrixType::Scalar >::Real Eigen::internal::matrix_function_compute_mu | ( | const MatrixType & | A | ) |
void Eigen::internal::matrix_function_compute_permutation | ( | const DynVectorType & | blockStart, |
const DynVectorType & | eivalToCluster, | ||
VectorType & | permutation | ||
) |
Compute permutation which groups ei'vals in same cluster together.
ListOfClusters::iterator Eigen::internal::matrix_function_find_cluster | ( | Index | key, |
ListOfClusters & | clusters | ||
) |
Find cluster in clusters
containing some value.
[in] | key | Value to find |
key
, or clusters.end()
if no cluster in m_clusters
contains key
. void Eigen::internal::matrix_function_partition_eigenvalues | ( | const EivalsType & | eivals, |
std::list< Cluster > & | clusters | ||
) |
Partition eigenvalues in clusters of ei'vals close to each other.
[in] | eivals | Eigenvalues |
[out] | clusters | Resulting partition of eigenvalues |
The partition satisfies the following two properties:
in the same cluster.
The implementation follows Algorithm 4.1 in the paper of Davies and Higham.
void Eigen::internal::matrix_function_permute_schur | ( | VectorType & | permutation, |
MatrixType & | U, | ||
MatrixType & | T | ||
) |
Permute Schur decomposition in U and T according to permutation.
MatrixType Eigen::internal::matrix_function_solve_triangular_sylvester | ( | const MatrixType & | A, |
const MatrixType & | B, | ||
const MatrixType & | C | ||
) |
Solve a triangular Sylvester equation AX + XB = C.
[in] | A | the matrix A; should be square and upper triangular |
[in] | B | the matrix B; should be square and upper triangular |
[in] | C | the matrix C; should have correct size. |
If A is m-by-m and B is n-by-n, then both C and X are m-by-n. The (i,j)-th component of the Sylvester equation is
\[ \sum_{k=i}^m A_{ik} X_{kj} + \sum_{k=1}^j X_{ik} B_{kj} = C_{ij}. \]
This can be re-arranged to yield:
\[ X_{ij} = \frac{1}{A_{ii} + B_{jj}} \Bigl( C_{ij} - \sum_{k=i+1}^m A_{ik} X_{kj} - \sum_{k=1}^{j-1} X_{ik} B_{kj} \Bigr). \]
It is assumed that A and B are such that the numerator is never zero (otherwise the Sylvester equation does not have a unique solution). In that case, these equations can be evaluated in the order \( i=m,\ldots,1 \) and \( j=1,\ldots,n \).
void Eigen::internal::matrix_log_compute_2x2 | ( | const MatrixType & | A, |
MatrixType & | result | ||
) |
Compute logarithm of 2x2 triangular matrix.
void Eigen::internal::matrix_log_compute_big | ( | const MatrixType & | A, |
MatrixType & | result | ||
) |
Compute logarithm of triangular matrices with size > 2.
This uses a inverse scale-and-square algorithm.
void Eigen::internal::matrix_log_compute_pade | ( | MatrixType & | result, |
const MatrixType & | T, | ||
int | degree | ||
) |
|
inline |
|
inline |
|
inline |
void Eigen::internal::matrix_sqrt_quasi_triangular_1x1_off_diagonal_block | ( | const MatrixType & | T, |
Index | i, | ||
Index | j, | ||
ResultType & | sqrtT | ||
) |
void Eigen::internal::matrix_sqrt_quasi_triangular_1x2_off_diagonal_block | ( | const MatrixType & | T, |
Index | i, | ||
Index | j, | ||
ResultType & | sqrtT | ||
) |
void Eigen::internal::matrix_sqrt_quasi_triangular_2x1_off_diagonal_block | ( | const MatrixType & | T, |
Index | i, | ||
Index | j, | ||
ResultType & | sqrtT | ||
) |
void Eigen::internal::matrix_sqrt_quasi_triangular_2x2_diagonal_block | ( | const MatrixType & | T, |
Index | i, | ||
ResultType & | sqrtT | ||
) |
void Eigen::internal::matrix_sqrt_quasi_triangular_2x2_off_diagonal_block | ( | const MatrixType & | T, |
Index | i, | ||
Index | j, | ||
ResultType & | sqrtT | ||
) |
void Eigen::internal::matrix_sqrt_quasi_triangular_diagonal | ( | const MatrixType & | T, |
ResultType & | sqrtT | ||
) |
void Eigen::internal::matrix_sqrt_quasi_triangular_off_diagonal | ( | const MatrixType & | T, |
ResultType & | sqrtT | ||
) |
void Eigen::internal::matrix_sqrt_quasi_triangular_solve_auxiliary_equation | ( | MatrixType & | X, |
const MatrixType & | A, | ||
const MatrixType & | B, | ||
const MatrixType & | C | ||
) |
Scalar Eigen::internal::stem_function_cos | ( | Scalar | x, |
int | n | ||
) |
Cosine (and its derivatives).
Scalar Eigen::internal::stem_function_cosh | ( | Scalar | x, |
int | n | ||
) |
Hyperbolic cosine (and its derivatives).
Scalar Eigen::internal::stem_function_exp | ( | Scalar | x, |
int | |||
) |
The exponential function (and its derivatives).
Scalar Eigen::internal::stem_function_sin | ( | Scalar | x, |
int | n | ||
) |
Sine (and its derivatives).
Scalar Eigen::internal::stem_function_sinh | ( | Scalar | x, |
int | n | ||
) |
Hyperbolic sine (and its derivatives).
|
static |
Maximum distance allowed between eigenvalues to be considered "close".