std.complex

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Tue Nov 26 08:37:27 PST 2013


On 11/26/13 7:13 AM, Dmitry Olshansky wrote:
> 26-Nov-2013 09:06, Daniel Murphy пишет:
>> "Dmitry Olshansky" <dmitry.olsh at gmail.com> wrote in message
>> news:l6tfm8$2hnj$1 at digitalmars.com...
>>>>
>>>
>>> Can't it just check for the real part being exactly zero and special-
>>> case
>>> multiplication for that?
>>>
>>
>> There is no such thing as exactly zero in floating point.  Only -0 and
>> +0.
>
> Well, let it be magnitude, "exactly" implies as good zero test as we
> need. I'm still of the opinion that a few predictable branches like
> `if(rhs.re.isZero)` won't kill it.
>
> Regardless, the point is that built-ins hardly help here at all as you
> may just as well get an "exactly" 0+1i for some complex computation, and
> the result won't suddenly change type to i{real,double,float}.

I think the problem is we currently don't have a means to distinguish 
between two cases:

(a) "There is no real part here at all"

(b) "There is a real part that happens to be zero, or really as close to 
zero as it can ever get in a discrete representation"

It seems the two cases behave differently in a few corner cases, and 
that is reasonable.


Andrei



More information about the Digitalmars-d mailing list