diff options
-rw-r--r-- | lib/libc/gen/Makefile.inc | 5 | ||||
-rw-r--r-- | lib/msun/Makefile | 6 | ||||
-rw-r--r-- | lib/msun/man/signbit.3 (renamed from lib/libc/gen/signbit.3) | 4 | ||||
-rw-r--r-- | lib/msun/src/math.h | 7 | ||||
-rw-r--r-- | lib/msun/src/s_signbit.c (renamed from lib/libc/gen/signbit.c) | 18 |
5 files changed, 31 insertions, 9 deletions
diff --git a/lib/libc/gen/Makefile.inc b/lib/libc/gen/Makefile.inc index 14b56ce..764766a 100644 --- a/lib/libc/gen/Makefile.inc +++ b/lib/libc/gen/Makefile.inc @@ -25,8 +25,7 @@ SRCS+= __xuname.c _pthread_stubs.c _rand48.c _spinlock_stub.c _thread_init.c \ raise.c readdir.c readpassphrase.c rewinddir.c \ scandir.c seed48.c seekdir.c sem.c semctl.c \ setdomainname.c sethostname.c setjmperr.c setmode.c \ - setproctitle.c setprogname.c \ - siginterrupt.c siglist.c signal.c signbit.c \ + setproctitle.c setprogname.c siginterrupt.c siglist.c signal.c \ sigsetops.c sleep.c srand48.c statvfs.c stringlist.c strtofflags.c \ sysconf.c sysctl.c sysctlbyname.c sysctlnametomib.c \ syslog.c telldir.c termios.c time.c times.c timezone.c ttyname.c \ @@ -57,7 +56,7 @@ MAN+= alarm.3 arc4random.3 \ scandir.3 sem_destroy.3 sem_getvalue.3 sem_init.3 \ sem_open.3 sem_post.3 sem_wait.3 \ setjmp.3 setmode.3 setproctitle.3 shm_open.3 \ - siginterrupt.3 signal.3 signbit.3 sigsetops.3 sleep.3 \ + siginterrupt.3 signal.3 sigsetops.3 sleep.3 \ statvfs.3 stringlist.3 \ strtofflags.3 sysconf.3 sysctl.3 syslog.3 tcgetpgrp.3 \ tcsendbreak.3 tcsetattr.3 tcsetpgrp.3 time.3 times.3 timezone.3 \ diff --git a/lib/msun/Makefile b/lib/msun/Makefile index 85813ff..092a70f 100644 --- a/lib/msun/Makefile +++ b/lib/msun/Makefile @@ -89,7 +89,7 @@ COMMON_SRCS= b_exp.c b_log.c b_tgamma.c \ s_log1pf.c s_logb.c s_logbf.c s_matherr.c s_modff.c \ s_nearbyint.c s_nextafter.c s_nextafterf.c \ s_rint.c s_rintf.c s_round.c s_roundf.c \ - s_scalbln.c s_scalbn.c s_scalbnf.c \ + s_scalbln.c s_scalbn.c s_scalbnf.c s_signbit.c \ s_signgam.c s_significand.c s_significandf.c s_sin.c s_sinf.c s_tan.c \ s_tanf.c s_tanh.c s_tanhf.c s_trunc.c s_truncf.c \ w_acos.c w_acosf.c w_acosh.c w_acoshf.c w_asin.c w_asinf.c w_atan2.c \ @@ -131,8 +131,8 @@ INCS= fenv.h math.h MAN= acos.3 acosh.3 asin.3 asinh.3 atan.3 atan2.3 atanh.3 ceil.3 \ cos.3 cosh.3 erf.3 exp.3 fabs.3 fdim.3 feclearexcept.3 fegetenv.3 \ fegetround.3 fenv.3 floor.3 fmax.3 fmod.3 hypot.3 ieee.3 \ - ieee_test.3 j0.3 lgamma.3 math.3 rint.3 round.3 sin.3 sinh.3 sqrt.3 \ - tan.3 tanh.3 trunc.3 + ieee_test.3 j0.3 lgamma.3 math.3 rint.3 round.3 \ + signbit.3 sin.3 sinh.3 sqrt.3 tan.3 tanh.3 trunc.3 MLINKS+=acos.3 acosf.3 MLINKS+=acosh.3 acoshf.3 diff --git a/lib/libc/gen/signbit.3 b/lib/msun/man/signbit.3 index fcc7df4..dd0a39f 100644 --- a/lib/libc/gen/signbit.3 +++ b/lib/msun/man/signbit.3 @@ -24,14 +24,14 @@ .\" .\" $FreeBSD$ .\" -.Dd February 11, 2003 +.Dd July 18, 2004 .Dt SIGNBIT 3 .Os .Sh NAME .Nm signbit .Nd "determine whether a floating-point number's sign is negative" .Sh LIBRARY -.Lb libc +.Lb libm .Sh SYNOPSIS .In math.h .Ft int diff --git a/lib/msun/src/math.h b/lib/msun/src/math.h index 76598e3..b85ef96 100644 --- a/lib/msun/src/math.h +++ b/lib/msun/src/math.h @@ -113,7 +113,10 @@ extern const union __nan_un { #define isunordered(x, y) (isnan(x) || isnan(y)) #endif /* __MATH_BUILTIN_RELOPS */ -#define signbit(x) __signbit(x) +#define signbit(x) \ + ((sizeof (x) == sizeof (float)) ? __signbitf(x) \ + : (sizeof (x) == sizeof (double)) ? __signbit(x) \ + : __signbitl(x)) typedef __double_t double_t; typedef __float_t float_t; @@ -215,6 +218,8 @@ int __isnormalf(float) __pure2; int __isnormal(double) __pure2; int __isnormall(long double) __pure2; int __signbit(double) __pure2; +int __signbitf(float) __pure2; +int __signbitl(long double) __pure2; double acos(double); double asin(double); diff --git a/lib/libc/gen/signbit.c b/lib/msun/src/s_signbit.c index 02b48ee..01eb3ab 100644 --- a/lib/libc/gen/signbit.c +++ b/lib/msun/src/s_signbit.c @@ -38,3 +38,21 @@ __signbit(double d) u.d = d; return (u.bits.sign); } + +int +__signbitf(float f) +{ + union IEEEf2bits u; + + u.f = f; + return (u.bits.sign); +} + +int +__signbitl(long double e) +{ + union IEEEl2bits u; + + u.e = e; + return (u.bits.sign); +} |