On Mon, Feb 2, 2009 at 10:55 AM, greg_l_at_wikipedia
<[email protected]> wrote:
> I have a sandbox with hundreds of test numbers to exercise the
> {delimitnum} template. This template uses the same math-based
> functions as {val}. For anyone who has produced improved math
> functions, you can examine values on this sandbox that currently
> produce rounding errors and test your new math functions. The sandbox
> is at the following:
>
> http://en.wikipedia.org/wiki/User:Greg_L/Delimitnum_sandbox
>
> At the very bottom of the page (which loads slowly), is a concise list
> of values that all have errors.
>
> It would still be much better if a character-counting parser function
> can be made. Then, numbers like {{val|1.4500}} won't have its two
> trailing zeros truncated.

Based on feedback, principally from Aryeh, I modified a previous
effort to add an explicit fractional tolerance test of 1e-10 to #expr
when performing comparisons and integer conversion (e.g. floor, ceil,
mod, etc.)

That would have the effect that the comparison functions and integer
conversion would generally operate correctly up to 10 significant
figures (e.g. A == B  if  A/B - 1 < 1e-10).  This would eliminate many
of the problems associated with comparison functions and modular
arithmetic, but with the tradeoff that those same operations may give
unexpected results if the significand is intended to have more than 10
base-10 digits.

This doesn't apply to basic math operations (+, -, *, ^, etc.) except
where they are coupled to either comparisons or integer conversions.
So if someone simply wanted to do computations, such as 47.3 *
10.23^7.8, then they will still get all ~15 digits that PHP is capable
of displaying.

I see this principally as a step to make the basic math functions more
reliable and consistent with user expectation by reducing the impact
of floating point rounding effects.  An indirect effect is that I
believe those number formatting templates would generally work as
intended for significands with no more than 10 digits.  (Greg, how
often do you worry about more than 10 digits?)  Though, we may still
want to consider building number formatting options into Mediawiki
directly since I'm not sure putting all of that formatting effort into
template space is really a good idea.

Aryeh and I seem to have a difference of opinion about whether
sacrificing precision for some operations involving more than 10
significant digits is an acceptable trade-off for quashing round-off
problems most of the rest of the time.  The code is in r46683, and I
would appreciate some additional viewpoints on this.

Thanks.

-Robert Rohde

_______________________________________________
Wikitech-l mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/wikitech-l

Reply via email to