[phobos] [Fwd: "Unsigned-related bugs never occur in real code."]

Andrei Alexandrescu andrei at erdani.com
Thu Jan 21 00:41:45 PST 2010


The problem persists even if I remove the call to abs(). At least its 
removal makes things look more suspicious.

Andrei

Don Clugston wrote:
> 2010/1/21 Sean Kelly <sean at invisibleduck.org>:
>> My first inclination would be for abs to only accept signed values.  Unsigned values don't really seem appropriate for unchecked math operations.
> 
> I agree, it doesn't make sense to take the absolute value of something
> which doesn't have a sign. With range checking, it ought to be
> possible to implicitly cast from uint to int, which would allow all of
> the sensible uses. Unfortunately, implicit casting and templates don't
> interact well. So I think abs() might need to go back to being a
> non-template function.
> 
>> On Jan 20, 2010, at 8:50 PM, Andrei Alexandrescu wrote:
>>
>>> Is there anything we can do about this?
>>>
>>> Andrei
>>>
>>> -------- Original Message --------
>>> Subject: "Unsigned-related bugs never occur in real code."
>>> Date: Wed, 20 Jan 2010 20:42:50 -0800
>>> From: Andrei Alexandrescu <SeeWebsiteForEmail at erdani.org>
>>> Organization: Digital Mars
>>> Newsgroups: digitalmars.D
>>>
>>> "It's an academic problem. Don't worry about it and move on."
>>>
>>> That's what Walter kept on telling me. Yet I've spent the better part of
>>> an hour reducing a bug down to the following:
>>>
>>> import std.math, std.stdio;
>>>
>>> void main() {
>>>    auto a = [ 4, 4, 2, 3, 2 ];
>>>    float avgdist = 0;
>>>    uint count;
>>>
>>>    foreach (i, e1; a) {
>>>        foreach (j, e2; a) {
>>>            if (i == j) continue;
>>>            if (e1 != e2) continue;
>>>            ++count;
>>>            avgdist += abs(i - j);
>>>        }
>>>    }
>>>
>>>    writeln(count, " ", avgdist / count);
>>> }
>>>
>>> May this post be an innocent victim of the war against unsigned-related
>>> bugs.
>>>
>>>
>>> Andrei
>>> _______________________________________________
>>> phobos mailing list
>>> phobos at puremagic.com
>>> http://lists.puremagic.com/mailman/listinfo/phobos
>> _______________________________________________
>> phobos mailing list
>> phobos at puremagic.com
>> http://lists.puremagic.com/mailman/listinfo/phobos
>>
> _______________________________________________
> phobos mailing list
> phobos at puremagic.com
> http://lists.puremagic.com/mailman/listinfo/phobos


More information about the phobos mailing list