On Wed, Nov 21, 2012 at 09:36:14AM +0000, Norman Gray wrote: > > Hendrik (and Hugh), hello. > > OK -- I'll bite, if only to see where this argument heads to. > > On 2012 Nov 20, at 13:56, Hendrik Boom <hend...@topoi.pooq.com> wrote: > > > On Tue, Nov 20, 2012 at 11:02:06AM +0000, Norman Gray wrote: > >> > >> I think list members might experience a certain amount of surprise at your > >> conclusions... > >> > >> On 2012 Nov 20, at 02:34, Hugh Aguilar wrote: > >> > >>> For a numerical program it is necessary to have mixed-precision > >>> arithmetic. [...] Scheme, Python, Ruby, C/C++, Fortran, Java, etc., don't > >>> have this > >> > >> ...that Fortran is unsuitable for numerical programming, > > > > Starting with Fortran, high-level languages have forgotten that the > > product of two numbers should be accurately available as a > > number with twice the precision. > > > > NOw if the numbers were approximate to start with, this is no big deal, > > but if they were exact (as integers usually are), it can be crucial for > > some numerical algorithms. It mystifies me why this situation has > > persisted for over half a century. > > I think that 'should', 'can be' and 'mystifies' are the key words or phrases > here. > > I suspect that, for most people, 'numerical programming' means the > stock-in-trade of scientific programming -- namely the calculations of > numerical values for equations of all types, including integration, > differentiation, interpolation, and so on and so (very much) forth. That is, > we're talking about floats, in all but a few cases; integer-only algorithms > are a very specialised category of 'numerical programming' > > Floats, as you note, are approximate from the outset (especially if what they > represent is measured data; apart from ordinal data, data is approximate). > Having any non-trivial float calculation double in precision at each > operation would be… not terribly sensible. Thus, contra your 'should', it is > possibly not unreasonable to have such a facility available in a language, or > in a dialect of a language, but it is of use to such a small fraction of a > language's users (thinking of Python, C, Fortran, for example), that the > extra specification and implementation effort may have a negative utility. > > So Fortran hasn't 'forgotten' that arbitrarily extended precision 'should' be > available, certainly not for floats, and rarely even for integers. And I'm > sure that approximately zero people here have difficulty (Hugh) 'grasping' > the concept of mixed-precision arithmetic. This was never particularly > sensible in (the main dialect of) a general purpose language, and there is no > mystery here at all. > > Best wishes (in slight puzzlement), > > Norman
There are quite a few algorithms that need you to calculate a sum of products. Using double-precision for the accumulator will avoid the accumulation of roundoff errors. You end up with a precise single-precision result. -- hendrik ____________________ Racket Users list: http://lists.racket-lang.org/users