When I multiply two matrices and index into the product (without saving it to a matrix variable) I get a segmentation fault. The following program reproduces the problem for me. Note it seems to be some sort of infinite recursion. #include <Eigen/Dense> int main() { Eigen::MatrixXd A (1, 3); A << 1, 2, 3; Eigen::MatrixXd B (3, 1); B << 4, 5, 6; double p = (A * B)(0, 0); return 0; } I am using x86-64 Linux and GCC 4.6.2 with Eigen 3.0.5.
Thanks for the report. This is indeed an infinite recursion in ProductBase::coeff(), triggered by a product of dynamic-size matrices. Note that you can only index into a product if the result has size 1-by-1. This bug has been bresent for a while. One possible fix is to restrict indexing for *fixed-size* products of size 1-by-1. But this gives a difference between fixed and dynamic size which seems unnecessary. I implemented another fix and added a regression test (changeset 2bba8cc484ad for Eigen 3.0 and 0c2dd64f0b25 for Eigen 3.1)
Thanks Jitse for fixing it. To Bowie, since you know that A and B are vectors, you should really use vectors: huge speed up expected.
-- GitLab Migration Automatic Message -- This bug has been migrated to gitlab.com's GitLab instance and has been closed from further activity. You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.com/libeigen/eigen/issues/447.