Re: [eigen] Assignment of product to X.noalias() does not resize X

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


yes, Hauke found this bug yesterday, problem fixed now.

cheers,
gael.

On Tue, Sep 1, 2009 at 11:43 AM, Jitse Niesen<jitse@xxxxxxxxxxxxxxxxx> wrote:
> Hello,
>
> What is the reason behind the following inconsistency (using the current
> revision of the development branch)?
>
> -------------
> #include <Eigen/Core>
> #include <Eigen/Array>
>
> using namespace Eigen;
>
> int main()
> {
>  MatrixXf A = MatrixXf::Random(12,12);
>  MatrixXf A2;
>  A2 = A * A;                   // works
>  std::cout << A2(1,1) << std::endl;
>  MatrixXf A3(12,12);
>  A3.noalias() = A * A;         // works
>  std::cout << A3(1,1) << std::endl;
>  MatrixXf A4;
>  A4.noalias() = A * A;         // does NOT work
>  std::cout << A4(1,1) << std::endl;
> }
> -------------
>
> The assignment to A4 complains (via a run-time assertion) that A4 has the
> wrong dimension. Yet when we leave out the noalias(), as in the assignment
> to A2, it does resize the matrix to the correct dimension.
>
> In the 2.0 branch, A4 = (A * A).lazy() does resize the matrix A4.
>
> Cheers,
> Jitse
>
>
>



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