diff options
author | gdr <gdr@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-07-25 08:06:47 +0000 |
---|---|---|
committer | gdr <gdr@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-07-25 08:06:47 +0000 |
commit | 1e59e631f4883b34561e3807ce3829a4b36fdcff (patch) | |
tree | 3c9a527aa129d17798187094a56296270e1eb09a /libstdc++-v3/libmath | |
parent | 2809d86d7e40497c3229168d3a7ce3b687fd0233 (diff) | |
download | gcc-1e59e631f4883b34561e3807ce3829a4b36fdcff.tar.gz |
* acinclude.m4: CHECK_MATH_DECL_AND_LINKAGE for hypot, hypotf,
hypotl, atan2f, atan2l. Remove from REPLACE_MATHFUNCS list.
* aclocal.m4: Regenerate.
* config.h.in: Likewise.
* configure: Likewise.
* libmath/Makefile.am (EXTRA_LONG_DOUBLE_yes): Remove hypotl.c
(EXTRA_DIST): Remove hypot.c hypotf.c.
* libmath/Makefile.am: Regenerate.
* libmath/hypotf.c: Remove.
* libmath/hypot.c: Likewise.
* libmath/hypotl.c: Likewise.
* libmath/stubs.c: The macros seen here are HAVE_xxx, not
_GLIBCPP_HAVE_xxx. Add long double versions.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@44334 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3/libmath')
-rw-r--r-- | libstdc++-v3/libmath/Makefile.am | 7 | ||||
-rw-r--r-- | libstdc++-v3/libmath/Makefile.in | 8 | ||||
-rw-r--r-- | libstdc++-v3/libmath/hypot.c | 38 | ||||
-rw-r--r-- | libstdc++-v3/libmath/hypotf.c | 48 | ||||
-rw-r--r-- | libstdc++-v3/libmath/hypotl.c | 37 | ||||
-rw-r--r-- | libstdc++-v3/libmath/stubs.c | 170 |
6 files changed, 162 insertions, 146 deletions
diff --git a/libstdc++-v3/libmath/Makefile.am b/libstdc++-v3/libmath/Makefile.am index 2f696f9e7a1..c0cea3ce35f 100644 --- a/libstdc++-v3/libmath/Makefile.am +++ b/libstdc++-v3/libmath/Makefile.am @@ -27,12 +27,9 @@ mkinstalldirs = $(SHELL) $(toplevel_srcdir)/mkinstalldirs noinst_LTLIBRARIES = libmath.la -EXTRA_LONG_DOUBLE_yes = \ - hypotl.c signbitl.c +EXTRA_LONG_DOUBLE_yes = signbitl.c -EXTRA_DIST = \ - hypot.c hypotf.c \ - $(EXTRA_LONG_DOUBLE_yes) +EXTRA_DIST = $(EXTRA_LONG_DOUBLE_yes) libmath_la_LIBADD = \ @LIBMATHOBJS@ \ diff --git a/libstdc++-v3/libmath/Makefile.in b/libstdc++-v3/libmath/Makefile.in index 17581f23533..95e7ce02cbf 100644 --- a/libstdc++-v3/libmath/Makefile.in +++ b/libstdc++-v3/libmath/Makefile.in @@ -129,11 +129,9 @@ mkinstalldirs = $(SHELL) $(toplevel_srcdir)/mkinstalldirs noinst_LTLIBRARIES = libmath.la -EXTRA_LONG_DOUBLE_yes = hypotl.c signbitl.c - - -EXTRA_DIST = hypot.c hypotf.c $(EXTRA_LONG_DOUBLE_yes) +EXTRA_LONG_DOUBLE_yes = signbitl.c +EXTRA_DIST = $(EXTRA_LONG_DOUBLE_yes) libmath_la_LIBADD = @LIBMATHOBJS@ $(EXTRA_LONG_DOUBLE_$(USE_COMPLEX_LONG_DOUBLE)) @@ -278,7 +276,7 @@ distdir: $(DISTFILES) @for file in $(DISTFILES); do \ if test -f $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ - cp -pr $$d/$$file $(distdir)/$$file; \ + cp -pr $$/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ diff --git a/libstdc++-v3/libmath/hypot.c b/libstdc++-v3/libmath/hypot.c deleted file mode 100644 index 9e3c07b0222..00000000000 --- a/libstdc++-v3/libmath/hypot.c +++ /dev/null @@ -1,38 +0,0 @@ -/* Compute hypothenuse. */ - -/* Copyright (C) 1997-1999 Free Software Foundation, Inc. - - This file is part of the GNU ISO C++ Library. This library is free - software; you can redistribute it and/or modify it under the - terms of the GNU General Public License as published by the - Free Software Foundation; either version 2, or (at your option) - any later version. - - This 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 General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this library; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, - USA. - - As a special exception, you may use this file as part of a free software - library without restriction. Specifically, if other files instantiate - templates or use macros or inline functions from this file, or you compile - this file and link it with other files to produce an executable, this - file does not by itself cause the resulting executable to be covered by - the GNU General Public License. This exception does not however - invalidate any other reasons why the executable file might be covered by - the GNU General Public License. */ - -/* If the platform is so pathetic that is has no hypot function it does - not deserve it better than getting this version. */ -extern double sqrt (double); - -double -hypot (double x, double y) -{ - return sqrt (x * x + y * y); -} diff --git a/libstdc++-v3/libmath/hypotf.c b/libstdc++-v3/libmath/hypotf.c deleted file mode 100644 index 29d1681f5cc..00000000000 --- a/libstdc++-v3/libmath/hypotf.c +++ /dev/null @@ -1,48 +0,0 @@ -/* Compute hypothenuse. */ - -/* Copyright (C) 1997-1999 Free Software Foundation, Inc. - - This file is part of the GNU ISO C++ Library. This library is free - software; you can redistribute it and/or modify it under the - terms of the GNU General Public License as published by the - Free Software Foundation; either version 2, or (at your option) - any later version. - - This 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 General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this library; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, - USA. - - As a special exception, you may use this file as part of a free software - library without restriction. Specifically, if other files instantiate - templates or use macros or inline functions from this file, or you compile - this file and link it with other files to produce an executable, this - file does not by itself cause the resulting executable to be covered by - the GNU General Public License. This exception does not however - invalidate any other reasons why the executable file might be covered by - the GNU General Public License. */ - -#include <config.h> - -/* If there is a `double' version use it. Otherwise make it simply and - stupid. */ -extern double hypot (double, double); -extern double sqrt (double); -extern float sqrtf (float); - -float -hypotf (float x, float y) -{ -#ifdef HAVE_HYPOT - return hypot (x, y); -#elif HAVE_SQRTF - return sqrtf (x * x + y * y); -#else - return sqrt (x * x + y * y); -#endif -} diff --git a/libstdc++-v3/libmath/hypotl.c b/libstdc++-v3/libmath/hypotl.c deleted file mode 100644 index 1ec8a9ce7ee..00000000000 --- a/libstdc++-v3/libmath/hypotl.c +++ /dev/null @@ -1,37 +0,0 @@ -/* Compute hypothenuse. */ - -/* Copyright (C) 1997-1999 Free Software Foundation, Inc. - - This file is part of the GNU ISO C++ Library. This library is free - software; you can redistribute it and/or modify it under the - terms of the GNU General Public License as published by the - Free Software Foundation; either version 2, or (at your option) - any later version. - - This 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 General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this library; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, - USA. - - As a special exception, you may use this file as part of a free software - library without restriction. Specifically, if other files instantiate - templates or use macros or inline functions from this file, or you compile - this file and link it with other files to produce an executable, this - file does not by itself cause the resulting executable to be covered by - the GNU General Public License. This exception does not however - invalidate any other reasons why the executable file might be covered by - the GNU General Public License. */ - -/* The platform supports some long double functions but not hypotl. Blarg. */ -extern long double sqrtl (long double); - -long double -hypotl (long double x, long double y) -{ - return sqrtl (x * x + y * y); -} diff --git a/libstdc++-v3/libmath/stubs.c b/libstdc++-v3/libmath/stubs.c index cba6f8441fc..9a0f5f63954 100644 --- a/libstdc++-v3/libmath/stubs.c +++ b/libstdc++-v3/libmath/stubs.c @@ -28,9 +28,13 @@ the GNU General Public License. */ #include <math.h> -#include <config.h> +#include "config.h" -#ifndef _GLIBCPP_HAVE_ATAN2F +/* For targets which do not have support for long double versions, + we use the crude approximation. We'll do better later. */ + + +#ifndef HAVE_ATAN2F float atan2f(float x, float y) { @@ -38,7 +42,16 @@ atan2f(float x, float y) } #endif -#if !defined(_GLIBCPP_HAVE_COSF) && !defined(_GLIBCPP_HAVE___BUILTIN_COSF) +#ifndef HAVE_ATAN2L +long double +atan2l(long double x, long double y) +{ + return atan2((double) x, (double) y); +} +#endif + + +#if !defined(HAVE_COSF) && !defined(HAVE___BUILTIN_COSF) float cosf(float x) { @@ -46,7 +59,16 @@ cosf(float x) } #endif -#ifndef _GLIBCPP_HAVE_COSHF +#ifndef HAVE_COSL +long double +cosl(long double x) +{ + return cos((double) x); +} +#endif + + +#ifndef HAVE_COSHF float coshf(float x) { @@ -54,7 +76,16 @@ coshf(float x) } #endif -#ifndef _GLIBCPP_HAVE_EXPF +#ifndef HAVE_COSHL +long double +coshl(long double x) +{ + return cosh((double) x); +} +#endif + + +#ifndef HAVE_EXPF float expf(float x) { @@ -62,7 +93,49 @@ expf(float x) } #endif -#ifndef _GLIBCPP_HAVE_LOGF +#ifndef HAVE_EXPL +long double +expl(long double x) +{ + return exp((double) x); +} +#endif + + +/* Compute the hypothenuse of a right triangle with side x and y. */ +#ifndef HAVE_HYPOTF +float +hypotf(float x, float y) +{ + float s = fabsf(x) + fabsf(y); + x /= s; y /= s; + return s * sqrtf(x * x + y * y); +} +#endif + +#ifndef HAVE_HYPOT +double +hypot(double x, double y) +{ + double s = fabs(x) + fabs(y); + x /= s; y /= s; + return s * sqrt(x * x + y * y); +} +#endif + +#ifndef HAVE_HYPOTL +long double +hypotl(long double x, long double y) +{ + long double s = fabsl(x) + fabsl(y); + x /= s; y /= s; + return s * sqrtl(x * x + y * y); +} +#endif + + + +#ifndef HAVE_LOGF float logf(float x) { @@ -70,7 +143,16 @@ logf(float x) } #endif -#ifndef _GLIBCPP_HAVE_LOG10F +#ifndef _GBLICPP_HAVE_LOGL +long double +logl(long double x) +{ + return log((double) x); +} +#endif + + +#ifndef HAVE_LOG10F float log10f(float x) { @@ -78,7 +160,16 @@ log10f(float x) } #endif -#ifndef _GLIBCPP_HAVE_POWF +#ifndef HAVE_LOG10L +long double +log10l(long double x) +{ + return log10((double) x); +} +#endif + + +#ifndef HAVE_POWF float powf(float x, float y) { @@ -86,7 +177,16 @@ powf(float x, float y) } #endif -#if !defined(_GLIBCPP_HAVE_SINF) && !defined(_GLIBCPP_HAVE___BUILTIN_SINF) +#ifndef HAVE_POWL +long double +powl(long double x, long double y) +{ + return pow((double) x, (double) y); +} +#endif + + +#if !defined(HAVE_SINF) && !defined(HAVE___BUILTIN_SINF) float sinf(float x) { @@ -94,7 +194,16 @@ sinf(float x) } #endif -#ifndef _GLIBCPP_HAVE_SINHF +#ifndef HAVE_SINL +long double +sinl(long double x) +{ + return sin((double) x); +} +#endif + + +#ifndef HAVE_SINHF float sinhf(float x) { @@ -102,7 +211,16 @@ sinhf(float x) } #endif -#ifndef _GLIBCPP_HAVE_SQRTF +#ifndef HAVE_SINHL +long double +sinhl(long double x) +{ + return sinh((double) x); +} +#endif + + +#ifndef HAVE_SQRTF float sqrtf(float x) { @@ -110,7 +228,16 @@ sqrtf(float x) } #endif -#ifndef _GLIBCPP_HAVE_TANF +#ifndef HAVE_SQRTL +long double +sqrtl(long double x) +{ + return sqrt((double) x); +} +#endif + + +#ifndef HAVE_TANF float tanf(float x) { @@ -118,10 +245,27 @@ tanf(float x) } #endif -#ifndef _GLIBCPP_HAVE_TANHF +#ifndef HAVE_TANL +long double +tanl(long double x) +{ + return tan((double) x); +} +#endif + + +#ifndef HAVE_TANHF float tanhf(float x) { return (float) tanh(x); } #endif + +#ifndef HAVE_TANHL +long double +tanhl(long double x) +{ + return tanh((double) x); +} +#endif |