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