std.complex
    Ali Çehreli 
    acehreli at yahoo.com
       
    Fri Nov 22 23:43:56 PST 2013
    
    
  
On 11/22/2013 09:22 PM, Craig Dillabaugh wrote:
 > On Saturday, 23 November 2013 at 04:37:19 UTC, Shammah Chancellor wrote:
 >> //Hijack
 >>
 >> http://digitalmars.com/d/1.0/cppcomplex.html
 >>
 >>> • Consider the formula (1 - infinity*i) * i which should produce
 >>> (infinity + i). However, if instead the second factor is (0 + i)
 >>> rather than just i, the result is (infinity + NaN*i), a spurious NaN
 >>> was generated.
 >>> • A distinct imaginary type preserves the sign of 0, necessary for
 >>> calculations involving branch cuts.
 >>
 >> Is this stuff no longer an issue?
 >>
 >> -Shammah
 >
 > I believe D used to have builtin complex types, back in the old days.
 > They have been removed (deprecated?)
It still compiles.
 > and replaced by the library type
 > std.complex.
 >
 > At least that is my understanding.
And it makes what Shammah Chancellor quoted even more interesting. 
cdouble and idouble still work correctly but std.complex produces 
"incorrect" result:
import std.stdio;
import std.complex;
void main()
{
     writeln(complex(1.0L, -real.infinity) * complex(0.0, 1.0L));
     writeln((1L - ireal.infinity) * 1i);
}
The output:
inf-nani    <-- "incorrect" according to the quoted page
inf+1i      <-- correct
 >
 > Craig
 >
Ali
    
    
More information about the Digitalmars-d
mailing list