floats default to NaN... why?

Jerome BENOIT g6299304p at rezozer.net
Sat Jun 9 17:32:18 PDT 2012


Hello:

On 10/06/12 01:57, Andrew Wiley wrote:
> On Sat, Jun 9, 2012 at 4:53 PM, Andrew Wiley<wiley.andrew.j at gmail.com>  wrote:
>>
>> On Sat, Jun 9, 2012 at 11:57 AM, Kevin<kevincox.ca at gmail.com>  wrote:
>>>
>>> On Sat 09 Jun 2012 14:59:21 EDT, Jerome BENOIT wrote:
>>>>
>>>>
>>>> On 09/06/12 20:48, Kevin wrote:
>>>>> On 09/06/12 14:42, Minas wrote:
>>>>>>> With
>>>>>>> ints, the best we can do is 0. With floats, NaN makes it better.
>>>>>>
>>>>>> With the logic that NaN is the default for floats, 0 is a very bad
>>>>>> choice for ints. It the worst we could do. Altough I understand that
>>>>>> setting it to something else like -infinity is still not a good
>>>>>> choice.
>>>>> Is it just me but do ints not have infinity values?
>>>>
>>>> in Mathematics yes, but not in D.
>>>>
>>>>   I think ints should
>>>>> default to about half of their capacity (probably negative for
>>>>> signed).
>>>>
>>>> This would be machine depends, as such it should be avoided.
>>>>
>>>>> This way you are unlikely to get an off-by-one for an uninitialized
>>>>> values.
>>>>
>>>> something as a Not an Integer NaI should be better.
>>>
>>> I just don't think it is a good idea to add more metadata to ints.
>>>
>>
>> I agree. With floats, NaN is implemented in hardware. The compiler doesn't
>> have to check for NaN when emitting assembly, it just emits operations
>> normally and the hardware handles NaN like you'd expect.
>> If we tried to add a NaN-like value for integers, we would have to check
>> for it before performing integer math. Even with value range propagation, I
>> think that would injure integer math performance significantly.

I see. So the alternative, to get a kind of NaN effect, would be to set integers
to their hardware extremum (INT_MAX,SIZE_MAX,...). But this option is hardware
dependent, so zero as default for integers sounds the best option.

Jerome

>
> Crap, my apologies for responding with HTML.


More information about the Digitalmars-d-learn mailing list