about summary refs log tree commit diff
path: root/math/w_log.c
Commit message (Collapse)AuthorAgeFilesLines
* Remove the error handling wrapper from logSzabolcs Nagy2018-11-211-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Introduce new log symbol version that doesn't do SVID compatible error handling. The standard errno and fp exception based error handling is inline in the new code and does not have significant overhead. The wrapper is disabled for sysdeps/ieee754/dbl-64 by using empty w_log.c and enabled for targets with their own log implementation by including math/w_log.c. The compatibility symbol version still uses the wrapper with SVID error handling around the new code. There is no new symbol version nor compatibility code on !LIBM_SVID_COMPAT targets (e.g. riscv). On targets where previously logl was an alias of log, now it points to the compatibility symbol with the wrapper, because it still need the SVID compatible error handling. This affects NO_LONG_DOUBLE (e.g. arm) and LONG_DOUBLE_COMPAT (e.g. alpha) targets as well. The __log_finite symbol is now an alias of log. Both __log_finite and log set errno and thus not const functions. The ia64 asm is changed so the compat and new symbol versions map to the same address. On x86_64 #include <math.h> was added before macro definitions that may affect that header. Tested with build-many-glibcs.py. * math/Versions (GLIBC_2.29): Add log. * math/w_log_compat.c (__log_compat): Change to versioned compat symbol. * math/w_log.c: New file. * sysdeps/i386/fpu/w_log.c: New file. * sysdeps/ia64/fpu/e_log.S: Update. * sysdeps/ieee754/dbl-64/e_log.c (__ieee754_log): Rename to __log and add necessary aliases. * sysdeps/ieee754/dbl-64/w_log.c: New file. * sysdeps/m68k/m680x0/fpu/w_log.c: New file. * sysdeps/mach/hurd/i386/libm.abilist: Update. * sysdeps/unix/sysv/linux/aarch64/libm.abilist: Update. * sysdeps/unix/sysv/linux/alpha/libm.abilist: Update. * sysdeps/unix/sysv/linux/arm/libm.abilist: Update. * sysdeps/unix/sysv/linux/hppa/libm.abilist: Update. * sysdeps/unix/sysv/linux/i386/libm.abilist: Update. * sysdeps/unix/sysv/linux/ia64/libm.abilist: Update. * sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist: Update. * sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist: Update. * sysdeps/unix/sysv/linux/microblaze/libm.abilist: Update. * sysdeps/unix/sysv/linux/mips/mips32/libm.abilist: Update. * sysdeps/unix/sysv/linux/mips/mips64/libm.abilist: Update. * sysdeps/unix/sysv/linux/nios2/libm.abilist: Update. * sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist: Update. * sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist: Update. * sysdeps/unix/sysv/linux/powerpc/powerpc64/libm-le.abilist: Update. * sysdeps/unix/sysv/linux/powerpc/powerpc64/libm.abilist: Update. * sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist: Update. * sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist: Update. * sysdeps/unix/sysv/linux/sh/libm.abilist: Update. * sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist: Update. * sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist: Update. * sysdeps/unix/sysv/linux/x86_64/64/libm.abilist: Update. * sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist: Update. * sysdeps/x86_64/fpu/multiarch/e_log-avx.c (__ieee754_log): Rename to __log. * sysdeps/x86_64/fpu/multiarch/e_log-fma.c (__ieee754_log): Likewise. * sysdeps/x86_64/fpu/multiarch/e_log-fma4.c (__ieee754_log): Likewise. * sysdeps/x86_64/fpu/multiarch/e_log.c (__ieee754_log): Likewise. * sysdeps/x86_64/fpu/multiarch/w_log.c: New file.
* Move wrappers to libm-compat-calls-autoGabriel F. T. Gomes2017-01-041-48/+0
| | | | | | | | | | This commit moves one step towards the deprecation of wrappers that use _LIB_VERSION / matherr / __kernel_standard functionality, by adding the suffix '_compat' to their filenames and adjusting Makefiles and #includes accordingly. New template wrappers that do not use such functionality will be added by future patches and will be first used by the float128 wrappers.
* Update copyright dates with scripts/update-copyrights.Joseph Myers2017-01-011-1/+1
|
* Update copyright dates with scripts/update-copyrights.Joseph Myers2016-01-041-1/+1
|
* Update copyright dates with scripts/update-copyrights.Joseph Myers2015-01-021-1/+1
|
* Fix libm feraiseexcept namespace (bug 17723).Joseph Myers2014-12-301-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Various C90 and UNIX98 libm functions call feraiseexcept, which is not in those standards. This causes linknamespace test failures - except on x86 / x86_64, where feraiseexcept is inline (for the relevant constant arguments) in bits/fenv.h. This patch fixes this by making those functions call __feraiseexcept instead. All changes are applied to all architectures rather than considering the possibility that some might not be needed in some cases (e.g. x86) as it seems most maintainable to keep architectures consistent. Where __feraiseexcept does not exist, it is added, with feraiseexcept made a weak alias; where it is a strong alias, it is made weak. libm_hidden_def / libm_hidden_proto are used with __feraiseexcept (this might in some cases improve code generation for existing calls to __feraiseexcept in some code on some architectures). Where there are dummy feraiseexcept macros (on architectures without floating-point exceptions support, to avoid compile errors from references to undefined FE_* macros), corresponding dummy __feraiseexcept macros are added. And on x86, to ensure __feraiseexcept calls still get inlined, the inline function in bits/fenv.h is refactored so that most of it can be reused in an inline __feraiseexcept in a separate include/bits/fenv.h. Calls are changed in C90/UNIX98 functions, but generally not in functions missing from those standards. They are also changed in libc_fe* functions (on the basis that those might be used in any libm function), and in feupdateenv (on the same basis - may be used, via default libc_*, in any libm function - of course feupdateenv will need changing to __feupdateenv in a subsequent patch to make that fully namespace-clean). No __feraiseexcept is added corresponding to the feraiseexcept in powerpc bits/fenvinline.h, because that macro definition is conditional on !defined __NO_MATH_INLINES, and glibc libm is built with -D__NO_MATH_INLINES, so changing internal calls to use __feraiseexcept should make no difference. Tested for x86_64 (testsuite; the only change in disassembly of installed shared libraries is a slight code reordering in clog10, of no apparent significance). Also tested for MIPS, where (in the configuration tested) it eliminates math.h linknamespace failures for n32 and n64 (some for o32 remain because of other issues). [BZ #17723] * include/fenv.h (__feraiseexcept): Use libm_hidden_proto. * math/fraiseexcpt.c (__feraiseexcept): Use libm_hidden_def. * sysdeps/aarch64/fpu/fraiseexcpt.c (feraiseexcept): Rename to __feraiseexcept and define as weak alias of __feraiseexcept. Use libm_hidden_weak. * sysdeps/arm/fraiseexcpt.c (feraiseexcept): Likewise. * sysdeps/hppa/fpu/fraiseexcpt.c (feraiseexcept): Likewise. * sysdeps/i386/fpu/fraiseexcpt.c (__feraiseexcept): Use libm_hidden_def. * sysdeps/ia64/fpu/fraiseexcpt.c (feraiseexcept): Rename to __feraiseexcept and define as weak alias of __feraiseexcept. Use libm_hidden_weak. * sysdeps/m68k/coldfire/fpu/fraiseexcpt.c (feraiseexcept): Likewise. * sysdeps/microblaze/math_private.h (__feraiseexcept): New macro. * sysdeps/mips/fpu/fraiseexcpt.c (feraiseexcept): Rename to __feraiseexcept and define as weak alias of __feraiseexcept. Use libm_hidden_weak. * sysdeps/powerpc/fpu/fraiseexcpt.c (__feraiseexcept): Use libm_hidden_def. * sysdeps/powerpc/nofpu/fraiseexcpt.c (__feraiseexcept): Likewise. * sysdeps/powerpc/powerpc32/e500/nofpu/fraiseexcpt.c (__feraiseexcept): Likewise. * sysdeps/s390/fpu/fraiseexcpt.c (feraiseexcept): Rename to __feraiseexcept and define as weak alias of __feraiseexcept. Use libm_hidden_weak. * sysdeps/sh/sh4/fpu/fraiseexcpt.c (feraiseexcept): Likewise. * sysdeps/sparc/fpu/fraiseexcpt.c (__feraiseexcept): Use libm_hidden_def. * sysdeps/tile/math_private.h (__feraiseexcept): New macro. * sysdeps/unix/sysv/linux/alpha/fraiseexcpt.S (__feraiseexcept): Use libm_hidden_def. * sysdeps/x86_64/fpu/fraiseexcpt.c (__feraiseexcept): Use libm_hidden_def. (feraiseexcept): Define as weak not strong alias. Use libm_hidden_weak. * sysdeps/x86/fpu/bits/fenv.h (__feraiseexcept_invalid_divbyzero): New inline function. Factored out of ... (feraiseexcept): ... here. Use __feraiseexcept_invalid_divbyzero. * sysdeps/x86/fpu/include/bits/fenv.h: New file. * math/e_scalb.c (invalid_fn): Call __feraiseexcept instead of feraiseexcept. * math/w_acos.c (__acos): Likewise. * math/w_asin.c (__asin): Likewise. * math/w_ilogb.c (__ilogb): Likewise. * math/w_j0.c (y0): Likewise. * math/w_j1.c (y1): Likewise. * math/w_jn.c (yn): Likewise. * math/w_log.c (__log): Likewise. * math/w_log10.c (__log10): Likewise. * sysdeps/aarch64/fpu/feupdateenv.c (feupdateenv): Likewise. * sysdeps/aarch64/fpu/math_private.h (libc_feupdateenv_test_aarch64): Likewise. * sysdeps/alpha/fpu/feupdateenv.c (__feupdateenv): Likewise. * sysdeps/arm/fenv_private.h (libc_feupdateenv_test_vfp): Likewise. * sysdeps/arm/feupdateenv.c (feupdateenv): Likewise. * sysdeps/ia64/fpu/feupdateenv.c (feupdateenv): Likewise. * sysdeps/m68k/fpu/feupdateenv.c (__feupdateenv): Likewise. * sysdeps/mips/fpu/feupdateenv.c (feupdateenv): Likewise. * sysdeps/powerpc/fpu/e_sqrt.c (__slow_ieee754_sqrt): Likewise. * sysdeps/s390/fpu/feupdateenv.c (feupdateenv): Likewise. * sysdeps/sh/sh4/fpu/feupdateenv.c (feupdateenv): Likewise. * sysdeps/sparc/fpu/feupdateenv.c (__feupdateenv): Likewise.
* Update copyright notices with scripts/update-copyrightsAllan McRae2014-01-011-1/+1
|
* Update copyright notices with scripts/update-copyrights.Joseph Myers2013-01-021-1/+1
|
* Use non-signaling floating-point comparisons in math functions.Aurelien Jarno2012-02-191-2/+2
|
* Replace FSF snail mail address with URLs.Paul Eggert2012-02-091-3/+2
|
* Optimize libmUlrich Drepper2011-10-121-34/+35
| | | | | libm is now somewhat integrated with gcc's -ffinite-math-only option and lots of the wrapper functions have been optimized.
* Use private math_private.h in files in math/Ulrich Drepper2011-10-081-1/+1
|
* Moved to csu/errno-loc.c.Ulrich Drepper2005-12-141-0/+48
|
* (CFLAGS-tst-align.c): Add -mpreferred-stack-boundary=4.Ulrich Drepper2004-12-221-48/+0
|
* 2.5-18.1Jakub Jelinek2007-07-121-0/+48
|
* Update.Ulrich Drepper2001-02-171-48/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * math/w_acos.c: Move to ... * sysdeps/generic/w_acos.c: ...here. New file. * math/w_acosf.c: Move to ... * sysdeps/generic/w_acosf.c: ...here. New file. * math/w_acosh.c: Move to ... * sysdeps/generic/w_acosh.c: ...here. New file. * math/w_acoshf.c: Move to ... * sysdeps/generic/w_acoshf.c: ...here. New file. * math/w_acoshl.c: Move to ... * sysdeps/generic/w_acoshl.c: ...here. New file. * math/w_acosl.c: Move to ... * sysdeps/generic/w_acosl.c: ...here. New file. * math/w_asin.c: Move to ... * sysdeps/generic/w_asin.c: ...here. New file. * math/w_asinf.c: Move to ... * sysdeps/generic/w_asinf.c: ...here. New file. * math/w_asinl.c: Move to ... * sysdeps/generic/w_asinl.c: ...here. New file. * math/w_atan2.c: Move to ... * sysdeps/generic/w_atan2.c: ...here. New file. * math/w_atan2f.c: Move to ... * sysdeps/generic/w_atan2f.c: ...here. New file. * math/w_atan2l.c: Move to ... * sysdeps/generic/w_atan2l.c: ...here. New file. * math/w_atanh.c: Move to ... * sysdeps/generic/w_atanh.c: ...here. New file. * math/w_atanhf.c: Move to ... * sysdeps/generic/w_atanhf.c: ...here. New file. * math/w_atanhl.c: Move to ... * sysdeps/generic/w_atanhl.c: ...here. New file. * math/w_cosh.c: Move to ... * sysdeps/generic/w_cosh.c: ...here. New file. * math/w_coshf.c: Move to ... * sysdeps/generic/w_coshf.c: ...here. New file. * math/w_coshl.c: Move to ... * sysdeps/generic/w_coshl.c: ...here. New file. * math/w_drem.c: Move to ... * sysdeps/generic/w_drem.c: ...here. New file. * math/w_dremf.c: Move to ... * sysdeps/generic/w_dremf.c: ...here. New file. * math/w_dreml.c: Move to ... * sysdeps/generic/w_dreml.c: ...here. New file. * math/w_exp10.c: Move to ... * sysdeps/generic/w_exp10.c: ...here. New file. * math/w_exp10f.c: Move to ... * sysdeps/generic/w_exp10f.c: ...here. New file. * math/w_exp10l.c: Move to ... * sysdeps/generic/w_exp10l.c: ...here. New file. * math/w_exp2.c: Move to ... * sysdeps/generic/w_exp2.c: ...here. New file. * math/w_exp2f.c: Move to ... * sysdeps/generic/w_exp2f.c: ...here. New file. * math/w_exp2l.c: Move to ... * sysdeps/generic/w_exp2l.c: ...here. New file. * math/w_fmod.c: Move to ... * sysdeps/generic/w_fmod.c: ...here. New file. * math/w_fmodf.c: Move to ... * sysdeps/generic/w_fmodf.c: ...here. New file. * math/w_fmodl.c: Move to ... * sysdeps/generic/w_fmodl.c: ...here. New file. * math/w_hypot.c: Move to ... * sysdeps/generic/w_hypot.c: ...here. New file. * math/w_hypotf.c: Move to ... * sysdeps/generic/w_hypotf.c: ...here. New file. * math/w_hypotl.c: Move to ... * sysdeps/generic/w_hypotl.c: ...here. New file. * math/w_j0.c: Move to ... * sysdeps/generic/w_j0.c: ...here. New file. * math/w_j0f.c: Move to ... * sysdeps/generic/w_j0f.c: ...here. New file. * math/w_j0l.c: Move to ... * sysdeps/generic/w_j0l.c: ...here. New file. * math/w_j1.c: Move to ... * sysdeps/generic/w_j1.c: ...here. New file. * math/w_j1f.c: Move to ... * sysdeps/generic/w_j1f.c: ...here. New file. * math/w_j1l.c: Move to ... * sysdeps/generic/w_j1l.c: ...here. New file. * math/w_jn.c: Move to ... * sysdeps/generic/w_jn.c: ...here. New file. * math/w_jnf.c: Move to ... * sysdeps/generic/w_jnf.c: ...here. New file. * math/w_jnl.c: Move to ... * sysdeps/generic/w_jnl.c: ...here. New file. * math/w_lgamma.c: Move to ... * sysdeps/generic/w_lgamma.c: ...here. New file. * math/w_lgammaf.c: Move to ... * sysdeps/generic/w_lgammaf.c: ...here. New file. * math/w_lgammaf_r.c: Move to ... * sysdeps/generic/w_lgammaf_r.c: ...here. New file. * math/w_lgammal.c: Move to ... * sysdeps/generic/w_lgammal.c: ...here. New file. * math/w_lgammal_r.c: Move to ... * sysdeps/generic/w_lgammal_r.c: ...here. New file. * math/w_lgamma_r.c: Move to ... * sysdeps/generic/w_lgamma_r.c: ...here. New file. * math/w_log10.c: Move to ... * sysdeps/generic/w_log10.c: ...here. New file. * math/w_log10f.c: Move to ... * sysdeps/generic/w_log10f.c: ...here. New file. * math/w_log10l.c: Move to ... * sysdeps/generic/w_log10l.c: ...here. New file. * math/w_log.c: Move to ... * sysdeps/generic/w_log.c: ...here. New file. * math/w_logf.c: Move to ... * sysdeps/generic/w_logf.c: ...here. New file. * math/w_logl.c: Move to ... * sysdeps/generic/w_logl.c: ...here. New file. * math/w_pow.c: Move to ... * sysdeps/generic/w_pow.c: ...here. New file. * math/w_powf.c: Move to ... * sysdeps/generic/w_powf.c: ...here. New file. * math/w_powl.c: Move to ... * sysdeps/generic/w_powl.c: ...here. New file. * math/w_remainder.c: Move to ... * sysdeps/generic/w_remainder.c: ...here. New file. * math/w_remainderf.c: Move to ... * sysdeps/generic/w_remainderf.c: ...here. New file. * math/w_remainderl.c: Move to ... * sysdeps/generic/w_remainderl.c: ...here. New file. * math/w_scalb.c: Move to ... * sysdeps/generic/w_scalb.c: ...here. New file. * math/w_scalbf.c: Move to ... * sysdeps/generic/w_scalbf.c: ...here. New file. * math/w_scalbl.c: Move to ... * sysdeps/generic/w_scalbl.c: ...here. New file. * math/w_sinh.c: Move to ... * sysdeps/generic/w_sinh.c: ...here. New file. * math/w_sinhf.c: Move to ... * sysdeps/generic/w_sinhf.c: ...here. New file. * math/w_sinhl.c: Move to ... * sysdeps/generic/w_sinhl.c: ...here. New file. * math/w_sqrtl.c: Move to ... * sysdeps/generic/w_sqrtl.c: ...here. New file. * math/w_tgamma.c: Move to ... * sysdeps/generic/w_tgamma.c: ...here. New file. * math/w_tgammaf.c: Move to ... * sysdeps/generic/w_tgammaf.c: ...here. New file. * math/w_tgammal.c: Move to ... * sysdeps/generic/w_tgammal.c: ...here. New file.
* Update.Ulrich Drepper1999-07-141-0/+48