[SciPy-User] curve_fit with float32 values
Sebastian Berg
sebastian@sipsolutions....
Fri Jan 18 03:53:24 CST 2013
On Fri, 2013-01-18 at 09:18 +0100, Georg Brandl wrote:
> Am 12.01.2013 15:58, schrieb Pauli Virtanen:
> > 12.01.2013 14:54, Georg Brandl kirjoitti:
> > [clip]
> >> In the end (which took quite a while!) we found that the problem
> >> was that the X data (which was directly loaded from a HDF file)
> >> had a float32 dtype. This seems to confuse curve_fit. Same goes
> >> for float16. float128 at least raises an exception. Integer types
> >> seem fine given rounding, see the code/output below.
> >
> > AFAIK, a likely bug here is probably the choice of epsilon for numerical
> > differentiation in leastsq --- the chosen epsilon is probably smaller
> > than the machine epsilon for float32, hence problems appear.
>
> I had a look at the code now; minpack_lmdif calls
>
> ap_x = (PyArrayObject *)PyArray_ContiguousFromObject(x0, NPY_DOUBLE, 1, 1);
>
> IIUC this should already result in a float64 array, at least on machines
> where double is 64-bits?
>
It may have been fixed, but I think the problem may be only about the
temporaries within the function evaluation. You do not and maybe even
cannot know if `args` contains a float32 array (you could check that the
function return value is double, but even that may not tell the whole
story).
Sebastian
> Georg
>
> _______________________________________________
> SciPy-User mailing list
> SciPy-User@scipy.org
> http://mail.scipy.org/mailman/listinfo/scipy-user
>
More information about the SciPy-User
mailing list