|
Archives
D Programming
DD.gnu digitalmars.D digitalmars.D.bugs digitalmars.D.dtl digitalmars.D.dwt digitalmars.D.announce digitalmars.D.learn digitalmars.D.debugger C/C++ Programming
c++c++.announce c++.atl c++.beta c++.chat c++.command-line c++.dos c++.dos.16-bits c++.dos.32-bits c++.idde c++.mfc c++.rtl c++.stl c++.stl.hp c++.stl.port c++.stl.sgi c++.stlsoft c++.windows c++.windows.16-bits c++.windows.32-bits c++.wxwindows digitalmars.empire digitalmars.DMDScript electronics |
c++ - possible error in dmc complex arithmetic
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? 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 Oct 01 2007
|