This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Add Configure symbols to all the missing C99 math APIs.
authorJarkko Hietaniemi <jhi@iki.fi>
Tue, 11 Nov 2014 02:12:33 +0000 (21:12 -0500)
committerJarkko Hietaniemi <jhi@iki.fi>
Sat, 15 Nov 2014 00:01:38 +0000 (19:01 -0500)
Almost all - e.g. isless() will stand in for the other isfoo()
order comparison macros.

Also not going for all the *l() versions of each interface.

Configure
Porting/Glossary
config_h.SH
ext/POSIX/POSIX.xs

index d092c74..69dd589 100755 (executable)
--- a/Configure
+++ b/Configure
@@ -373,6 +373,8 @@ d__fwalk=''
 d_access=''
 d_accessx=''
 d_acosh=''
+d_asinh=''
+d_atanh=''
 d_aintl=''
 d_alarm=''
 asctime_r_proto=''
@@ -396,6 +398,7 @@ d_c99_variadic_macros=''
 d_casti32=''
 castflags=''
 d_castneg=''
+d_cbrt=''
 d_chown=''
 d_chroot=''
 d_chsize=''
@@ -405,6 +408,7 @@ d_closedir=''
 d_void_closedir=''
 d_cmsghdr_s=''
 d_const=''
+d_copysign=''
 d_copysignl=''
 d_cplusplus=''
 cryptlib=''
@@ -453,12 +457,17 @@ endpwent_r_proto=''
 d_endsent=''
 d_endservent_r=''
 endservent_r_proto=''
+d_erf=''
+d_erfc=''
+d_exp2=''
+d_expm1=''
 d_faststdio=''
 d_fchdir=''
 d_fchmod=''
 d_fchown=''
 d_fcntl=''
 d_fcntl_can_lock=''
+d_fdim=''
 d_fd_macros=''
 d_fd_set=''
 d_fds_bits=''
@@ -469,6 +478,10 @@ d_finitel=''
 d_flexfnam=''
 d_flock=''
 d_flockproto=''
+d_fdim=''
+d_fma=''
+d_fmax=''
+d_fmin=''
 d_fork=''
 d_fp_class=''
 d_fp_classl=''
@@ -576,6 +589,8 @@ d_gnulibc=''
 gnulibc_version=''
 d_hasmntopt=''
 d_htonl=''
+d_hypot=''
+d_ilogb=''
 d_ilogbl=''
 d_inetaton=''
 d_inetntop=''
@@ -589,13 +604,18 @@ d_isinf=''
 d_isinfl=''
 d_isnan=''
 d_isnanl=''
+d_isnormal=''
 d_j0=''
 d_j0l=''
 d_killpg=''
 d_lchown=''
 d_ldbl_dig=''
+d_lgamma=''
+d_lgamma_r=''
 d_libm_lib_version=''
 d_link=''
+d_llrint=''
+d_llround=''
 d_localtime_r=''
 d_localtime_r_needs_tzset=''
 localtime_r_proto=''
@@ -603,11 +623,16 @@ d_locconv=''
 d_lc_monetary_2008=''
 d_lockf=''
 d_ldexpl=''
+d_log1p=''
+d_log2=''
+d_logb=''
 d_longdbl=''
 longdblkind=''
 longdblsize=''
 d_longlong=''
 longlongsize=''
+d_lrint=''
+d_lround=''
 d_lseekproto=''
 d_lstat=''
 d_madvise=''
@@ -641,6 +666,10 @@ d_msgrcv=''
 d_msgsnd=''
 d_msync=''
 d_munmap=''
+d_nan=''
+d_nearbyint=''
+d_nextafter=''
+d_nexttoward=''
 d_nice=''
 d_nl_langinfo=''
 d_off64_t=''
@@ -677,12 +706,17 @@ readdir_r_proto=''
 d_readlink=''
 d_readv=''
 d_recvmsg=''
+d_remainder=''
+d_remquo=''
 d_rename=''
+d_rint=''
 d_rmdir=''
+d_round=''
 d_safebcpy=''
 d_safemcpy=''
 d_sanemcmp=''
 d_sbrkproto=''
+d_scalbn=''
 d_scalbnl=''
 d_select=''
 d_sem=''
@@ -835,6 +869,8 @@ clocktype=''
 d_times=''
 d_tmpnam_r=''
 tmpnam_r_proto=''
+d_tgamma=''
+d_trunc=''
 d_truncate=''
 d_truncl=''
 d_ttyname_r=''
@@ -10525,10 +10561,6 @@ $rm -f access*
 set accessx d_accessx
 eval $inlibc
 
-: see if acosh exists
-set acosh d_acosh
-eval $inlibc
-
 : see if aintl exists
 set aintl d_aintl
 eval $inlibc
@@ -13150,6 +13182,146 @@ esac
 set i_sysfile
 eval $setvar
 
+: see if acosh exists
+set acosh d_acosh
+eval $inlibc
+
+: see if asinh exists
+set asinh d_asinh
+eval $inlibc
+
+: see if atanh exists
+set atanh d_atanh
+eval $inlibc
+
+: see if cbrt exists
+set cbrt d_cbrt
+eval $inlibc
+
+: see if copysign exists
+set copysign d_copysign
+eval $inlibc
+
+: see if erf exists
+set erf d_erf
+eval $inlibc
+
+: see if erfc exists
+set erfc d_erfc
+eval $inlibc
+
+: see if exp2 exists
+set exp2 d_exp2
+eval $inlibc
+
+: see if expm1 exists
+set expm1 d_expm1
+eval $inlibc
+
+: see if fdim exists
+set fdim d_fdim
+eval $inlibc
+
+: see if fma exists
+set fma d_fma
+eval $inlibc
+
+: see if fmax exists
+set fmax d_fmax
+eval $inlibc
+
+: see if fmin exists
+set fmin d_fmin
+eval $inlibc
+
+: see if hypot exists
+set hypot d_hypot
+eval $inlibc
+
+: see if ilogb exists
+set ilogb d_ilogb
+eval $inlibc
+
+: see if lgamma exists
+set lgamma d_lgamma
+eval $inlibc
+
+: see if lgamma_r exists
+set lgamma_r d_lgamma_r
+eval $inlibc
+
+: see if llrint exists
+set llrint d_llrint
+eval $inlibc
+
+: see if llround exists
+set llround d_llround
+eval $inlibc
+
+: see if log1p exists
+set log1p d_log1p
+eval $inlibc
+
+: see if log2 exists
+set log2 d_log2
+eval $inlibc
+
+: see if logb exists
+set logb d_logb
+eval $inlibc
+
+: see if lrint exists
+set lrint d_lrint
+eval $inlibc
+
+: see if lround exists
+set lround d_lround
+eval $inlibc
+
+: see if nan exists
+set nan d_nan
+eval $inlibc
+
+: see if nearbyint exists
+set nearbyint d_nearbyint
+eval $inlibc
+
+: see if nextafter exists
+set nextafter d_nextafter
+eval $inlibc
+
+: see if nexttoward exists
+set nexttoward d_nexttoward
+eval $inlibc
+
+: see if remainder exists
+set remainder d_remainder
+eval $inlibc
+
+: see if remquo exists
+set remquo d_remquo
+eval $inlibc
+
+: see if rint exists
+set rint d_rint
+eval $inlibc
+
+: see if round exists
+set round d_round
+eval $inlibc
+
+: see if scalbn exists
+set scalbn d_scalbn
+eval $inlibc
+
+: see if tgamma exists
+set tgamma d_tgamma
+eval $inlibc
+
+: see if trunc exists
+set trunc d_trunc
+eval $inlibc
+
 : see if fcntl.h is there
 val=''
 set fcntl.h val
@@ -15723,6 +15895,27 @@ eval $setvar
 set isinfl d_isinfl
 eval $inlibc
 
+: check for isless
+echo "Checking to see if you have isless..." >&4
+$cat >try.c <<EOCP
+#$i_math I_MATH
+#ifdef I_MATH
+#include <math.h>
+#endif
+int main() { return isless(0.0); }
+EOCP
+set try
+if eval $compile; then
+       val="$define"
+       echo "You have isless."
+else
+       val="$undef"
+       echo "You do not have isless."
+fi
+$rm_try
+set d_isless
+eval $setvar
+
 : check for isnan
 echo "Checking to see if you have isnan..." >&4
 $cat >try.c <<EOCP
@@ -15748,6 +15941,27 @@ eval $setvar
 set isnanl d_isnanl
 eval $inlibc
 
+: check for isnormal
+echo "Checking to see if you have isnormal..." >&4
+$cat >try.c <<EOCP
+#$i_math I_MATH
+#ifdef I_MATH
+#include <math.h>
+#endif
+int main() { return isnormal(0.0); }
+EOCP
+set try
+if eval $compile; then
+       val="$define"
+       echo "You have isnormal."
+else
+       val="$undef"
+       echo "You do not have isnormal."
+fi
+$rm_try
+set d_isnormal
+eval $setvar
+
 : see if j0 exists
 set j0 d_j0
 eval $inlibc
@@ -23610,6 +23824,8 @@ d_alarm='$d_alarm'
 d_archlib='$d_archlib'
 d_asctime64='$d_asctime64'
 d_asctime_r='$d_asctime_r'
+d_asinh='$d_asinh'
+d_atanh='$d_atanh'
 d_atolf='$d_atolf'
 d_atoll='$d_atoll'
 d_attribute_deprecated='$d_attribute_deprecated'
@@ -23632,6 +23848,7 @@ d_bzero='$d_bzero'
 d_c99_variadic_macros='$d_c99_variadic_macros'
 d_casti32='$d_casti32'
 d_castneg='$d_castneg'
+d_cbrt='$d_cbrt'
 d_charvspr='$d_charvspr'
 d_chown='$d_chown'
 d_chroot='$d_chroot'
@@ -23641,6 +23858,7 @@ d_clearenv='$d_clearenv'
 d_closedir='$d_closedir'
 d_cmsghdr_s='$d_cmsghdr_s'
 d_const='$d_const'
+d_copysign='$d_copysign'
 d_copysignl='$d_copysignl'
 d_cplusplus='$d_cplusplus'
 d_crypt='$d_crypt'
@@ -23680,7 +23898,11 @@ d_endpwent_r='$d_endpwent_r'
 d_endsent='$d_endsent'
 d_endservent_r='$d_endservent_r'
 d_eofnblk='$d_eofnblk'
+d_erf='$d_erf'
+d_erfc='$d_erfc'
 d_eunice='$d_eunice'
+d_exp2='$d_exp2'
+d_expm1='$d_expm1'
 d_faststdio='$d_faststdio'
 d_fchdir='$d_fchdir'
 d_fchmod='$d_fchmod'
@@ -23689,6 +23911,7 @@ d_fcntl='$d_fcntl'
 d_fcntl_can_lock='$d_fcntl_can_lock'
 d_fd_macros='$d_fd_macros'
 d_fd_set='$d_fd_set'
+d_fdim='$d_fdim'
 d_fds_bits='$d_fds_bits'
 d_fegetround='$d_fegetround'
 d_fgetpos='$d_fgetpos'
@@ -23697,6 +23920,9 @@ d_finitel='$d_finitel'
 d_flexfnam='$d_flexfnam'
 d_flock='$d_flock'
 d_flockproto='$d_flockproto'
+d_fma='$d_fma'
+d_fmax='$d_fmax'
+d_fmin='$d_fmin'
 d_fork='$d_fork'
 d_fp_class='$d_fp_class'
 d_fp_classify='$d_fp_classify'
@@ -23783,6 +24009,8 @@ d_gnulibc='$d_gnulibc'
 d_grpasswd='$d_grpasswd'
 d_hasmntopt='$d_hasmntopt'
 d_htonl='$d_htonl'
+d_hypot='$d_hypot'
+d_ilogb='$d_ilogb'
 d_ilogbl='$d_ilogbl'
 d_inc_version_list='$d_inc_version_list'
 d_index='$d_index'
@@ -23802,23 +24030,34 @@ d_isinf='$d_isinf'
 d_isinfl='$d_isinfl'
 d_isnan='$d_isnan'
 d_isnanl='$d_isnanl'
+d_isnormal='$d_isnormal'
 d_j0='$d_j0'
 d_j0l='$d_j0l'
 d_killpg='$d_killpg'
 d_lchown='$d_lchown'
+d_lc_monetary_2008='$d_lc_monetary_2008'
 d_ldbl_dig='$d_ldbl_dig'
 d_ldexpl='$d_ldexpl'
+d_lgamma='$d_lgamma'
+d_lgamma_r='$d_lgamma_r'
 d_libm_lib_version='$d_libm_lib_version'
 d_libname_unique='$d_libname_unique'
 d_link='$d_link'
+d_llrint='$d_llrint'
+d_llround='$d_llround'
 d_localtime64='$d_localtime64'
 d_localtime_r='$d_localtime_r'
 d_localtime_r_needs_tzset='$d_localtime_r_needs_tzset'
 d_locconv='$d_locconv'
-d_lc_monetary_2008='$d_lc_monetary_2008'
+d_lgamma='$d_lgamma'
 d_lockf='$d_lockf'
+d_log1p='$d_log1p'
+d_log2='$d_log2'
+d_logb='$d_logb'
 d_longdbl='$d_longdbl'
 d_longlong='$d_longlong'
+d_lrint='$d_lrint'
+d_lround='$d_lround'
 d_lseekproto='$d_lseekproto'
 d_lstat='$d_lstat'
 d_madvise='$d_madvise'
@@ -23858,8 +24097,12 @@ d_msgsnd='$d_msgsnd'
 d_msync='$d_msync'
 d_munmap='$d_munmap'
 d_mymalloc='$d_mymalloc'
+d_nan='$d_nan'
 d_ndbm='$d_ndbm'
 d_ndbm_h_uses_prototypes='$d_ndbm_h_uses_prototypes'
+d_nearbyint='$d_nearbyint'
+d_nextafter='$d_nextafter'
+d_nexttoward='$d_nexttoward'
 d_nice='$d_nice'
 d_nl_langinfo='$d_nl_langinfo'
 d_nv_preserves_uv='$d_nv_preserves_uv'
@@ -23902,13 +24145,18 @@ d_readdir_r='$d_readdir_r'
 d_readlink='$d_readlink'
 d_readv='$d_readv'
 d_recvmsg='$d_recvmsg'
+d_remainder='$d_remainder'
+d_remquo='$d_remquo'
 d_rename='$d_rename'
 d_rewinddir='$d_rewinddir'
+d_rint='$d_rint'
 d_rmdir='$d_rmdir'
+d_round='$d_round'
 d_safebcpy='$d_safebcpy'
 d_safemcpy='$d_safemcpy'
 d_sanemcmp='$d_sanemcmp'
 d_sbrkproto='$d_sbrkproto'
+d_scalbn='$d_scalbn'
 d_scalbnl='$d_scalbnl'
 d_sched_yield='$d_sched_yield'
 d_scm_rights='$d_scm_rights'
@@ -24022,6 +24270,7 @@ d_tcgetpgrp='$d_tcgetpgrp'
 d_tcsetpgrp='$d_tcsetpgrp'
 d_telldir='$d_telldir'
 d_telldirproto='$d_telldirproto'
+d_tgamma='$d_tgamma'
 d_time='$d_time'
 d_timegm='$d_timegm'
 d_times='$d_times'
@@ -24029,6 +24278,7 @@ d_tm_tm_gmtoff='$d_tm_tm_gmtoff'
 d_tm_tm_zone='$d_tm_tm_zone'
 d_tmpnam_r='$d_tmpnam_r'
 d_truncate='$d_truncate'
+d_trunc='$d_trunc'
 d_truncl='$d_truncl'
 d_ttyname_r='$d_ttyname_r'
 d_tzname='$d_tzname'
index f0970a2..24750fd 100644 (file)
@@ -432,6 +432,14 @@ d_asctime_r (d_asctime_r.U):
        which indicates to the C program that the asctime_r()
        routine is available.
 
+d_asinh (d_asinh.U):
+       This variable conditionally defines the HAS_ASINH symbol, which
+       indicates to the C program that the asinh() routine is available.
+
+d_atanh (d_atanh.U):
+       This variable conditionally defines the HAS_ATANH symbol, which
+       indicates to the C program that the atanh() routine is available.
+
 d_atolf (atolf.U):
        This variable conditionally defines the HAS_ATOLF symbol, which
        indicates to the C program that the atolf() routine is available.
@@ -539,6 +547,10 @@ d_castneg (d_castneg.U):
        This variable conditionally defines CASTNEG, which indicates
        whether the C compiler can cast negative float to unsigned.
 
+d_cbrt (d_cbrt.U):
+       This variable conditionally defines the HAS_CBRT symbol, which
+       indicates to the C program that the cbrt() routine is available.
+
 d_charvspr (d_vprintf.U):
        This variable conditionally defines CHARVSPRINTF if this system
        has vsprintf returning type (char*).  The trend seems to be to
@@ -557,6 +569,10 @@ d_chsize (d_chsize.U):
        indicates to the C program that the chsize() routine is available
        to truncate files.  You might need a -lx to get this routine.
 
+d_copysign (d_copysign.U):
+       This variable conditionally defines the HAS_COPYSIGN symbol, which
+       indicates to the C program that the copysign() routine is available.
+
 d_class (d_class.U):
        This variable conditionally defines the HAS_CLASS symbol, which
        indicates to the C program that the class() routine is available.
@@ -761,10 +777,26 @@ d_eofnblk (nblock_io.U):
        This variable conditionally defines EOF_NONBLOCK if EOF can be seen
        when reading from a non-blocking I/O source.
 
+d_erf (d_erf.U):
+       This variable conditionally defines the HAS_ERF symbol, which
+       indicates to the C program that the erf() routine is available.
+
+d_erfc (d_erfc.U):
+       This variable conditionally defines the HAS_ERFC symbol, which
+       indicates to the C program that the erfc() routine is available.
+
 d_eunice (Guess.U):
        This variable conditionally defines the symbols EUNICE and VAX, which
        alerts the C program that it must deal with idiosyncrasies of VMS.
 
+d_exp2 (d_exp2.U):
+       This variable conditionally defines the HAS_EXP2 symbol, which
+       indicates to the C program that the exp2() routine is available.
+
+d_expm1 (d_expm1.U):
+       This variable conditionally defines the HAS_EXPM1 symbol, which
+       indicates to the C program that the expm1() routine is available.
+
 d_faststdio (d_faststdio.U):
        This variable conditionally defines the HAS_FAST_STDIO symbol,
        which indicates to the C program that the "fast stdio" is available
@@ -792,6 +824,10 @@ d_fcntl_can_lock (d_fcntl_can_lock.U):
        This variable conditionally defines the FCNTL_CAN_LOCK symbol
        and indicates whether file locking with fcntl() works.
 
+d_fdim (d_fdim.U):
+       This variable conditionally defines the HAS_FDIM symbol, which
+       indicates to the C program that the fdim() routine is available.
+
 d_fd_macros (d_fd_set.U):
        This variable contains the eventual value of the HAS_FD_MACROS symbol,
        which indicates if your C compiler knows about the macros which
@@ -838,6 +874,18 @@ d_flockproto (d_flockproto.U):
        a prototype for the flock() function.  Otherwise, it is
        up to the program to supply one.
 
+d_fma (d_fma.U):
+       This variable conditionally defines the HAS_FMA symbol, which
+       indicates to the C program that the fma() routine is available.
+
+d_fmax (d_fmax.U):
+       This variable conditionally defines the HAS_FMAX symbol, which
+       indicates to the C program that the fmax() routine is available.
+
+d_fmin (d_fmin.U):
+       This variable conditionally defines the HAS_FMIN symbol, which
+       indicates to the C program that the fmin() routine is available.
+
 d_fork (d_fork.U):
        This variable conditionally defines the HAS_FORK symbol, which
        indicates to the C program that the fork() routine is available.
@@ -1270,9 +1318,19 @@ d_htonl (d_htonl.U):
        This variable conditionally defines HAS_HTONL if htonl() and its
        friends are available to do network order byte swapping.
 
+d_hypot (d_hypot.U):
+       This variable conditionally defines HAS_HYPOT if hypot is available
+       for numerically stable hypotenuse function.
+
+d_ilogb (d_ilogb.U):
+       This variable conditionally defines the HAS_ILOGB symbol, which
+       indicates to the C program that the ilogb() routine is available
+       for extracting the exponent of double x as a signed integer.
+
 d_ilogbl (d_ilogbl.U):
        This variable conditionally defines the HAS_ILOGBL symbol, which
-       indicates to the C program that the ilogbl() routine is available.
+       indicates to the C program that the ilogbl() routine is available
+       for extracting the exponent of long double x as a signed integer.
        If scalbnl is also present we can emulate frexpl.
 
 d_inc_version_list (inc_version_list.U):
@@ -1381,6 +1439,16 @@ d_ldexpl (d_longdbl.U):
        This variable conditionally defines the HAS_LDEXPL symbol, which
        indicates to the C program that the ldexpl() routine is available.
 
+d_lgamma (d_lgamma.U):
+       This variable conditionally defines the HAS_LGAMMA symbol, which
+       indicates to the C program that the lgamma() routine is available
+        for the log gamma function.  See also d_tgamma and d_lgamma_r.
+
+d_lgamma_r (d_lgamma_r.U):
+       This variable conditionally defines the HAS_LGAMMA_R symbol, which
+       indicates to the C program that the lgamma() routine is available
+        for the log gamma function, without using the global signgam variable.
+
 d_libm_lib_version (d_libm_lib_version.U):
        This variable conditionally defines the LIBM_LIB_VERSION symbol,
        which indicates to the C program that math.h defines _LIB_VERSION
@@ -1396,6 +1464,17 @@ d_link (d_link.U):
        This variable conditionally defines HAS_LINK if link() is
        available to create hard links.
 
+d_llrint (d_llrint.U):
+       This variable conditionally defines the HAS_LLRINT symbol, which
+       indicates to the C program that the llrint() routine is available
+       to return the long long value closest to (according to the current
+       rounding mode) to x.
+
+d_llround (d_llround.U):
+       This variable conditionally defines the HAS_LLROUND symbol, which
+       indicates to the C program that the llround() routine is available
+        to return the long long value nearest to x.
+
 d_localtime64 (d_timefuncs64.U):
        This variable conditionally defines the HAS_LOCALTIME64 symbol, which
        indicates to the C program that the localtime64 () routine is available.
@@ -1417,6 +1496,21 @@ d_lockf (d_lockf.U):
        This variable conditionally defines HAS_LOCKF if lockf() is
        available to do file locking.
 
+d_log1p (d_log1p.U):
+       This variable conditionally defines the HAS_LOG1P symbol, which
+       indicates to the C program that the logp1() routine is available
+        to compute log(1 + x) for values of x close to zero.
+
+d_log2 (d_log2.U):
+       This variable conditionally defines the HAS_LOG2 symbol, which
+       indicates to the C program that the log2() routine is available
+        to compute log base two.
+
+d_logb (d_logb.U):
+       This variable conditionally defines the HAS_LOGB symbol, which
+       indicates to the C program that the logb() routine is available
+        to extract the exponent of x.
+
 d_longdbl (d_longdbl.U):
        This variable conditionally defines HAS_LONG_DOUBLE if
        the long double type is supported.
@@ -1425,6 +1519,17 @@ d_longlong (d_longlong.U):
        This variable conditionally defines HAS_LONG_LONG if
        the long long type is supported.
 
+d_lrint (d_lrint.U):
+       This variable conditionally defines the HAS_LRINT symbol, which
+       indicates to the C program that the lrint() routine is available
+       to return the integral value closest to (according to the current
+       rounding mode) to x.
+
+d_lround (d_lround.U):
+       This variable conditionally defines the HAS_LROUND symbol, which
+       indicates to the C program that the lround() routine is available
+        to return the integral value nearest to x.
+
 d_lseekproto (d_lseekproto.U):
        This variable conditionally defines the HAS_LSEEK_PROTO symbol,
        which indicates to the C program that the system provides
@@ -1607,6 +1712,10 @@ d_mymalloc (mallocsrc.U):
        of the source want to take special action if MYMALLOC is used.
        This may include different sorts of profiling or error detection.
 
+d_nan (d_nan.U):
+       This variable conditionally defines HAS_NAN if nan() is
+       available to generate NaN.
+
 d_ndbm (i_ndbm.U):
        This variable conditionally defines the HAS_NDBM symbol, which
        indicates that both the ndbm.h include file and an appropriate ndbm
@@ -1624,6 +1733,21 @@ d_ndbm_h_uses_prototypes (i_ndbm.U):
        undefined. Consult the different d_*ndbm_h_uses_prototypes variables
        to get the same information for alternative ndbm.h include files.
 
+d_nearbyint (d_nearbyint.U):
+       This variable conditionally defines HAS_NEARBYINT if nearbyint()
+       is available to return the integral value closest to (according to
+       the current rounding mode) to x.
+
+d_nextafter (d_nextafter.U):
+       This variable conditionally defines HAS_NEXTAFTER if nextafter()
+       is available to return the next machine representable double from
+       x in direction y.
+
+d_nexttoward (d_nexttoward.U):
+       This variable conditionally defines HAS_NEXTTOWARD if nexttoward()
+       is available to return the next machine representable long double from
+       x in direction y.
+
 d_nice (d_nice.U):
        This variable conditionally defines the HAS_NICE symbol, which
        indicates to the C program that the nice() routine is available.
@@ -1868,6 +1992,14 @@ d_recvmsg (d_recvmsg.U):
        This variable conditionally defines the HAS_RECVMSG symbol, which
        indicates to the C program that the recvmsg() routine is available.
 
+d_remainder (d_remainder.U):
+       This variable conditionally defines the HAS_REMAINDER symbol, which
+       indicates to the C program that the remainder() routine is available.
+
+d_remquo (d_remquo.U):
+       This variable conditionally defines the HAS_REMQUO symbol, which
+       indicates to the C program that the remquo() routine is available.
+
 d_rename (d_rename.U):
        This variable conditionally defines the HAS_RENAME symbol, which
        indicates to the C program that the rename() routine is available
@@ -1877,10 +2009,18 @@ d_rewinddir (d_readdir.U):
        This variable conditionally defines HAS_REWINDDIR if rewinddir() is
        available.
 
+d_rint (d_rint.U):
+       This variable conditionally defines the HAS_RINT symbol, which
+       indicates to the C program that the rint() routine is available.
+
 d_rmdir (d_rmdir.U):
        This variable conditionally defines HAS_RMDIR if rmdir() is
        available to remove directories.
 
+d_round (d_round.U):
+       This variable conditionally defines the HAS_ROUND symbol, which
+       indicates to the C program that the round() routine is available.
+
 d_safebcpy (d_safebcpy.U):
        This variable conditionally defines the HAS_SAFE_BCOPY symbol if
        the bcopy() routine can do overlapping copies.  Normally, you
@@ -1902,6 +2042,10 @@ d_sbrkproto (d_sbrkproto.U):
        a prototype for the sbrk() function.  Otherwise, it is
        up to the program to supply one.
 
+d_scalbn (d_scalbn.U):
+       This variable conditionally defines the HAS_SCALBN symbol, which
+       indicates to the C program that the scalbn() routine is available.
+
 d_scalbnl (d_scalbnl.U):
        This variable conditionally defines the HAS_SCALBNL symbol, which
        indicates to the C program that the scalbnl() routine is available.
@@ -2425,6 +2569,11 @@ d_telldirproto (d_telldirproto.U):
        a prototype for the telldir() function.  Otherwise, it is
        up to the program to supply one.
 
+d_tgamma (d_tgamma.U):
+       This variable conditionally defines the HAS_TGAMMA symbol, which
+       indicates to the C program that the tgamma() routine is available
+        for the gamma function.  See also d_lgamma.
+
 d_time (d_time.U):
        This variable conditionally defines the HAS_TIME symbol, which indicates
        that the time() routine exists.  The time() routine is normally
@@ -2456,6 +2605,11 @@ d_truncate (d_truncate.U):
        This variable conditionally defines HAS_TRUNCATE if truncate() is
        available to truncate files.
 
+d_trunc (d_trunc.U):
+       This variable conditionally defines the HAS_TRUNCL symbol, which
+       indicates to the C program that the trunc() routine is available
+       to round doubles towards zero.
+
 d_truncl (d_truncl.U):
        This variable conditionally defines the HAS_TRUNCL symbol, which
        indicates to the C program that the truncl() routine is available
@@ -2698,7 +2852,7 @@ emacs (Loc.U):
        This variable is defined but not used by Configure.
        The value is the empty string and is not useful.
 
-endgrent_r_proto (d_endgrent_r.U):
+ddgrent_r_proto (d_endgrent_r.U):
        This variable encodes the prototype of endgrent_r.
        It is zero if d_endgrent_r is undef, and one of the
        REENTRANT_PROTO_T_ABC macros of reentr.h if d_endgrent_r
index c3b5642..c3aa608 100755 (executable)
@@ -356,6 +356,33 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
  */
 #$d_munmap HAS_MUNMAP          /**/
 
+/* HAS_NAN:
+ *     This symbol, if defined, indicates that the nan routine is
+ *     available to generate NaN.
+ */
+#$d_nan HAS_NAN                /**/
+
+/* HAS_NEARBYINT:
+ *     This symbol, if defined, indicates that the nextafter routine is
+ *     available to return the integral value closest to (according to
+       the current rounding mode) to x.
+ */
+#$d_nearbyint HAS_NEARBYINT            /**/
+
+/* HAS_NEXTAFTER:
+ *     This symbol, if defined, indicates that the nextafter routine is
+ *     available to return the next machine representable long double from
+ *     x in direction y.
+ */
+#$d_nextafter HAS_NEXTAFTER            /**/
+
+/* HAS_NEXTTOWARD:
+ *     This symbol, if defined, indicates that the nexttoward routine is
+ *     available to return the next machine representable long double from
+ *     x in direction y.
+ */
+#$d_nexttoward HAS_NEXTTOWARD          /**/
+
 /* HAS_NICE:
  *     This symbol, if defined, indicates that the nice routine is
  *     available.
@@ -425,6 +452,16 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
  */
 #$d_readlink HAS_READLINK              /**/
 
+/* HAS_REMAINDER:
+ *     This symbol, if defined, indicates that the remainder routine is available.
+ */
+#$d_remainder HAS_REMAINDER    /**/
+
+/* HAS_REMQUO:
+ *     This symbol, if defined, indicates that the remquo routine is available.
+ */
+#$d_remquo HAS_REMQUO  /**/
+
 /* HAS_RENAME:
  *     This symbol, if defined, indicates that the rename routine is available
  *     to rename files.  Otherwise you should do the unlink(), link(), unlink()
@@ -432,6 +469,13 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
  */
 #$d_rename HAS_RENAME  /**/
 
+/* HAS_RINT:
+ *     This symbol, if defined, indicates that the rint routine is available
+ *     to return the nearest integral value to x as double using the current
+ *     rounding mode.
+ */
+#$d_rint HAS_RINT      /**/
+
 /* HAS_RMDIR:
  *     This symbol, if defined, indicates that the rmdir routine is
  *     available to remove directories. Otherwise you should fork off a
@@ -439,6 +483,11 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
  */
 #$d_rmdir HAS_RMDIR            /**/
 
+/* HAS_ROUND:
+ *     This symbol, if defined, indicates that the round routine is available.
+ */
+#$d_round HAS_ROUND    /**/
+
 /* HAS_SELECT:
  *     This symbol, if defined, indicates that the select routine is
  *     available to select active file descriptors. If the timeout field
@@ -612,6 +661,12 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
  */
 #$d_tcsetpgrp HAS_TCSETPGRP            /**/
 
+/* HAS_TGAMMA:
+ *     This symbol, if defined, indicates that the lgamma routine is
+ *     available to do the gamma function.  See also HAS_LGAMMA.
+ */
+#$d_tgamma HAS_TGAMMA          /**/
+
 /* HAS_TRUNCATE:
  *     This symbol, if defined, indicates that the truncate routine is
  *     available to truncate files.
@@ -3453,6 +3508,78 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
  */
 #$d_acosh HAS_ACOSH            /**/
 
+/* HAS_ASINH:
+ *     This symbol, if defined, indicates that the asinh routine is
+ *     available to do the inverse hyperbolic sine function.
+ */
+#$d_asinh HAS_ASINH            /**/
+
+/* HAS_ATANH:
+ *     This symbol, if defined, indicates that the atanh routine is
+ *     available to do the inverse hyperbolic tangent function.
+ */
+#$d_atanh HAS_ATANH            /**/
+
+/* HAS_CBRT:
+ *     This symbol, if defined, indicates that the cbrt routine is
+ *     available to do the cubic root function.
+ */
+#$d_cbrt HAS_CBRT              /**/
+
+/* HAS_COPYSIGN:
+ *     This symbol, if defined, indicates that the copysign routine is
+ *     available to do the copysign function.
+ */
+#$d_copysign HAS_COPYSIGN              /**/
+
+/* HAS_ERF:
+ *     This symbol, if defined, indicates that the erf routine is
+ *     available to do the error function.
+ */
+#$d_erf HAS_ERF                /**/
+
+/* HAS_ERFC:
+ *     This symbol, if defined, indicates that the erfc routine is
+ *     available to do the complementary error function.
+ */
+#$d_erfc HAS_ERFC              /**/
+
+/* HAS_EXP2:
+ *     This symbol, if defined, indicates that the exp2 routine is
+ *     available to do the 2**x function.
+ */
+#$d_exp2 HAS_EXP2              /**/
+
+/* HAS_EXPM1:
+ *     This symbol, if defined, indicates that the expm1 routine is
+ *     available to do the exp(x) - 1 when x is near 1.
+ */
+#$d_expm1 HAS_EXPM1            /**/
+
+/* HAS_FMA:
+ *     This symbol, if defined, indicates that the fma routine is
+ *     available to do the multiply-add function.
+ */
+#$d_fma HAS_FMA                /**/
+
+/* HAS_FDIM:
+ *     This symbol, if defined, indicates that the fdim routine is
+ *     available to do the positive difference function.
+ */
+#$d_fdim HAS_FDIM              /**/
+
+/* HAS_FMAX:
+ *     This symbol, if defined, indicates that the fma routine is
+ *     available to do the maximum function.
+ */
+#$d_fmax HAS_FMAX              /**/
+
+/* HAS_FMIN:
+ *     This symbol, if defined, indicates that the fma routine is
+ *     available to do the minimum function.
+ */
+#$d_fmin HAS_FMIN              /**/
+
 /* HAS_AINTL:
  *     This symbol, if defined, indicates that the aintl routine is
  *     available.  If copysignl is also present we can emulate modfl.
@@ -3799,6 +3926,18 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
  */
 #$d_hasmntopt HAS_HASMNTOPT            /**/
 
+/* HAS_HYPOT:
+ *     This symbol, if defined, indicates that the hypot routine is
+ *     available to do the hypotenuse function.
+ */
+#$d_hypot HAS_HYPOT            /**/
+
+/* HAS_ILOGB:
+ *     This symbol, if defined, indicates that the ilogb routine is
+ *     available.
+ */
+#$d_ilogb HAS_ILOGB            /**/
+
 /* HAS_ILOGBL:
  *     This symbol, if defined, indicates that the ilogbl routine is
  *     available.  If scalbnl is also present we can emulate frexpl.
@@ -3867,6 +4006,12 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
  */
 #$d_isnanl HAS_ISNANL          /**/
 
+/* HAS_ISNORMAL:
+ *     This symbol, if defined, indicates that the isnormal routine is
+ *     available to check whether a double is normal (non-zero normalized).
+ */
+#$d_isnormal HAS_ISNORMAL              /**/
+
 /* HAS_J0:
  *     This symbol, if defined, indicates to the C program that the
  *     j0() function is available for Bessel functions of the first
@@ -3888,12 +4033,70 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
  */
 #$d_ldbl_dig HAS_LDBL_DIG      /* */
 
+/* HAS_LGAMMA:
+ *     This symbol, if defined, indicates that the lgamma routine is
+ *     available to do the log gamma function.  See also HAS_TGAMMA and
+ *     HAS_LGAMMA_R.
+ */
+#$d_lgamma HAS_LGAMMA          /**/
+
+/* HAS_LGAMMA_R:
+ *     This symbol, if defined, indicates that the lgamma_r routine is
+ *     available to do the log gamma function without using the global
+ *     signgam variable.
+ */
+#$d_lgamma_r HAS_LGAMMA_R              /**/
+
 /* LIBM_LIB_VERSION:
  *     This symbol, if defined, indicates that libm exports _LIB_VERSION
  *     and that math.h defines the enum to manipulate it.
  */
 #$d_libm_lib_version LIBM_LIB_VERSION          /**/
 
+/* HAS_LLRINT:
+ *     This symbol, if defined, indicates that the llrint routine is
+ *     available to return the closest long long value according to
+ *     the current rounding mode.
+ */
+#$d_llrint HAS_LLRINT          /**/
+
+/* HAS_LLROUND:
+ *     This symbol, if defined, indicates that the llround routine is
+ *     available to return the nearest long long value.
+ */
+#$d_llround HAS_LLROUND                /**/
+
+/* HAS_LOG1P:
+ *     This symbol, if defined, indicates that the lgamma routine is
+ *     available to do the log1p function.
+ */
+#$d_log1p HAS_LOG1P            /**/
+
+/* HAS_LOG2:
+ *     This symbol, if defined, indicates that the lgamma routine is
+ *     available to do the log2 function.
+ */
+#$d_log2 HAS_LOG2              /**/
+
+/* HAS_LOGB:
+ *     This symbol, if defined, indicates that the lgamma routine is
+ *     available to do the logb function.
+ */
+#$d_logb HAS_LOGB              /**/
+
+/* HAS_LRINT:
+ *     This symbol, if defined, indicates that the lrint routine is
+ *     available to return the closest integral value according to
+ *     the current rounding mode.
+ */
+#$d_lrint HAS_LRINT            /**/
+
+/* HAS_LROUND:
+ *     This symbol, if defined, indicates that the lround routine is
+ *     available to return the nearest integral value.
+ */
+#$d_lround HAS_LROUND          /**/
+
 /* HAS_MADVISE:
  *     This symbol, if defined, indicates that the madvise system call is
  *     available to map a file into memory.
@@ -4031,6 +4234,11 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
  */
 #$d_sbrkproto  HAS_SBRK_PROTO  /**/
 
+/* HAS_SCALBN:
+ *     This symbol, if defined, indicates that the scalbn routine is available.
+ */
+#$d_scalbn HAS_SCALBN          /**/
+
 /* HAS_SCALBNL:
  *     This symbol, if defined, indicates that the scalbnl routine is
  *     available.  If ilogbl is also present we can emulate frexpl.
@@ -4266,6 +4474,11 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
  */
 #$d_timegm HAS_TIMEGM          /**/
 
+/* HAS_TRUNC:
+ *     This symbol, if defined, indicates that the trunc routine is available.
+ */
+#$d_trunc HAS_TRUNC            /**/
+
 /* HAS_TRUNCL:
  *     This symbol, if defined, indicates that the truncl routine is
  *     available. If copysignl is also present we can emulate modfl.
index 3b06ac2..02cd7a2 100644 (file)
 
    j0 j1 jn y0 y1 yn
 
- * Configure already (5.21.0) scans for:
+ * Configure already (5.21.5) scans for:
 
-   fpclassify isfinite isinf isnan ilogb*l* signbit
+   copysign*l* fpclassify isfinite isinf isnan isnan*l* ilogb*l* signbit scalbn*l*
 
  * For floating-point round mode (which matters for e.g. lrint and rint)