Class xlifepp::HelperTraits#

template<class ScalarType>
class HelperTraits#

Collaboration diagram for xlifepp::HelperTraits:

digraph { graph [bgcolor="#00000000"] node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2] edge [color="#1414CE"] "1" [label="xlifepp::HelperTraits< ScalarType >" tooltip="xlifepp::HelperTraits< ScalarType >" fillcolor="#BFBFBF"] }

Class which defines basic traits for working with different scalar types.

An adapter for this traits class must exist for the ScalarType. If not, this class will produce a compile-time error.

Public Static Functions

static void computeRitzResiduals(const std::vector<typename NumTraits<ScalarType>::magnitudeType> &iRV, const MatrixEigenDense<ScalarType> &S, std::vector<typename NumTraits<ScalarType>::magnitudeType> *RR)#

Helper function for correctly computing the Ritz residuals of the projected eigenproblem.

This allows us to use template specialization to ensure the Ritz residuals are correct.

static void scaleRitzVectors(const std::vector<typename NumTraits<ScalarType>::magnitudeType> &iRV, MatrixEigenDense<ScalarType> *S)#

Helper function for correctly scaling the eigenvectors of the projected eigenproblem.

This allows us to use template specialization to compute the right scaling so the Ritz residuals are correct.

static void sortRitzValueEigenSolvers(const std::vector<typename NumTraits<ScalarType>::magnitudeType> &rRV, const std::vector<typename NumTraits<ScalarType>::magnitudeType> &iRV, std::vector<ValueEigenSolver<ScalarType>> *RV, std::vector<int> *RO, std::vector<int> *RI)#

Helper function for correctly storing the Ritz values when the eigenproblem is non-Hermitian.

This allows us to use template specialization to compute the right index vector and correctly handle complex-conjugate pairs.