[Numpy-discussion] Numpy float precision vs Python list float issue

Rob Clewley rob.clewley@gmail....
Mon Apr 20 10:49:12 CDT 2009

On Mon, Apr 20, 2009 at 10:48 AM, David Cournapeau
<david@ar.media.kyoto-u.ac.jp> wrote:
> Rob Clewley wrote:
>> David,
>> I'm confused about your reply. I don't think Ruben was only asking why
>> you'd ever get non-zero error after the forward and inverse transform,
>> but why his implementation using lists gives zero error but using
>> arrays he gets something of order 1e-15.
> That's more likely just an accident. Forward + inverse = id is the
> surprising thing, actually. In any numerical package, if you do
> ifft(fft(a)), you will not recover a exactly for any non trivial size.
> For example, with floating point numbers, the order in which you do
> operations matters, so:
> Will give you different values for d and c, even if you "on paper",
> those are exactly the same. For those reasons, it is virtually
> impossible to have exactly the same values for two different
> implementations of the same algorithm. As long as the difference is
> small (if the reconstruction error falls in the 1e-15 range, it is
> mostly likely the case), it should not matter,

I understand the numerical mathematics behind this very well but my
point is that his two algorithms appear to be identical (same
operations, same order), he simply uses lists in one and arrays in the
other. It's not like he used vectorization or other array-related
operations - he uses for loops in both cases. Of course I agree that
1e-15 error should be acceptable, but that's not the point. I think
there is legitimate curiosity in wondering why there is any difference
between using the two data types in exactly the same algorithm.

Maybe Ruben could re-code the example using a single function that
accepts either a list or an array to really demonstrate that there is
no mistake in any of the decimal literals or any subtle difference in
the ordering of operations that I didn't spot. Would that convince
you, David, that there is something interesting that remains to be
explained in this example?!


More information about the Numpy-discussion mailing list