Summary: | Matrix product with triangularView does not compile | ||
---|---|---|---|
Product: | Eigen | Reporter: | Sebastian Birk <birk> |
Component: | Core - matrix products | Assignee: | Nobody <eigen.nobody> |
Status: | CONFIRMED --- | ||
Severity: | Optimization | CC: | birk, chtz, gael.guennebaud |
Priority: | Normal | ||
Version: | unspecified | ||
Hardware: | x86 - 64-bit | ||
OS: | Linux | ||
Whiteboard: | |||
Bug Depends on: | |||
Bug Blocks: | 1608 |
Description
Sebastian Birk
2014-09-22 15:33:41 UTC
Actually, I did not known that A.triangularView<Eigen::Upper>() = B*C.triangularView<Eigen::Upper>(); compiled previously as this combination is not supported. It occurs that previously this expression was (wrongly) interpreted as: A.triangularView<Eigen::Upper>() = B*C; and therefore, you get the right results only if the strictly lower part of C is set to zero. As a quick fix, I'll make this expression compile as: A.triangularView<Eigen::Upper>() = (B*C.triangularView<Eigen::Upper>()).eval(); in both the 3.2 and default branch. Of course, it is planed to fully support all combination in a near future. Workarounds: https://bitbucket.org/eigen/eigen/commits/0477645da8b6/ Changeset: 0477645da8b6 User: ggael Date: 2014-09-22 15:34:17+00:00 Summary: Bug 879: fix compilation of tri1=mat*tri2 by copying tri2 into a full temporary. https://bitbucket.org/eigen/eigen/commits/7a3f434088a7/ Changeset: 7a3f434088a7 Branch: 3.2 User: ggael Date: 2014-09-22 15:20:42+00:00 Summary: Bug 879: tri1 = mat * tri2 was compiling and running incorrectly if tri2 was not numerically triangular. Workaround the issue by evaluating mat*tri2 into a temporary. I do not close this bug because: 1) there is no proper unit tests. (required for 3.3) 2) we should fully support such combinations to get the missing second x2 speedup. Added a unit test: https://bitbucket.org/eigen/eigen/commits/b3cbade96607/ Good enough for 3.3 -- 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/879. |