I have a question I’m having trouble answering regarding Eigen. I would like to compute the eigen values of a matrix at compile time. My matrix sizes and values are known in advance. I don’t have much experience with Eigen so I’m not sure if this is possible. I know that Eigen doesn’t leverage any constexpr
functions, but it does leverage template meta-programming to construct expression templates.
Is it possible to either:
- wrap some facilities of Eigen in
constexpr
functions to achieve what I want - use template meta-programming to achieve the same thing
I’ve poked around google some and haven’t found anything which sufficiently answers my question.
I threw together a dumb example which obviously doesn’t do what I want it to. The function itself is still called at run-time.
Thanks!
#include <iostream>
#include "../eigen/Eigen/Dense"
template<typename T, size_t S>
constexpr Eigen::VectorXcd test()
{
Eigen::Matrix<T,S,S> a = (Eigen::Matrix<double,S,S>() << 1, 2, 3.4, 5.4).finished();
auto s = a.eigenvalues();
return s;
};
int main()
{
static const Eigen::VectorXcd s {test<double,2>()};
std::cout << s << std::endl;
}
Source: Windows Questions C++