Re: [eigen] Inconsistency in multiplication of complex with real

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


Is there any reason why this type-promotion should work with Array but not 
Matrix? The short program below doesn't compile till I explicitly cast the 
MatrixXd to complex:

int main(void)
{
        int const N = 5;
        Eigen::MatrixXcd A(N,N);
        Eigen::MatrixXd B(N,N);
        Eigen::MatrixXcd C(N,N);
        A.setRandom();
        B.setRandom();
        C = A*B.cast<complex<double> >(); // compile fail without cast
        return 0;
}



Thanks,
Manoj



On Saturday 19 June 2010 01:06:59 pm Benoit Jacob wrote:
> right, this is  a bug, needs to be fixed.
>
> 2010/6/19 Johan Pauwels <johan.pauwels@xxxxxxxxxxxxx>:
> > Hello all,
> >
> > I think I found a little inconsistency when multiplying a complex with a
> > real array. See the snippet below
> >
> > #include <iostream>
> > #include <Eigen/Core>
> >
> > int main()
> > {
> >        Eigen::ArrayXcd complexArray = Eigen::ArrayXcd::Random(5);
> >        Eigen::ArrayXd realArray = Eigen::ArrayXd::Random(5);
> >        complexArray = complexArray * realArray;
> >        std::cout << complexArray << std::endl;
> >        complexArray *= realArray;
> >        std::cout << complexArray << std::endl;
> > }
> >
> > The first multiplication just works, but the second causes
> > 'YOU_MIXED_DIFFERENT_NUMERIC_TYPES__YOU_NEED_TO_USE_THE_CAST_METHOD_OF_MA
> >TRIXBASE_TO_CAST_NUMERIC_TYPES_EXPLICITLY' at compilation (Mac OS 10.6.3 -
> > gcc 4.2.1, Eigen head). You would expect them to do the same, no?
> >
> > Regards,
> > Johan




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