[eigen] mixed-precision Cholesky?

[ Thread Index | Date Index | More lists.tuxfamily.org/eigen Archives ]


Hi,

   I have situation where, due to memory pressure, I need to store a symmetric 
matrix as real-values but it must solve a complex RHS for a complex solution 
vector. Currently I am storing the matrix as complex-type so that llt() and 
ldlt() can be called without compilation errors but is the above situation 
realizable in Eigen?

  When invoking 
real_matrix.selfadjointView<Lower>().ldlt().solveInPlace(complex_vector)

  I get a gcc 4.2.4 error saying:

no matching function for call 
to ‘ei_cache_friendly_product_colmajor_times_vector(Eigen::DenseIndex&, 
double*, Eigen::DenseIndex, 
Eigen::VectorBlock<Eigen::Matrix<std::complex<double>, 33331, 1, 0, 33331, 
1>, 33331>, std::complex<double>*, std::complex<double>)’


no matching function for call 
to ‘ei_cache_friendly_product_rowmajor_times_vector(double*, 
Eigen::DenseIndex, std::complex<double>*, Eigen::DenseIndex&, 
Eigen::VectorBlock<Eigen::Matrix<std::complex<double>, 33331, 1, 0, 33331, 
1>, 33331>&, std::complex<double>)’



   Would it make sense to introduce a cast<> on LLT and LDLT so that such a 
mixed-precision operation becomes possible?

thanks,
Manoj



Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/