diff options
author | Ulrich Drepper <drepper@redhat.com> | 1996-08-30 00:58:28 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 1996-08-30 00:58:28 +0000 |
commit | 6e953631df4b716fcf2d2bcfb62e44ffba2a6b40 (patch) | |
tree | a7258ce3689b120b270f0bedda5806092660774c /sysdeps/libm-ieee754/s_asinhl.c | |
parent | 747e2b436143d80406e21f647f7ba9837f73a173 (diff) | |
download | glibc-6e953631df4b716fcf2d2bcfb62e44ffba2a6b40.tar.gz glibc-6e953631df4b716fcf2d2bcfb62e44ffba2a6b40.tar.xz glibc-6e953631df4b716fcf2d2bcfb62e44ffba2a6b40.zip |
update from main archive 960829 cvs/libc-960830
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/m68k/Dist: Likewise. * sysdeps/unix/sysv/linux/alpha/Dist: Likewise. * version.c: Add comment about where to report bugs to. * catgets/gencat.c (usage): Likewise. * db/makedb.c (usage): Likewise. * locale/programs/locale.c (usage): Likewise. * locale/programs/localedef.c (usage): Likewise. * manual/socket.texi: A little bit better wording. Thu Aug 29 18:03:06 1996 Ulrich Drepper <drepper@cygnus.com> * Makerules: Make sure directory exists before generating stamp file. (BUILD_CFLAGS): Always refer to using $(..). * manual/Makefile: Make sure directory exists before generating stamp file. (make-target-directory): Add macro definition. * sysdeps/generic/Makefile: Make sure directory exists before generating stamp file. * Makefile (distribute): Add autolock.sh. Reported by Fila Kolodny. Tue Aug 27 10:06:22 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> When compiling in separate directory put objects into subdirectories matching the source layout. * Makeconfig (objpfx) [ifdef objdir]: Append $(subdir). When looking for configparms try in $(common-objpfx). Use $(common-objpfx)SUBDIR to find objects from other subdirectory builds. * Makerules: Add $(objpfx) to vpath list. (make-dummy-dep): Use $(common-objpfx) to avoid creating dummy.d more than once. All uses in dependency lists changed. (+make-deps): Make target directory. (sed-remove-objpfx): Substitute $(common-objpfx). (do-ar, build-extra-lib, $(common-objpfx)stub-$(subdir)): Use $(objpfx) instead of $(objdir) for cd command. (O%-lib): Always find libc relative to $(..). (subdir-stamps): Collect stamp files from subdirs. (common-mostlyclean): Remove stub file in $(common-objpfx). * MakeTAGS ($P/siglist.pot): Find siglist.c in stdio-common. * Rules (dep-dummy-lib): Use $(common-objpfx) to avoid creating to more than once. ($(objpfx)dummy.c, $(objpfx)empty.c): Change target name to use $(common-objfpx). All uses in dependency lists changed. (generated): Prepend $(..) to names. * bare/Makefile ($(objpfx)lib$(config-vendor).a): Remove $(objpfx) from $@. * nss/Makefile ($(objpfx)libnss_dns.so, $(objpfx)libnss_db.so): Use $(common-objpfx) instead of $(..) in dependencies. * sysdeps/mach/Makefile (mach-objpfx): Unconditionally use $(common-objpfx) instead of $(..) and (objpfx). * sysdeps/mach/hurd/Makefile (hurd-objpfx): Likewise. (rpath-link): Likewise. (rpcuserlibs): Likewise. * sysdeps/unix/Makefile [$(subdir) = stdio-common]: Check for errlist.c in $(objpfx), not $(common-objpfx). ($(common-objpfx)s-proto.d): Special rule not covered by pattern rule. * sysdeps/unix/make-syscalls.sh: Make syscall rules depending on s-proto.d in $(common-objpfx), not $(objpfx). Thu Aug 29 17:45:49 1996 Ulrich Drepper <drepper@cygnus.com> * nss/nsswitch.c (nss_dlerror_run): Free returned error string. Thu Aug 29 15:53:33 1996 Ulrich Drepper <drepper@cygnus.com> * sysdeps/libm-ieee754/e_acoshl.c: New file. `long double' implementation. * sysdeps/libm-ieee754/e_atanhl.c: Likewise. * sysdeps/libm-ieee754/e_remainderl.c: Likewise. * sysdeps/libm-ieee754/e_scalbl.c: Likewise. * sysdeps/libm-ieee754/s_asinhl.c: Likewise. * sysdeps/libm-ieee754/s_cosl.c: Likewise. * sysdeps/libm-ieee754/s_sinl.c: Likewise. * sysdeps/libm-ieee754/s_tanhl.c: Likewise. * sysdeps/libm-ieee754/s_tanl.c: Likewise. * stdio-common/printf_fp.c (__printf_fp): Use default value '.' if
Diffstat (limited to 'sysdeps/libm-ieee754/s_asinhl.c')
-rw-r--r-- | sysdeps/libm-ieee754/s_asinhl.c | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/sysdeps/libm-ieee754/s_asinhl.c b/sysdeps/libm-ieee754/s_asinhl.c new file mode 100644 index 0000000000..823288a1a0 --- /dev/null +++ b/sysdeps/libm-ieee754/s_asinhl.c @@ -0,0 +1,70 @@ +/* s_asinhl.c -- long double version of s_asinh.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 + +/* asinhl(x) + * Method : + * Based on + * asinhl(x) = signl(x) * logl [ |x| + sqrtl(x*x+1) ] + * we have + * asinhl(x) := x if 1+x*x=1, + * := signl(x)*(logl(x)+ln2)) for large |x|, else + * := signl(x)*logl(2|x|+1/(|x|+sqrtl(x*x+1))) if|x|>2, else + * := signl(x)*log1pl(|x| + x^2/(1 + sqrtl(1+x^2))) + */ + +#include "math.h" +#include "math_private.h" + +#ifdef __STDC__ +static const long double +#else +static long double +#endif +one = 1.000000000000000000000e+00L, /* 0x3FFF, 0x00000000, 0x00000000 */ +ln2 = 6.931471805599453094287e-01L, /* 0x3FFE, 0xB17217F7, 0xD1CF79AC */ +huge= 1.000000000000000000e+16380L; + +#ifdef __STDC__ + long double __asinhl(long double x) +#else + long double __asinhl(x) + long double x; +#endif +{ + long double t,w; + int32_t hx,ix; + GET_LDOUBLE_EXP(hx,x); + ix = hx&0x7fff; + if(ix==0x7fff) return x+x; /* x is inf or NaN */ + if(ix< 0x3fde) { /* |x|<2**-34 */ + if(huge+x>one) return x; /* return x inexact except 0 */ + } + if(ix>0x4020) { /* |x| > 2**34 */ + w = __ieee754_logl(fabsl(x))+ln2; + } else if (ix>0x4000) { /* 2**34 > |x| > 2.0 */ + t = fabsl(x); + w = __ieee754_logl(2.0*t+one/(__ieee754_sqrtl(x*x+one)+t)); + } else { /* 2.0 > |x| > 2**-28 */ + t = x*x; + w =__log1pl(fabsl(x)+t/(one+__ieee754_sqrtl(one+t))); + } + if(hx>0x7fff) return w; else return -w; +} +weak_alias (__asinhl, asinhl) |