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: Gael Guennebaud <gael.guennebaud@xxxxxxxxx>
- Date: Sat, 19 Jun 2010 22:39:46 +0200
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:mime-version:received:in-reply-to :references:from:date:message-id:subject:to:content-type :content-transfer-encoding; bh=vMx3i+yTz1PlijFHXB23MG20DP3BezI1lSfnjMGwoJk=; b=AemBHbX1yJQkumioUBnwVzE8yJy/2Jq9qCRCbGnUZcVDmZRE/tFRiGbY9Z0sLp6udB oxDXghrg5/drvqLySIoTr+EFtYPs4aQnEEG6fPJYPm5oW13X37PZ3e67qbLEOf6v1xue UpkBThIfg3gcy8UO5yoxQoYoNd7r1bqUcNFaE=
- Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :content-type:content-transfer-encoding; b=b7IGyHKnIVYEN2fO0JkB9v0NXR2ZC3O5dB+8HiEqAoyZb3eLgEG0Eg4OnvBdq56NgY iyM8GsTCx/EAPbB9QMIJa9g9maH83WOU4T9YiWjDecMrmvcCwl+SXhnsBt/Gx2ibrygW Qpy59vR263D17VKvLGrGmCKxRTBC11TUbAtTE=
well, there is a difference, for arrays operator * means coefficient
wise product, while for matrices its the matrix product. Of course
matrix product between real and complex should also be allowed, but
implementation-wise this much more tricky....
gael
On Sat, Jun 19, 2010 at 10:26 PM, Benoit Jacob <jacob.benoit.1@xxxxxxxxx> wrote:
> no good reason: Array vs Matrix shouldn't make any difference here.
>
> 2010/6/19 Manoj Rajagopalan <rmanoj@xxxxxxxxx>:
>>
>> 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
>>
>>
>>
>>
>
>
>