[New-bugs-announce] [issue39288] Add math.nextafter(a, b)

STINNER Victor report at bugs.python.org
Fri Jan 10 10:51:22 EST 2020


New submission from STINNER Victor <vstinner at python.org>:

Linux manual page of nextafter():
"""
The nextafter() function return the next representable floating-point  value following x in the direction of y.  If y is less than x, these functions will return the largest representable number less than x.

If x equals y, the functions return y.
"""

I used this function to round an integer towards zero when casting a float to an integer in bpo-39277. Example in C:

#include <math.h>
#include <stdio.h>
#include <stdint.h>
int main()
{
    int64_t int64_max = 9223372036854775807LL;
    double d = (double)int64_max;  /* ROUND_HALF_EVEN */
    double d2 = nextafter(d, 0.0);
    printf("i = %ld\n", int64_max);
    printf("d = %.0f\n", d);
    printf("d2 = %.0f\n", d2);
    printf("d - d2 = %.0f\n", d - d2);
    return 0;
}

Output:

i = 9223372036854775807
d = 9223372036854775808
d2 = 9223372036854774784
d - d2 = 1024

The function exists in numpy:

numpy.nextafter(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj]) = <ufunc 'nextafter'>

    Return the next floating-point value after x1 towards x2, element-wise.

https://docs.scipy.org/doc/numpy/reference/generated/numpy.nextafter.html


Attached PR adds math.nextafter().

----------
components: Library (Lib)
messages: 359731
nosy: vstinner
priority: normal
severity: normal
status: open
title: Add math.nextafter(a, b)
versions: Python 3.9

_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue39288>
_______________________________________


More information about the New-bugs-announce mailing list