Re: additional questions regarding implementation and test cases | was: Aw: Re: simple? c-coding / gnumeric coding style question ...
- From: Morten Welinder <mortenw gnome org>
- To: newbie nullzwei <newbie-02 gmx de>
- Cc: Gnumeric Forum <gnumeric-list gnome org>
- Subject: Re: additional questions regarding implementation and test cases | was: Aw: Re: simple? c-coding / gnumeric coding style question ...
- Date: Wed, 8 Sep 2021 10:28:43 -0400
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
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]