> in the meantime i found another - better? - solution with using 'rint' in the 
> process of rounding, and now have (complex) calculations producing better 
> results for e.g. '=0.1 + 0.2' or '=1234.12 - 1234' and still correct results 
> for other values. :-)

I'll be blunt here: no, you don't.  The solution you are looking for
does not exist.

The input and output to "+" and "-" are doubles, i.e., IEEE854
numbers.  "+" and "-" currently perform the round-to-nearest operation
on the sum or difference.  The maximum error thus is 0.5ulp.

If you change this -- any change whatsoever -- you will create larger errors.

What you seem to be doing is to take the base-2 inputs and reinterpret
them as base-10 numbers, then perform the addition or subtraction, and
finally reinterpret the numbers back to base-2.  Each reinterpretation
(you might call it "rounding") adds some kind of error.

If you want base-10 arithmetic you need to change the compiler and
libraries to use a "double" type that uses something like BCD instead
of base-2.  This would be a fantastic amount of work -- many man
years.

Morten
_______________________________________________
gnumeric-list mailing list
gnumeric-list@gnome.org
https://mail.gnome.org/mailman/listinfo/gnumeric-list

Reply via email to