Re: [eigen] Inconsistency in multiplication of complex with real |
[ Thread Index |
Date Index
| More lists.tuxfamily.org/eigen Archives
]
- To: eigen@xxxxxxxxxxxxxxxxxxx
- Subject: Re: [eigen] Inconsistency in multiplication of complex with real
- From: Manoj Rajagopalan <rmanoj@xxxxxxxxx>
- Date: Sat, 19 Jun 2010 16:24:22 -0400
- Organization: EECS Dept., University of Michigan, Ann Arbor, MI, USA
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