Thread overview
Complex bug
Feb 19, 2004
dickl
Feb 20, 2004
Manfred Nowak
Feb 20, 2004
dickl
Feb 21, 2004
Manfred Nowak
February 19, 2004
When casting using (idouble) to set the imaginary part of a complex double, the imaginary part of a cdouble never gets set.

int main()
{

   double a=5;
   double b=-0.5;
   cdouble plx = a +b*1.0i;
   cdouble ply = a+ (idouble)b;
   printf("re:%f im:%f\n",plx.re,plx.im);
   printf("re:%f im:%f\n",ply.re,ply.im);

    return 1;
}

prints out   re:5.0 im:-0.5
                 re:5.0  im:0.0


February 20, 2004
On Thu, 19 Feb 2004 17:12:28 -0500, dickl wrote:

> When casting using (idouble) to set the imaginary part of a complex double, the imaginary part of a cdouble never gets set.

Confirmed but not a bug. Casting a number to idouble or double yields just the imaginary or the real part of that number.

How else should that casts be defined? What should the result of
`cast(idouble)(2+3i)' be?

So long.
February 20, 2004
Ok,  but it makes it a little tedious to build a complex number from individual variables.

It would be nice to have a way to say
cdouble var = a + (imaginary)b;



"Manfred Nowak" <svv1999@hotmail.com> wrote in message news:c13se2$2pue$1@digitaldaemon.com...
> On Thu, 19 Feb 2004 17:12:28 -0500, dickl wrote:
>
> > When casting using (idouble) to set the imaginary part of a complex
double,
> > the imaginary part of a cdouble never gets set.
>
> Confirmed but not a bug. Casting a number to idouble or double yields just the imaginary or the real part of that number.
>
> How else should that casts be defined? What should the result of
> `cast(idouble)(2+3i)' be?
>
> So long.


February 21, 2004
dickl wrote:

[...]
> It would be nice to have a way to say
> cdouble var = a + (imaginary)b;

 `cdouble var = a + b * 1i;'
is even shorter. Why to introduce something special, that needs more
effort? And dont forget the cast! In D the cast keyword is obligate. Only
dmd is so kind to forget about that.

So long.