[Numpy-discussion] Round away from zero (towards +/- infinity)

Charles R Harris charlesr.harris at gmail.com
Sat Oct 4 19:52:50 EDT 2014


On Fri, Oct 3, 2014 at 11:28 AM, T J <tjhnson at gmail.com> wrote:

> It does, but it is not portable. That's why I was hoping NumPy might think
> about supporting more rounding algorithms.
>
> On Thu, Oct 2, 2014 at 10:00 PM, John Zwinck <jzwinck at gmail.com> wrote:
>
>> On 3 Oct 2014 07:09, "T J" <tjhnson at gmail.com> wrote:
>> >
>> > Any bites on this?
>> >
>> > On Wed, Sep 24, 2014 at 12:23 PM, T J <tjhnson at gmail.com> wrote:
>> >> Python's round function goes away from zero, so I am looking for the
>> NumPy equivalent (and using vectorize() seems undesirable). In this sense,
>> it seems that having a ufunc for this type of rounding could be helpful.
>> >>
>> >> Aside: Is there interest in a more general around() that allows users
>> to specify alternative tie-breaking rules, with the default staying 'round
>> half to nearest even'? [1]
>> >> ---
>> >> [1]
>> http://stackoverflow.com/questions/16000574/tie-breaking-of-round-with-numpy
>>
>> I like the solution given in that Stack Overflow post, namely using
>> ctypes to call fesetround(). Does that work for you?
>>
>>
>>

In [4]: def roundout(x):
   ...:     return trunc(x + copysign(.5, x))
   ...:

Will do what you want, if not quite as nicely as a ufunc. Won't work as is
for complex, but that could be handled with a view.

Chuck
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20141004/9acbe881/attachment.html>


More information about the NumPy-Discussion mailing list