update from main archive 960830

Fri Aug 30 19:55:27 1996  Ulrich Drepper  <drepper@cygnus.com>

	* libio/genops.c: Make _cleanup an alias of _IO_cleanup.
	Reported by Erik Troan.

Fri Aug 30 15:40:04 1996  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/unix/sysv/linux/Dist: Add sys/procfs.h and
 	sys/sysmacros.h.  Reported by Curtiss <1CMC3466@IBM.MTSAC.EDU>.

Fri Aug 30 13:53:32 1996  Andreas Jaeger  <aj@arthur.pfalz.de>

	* sysdeps/unix/mman/syscalls.list: `mmap' has 6 arguments, not 5.

Fri Aug 30 13:01:10 1996  NIIBE Yutaka  <gniibe@mri.co.jp>

	* sysdeps/i386/fpu/__math.h (tan): Pop 1.0 in ST to get
	real result.

Fri Aug 30 03:33:33 1996  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/libm-ieee754/s_cbrtl.c: New file.  `long double'
	implementation.

	* sysdeps/unix/sysv/linux/i386/Dist: Add clone.S.
This commit is contained in:
Ulrich Drepper 1996-08-31 00:13:23 +00:00
parent 924840c542
commit adfa20781b
9 changed files with 176 additions and 15 deletions

View File

@ -1,3 +1,27 @@
Fri Aug 30 19:55:27 1996 Ulrich Drepper <drepper@cygnus.com>
* libio/genops.c: Make _cleanup an alias of _IO_cleanup.
Reported by Erik Troan.
Fri Aug 30 15:40:04 1996 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/unix/sysv/linux/Dist: Add sys/procfs.h and
sys/sysmacros.h. Reported by Curtiss <1CMC3466@IBM.MTSAC.EDU>.
Fri Aug 30 13:53:32 1996 Andreas Jaeger <aj@arthur.pfalz.de>
* sysdeps/unix/mman/syscalls.list: `mmap' has 6 arguments, not 5.
Fri Aug 30 13:01:10 1996 NIIBE Yutaka <gniibe@mri.co.jp>
* sysdeps/i386/fpu/__math.h (tan): Pop 1.0 in ST to get
real result.
Fri Aug 30 03:33:33 1996 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/libm-ieee754/s_cbrtl.c: New file. `long double'
implementation.
Fri Aug 30 13:39:21 1996 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* Makerules (BUILD_CFLAGS): Use @(common-objpfx) for config.h, not
@ -23,7 +47,7 @@ Fri Aug 30 13:39:21 1996 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
Fri Aug 30 01:26:44 1996 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/unix/sysv/linux/i386/Dist: Add close.S.
* sysdeps/unix/sysv/linux/i386/Dist: Add clone.S.
* sysdeps/unix/sysv/linux/m68k/Dist: Likewise.
* sysdeps/unix/sysv/linux/alpha/Dist: Likewise.

View File

@ -25,7 +25,6 @@ k_sinl.c
k_tanl.c
s_atanl.c
s_cbrtl.c
s_erfl.c
s_expm1l.c
s_log1pl.c

View File

@ -5,7 +5,6 @@
#undef _EXTERN_INLINE
#define _EXTERN_INLINE /* Define the real function. */
#include "hurd.h"
#include "hurd/fd.h"
#include "hurd/signal.h"
#include "hurd/userlink.h"

View File

@ -857,3 +857,7 @@ __io_defs io_defs__;
#endif
#endif /* TODO */
#ifdef weak_alias
weak_alias (_IO_cleanup, _cleanup)
#endif

View File

@ -204,6 +204,15 @@ do { \
(d) = iw_u.value; \
} while (0)
/* Get the more significant 32 bits of a long double mantissa. */
#define GET_LDOUBLE_MSW(v,d) \
do { \
ieee_long_double_shape_type sh_u; \
sh_u.value = (d); \
(v) = sh_u.parts.msw; \
} while (0)
/* Set the more significant 32 bits of a long double mantissa from an int. */
#define SET_LDOUBLE_MSW(d,v) \

View File

@ -1,6 +1,6 @@
/* Inline math functions for i387.
Copyright (C) 1995, 1996 Free Software Foundation, Inc.
Contributed by John C. Bowman <bowman@hagar.ph.utexas.edu>
Contributed by John C. Bowman <bowman@ipp-garching.mpg.de>
This file is part of the GNU C Library.
@ -119,7 +119,8 @@ tan (double __x)
{
register double __value;
__asm __volatile__
("fptan"
("fptan\n\t"
"fincstp"
: "=t" (__value) : "0" (__x));
return __value;

View File

@ -0,0 +1,123 @@
/* s_cbrtl.c -- long double version of s_cbrt.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"
/* cbrtl(x)
* Return cube root of x
*/
#ifdef __STDC__
static const u_int32_t
#else
static u_int32_t
#endif
B1_EXP = 10921, /* = Int(B1) */
B1_MANT = 0x7bc4b064, /* = Int(1.0-0.03306235651)*2**31 */
B2_EXP = 10900,
B2_MANT = 0x7bc4b064; /* = Int(1.0-0.03306235651)*2**31 */
#ifdef __STDC__
static const long double
#else
static long double
#endif
C = 5.42857142857142815906e-01L, /* 19/35 */
D = -7.05306122448979611050e-01L, /* -864/1225 */
E = 1.41428571428571436819e+00L, /* 99/70 */
F = 1.60714285714285720630e+00L, /* 45/28 */
G = 3.57142857142857150787e-01L; /* 5/14 */
#ifdef __STDC__
long double __cbrtl(long double x)
#else
long double __cbrtl(x)
long double x;
#endif
{
int32_t hx;
long double r,s,t=0.0,w;
u_int32_t sign, se, x0, x1;
GET_LDOUBLE_WORDS(se,x0,x1,x);
sign=se&0x8000; /* sign= sign(x) */
se ^= sign;
if(se==0x7fff) return(x+x); /* cbrt(NaN,INF) is itself */
if((se|x0|x1)==0)
return(x); /* cbrt(0) is itself */
SET_LDOUBLE_EXP(x,se); /* x <- |x| */
/* XXX I don't know whether the numbers for correct are correct. The
precalculation is extended from 20 bits to 32 bits. This hopefully
gives us the needed bits to get us still along with one iteration
step. */
/* rough cbrt to 5 bits */
if(se==0) /* subnormal number */
{
u_int64_t xxl;
u_int32_t set,t0,t1;
SET_LDOUBLE_EXP(t,0x4035); /* set t= 2**54 */
SET_LDOUBLE_MSW(t,0x80000000);
t*=x;
GET_LDOUBLE_WORDS(set,t0,t1,t);
xxl = ((u_int64_t) set) << 32 | t0;
xxl /= 3;
xxl += B2_EXP << 16 | B2_MANT;
t0 = xxl & 0xffffffffu;
set = xxl >> 32;
SET_LDOUBLE_WORDS(t,set,t0,t1);
}
else
{
u_int64_t xxl = ((u_int64_t) se) << 32 | x0;
xxl /= 3;
xxl += B1_EXP << 16 | B1_MANT;
SET_LDOUBLE_MSW(t,xxl&0xffffffffu);
xxl >>= 32;
SET_LDOUBLE_EXP(t,xxl);
}
/* new cbrt to 23 bits, may be implemented in single precision */
r=t*t/x;
s=C+r*t;
t*=G+F/(s+E+D/s);
/* chopped to 32 bits and make it larger than cbrt(x) */
GET_LDOUBLE_WORDS(se,x0,x1,t);
SET_LDOUBLE_WORDS(t,se,x0+1,0);
/* one step newton iteration to 53 bits with error less than 0.667 ulps */
s=t*t; /* t*t is exact */
r=x/s;
w=t+t;
r=(r-t)/(w+r); /* r-s is exact */
t=t+t*r;
/* retore the sign bit */
GET_LDOUBLE_EXP(se,t);
SET_LDOUBLE_EXP(t,se|sign);
return(t);
}
weak_alias (__cbrtl, cbrtl)

View File

@ -1,7 +1,7 @@
# File name Caller Syscall name # args Strong name Weak names
madvise - madvise 3 madvise
mmap - mmap 5 __mmap mmap
mmap - mmap 6 __mmap mmap
mprotect - mprotect 3 __mprotect mprotect
msync - msync 2 msync
munmap - munmap 2 __munmap munmap

View File

@ -7,10 +7,12 @@ sys/kdaemon.h
sys/klog.h
sys/module.h
sys/mount.h
sys/procfs.h
sys/quota.h
sys/socketcall.h
sys/sysctl.h
sys/sysinfo.h
sys/sysmacros.h
sys/timex.h
sys/user.h
termio.h