Movement against float.init being nan

drug007 drug2004 at bk.ru
Mon Aug 22 15:56:16 UTC 2022


On 8/22/22 18:04, claptrap wrote:
> On Sunday, 21 August 2022 at 17:56:58 UTC, drug007 wrote:
>> On 8/21/22 20:28, claptrap wrote:
>>> On Sunday, 21 August 2022 at 16:51:51 UTC, Walter Bright wrote:
>>>> Consider the following pattern, which doesn't appear
>>>>
>>>>
>>>> 1. x is default initialized to NaN. bar(x) produces a NaN result on 
>>>> everything dependent on x. User knows there's a problem.
>>>>
>>>> 2. x is default initialized to 0. bar(0) may exhibit problems, but 
>>>> these problems won't necessarily be noticed.
>>>
>>> This is the problem, you suggest that if a variable is zero 
>>> initialised in error the problems it causes "wont necessarily" be 
>>> noticed.
>>>
>>> I'm saying that's not true, I'm saying it will almost always be noticed.
>>>
>>>
>>>
>>
>> It will be noticed but what price? You've initialized all vars to 0 so 
>> how do you know that this exactly initialization to zero is wrong?
> 
> You dont initialise all variables to zero, Ive just looked at some om my 
> code and in 4000 lines i found two default init ints and maybe 50+ 
> explicitly initialised. You're just inventing nonsense scenarios.

But that is my point - not all variables initialize to zero. It is my 
statement that this is nonsense scenarios. Reread the post carefully.

> 
> And seriously if you're looking a variable and dont know what value it 
> should be initialised too you literally *dont know what your doing*.
> 
> 
>> To detect it you should track down manually checking the intermediate 
>> results that is manually calculate results and compare to what you 
>> get. It takes much more time than checking if the value is NaN.
> 
> Occasionally you might have to do a bit of mental arithmetic, but not 
> often, I'm seriously wondering why you think it's so hard?
> 

Just because I've done math calculations before? And no, I didn't mean 
mental arithmetic. I meant numerical matrix operations from inputs to 
outputs just to track down where was wrong zero initialization. In some 
cases zero initialization is invalid, for example covariance of random 
variables. But NaN is invalid always. That is its advantage.



More information about the Digitalmars-d mailing list