mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-02-16 17:24:23 +00:00
Define copysign on all platforms
* configure.ac (copysign): Remove test. * src/floatfns.c (signbit): New macro, if not already defined. (Fcopysign): Use it instead of copysign. (Fcopysign, syms_of_floatfns): Define the function on all platforms.
This commit is contained in:
parent
641ce935b7
commit
14af3395e6
3 changed files with 10 additions and 7 deletions
|
|
@ -113,7 +113,6 @@ HAVE_CLOCK_GETTIME
|
|||
HAVE_CLOCK_SETTIME
|
||||
HAVE_COFF_H
|
||||
HAVE_COM_ERR_H
|
||||
HAVE_COPYSIGN
|
||||
HAVE_DBUS
|
||||
HAVE_DBUS_TYPE_IS_VALID
|
||||
HAVE_DBUS_VALIDATE_BUS_NAME
|
||||
|
|
|
|||
|
|
@ -3888,7 +3888,7 @@ pthread_sigmask strsignal setitimer \
|
|||
sendto recvfrom getsockname getifaddrs freeifaddrs \
|
||||
gai_strerror sync \
|
||||
getpwent endpwent getgrent endgrent \
|
||||
cfmakeraw cfsetspeed copysign __executable_start log2 prctl)
|
||||
cfmakeraw cfsetspeed __executable_start log2 prctl)
|
||||
LIBS=$OLD_LIBS
|
||||
|
||||
dnl No need to check for posix_memalign if aligned_alloc works.
|
||||
|
|
|
|||
|
|
@ -147,7 +147,12 @@ DEFUN ("isnan", Fisnan, Sisnan, 1, 1, 0,
|
|||
return isnan (XFLOAT_DATA (x)) ? Qt : Qnil;
|
||||
}
|
||||
|
||||
#ifdef HAVE_COPYSIGN
|
||||
/* Although the substitute does not work on NaNs, it is good enough
|
||||
for platforms lacking the signbit macro. */
|
||||
#ifndef signbit
|
||||
# define signbit(x) ((x) < 0 || (IEEE_FLOATING_POINT && !(x) && 1 / (x) < 0))
|
||||
#endif
|
||||
|
||||
DEFUN ("copysign", Fcopysign, Scopysign, 2, 2, 0,
|
||||
doc: /* Copy sign of X2 to value of X1, and return the result.
|
||||
Cause an error if X1 or X2 is not a float. */)
|
||||
|
|
@ -161,9 +166,10 @@ Cause an error if X1 or X2 is not a float. */)
|
|||
f1 = XFLOAT_DATA (x1);
|
||||
f2 = XFLOAT_DATA (x2);
|
||||
|
||||
return make_float (copysign (f1, f2));
|
||||
/* Use signbit instead of copysign, to avoid calling make_float when
|
||||
the result is X1. */
|
||||
return signbit (f1) != signbit (f2) ? make_float (-f1) : x1;
|
||||
}
|
||||
#endif
|
||||
|
||||
DEFUN ("frexp", Ffrexp, Sfrexp, 1, 1, 0,
|
||||
doc: /* Get significand and exponent of a floating point number.
|
||||
|
|
@ -552,9 +558,7 @@ syms_of_floatfns (void)
|
|||
defsubr (&Ssin);
|
||||
defsubr (&Stan);
|
||||
defsubr (&Sisnan);
|
||||
#ifdef HAVE_COPYSIGN
|
||||
defsubr (&Scopysign);
|
||||
#endif
|
||||
defsubr (&Sfrexp);
|
||||
defsubr (&Sldexp);
|
||||
defsubr (&Sfceiling);
|
||||
|
|
|
|||
Loading…
Reference in a new issue