diff options
Diffstat (limited to 'math')
-rw-r--r-- | math/Makefile | 31 | ||||
-rw-r--r-- | math/cabs_template.c (renamed from math/cabs.c) | 17 | ||||
-rw-r--r-- | math/cabsf.c | 28 | ||||
-rw-r--r-- | math/cabsl.c | 28 | ||||
-rw-r--r-- | math/carg_template.c (renamed from math/carg.c) | 17 | ||||
-rw-r--r-- | math/cargf.c | 28 | ||||
-rw-r--r-- | math/cargl.c | 28 | ||||
-rw-r--r-- | math/cimag_template.c (renamed from math/cimag.c) | 15 | ||||
-rw-r--r-- | math/cimagf.c | 27 | ||||
-rw-r--r-- | math/cimagl.c | 27 | ||||
-rw-r--r-- | math/conj_template.c (renamed from math/conj.c) | 15 | ||||
-rw-r--r-- | math/conjf.c | 27 | ||||
-rw-r--r-- | math/conjl.c | 27 | ||||
-rw-r--r-- | math/creal_template.c (renamed from math/creal.c) | 15 | ||||
-rw-r--r-- | math/crealf.c | 27 | ||||
-rw-r--r-- | math/creall.c | 27 |
16 files changed, 71 insertions, 313 deletions
diff --git a/math/Makefile b/math/Makefile index 38a4709802..2ff1405110 100644 --- a/math/Makefile +++ b/math/Makefile @@ -43,6 +43,10 @@ libm-support = s_lib_version s_matherr s_signgam \ fesetenv feupdateenv t_exp fedisblxcpt feenablxcpt \ fegetexcept fesetexcept +# Wrappers for these functions generated per type using a file named +# <func>_template.c and the appropriate math-type-macros-<TYPE>.h. +gen-libm-calls = cargF conjF cimagF crealF cabsF + libm-calls = \ e_acosF e_acoshF e_asinF e_atan2F e_atanhF e_coshF e_expF e_fmodF \ e_hypotF e_j0F e_j1F e_jnF e_lgammaF_r e_logF e_log10F e_powF \ @@ -59,13 +63,13 @@ libm-calls = \ w_ilogbF \ s_fpclassifyF s_fmaxF s_fminF s_fdimF s_nanF s_truncF \ s_remquoF e_log2F e_exp2F s_roundF s_nearbyintF s_sincosF \ - conjF cimagF crealF cabsF cargF s_cexpF s_csinhF s_ccoshF s_clogF \ + s_cexpF s_csinhF s_ccoshF s_clogF \ s_catanF s_casinF s_ccosF s_csinF s_ctanF s_ctanhF s_cacosF \ s_casinhF s_cacoshF s_catanhF s_csqrtF s_cpowF s_cprojF s_clog10F \ s_fmaF s_lrintF s_llrintF s_lroundF s_llroundF e_exp10F w_log2F \ s_issignalingF $(calls:s_%=m_%) x2y2m1F k_casinhF \ gamma_productF lgamma_negF lgamma_productF \ - s_nextupF s_nextdownF + s_nextupF s_nextdownF $(gen-libm-calls) libm-compat-calls-ldouble-yes = w_lgamma_compatl k_standardl libm-compat-calls = w_lgamma_compatf w_lgamma_compat k_standard k_standardf \ @@ -265,6 +269,29 @@ extra-objs += libieee.a ieee-math.o include ../Rules +generated += $(addsuffix .c,$(call type-foreach,$(gen-libm-calls))) \ + gen-libm-templates.stmp + +# Create wrappers in the math build directory. +$(objpfx)gen-libm-templates.stmp: + for gcall in $(gen-libm-calls); do \ + func=$${gcall%F*}$${gcall#*F}; \ + for type in $(foreach t,$(types),$(t)__$(type-$(t)-suffix)); do \ + suff=$${type#*__}; \ + type=$${type%__*}; \ + file=$(objpfx)$${gcall%F*}$${suff}$${gcall#*F}.c; \ + ( \ + echo "#include <math-type-macros-$${type}.h>"; \ + echo "#include <$${func}_template.c>"; \ + ) > $${file}; \ + done; \ + done; \ + echo > $(@) + +# Add dependency to ensure the generator runs prior. +$(foreach t, $(call type-foreach, $(gen-libm-calls)), \ + $(objpfx)$(t).c): $(objpfx)gen-libm-templates.stmp + ifneq (no,$(PERL)) # This must come after the inclusion of sysdeps Makefiles via Rules. $(addprefix $(objpfx), $(libm-tests.o)): $(objpfx)libm-test.stmp diff --git a/math/cabs.c b/math/cabs_template.c index d7e0665dad..5eff1b23f7 100644 --- a/math/cabs.c +++ b/math/cabs_template.c @@ -1,4 +1,4 @@ -/* Return the complex absolute value of double complex value. +/* Return the complex absolute value of complex float type. Copyright (C) 1997-2016 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. @@ -20,13 +20,14 @@ #include <complex.h> #include <math.h> -double -__cabs (double _Complex z) +FLOAT +M_DECL_FUNC (__cabs) (CFLOAT z) { - return __hypot (__real__ z, __imag__ z); + return M_SUF (__hypot) (__real__ z, __imag__ z); } -weak_alias (__cabs, cabs) -#ifdef NO_LONG_DOUBLE -strong_alias (__cabs, __cabsl) -weak_alias (__cabs, cabsl) + +declare_mgen_alias (__cabs, cabs) + +#if M_LIBM_NEED_COMPAT (cabs) +declare_mgen_libm_compat (__cabs, cabs) #endif diff --git a/math/cabsf.c b/math/cabsf.c deleted file mode 100644 index 431a24471b..0000000000 --- a/math/cabsf.c +++ /dev/null @@ -1,28 +0,0 @@ -/* Return the complex absolute value of float complex value. - Copyright (C) 1997-2016 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <complex.h> -#include <math.h> - -float -__cabsf (float _Complex z) -{ - return __hypotf (__real__ z, __imag__ z); -} -weak_alias (__cabsf, cabsf) diff --git a/math/cabsl.c b/math/cabsl.c deleted file mode 100644 index d87e3a2256..0000000000 --- a/math/cabsl.c +++ /dev/null @@ -1,28 +0,0 @@ -/* Return the complex absolute value of long double complex value. - Copyright (C) 1997-2016 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <complex.h> -#include <math.h> - -long double -__cabsl (long double _Complex z) -{ - return __hypotl (__real__ z, __imag__ z); -} -weak_alias (__cabsl, cabsl) diff --git a/math/carg.c b/math/carg_template.c index 61f1e0da9b..6205be8f35 100644 --- a/math/carg.c +++ b/math/carg_template.c @@ -1,4 +1,4 @@ -/* Compute argument of complex double value. +/* Compute argument of complex float type. Copyright (C) 1997-2016 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. @@ -20,13 +20,14 @@ #include <complex.h> #include <math.h> -double -__carg (__complex__ double x) +FLOAT +M_DECL_FUNC (__carg) (CFLOAT x) { - return __atan2 (__imag__ x, __real__ x); + return M_SUF (__atan2) (__imag__ x, __real__ x); } -weak_alias (__carg, carg) -#ifdef NO_LONG_DOUBLE -strong_alias (__carg, __cargl) -weak_alias (__carg, cargl) + +declare_mgen_alias (__carg, carg) + +#if M_LIBM_NEED_COMPAT (carg) +declare_mgen_libm_compat (__carg, carg) #endif diff --git a/math/cargf.c b/math/cargf.c deleted file mode 100644 index 620db3eb33..0000000000 --- a/math/cargf.c +++ /dev/null @@ -1,28 +0,0 @@ -/* Compute argument of complex float value. - Copyright (C) 1997-2016 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <complex.h> -#include <math.h> - -float -__cargf (__complex__ float x) -{ - return __atan2f (__imag__ x, __real__ x); -} -weak_alias (__cargf, cargf) diff --git a/math/cargl.c b/math/cargl.c deleted file mode 100644 index 31b72924e9..0000000000 --- a/math/cargl.c +++ /dev/null @@ -1,28 +0,0 @@ -/* Compute argument of complex long double value. - Copyright (C) 1997-2016 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <complex.h> -#include <math.h> - -long double -__cargl (__complex__ long double x) -{ - return __atan2l (__imag__ x, __real__ x); -} -weak_alias (__cargl, cargl) diff --git a/math/cimag.c b/math/cimag_template.c index 1807ac2028..582147dc67 100644 --- a/math/cimag.c +++ b/math/cimag_template.c @@ -1,4 +1,4 @@ -/* Return imaginary part of complex double value. +/* Return imaginary part of complex float type. Copyright (C) 1997-2016 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. @@ -19,13 +19,14 @@ #include <complex.h> -double -__cimag (double _Complex z) +FLOAT +M_DECL_FUNC (__cimag) (CFLOAT z) { return __imag__ z; } -weak_alias (__cimag, cimag) -#ifdef NO_LONG_DOUBLE -strong_alias (__cimag, __cimagl) -weak_alias (__cimag, cimagl) + +declare_mgen_alias (__cimag, cimag) + +#if M_LIBM_NEED_COMPAT (cimag) +declare_mgen_libm_compat (__cimag, cimag) #endif diff --git a/math/cimagf.c b/math/cimagf.c deleted file mode 100644 index 67c37f4b37..0000000000 --- a/math/cimagf.c +++ /dev/null @@ -1,27 +0,0 @@ -/* Return imaginary part of complex float value. - Copyright (C) 1997-2016 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <complex.h> - -float -__cimagf (float _Complex z) -{ - return __imag__ z; -} -weak_alias (__cimagf, cimagf) diff --git a/math/cimagl.c b/math/cimagl.c deleted file mode 100644 index c1d0910787..0000000000 --- a/math/cimagl.c +++ /dev/null @@ -1,27 +0,0 @@ -/* Return imaginary part of complex long double value. - Copyright (C) 1997-2016 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <complex.h> - -long double -__cimagl (long double _Complex z) -{ - return __imag__ z; -} -weak_alias (__cimagl, cimagl) diff --git a/math/conj.c b/math/conj_template.c index d282985002..72d1236298 100644 --- a/math/conj.c +++ b/math/conj_template.c @@ -1,4 +1,4 @@ -/* Return complex conjugate of complex double value. +/* Return complex conjugate of complex float type. Copyright (C) 1997-2016 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. @@ -19,13 +19,14 @@ #include <complex.h> -double _Complex -__conj (double _Complex z) +CFLOAT +M_DECL_FUNC (__conj) (CFLOAT z) { return ~z; } -weak_alias (__conj, conj) -#ifdef NO_LONG_DOUBLE -strong_alias (__conj, __conjl) -weak_alias (__conj, conjl) + +declare_mgen_alias (__conj, conj) + +#if M_LIBM_NEED_COMPAT (conj) +declare_mgen_libm_compat (__conj, conj) #endif diff --git a/math/conjf.c b/math/conjf.c deleted file mode 100644 index 3587c942bd..0000000000 --- a/math/conjf.c +++ /dev/null @@ -1,27 +0,0 @@ -/* Return complex conjugate of complex float value. - Copyright (C) 1997-2016 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <complex.h> - -float _Complex -__conjf (float _Complex z) -{ - return ~z; -} -weak_alias (__conjf, conjf) diff --git a/math/conjl.c b/math/conjl.c deleted file mode 100644 index 55bb393845..0000000000 --- a/math/conjl.c +++ /dev/null @@ -1,27 +0,0 @@ -/* Return complex conjugate of complex long double value. - Copyright (C) 1997-2016 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <complex.h> - -long double _Complex -__conjl (long double _Complex z) -{ - return ~z; -} -weak_alias (__conjl, conjl) diff --git a/math/creal.c b/math/creal_template.c index 231d3b05a4..f840f43ebb 100644 --- a/math/creal.c +++ b/math/creal_template.c @@ -1,4 +1,4 @@ -/* Return real part of complex double value. +/* Return real part of complex float type. Copyright (C) 1997-2016 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. @@ -19,13 +19,14 @@ #include <complex.h> -double -__creal (double _Complex z) +FLOAT +M_DECL_FUNC (__creal) (CFLOAT z) { return __real__ z; } -weak_alias (__creal, creal) -#ifdef NO_LONG_DOUBLE -strong_alias (__creal, __creall) -weak_alias (__creal, creall) + +declare_mgen_alias (__creal, creal) + +#if M_LIBM_NEED_COMPAT (creal) +declare_mgen_libm_compat (__creal, creal) #endif diff --git a/math/crealf.c b/math/crealf.c deleted file mode 100644 index 58838490a1..0000000000 --- a/math/crealf.c +++ /dev/null @@ -1,27 +0,0 @@ -/* Return real part of complex float value. - Copyright (C) 1997-2016 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <complex.h> - -float -__crealf (float _Complex z) -{ - return __real__ z; -} -weak_alias (__crealf, crealf) diff --git a/math/creall.c b/math/creall.c deleted file mode 100644 index 4a31557d86..0000000000 --- a/math/creall.c +++ /dev/null @@ -1,27 +0,0 @@ -/* Return real part of complex long double value. - Copyright (C) 1997-2016 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <complex.h> - -long double -__creall (long double _Complex z) -{ - return __real__ z; -} -weak_alias (__creall, creall) |