Always false float comparisons

Max Samukha via Digitalmars-d digitalmars-d at puremagic.com
Thu May 19 00:49:48 PDT 2016


On Thursday, 19 May 2016 at 07:09:30 UTC, Walter Bright wrote:
> On 5/18/2016 10:10 AM, Timon Gehr wrote:
>> double kahan(double[] arr){
>>     double sum = 0.0;
>>     double c = 0.0;
>>     foreach(x;arr){
>>         double y=x-c;
>           double y = roundToDouble(x - c);
>>         double t=sum+y;
>           double t = roundToDouble(sum + y);
>>         c = (t-sum)-y;
>>         sum=t;
>>     }
>>     return sum;
>> }
>
> Those are the only two points in the program that depend on 
> rounding. If you're implementing Kahan, you'd know that, so 
> there shouldn't be anything difficult about it.
>
> There's no reason to make the rest of the program suffer 
> inaccuracies.

People are trying to get across that, if they wanted to maximize 
accuracy, they would request the most precise type explicitly. D 
has 'real' for that. This thread has shown unequivocally that the 
semantics you are insisting on is bound to cause endless 
confusion and complaints.



More information about the Digitalmars-d mailing list