[eigen] We need help on issue #91 from MSVC 2010 users

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


Hi,

I encountered the problem which you can see in the compiler output
being attached to bug #91. See also here:
http://eigen.tuxfamily.org/bz/show_bug.cgi?id=91

This bug occurs in the 'inverse' unit test under Visual Studio 2010
and it occurs only when "split tests" is not defined.

The code that triggers the bug is the following product from Inverse.h line 147:

const Matrix<typename ResultType::Scalar,3,1>& cofactors_col0;
const typename ResultType::Scalar& invdet;
ResultType& result;

result.row(0) = cofactors_col0 * invdet;

where ResultType = Eigen::Matrix<float,3,3>.

What happens:
- for some reasone matrix_type_times_scalar_type (belongs to the
Householder code) is instantiated
- it is instantiated with different float types which cannot be explained

Bisecting does not work. The bug seems to appear since we moved to the
internal namespace and unfortunately there are some inconsistent
commits which don't compile and thus prevent a bisection.

Rewriting the product above as

result.row(0) = cofactors_col0.operator*(invdet);

fixes the compilation locally but triggers the same error on the next
Matrix*Scalar product in BlockHouseholder line 47.

We should try hard to fix this for beta 3 but up to now, I've found no
 way to tackle the issue. Casting e.g. does not help and I was not yet
able to write a minimal example that reproduces the issue.

Any help or ideas are highly appreciated.

Regards,
Hauke



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