[Matrix-SIG] An Experiment in code-cleanup.

Konrad Hinsen hinsen@cnrs-orleans.fr
Wed, 9 Feb 2000 18:17:30 +0100


> silently). Consider a function 
> 
> 	k0 = 100
> 	k = 99
> 	while k < k0:
> 		..
> 		k0 = k
> 		k = ...
> 
> which refines a calculation until the measure k stops decreasing.
> This algorithm may terminate when k is a float, but _fail_ when
> k is a double  -- the extra precision may cause the algorithm

I'd call this a buggy implementation. Convergence criteria should be
explicit and not rely on the internal representation of data
types. Neither Python nor C guarantees you any absolute bounds for
precision and value range, and even languages that do (such as Fortran
9x) only promise to give you a data type that is *at least* as big as
your specification.

> programming is all about. Numerical programmers need to know
> how big numbers are, and how much significance they have,
> and optimise calculations accordingly -- sometimes by _using_
> the precision of the working types to advantage.

If you care at all about portability, you shouldn't even think about
this.

Konrad.
-- 
-------------------------------------------------------------------------------
Konrad Hinsen                            | E-Mail: hinsen@cnrs-orleans.fr
Centre de Biophysique Moleculaire (CNRS) | Tel.: +33-2.38.25.55.69
Rue Charles Sadron                       | Fax:  +33-2.38.63.15.17
45071 Orleans Cedex 2                    | Deutsch/Esperanto/English/
France                                   | Nederlands/Francais
-------------------------------------------------------------------------------