[Numpy-discussion] Catching and dealing with floating point errors

Warren Weckesser warren.weckesser@enthought....
Mon Nov 8 15:20:12 CST 2010


On Mon, Nov 8, 2010 at 2:52 PM, Skipper Seabold <jsseabold@gmail.com> wrote:

> On Mon, Nov 8, 2010 at 3:45 PM, Warren Weckesser
> <warren.weckesser@enthought.com> wrote:
> >
> >
> > On Mon, Nov 8, 2010 at 2:17 PM, Skipper Seabold <jsseabold@gmail.com>
> wrote:
> >>
> >> On Mon, Nov 8, 2010 at 3:14 PM, Skipper Seabold <jsseabold@gmail.com>
> >> wrote:
> >> > I am doing some optimizations on random samples.  In a small number of
> >> > cases, the objective is not well-defined for a given sample (it's not
> >> > possible to tell beforehand and hopefully won't happen much in
> >> > practice).  What is the most numpythonic way to handle this?  It
> >> > doesn't look like I can use np.seterrcall in this case (without
> >> > ignoring its actual intent).  Here's a toy example of the method I
> >> > have come up with.
> >> >
> >> > import numpy as np
> >> >
> >> > def reset_seterr(d):
> >> >    """
> >> >    Helper function to reset FP error-handling to user's original
> >> > settings
> >> >    """
> >> >    for action in [i+'='+"'"+d[i]+"'" for i in d]:
> >> >        exec(action)
> >> >    np.seterr(over=over, divide=divide, invalid=invalid, under=under)
> >> >
> >>
> >> It just occurred to me that this is unsafe.  Better options for
> >> resetting seterr?
> >
> >
> > Hey Skipper,
> >
> > I don't understand why you need your helper function.  Why not just pass
> the
> > saved dictionary back to seterr()?  E.g.
> >
> > saved = np.seterr('raise')
> > try:
> >     # Do something dangerous...
> >     result = whatever...
> > except Exception:
> >     # Handle the problems...
> >     result = better result...
> > np.seterr(**saved)
> > return result
> >
>
> Ha.  I knew I was forgetting something.  Thanks.
>
>
Your question reminded me to file an enhancement request that I've been
meaning to suggest for a while:
    http://projects.scipy.org/numpy/ticket/1667


Warren
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.scipy.org/pipermail/numpy-discussion/attachments/20101108/9fe8e4f1/attachment.html 


More information about the NumPy-Discussion mailing list