## c++ - possible error in dmc complex arithmetic

• John Smith (5/5) Sep 25 2007 1.2 + .5i ^ -.9 + 1.5i = 0.436466 + 0.0166961i
• Walter Bright (2/9) Sep 27 2007 Can't tell without a complete source code example exhibiting the behavio...
John Smith <bystander shaw.ca> writes:
```1.2 + .5i ^ -.9 + 1.5i = 0.436466 + 0.0166961i

dmc (C, not C++) exponentiation with these operands gives the result:

1.2 + .5i ^ -.9 + 1.5i = 0.436466 + 0.000000i

bug?

JS
```
Sep 25 2007
Walter Bright <newshound1 digitalmars.com> writes:
```John Smith wrote:
1.2 + .5i ^ -.9 + 1.5i = 0.436466 + 0.0166961i

dmc (C, not C++) exponentiation with these operands gives the result:

1.2 + .5i ^ -.9 + 1.5i = 0.436466 + 0.000000i

bug?

Can't tell without a complete source code example exhibiting the behavior.
```
Sep 27 2007
John Smith <bystander shaw.ca> writes:
```#include <stdio.h>
#include <complex.h>

int main(void)
{
/* declaration */
//double _Complex z1, z2, z3;
double complex z1, z2, z3;

/* assignment */
z1 = 1.2 + .5 * I;
z2 = -.9 + 1.5 * I;

/* arithmetic operators */
z3 = z1 + z2;
printf("z1+z2 = %g %gi\n", creal(z3), cimag(z3));
z3 = z1 - z2;
printf("z1-z2 = %g %gi\n", creal(z3), cimag(z3));
z3 = z1 * z2;
printf("z1*z2 = %g %gi\n", creal(z3), cimag(z3));
z3 = z1 / z2;
printf("z1/z2 = %g %gi\n", creal(z3), cimag(z3));

/* functions */
z3 = csqrt(z1);
printf("sqrt = %g %gi\n", creal(z3), cimag(z3));
z3 = cpow(z1, z2);
printf("z1^z2 = %g %fi\n", creal(z3), cimag(z3));

return 0;
}
```
Oct 01 2007
John Smith <bystander shaw.ca> writes:
```== Quote from John Smith (bystander shaw.ca)'s article
#include <stdio.h>
#include <complex.h>
int main(void)
{
/* declaration */
//double _Complex z1, z2, z3;
double complex z1, z2, z3;
/* assignment */
z1 = 1.2 + .5 * I;
z2 = -.9 + 1.5 * I;
/* arithmetic operators */
z3 = z1 + z2;
printf("z1+z2 = %g %gi\n", creal(z3), cimag(z3));
z3 = z1 - z2;
printf("z1-z2 = %g %gi\n", creal(z3), cimag(z3));
z3 = z1 * z2;
printf("z1*z2 = %g %gi\n", creal(z3), cimag(z3));
z3 = z1 / z2;
printf("z1/z2 = %g %gi\n", creal(z3), cimag(z3));
/* functions */
z3 = csqrt(z1);
printf("sqrt = %g %gi\n", creal(z3), cimag(z3));
z3 = cpow(z1, z2);
printf("z1^z2 = %g %fi\n", creal(z3), cimag(z3));
return 0;
}

See incorrect result for cpow()

JS
```
Oct 01 2007
Walter Bright <newshound1 digitalmars.com> writes:
```Thank-you.
```
Oct 01 2007