http://d.puremagic.com/issues/show_bug.cgi?id=6560
--- Comment #6 from bdsat...@gmail.com 2011-08-27 07:14:06 PDT --- (In reply to comment #5) I found a workaround for ^^, looks like this works: import std.stdio; import std.complex; void main() { auto x = Complex!real(1,2); auto y = Complex!real(3,4); writeln(x^^y); } > Please, show examples of the real problems, so Andrei & Walter will judge the > situation. Let's consider the same cases as mentioned in the "Semantics" section of: http://www.digitalmars.com/d/2.0/cppcomplex.html Well, unfortunately std.complex; in v2.051 is not up-to-date. I wanted to verify whether the following identities hold: * sqrt(conj(z)) == conj(sqrt(z)) whenever z takes on negative real values * conj(log(z)) == log(conj(z)) whenever z takes on negative real values I couldn't test the above because sqrt( ) and log( ) are not implemented for complex numbers in 2.051. I do not know the situation in 2.055head. Could you please verify this, if possible ? However, I do have a testcase for this one: * (1 - infinity*i)*i == (infinity + i) but not (infinity + NaN*i) where i = sqrt(-1), the imaginary constant. The following demonstrates how a "spurious NaN" is generated, as mentioned in the above link. import std.stdio; import std.complex; union INFINITY { float inf; uint num; }; union NOT_A_NUMBER { float nan; uint num; }; void main() { INFINITY posinf, neginf; NOT_A_NUMBER nan; posinf.num = 0x7F800000; // positive infinity neginf.num = 0xFF800000; // negative infinity nan.num = 0x7FC00000; // Not a Number writefln("Positive infinity = %f", posinf.inf); writefln("Negative infinity = %f", neginf.inf); writefln("Not a number = %f", nan.nan); Complex!float i = Complex!float(0.0f, 1.0f); // i Complex!float p = Complex!float(1.0f, neginf.inf); // 1-inf*i writefln("%f",p*i); // Must be (1-inf*i)*i = inf + 1i } The expected answer is (+inf, 1.0f) but the above prints "inf-nani". I do not know how it was in D1, but in D2 the above produces mathematically incorrect result. Again, I'm unaware how it is in C99/C++, etc. or is it always like this. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------