Skip to content
  • Joseph Myers's avatar
    06caf53a
    Implement C23 rootn. · 06caf53a
    Joseph Myers authored
    C23 adds various <math.h> function families originally defined in TS
    18661-4.  Add the rootn functions, which compute the Yth root of X for
    integer Y (with a domain error if Y is 0, even if X is a NaN).  The
    integer exponent has type long long int in C23; it was intmax_t in TS
    18661-4, and as with other interfaces changed after their initial
    appearance in the TS, I don't think we need to support the original
    version of the interface.
    
    As with pown and compoundn, I strongly encourage searching for worst
    cases for ulps error for these implementations (necessarily
    non-exhaustively, given the size of the input space).  I also expect a
    custom implementation for a given format could be much faster as well
    as more accurate, although the implementation is simpler than those
    for pown and compoundn.
    
    This completes adding to glibc those TS 18661-4 functions (ignoring
    DFP) that are included in C23.  See
    https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118592 regarding the C23
    mathematical functions (not just the TS 18661-4 ones) missing built-in
    functions in GCC, where such functions might usefully be added.
    
    Tested for x86_64 and x86, and with build-many-glibcs.py.
    06caf53a
    Implement C23 rootn.
    Joseph Myers authored
    C23 adds various <math.h> function families originally defined in TS
    18661-4.  Add the rootn functions, which compute the Yth root of X for
    integer Y (with a domain error if Y is 0, even if X is a NaN).  The
    integer exponent has type long long int in C23; it was intmax_t in TS
    18661-4, and as with other interfaces changed after their initial
    appearance in the TS, I don't think we need to support the original
    version of the interface.
    
    As with pown and compoundn, I strongly encourage searching for worst
    cases for ulps error for these implementations (necessarily
    non-exhaustively, given the size of the input space).  I also expect a
    custom implementation for a given format could be much faster as well
    as more accurate, although the implementation is simpler than those
    for pown and compoundn.
    
    This completes adding to glibc those TS 18661-4 functions (ignoring
    DFP) that are included in C23.  See
    https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118592 regarding the C23
    mathematical functions (not just the TS 18661-4 ones) missing built-in
    functions in GCC, where such functions might usefully be added.
    
    Tested for x86_64 and x86, and with build-many-glibcs.py.
To find the state of this project's repository at the time of any of these versions, check out the tags.
Loading