D - Numeric sign improvement
- Mark Evans (13/13) Oct 05 2002 The online D documentation says
- Walter (8/21) Oct 05 2002 Interesting. The .sign used the C signbit() function as a model. How do ...
- Mark Evans (11/13) Oct 05 2002 The closest function is sgn() though some implementations return zero fo...
- chris jones (16/31) Oct 06 2002 should it be that...
- Mark Evans (3/3) Oct 06 2002 Yes there could be two properties, .sign and .signbit; .sign is by far t...
The online D documentation says Properties for Integral Data Types sign should we do this? Properties for Floating Point Types sign 1 if -, 0 if + This spec is really, really bad. I use signs in algorithm work. Most of the time they end up as multiplication factors. So I want negative signs to yield -1.0, and positive signs to yield +1.0. The way it should work is sign -1.0 if negative, +1.0 if positive or zero or NaN for both ints and floats. The zero case should be considered positive. (I don't want .sign to return zero, otherwise I can't use it as a multiplication factor without special checking.) Mark
Oct 05 2002
Interesting. The .sign used the C signbit() function as a model. How do you do your code in C/C++? "Mark Evans" <Mark_member pathlink.com> wrote in message news:anng69$1m7f$1 digitaldaemon.com...The online D documentation says Properties for Integral Data Types sign should we do this? Properties for Floating Point Types sign 1 if -, 0 if + This spec is really, really bad. I use signs in algorithm work. Most ofthetime they end up as multiplication factors. So I want negative signs toyield-1.0, and positive signs to yield +1.0. The way it should work is sign -1.0 if negative, +1.0 if positive or zero or NaN for both ints and floats. The zero case should be considered positive.(Idon't want .sign to return zero, otherwise I can't use it as amultiplicationfactor without special checking.) Mark
Oct 05 2002
The closest function is sgn() though some implementations return zero for zero. I've not heard of signbit() and don't consider it a good model. The problem is that .sign wants to return a bool (saying whether the sign bit is set), but D offers no bool type. The return must then be encoded as an integer. It is very confusing to get +1 from .sign when the numeric sign is -1. I don't know any scenarios in which I care whether the sign bit is set; what I always want is the value of the sign, -1 or +1. The return value should have the same numeric sign as the argument. In this mode the return value really is an integer or float, not an integer masquerading as a boolean. M. In article <ano1r9$27pp$2 digitaldaemon.com>, Walter says...Interesting. The .sign used the C signbit() function as a model. How do you do your code in C/C++?
Oct 05 2002
should it be that... signbit() should return 0 or 1 as a representation of the sign bit, sign() should return -1 and 1 as a representation of the sign. i agree with you that the latter is much more usefull and the result should bo of the same type as the argument. chris "Mark Evans" <Mark_member pathlink.com> wrote in message news:ano76a$2cqd$1 digitaldaemon.com...The closest function is sgn() though some implementations return zero forzero.I've not heard of signbit() and don't consider it a good model. Theproblem isthat .sign wants to return a bool (saying whether the sign bit is set),but Doffers no bool type. The return must then be encoded as an integer. It isveryconfusing to get +1 from .sign when the numeric sign is -1. I don't know any scenarios in which I care whether the sign bit is set;what Ialways want is the value of the sign, -1 or +1. The return value shouldhavethe same numeric sign as the argument. In this mode the return valuereally isan integer or float, not an integer masquerading as a boolean. M. In article <ano1r9$27pp$2 digitaldaemon.com>, Walter says...youInteresting. The .sign used the C signbit() function as a model. How dodo your code in C/C++?
Oct 06 2002
Yes there could be two properties, .sign and .signbit; .sign is by far the more useful. Mark
Oct 06 2002