c++ - possible error in dmc complex arithmetic
- John Smith <bystander shaw.ca> Sep 25 2007
- Walter Bright <newshound1 digitalmars.com> Sep 27 2007
- John Smith <bystander shaw.ca> Oct 01 2007
- John Smith <bystander shaw.ca> Oct 01 2007
- Walter Bright <newshound1 digitalmars.com> Oct 01 2007
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
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
#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
== 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>