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
(26/26)
Oct 01 2007
#include
- John Smith (3/29) Oct 01 2007 See incorrect result for cpow()
- Walter Bright (1/1) Oct 01 2007 Thank-you.
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