(routines): Remove them and &f from here.
* sys/socket.h: New file, wrapper for socket/sys/socket.h.
Thu Jul 11 00:22:40 1996 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/libm-ieee754/s_frexpl.c: New file. `long double'
implementation of frexp() function.
* sysdeps/libm-ieee754/s_ldexpl.c: New file. `long double'
implementation of ldexp() function.
* sysdeps/libm-i387/s_isnanl.c (isnanl): Mask explicit one
out before or'ing.
Thu Jul 11 20:09:55 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
+ * math/Makefile (calls): Add s_frexp, s_ldexp.
+ (routines): Remove them and &f from here.
+
+ * sys/socket.h: New file, wrapper for socket/sys/socket.h.
+
* nss/nss_files/files-service.c (getservbyname): Take second arg PROTO
and check it.
* catgets/gencat.c (write_out): Move code to determine new
best size out of inner loop.
+Thu Jul 11 00:22:40 1996 Ulrich Drepper <drepper@cygnus.com>
+
+ * sysdeps/libm-ieee754/s_frexpl.c: New file. `long double'
+ implementation of frexp() function.
+ * sysdeps/libm-ieee754/s_ldexpl.c: New file. `long double'
+ implementation of ldexp() function.
+
+ * sysdeps/libm-i387/s_isnanl.c (isnanl): Mask explicit one
+ out before or'ing.
+
Wed Jul 10 05:24:40 1996 David Mosberger-Tang <davidm@azstarnet.com>
* misc/mntent.c: Include <sys/types.h>.
[Q11] ``Where are the DST_* constants found in <sys/time.h> on many
systems?''
+
+[Q12] ``The `gencat' utility cannot process the input which are
+ successfully used on my Linux libc based system. Why?''
\f
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
[Q1] ``What systems does the GNU C Library run on?''
form the tools from the GNU gettext package are necessary. See
ftp://prep.ai.mit.edu/pub/gnu or better any mirror site.
-* lots of diskspace (for i386-linux this means, e.g., ~70MB).
+* lots of diskspace (for i?86-linux this means, e.g., ~70MB).
You should avoid compiling on a NFS mounted device. This is very
slow.
-* plenty of time (approx 1h for i386-linux on i586@133 or 2.5h on
+* plenty of time (approx 1h for i?86-linux on i586@133 or 2.5h on
i486@66 or 4.5h on i486@33).
If you have some more measurements let me know.
libc-5 current ELF libc
GNU libc will have the major number 6 and therefore you can have this
-additionally installed. For more information consult documenation for
+additionally installed. For more information consult documentation for
shared library handling. The Makefiles of GNU libc will automatically
generate the needed symbolic links which the linker will use.
code for POSIX TZ environment variable handling.
+~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
+
+[Q12] ``The `gencat' utility cannot process the input which are
+ successfully used on my Linux libc based system. Why?''
+
+[A12] {UD} Unlike the author of the `gencat' program which is distributed
+with Linux libc I have read the underlying standards before writing the
+code. It is completely compatible with the specification given in
+X/Open Portability Guide.
+
+To ease the transition from the Linux version some of the non-standard
+features are also present in the `gencat' program of GNU libc. This
+mainly includes the use of symbols for the message number and the automatic
+generation of header files which contain the needed #defines to map the
+symbols to integers.
+
+Here is a simple SED script to convert at least some Linux specific
+catalog files to the XPG4 form:
+
+-----------------------------------------------------------------------
+# Change catalog source in Linux specific format to standard XPG format.
+# Ulrich Drepper <drepper@cygnus.com>, 1996.
+#
+/^\$ #/ {
+ h
+ s/\$ #\([^ ]*\).*/\1/
+ x
+ s/\$ #[^ ]* *\(.*\)/\$ \1/
+}
+
+/^# / {
+ s/^# \(.*\)/\1/
+ G
+ s/\(.*\)\n\(.*\)/\2 \1/
+}
+-----------------------------------------------------------------------
+
+
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
\f
Answers were given by:
# These functions are in libc instead of libm because __printf_fp
# calls them, so any program using printf will need them linked in,
# and we don't want to have to link every program with -lm.
-calls = s_isinf s_isnan s_finite s_copysign s_modf s_scalbn
-routines = $(calls) $(calls:=f) $(long-c-$(long-double-fcts)) \
- s_frexp s_ldexp s_frexpf s_ldexpf
+calls = s_isinf s_isnan s_finite s_copysign s_modf s_scalbn s_frexp s_ldexp
+routines = $(calls) $(calls:=f) $(long-c-$(long-double-fcts))
long-c-yes = $(calls:=l)
distribute += $(long-c-yes:=.c)
int32_t se,hx,lx;
GET_LDOUBLE_WORDS(se,hx,lx,x);
se = (se & 0x7fff) << 1;
- lx |= hx;
- /* The additional &hx is required because Intel's extended format
- has the normally implicit 1 explicit present. Sigh! */
- se |= (u_int32_t)((lx|(-lx))&hx)>>31;
+ /* The additional & 0x7fffffff is required because Intel's
+ extended format has the normally implicit 1 explicit
+ present. Sigh! */
+ lx |= hx & 0x7fffffff;
+ se |= (u_int32_t)(lx|(-lx))>>31;
se = 0xfffe - se;
return (int)((u_int32_t)(se))>>16;
}
--- /dev/null
+/* s_frexpl.c -- long double version of s_frexp.c.
+ * Conversion to long double by Ulrich Drepper,
+ * Cygnus Support, drepper@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/*
+ * for non-zero x
+ * x = frexpl(arg,&exp);
+ * return a long double fp quantity x such that 0.5 <= |x| <1.0
+ * and the corresponding binary exponent "exp". That is
+ * arg = x*2^exp.
+ * If arg is inf, 0.0, or NaN, then frexpl(arg,&exp) returns arg
+ * with *exp=0.
+ */
+
+#include "math.h"
+#include "math_private.h"
+
+#ifdef __STDC__
+static const long double
+#else
+static long double
+#endif
+#if LDBL_MANT_DIG == 64
+two65 = 3.68934881474191032320e+19L; /* 0x4040, 0x80000000, 0x00000000 */
+#else
+# error "Cannot handle this MANT_DIG"
+#endif
+
+
+#ifdef __STDC__
+ long double __frexpl(long double x, int *eptr)
+#else
+ long double __frexpl(x, eptr)
+ long double x; int *eptr;
+#endif
+{
+ u_int32_t se, hx, ix, lx;
+ GET_LDOUBLE_WORDS(se,hx,lx,x);
+ ix = 0x7fff&se;
+ *eptr = 0;
+ if(ix==0x7fff||((ix|hx|lx)==0)) return x; /* 0,inf,nan */
+ if (ix==0x0000) { /* subnormal */
+ x *= two65;
+ GET_LDOUBLE_EXP(se,x);
+ ix = se&0x7fff;
+ *eptr = -65;
+ }
+ *eptr += ix-16382;
+ se = (se & 0x8000) | 0x3ffe;
+ SET_LDOUBLE_EXP(x,se);
+ return x;
+}
+weak_alias (__frexpl, frexpl)
--- /dev/null
+/* s_ldexpl.c -- long double version of s_ldexp.c.
+ * Conversion to long double by Ulrich Drepper,
+ * Cygnus Support, drepper@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+#include "math.h"
+#include "math_private.h"
+#include <errno.h>
+
+#ifdef __STDC__
+ long double __ldexpl(long double value, int exp)
+#else
+ long double __ldexpl(value, exp)
+ long double value; int exp;
+#endif
+{
+ if(!__finitel(value)||value==0.0) return value;
+ value = __scalbnl(value,exp);
+ if(!__finitel(value)||value==0.0) errno = ERANGE;
+ return value;
+}
+weak_alias (__ldexpl, ldexpl)