Thanks John
I understand that when I design algorithms I must be wary of all
these things that you mention
But if I use a J primitive or a library function that I am not able
to examine, how am I to determine the limits of its capability?
Donna
[EMAIL PROTECTED]
On 25-Jun-06, at 1:50 PM, John Randall wrote:
dly wrote:
that one considers the actual algorithm and its actual ability and
limits and display and store numbers in the most precise form but in
no higher precision than it is capable of producing. Thus if there
or for example only 3 significant digits, store and display
This is the programmer's job. As my example shows, adding 3
numbers in
different orders can give 0, 1 or many significant digits. Are you
suggesting J keep track of this?
All calculations with floating-point numbers have errors. The
principal
sources are:
1. Approximation error: using finitely many floating-point numbers to
represent uncountably many real numbers.
2. Truncation error: every calculation may result in loss of
significance.
3. Algorithmic error: an algorithm only calculates an approximation
to the
result.
These errors propogate, and the number of significant digits at any
stage
of the calculation is unknown to the computer. The interpretation
of the
meaning of the calculation has to be the programmer's responsibility.
Of these errors, truncation error is the most insidious. Immediate
remedies are:
1. Prefer algorithms with few steps. They not only run faster,
they are
less likely to accumulate truncation error.
2. Avoid the obvious pitfalls (e.g. don't take the difference of
numbers
that are almost equal, use scaling in matrix calculations). Don't use
compilers or interpreters that "optimize" algebraic expressions.
3. Use iterative rather than direct algorithms.
Numerical analysis, while less attractive than dreaming in colour,
addresses all these issues. In particular, it obtains accurate
answers
within the confines of fixed-precision floating-point arithmetic.
Best wishes,
John
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm