Re: [eigen] 3.3-alpha1 released!

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


Hi Gael,

The following code does not compile using Visual Studio 2015 and the
current tip (2a591c7d6739 at the moment of writing):

#include <Eigen/Core>
#include <Eigen/Geometry>
#include <Eigen/LU>

int main()
{
    Eigen::Matrix4d::Identity().lu()
       .solve(Eigen::Vector3d::Ones().homogeneous()).hnormalized();
}

The error output follows.

Best,
Sergiu

D:\Projects\eigen>cl -I . test.cpp /EHsc
Microsoft (R) C/C++ Optimizing Compiler Version 19.00.23026 for x86
Copyright (C) Microsoft Corporation.  All rights reserved.

test.cpp
d:\projects\eigen\eigen\src/Core/ProductEvaluators.h(899): error C2027:
use of undefined type
'Eigen::internal::permutation_matrix_product<Rhs,1,false,MatrixShape>'
        with
        [

Rhs=Eigen::Homogeneous<Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<double>,Eigen::Matrix<double,3,1,0,3,1>>,0>,

MatrixShape=Eigen::internal::evaluator_traits<Eigen::Homogeneous<Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<double>,Eigen::Matrix<double,3,1,0,3,1>>,0>>::Shape
        ]
d:\projects\eigen\eigen\src/Core/ProductEvaluators.h(138): note: see
reference to function template instantiation 'void
Eigen::internal::generic_product_impl<Lhs,Rhs,Eigen::PermutationShape,Eigen::internal::evaluator_traits<Rhs>::Shape,3>::evalTo<DstXprType>(Dest
&,const Lhs &,const Rhs &)' being compiled
        with
        [
            Lhs=Eigen::PermutationMatrix<4,4,int>,

Rhs=Eigen::Homogeneous<Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<double>,Eigen::Matrix<double,3,1,0,3,1>>,0>,
            DstXprType=ActualDstTypeCleaned,
            Dest=ActualDstTypeCleaned
        ]
d:\projects\eigen\eigen\src/Core/ProductEvaluators.h(138): note: see
reference to function template instantiation 'void
Eigen::internal::generic_product_impl<Lhs,Rhs,Eigen::PermutationShape,Eigen::internal::evaluator_traits<Rhs>::Shape,3>::evalTo<DstXprType>(Dest
&,const Lhs &,const Rhs &)' being compiled
        with
        [
            Lhs=Eigen::PermutationMatrix<4,4,int>,

Rhs=Eigen::Homogeneous<Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<double>,Eigen::Matrix<double,3,1,0,3,1>>,0>,
            DstXprType=ActualDstTypeCleaned,
            Dest=ActualDstTypeCleaned
        ]
d:\projects\eigen\eigen\src/Core/ProductEvaluators.h(136): note: while
compiling class template member function 'void
Eigen::internal::Assignment<ActualDstTypeCleaned,Src,Func,Eigen::internal::AssignmentKind<Eigen::DenseShape,Eigen::DenseShape>::Kind,double>::run(DstXprType
&,const
Eigen::Product<Eigen::PermutationMatrix<4,4,int>,Eigen::Homogeneous<Derived,0>,2>
&,const Eigen::internal::assign_op<double> &)'
        with
        [

Src=Eigen::Product<Eigen::PermutationMatrix<4,4,int>,Eigen::Homogeneous<Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<double>,Eigen::Matrix<double,3,1,0,3,1>>,0>,2>,
            Func=Eigen::internal::assign_op<double>,
            DstXprType=ActualDstTypeCleaned,

Derived=Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<double>,Eigen::Matrix<double,3,1,0,3,1>>
        ]
d:\projects\eigen\eigen\src/Core/AssignEvaluator.h(765): note: see
reference to function template instantiation 'void
Eigen::internal::Assignment<ActualDstTypeCleaned,Src,Func,Eigen::internal::AssignmentKind<Eigen::DenseShape,Eigen::DenseShape>::Kind,double>::run(DstXprType
&,const
Eigen::Product<Eigen::PermutationMatrix<4,4,int>,Eigen::Homogeneous<Derived,0>,2>
&,const Eigen::internal::assign_op<double> &)' being compiled
        with
        [

Src=Eigen::Product<Eigen::PermutationMatrix<4,4,int>,Eigen::Homogeneous<Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<double>,Eigen::Matrix<double,3,1,0,3,1>>,0>,2>,
            Func=Eigen::internal::assign_op<double>,
            DstXprType=ActualDstTypeCleaned,

Derived=Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<double>,Eigen::Matrix<double,3,1,0,3,1>>
        ]
d:\projects\eigen\eigen\src/Core/AssignEvaluator.h(765): note: see
reference to class template instantiation
'Eigen::internal::Assignment<ActualDstTypeCleaned,Src,Func,Eigen::internal::AssignmentKind<Eigen::DenseShape,Eigen::DenseShape>::Kind,double>'
being compiled
        with
        [

Src=Eigen::Product<Eigen::PermutationMatrix<4,4,int>,Eigen::Homogeneous<Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<double>,Eigen::Matrix<double,3,1,0,3,1>>,0>,2>,
            Func=Eigen::internal::assign_op<double>
        ]
d:\projects\eigen\eigen\src/Core/AssignEvaluator.h(718): note: see
reference to function template instantiation 'void
Eigen::internal::call_assignment_no_alias<Dst,Src,Func>(Dst &,const Src
&,const Func &)' being compiled
        with
        [
            Dst=Eigen::Matrix<double,4,1,0,4,1>,

Src=Eigen::Product<Eigen::PermutationMatrix<4,4,int>,Eigen::Homogeneous<Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<double>,Eigen::Matrix<double,3,1,0,3,1>>,0>,2>,
            Func=Eigen::internal::assign_op<double>
        ]
d:\projects\eigen\eigen\src/Core/AssignEvaluator.h(699): note: see
reference to function template instantiation 'void
Eigen::internal::call_assignment<Dst,Src,Eigen::internal::assign_op<double>>(Dst
&,const Src &,const Func &,void *)' being compiled
        with
        [
            Dst=Eigen::Matrix<double,4,1,0,4,1>,

Src=Eigen::Product<Eigen::PermutationMatrix<4,4,int>,Eigen::Homogeneous<Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<double>,Eigen::Matrix<double,3,1,0,3,1>>,0>,2>,
            Func=Eigen::internal::assign_op<double>
        ]
d:\projects\eigen\eigen\src/Core/PlainObjectBase.h(677): note: see
reference to function template instantiation 'void
Eigen::internal::call_assignment<Derived,Eigen::Product<Eigen::PermutationMatrix<4,4,int>,Eigen::Homogeneous<Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<double>,Eigen::Matrix<double,3,1,0,3,1>>,0>,2>>(Dst
&,const Src &)' being compiled
        with
        [
            Derived=Eigen::Matrix<double,4,1,0,4,1>,
            Dst=Eigen::Matrix<double,4,1,0,4,1>,

Src=Eigen::Product<Eigen::PermutationMatrix<4,4,int>,Eigen::Homogeneous<Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<double>,Eigen::Matrix<double,3,1,0,3,1>>,0>,2>
        ]
d:\projects\eigen\eigen\src/Core/Matrix.h(225): note: see reference to
function template instantiation 'Derived
&Eigen::PlainObjectBase<Derived>::_set<Eigen::Product<Eigen::PermutationMatrix<4,4,int>,Eigen::Homogeneous<Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<double>,Eigen::Matrix<double,3,1,0,3,1>>,0>,2>>(const
Eigen::DenseBase<Eigen::Product<Eigen::PermutationMatrix<4,4,int>,Eigen::Homogeneous<Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<double>,Eigen::Matrix<double,3,1,0,3,1>>,0>,2>>
&)' being compiled
        with
        [
            Derived=Eigen::Matrix<double,4,1,0,4,1>
        ]
d:\projects\eigen\eigen\src/Core/Matrix.h(225): note: see reference to
function template instantiation 'Derived
&Eigen::PlainObjectBase<Derived>::_set<Eigen::Product<Eigen::PermutationMatrix<4,4,int>,Eigen::Homogeneous<Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<double>,Eigen::Matrix<double,3,1,0,3,1>>,0>,2>>(const
Eigen::DenseBase<Eigen::Product<Eigen::PermutationMatrix<4,4,int>,Eigen::Homogeneous<Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<double>,Eigen::Matrix<double,3,1,0,3,1>>,0>,2>>
&)' being compiled
        with
        [
            Derived=Eigen::Matrix<double,4,1,0,4,1>
        ]
d:\projects\eigen\eigen\src/LU/PartialPivLU.h(203): note: see reference
to function template instantiation 'Eigen::Matrix<double,4,1,0,4,1>
&Eigen::Matrix<double,4,1,0,4,1>::operator =<Derived>(const
Eigen::DenseBase<Derived> &)' being compiled
        with
        [

Derived=Eigen::Product<Eigen::PermutationMatrix<4,4,int>,Eigen::Homogeneous<Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<double>,Eigen::Matrix<double,3,1,0,3,1>>,0>,2>
        ]
d:\projects\eigen\eigen\src/LU/PartialPivLU.h(203): note: see reference
to function template instantiation 'Eigen::Matrix<double,4,1,0,4,1>
&Eigen::Matrix<double,4,1,0,4,1>::operator =<Derived>(const
Eigen::DenseBase<Derived> &)' being compiled
        with
        [

Derived=Eigen::Product<Eigen::PermutationMatrix<4,4,int>,Eigen::Homogeneous<Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<double>,Eigen::Matrix<double,3,1,0,3,1>>,0>,2>
        ]
d:\projects\eigen\eigen\src/Core/Solve.h(126): note: see reference to
function template instantiation 'void
Eigen::PartialPivLU<Eigen::Matrix<double,4,4,0,4,4>>::_solve_impl<RhsType,Eigen::Matrix<double,4,1,0,4,1>>(const
RhsType &,DstType &) const' being compiled
        with
        [

RhsType=Eigen::Homogeneous<Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<double>,Eigen::Matrix<double,3,1,0,3,1>>,0>,
            DstType=Eigen::Matrix<double,4,1,0,4,1>
        ]
d:\projects\eigen\eigen\src/Core/Solve.h(126): note: see reference to
function template instantiation 'void
Eigen::PartialPivLU<Eigen::Matrix<double,4,4,0,4,4>>::_solve_impl<RhsType,Eigen::Matrix<double,4,1,0,4,1>>(const
RhsType &,DstType &) const' being compiled
        with
        [

RhsType=Eigen::Homogeneous<Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<double>,Eigen::Matrix<double,3,1,0,3,1>>,0>,
            DstType=Eigen::Matrix<double,4,1,0,4,1>
        ]
d:\projects\eigen\eigen\src/Core/Solve.h(122): note: while compiling
class template member function
'Eigen::internal::evaluator<Derived>::evaluator(const
Eigen::Solve<Eigen::PartialPivLU<Eigen::Matrix<double,4,4,0,4,4>>,Eigen::Homogeneous<Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<double>,Eigen::Matrix<double,3,1,0,3,1>>,0>>
&)'
        with
        [

Derived=Eigen::Solve<Eigen::PartialPivLU<Eigen::Matrix<double,4,4,0,4,4>>,Eigen::Homogeneous<Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<double>,Eigen::Matrix<double,3,1,0,3,1>>,0>>
        ]
d:\projects\eigen\eigen\src/Core/DenseCoeffsBase.h(142): note: see
reference to function template instantiation
'Eigen::internal::evaluator<Derived>::evaluator(const
Eigen::Solve<Eigen::PartialPivLU<Eigen::Matrix<double,4,4,0,4,4>>,Eigen::Homogeneous<Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<double>,Eigen::Matrix<double,3,1,0,3,1>>,0>>
&)' being compiled
        with
        [

Derived=Eigen::Solve<Eigen::PartialPivLU<Eigen::Matrix<double,4,4,0,4,4>>,Eigen::Homogeneous<Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<double>,Eigen::Matrix<double,3,1,0,3,1>>,0>>
        ]
d:\projects\eigen\eigen\src/Core/DenseCoeffsBase.h(142): note: see
reference to class template instantiation
'Eigen::internal::evaluator<Derived>' being compiled
        with
        [

Derived=Eigen::Solve<Eigen::PartialPivLU<Eigen::Matrix<double,4,4,0,4,4>>,Eigen::Homogeneous<Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<double>,Eigen::Matrix<double,3,1,0,3,1>>,0>>
        ]
d:\projects\eigen\eigen\src/Core/DenseCoeffsBase.h(140): note: while
compiling class template member function 'double
Eigen::DenseCoeffsBase<Derived,0>::coeff(Eigen::EigenBase<Derived>::Index)
const'
        with
        [

Derived=Eigen::Solve<Eigen::PartialPivLU<Eigen::Matrix<double,4,4,0,4,4>>,Eigen::Homogeneous<Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<double>,Eigen::Matrix<double,3,1,0,3,1>>,0>>
        ]
d:\projects\eigen\eigen\src/Geometry/Homogeneous.h(164): note: see
reference to function template instantiation 'double
Eigen::DenseCoeffsBase<Derived,0>::coeff(Eigen::EigenBase<Derived>::Index)
const' being compiled
        with
        [

Derived=Eigen::Solve<Eigen::PartialPivLU<Eigen::Matrix<double,4,4,0,4,4>>,Eigen::Homogeneous<Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<double>,Eigen::Matrix<double,3,1,0,3,1>>,0>>
        ]
d:\projects\eigen\eigen\src/Core/util/XprHelper.h(455): note: see
reference to class template instantiation
'Eigen::DenseCoeffsBase<Derived,0>' being compiled
        with
        [

Derived=Eigen::Solve<Eigen::PartialPivLU<Eigen::Matrix<double,4,4,0,4,4>>,Eigen::Homogeneous<Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<double>,Eigen::Matrix<double,3,1,0,3,1>>,0>>
        ]
d:\projects\eigen\eigen\src/Core/DenseBase.h(48): note: see reference to
class template instantiation
'Eigen::internal::special_scalar_op_base<Derived,double,double,false>'
being compiled
        with
        [

Derived=Eigen::Solve<Eigen::PartialPivLU<Eigen::Matrix<double,4,4,0,4,4>>,Eigen::Homogeneous<Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<double>,Eigen::Matrix<double,3,1,0,3,1>>,0>>
        ]
d:\projects\eigen\eigen\src/Core/MatrixBase.h(50): note: see reference
to class template instantiation 'Eigen::DenseBase<Derived>' being compiled
        with
        [

Derived=Eigen::Solve<Eigen::PartialPivLU<Eigen::Matrix<double,4,4,0,4,4>>,Eigen::Homogeneous<Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<double>,Eigen::Matrix<double,3,1,0,3,1>>,0>>
        ]
d:\projects\eigen\eigen\src/Core/Solve.h(89): note: see reference to
class template instantiation
'Eigen::MatrixBase<Eigen::Solve<Eigen::PartialPivLU<Eigen::Matrix<double,4,4,0,4,4>>,Eigen::Homogeneous<Derived,0>>>'
being compiled
        with
        [

Derived=Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<double>,Eigen::Matrix<double,3,1,0,3,1>>
        ]
d:\projects\eigen\eigen\src/Core/Solve.h(64): note: see reference to
class template instantiation
'Eigen::SolveImpl<Decomposition,RhsType,Eigen::Dense>' being compiled
        with
        [

Decomposition=Eigen::PartialPivLU<Eigen::Matrix<double,4,4,0,4,4>>,

RhsType=Eigen::Homogeneous<Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<double>,Eigen::Matrix<double,3,1,0,3,1>>,0>
        ]
test.cpp(7): note: see reference to class template instantiation
'Eigen::Solve<Eigen::PartialPivLU<Eigen::Matrix<double,4,4,0,4,4>>,Eigen::Homogeneous<Derived,0>>'
being compiled
        with
        [

Derived=Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<double>,Eigen::Matrix<double,3,1,0,3,1>>
        ]
d:\projects\eigen\eigen\src/Core/ProductEvaluators.h(899): error C3861:
'run': identifier not found

On 9/4/2015 6:19 PM, Gael Guennebaud wrote:
> Eigen 3.3-alpha1 has been released today, September 4, 2015.
> 
> The source archive is at:
> http://bitbucket.org/eigen/eigen/get/3.3-alpha1.tar.bz2
> 
> This alpha version introduces a novel evaluation mechanism of
> expressions, as well as numerous exciting features such as fast divide
> and conquer SVD [1], support for AVX and VSX vector instructions, more
> OpenMP parallelism [2], a LS-CG solver [3], and more. Check the page
> dedicated on the 3.3 release [4] for a comprehensive review of the
> novelties and improvements.
> 
> As for any alpha and beta release, everybody is invited to test this
> release on their own basecode and report any compilation issues or
> performance regressions on the bugtracker [5].
> 
> Complete changelog: http://eigen.tuxfamily.org/index.php?title=3.3
> 
> [1] http://eigen.tuxfamily.org/dox-devel/classEigen_1_1BDCSVD.html
> [2] http://eigen.tuxfamily.org/dox-devel/TopicMultiThreading.html
> [3]
> http://eigen.tuxfamily.org/dox-devel/classEigen_1_1LeastSquaresConjugateGradient.html 
> [4] http://eigen.tuxfamily.org/index.php?title=3.3
> [5] http://eigen.tuxfamily.org/bz



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