Commit d38cd8ae by Gabriel Dos Reis Committed by Gabriel Dos Reis

acinclude.m4: CHECK_MATH_DECL_AND_LINKAGE for hypot, hypotf, hypotl, atan2f, atan2l.

        * 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.

From-SVN: r44334
parent 40a25731
2001-07-25 Gabriel Dos Reis <gdr@merlin.codesourcery.com>
* 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.
2001-07-23 David Edelsohn <edelsohn@gnu.org> 2001-07-23 David Edelsohn <edelsohn@gnu.org>
* include/bits/limits_generic.h (int): Set digits and digits10 * include/bits/limits_generic.h (int): Set digits and digits10
......
...@@ -643,6 +643,7 @@ AC_DEFUN(GLIBCPP_CHECK_MATH_SUPPORT, [ ...@@ -643,6 +643,7 @@ AC_DEFUN(GLIBCPP_CHECK_MATH_SUPPORT, [
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3(sincos) GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3(sincos)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(fpclass) GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(fpclass)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(qfpclass) GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(qfpclass)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(hypot)
dnl Check to see if basic C math functions have float versions. dnl Check to see if basic C math functions have float versions.
GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(float trig, GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(float trig,
...@@ -655,9 +656,11 @@ AC_DEFUN(GLIBCPP_CHECK_MATH_SUPPORT, [ ...@@ -655,9 +656,11 @@ AC_DEFUN(GLIBCPP_CHECK_MATH_SUPPORT, [
ceilf floorf) ceilf floorf)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isnanf) GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isnanf)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isinff) GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isinff)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(atan2f)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(fabsf) GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(fabsf)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(fmodf) GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(fmodf)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(frexpf) GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(frexpf)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(hypotf)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(ldexpf) GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(ldexpf)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(logf) GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(logf)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(log10f) GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(log10f)
...@@ -684,6 +687,7 @@ AC_DEFUN(GLIBCPP_CHECK_MATH_SUPPORT, [ ...@@ -684,6 +687,7 @@ AC_DEFUN(GLIBCPP_CHECK_MATH_SUPPORT, [
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(fabsl) GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(fabsl)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(fmodl) GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(fmodl)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(frexpl) GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(frexpl)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(hypotl)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(ldexpl) GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(ldexpl)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(logl) GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(logl)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(log10l) GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(log10l)
...@@ -728,23 +732,22 @@ dnl Check to see if there is native support for complex ...@@ -728,23 +732,22 @@ dnl Check to see if there is native support for complex
dnl dnl
dnl Don't compile bits in math/* if native support exits. dnl Don't compile bits in math/* if native support exits.
dnl dnl
dnl Define USE_COMPLEX_LONG_DOUBLE etc if "atan2l/copysignl" is found. dnl Define USE_COMPLEX_LONG_DOUBLE etc if "copysignl" is found.
dnl dnl
dnl GLIBCPP_CHECK_COMPLEX_MATH_SUPPORT dnl GLIBCPP_CHECK_COMPLEX_MATH_SUPPORT
AC_DEFUN(GLIBCPP_CHECK_COMPLEX_MATH_SUPPORT, [ AC_DEFUN(GLIBCPP_CHECK_COMPLEX_MATH_SUPPORT, [
dnl Check for complex versions of math functions of platform. dnl Check for complex versions of math functions of platform.
AC_CHECK_LIB(m, main) AC_CHECK_LIB(m, main)
AC_REPLACE_MATHFUNCS(nan hypot hypotf copysignf) AC_REPLACE_MATHFUNCS(nan copysignf)
dnl Compile the long double complex functions only if the function dnl Compile the long double complex functions only if the function
dnl provides the non-complex long double functions that are needed. dnl provides the non-complex long double functions that are needed.
dnl Currently this includes copysignl and atan2l, which should be dnl Currently this includes copysignl, which should be
dnl cached from the GLIBCPP_CHECK_MATH_SUPPORT macro, above. dnl cached from the GLIBCPP_CHECK_MATH_SUPPORT macro, above.
USE_COMPLEX_LONG_DOUBLE=no USE_COMPLEX_LONG_DOUBLE=no
if test x$ac_cv_func_atan2l = x"yes" && if test x$ac_cv_func_copysignl = x"yes"; then
test x$ac_cv_func_copysignl = x"yes"; then
USE_COMPLEX_LONG_DOUBLE=yes USE_COMPLEX_LONG_DOUBLE=yes
AC_REPLACE_MATHFUNCS(hypotl signbitl) AC_REPLACE_MATHFUNCS(signbitl)
fi fi
AC_SUBST(USE_COMPLEX_LONG_DOUBLE) AC_SUBST(USE_COMPLEX_LONG_DOUBLE)
......
...@@ -655,6 +655,7 @@ AC_DEFUN(GLIBCPP_CHECK_MATH_SUPPORT, [ ...@@ -655,6 +655,7 @@ AC_DEFUN(GLIBCPP_CHECK_MATH_SUPPORT, [
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3(sincos) GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3(sincos)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(fpclass) GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(fpclass)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(qfpclass) GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(qfpclass)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(hypot)
dnl Check to see if basic C math functions have float versions. dnl Check to see if basic C math functions have float versions.
GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(float trig, GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(float trig,
...@@ -667,9 +668,11 @@ AC_DEFUN(GLIBCPP_CHECK_MATH_SUPPORT, [ ...@@ -667,9 +668,11 @@ AC_DEFUN(GLIBCPP_CHECK_MATH_SUPPORT, [
ceilf floorf) ceilf floorf)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isnanf) GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isnanf)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isinff) GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isinff)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(atan2f)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(fabsf) GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(fabsf)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(fmodf) GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(fmodf)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(frexpf) GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(frexpf)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(hypotf)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(ldexpf) GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(ldexpf)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(logf) GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(logf)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(log10f) GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(log10f)
...@@ -696,6 +699,7 @@ AC_DEFUN(GLIBCPP_CHECK_MATH_SUPPORT, [ ...@@ -696,6 +699,7 @@ AC_DEFUN(GLIBCPP_CHECK_MATH_SUPPORT, [
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(fabsl) GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(fabsl)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(fmodl) GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(fmodl)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(frexpl) GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(frexpl)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(hypotl)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(ldexpl) GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(ldexpl)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(logl) GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(logl)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(log10l) GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(log10l)
...@@ -740,23 +744,22 @@ dnl Check to see if there is native support for complex ...@@ -740,23 +744,22 @@ dnl Check to see if there is native support for complex
dnl dnl
dnl Don't compile bits in math/* if native support exits. dnl Don't compile bits in math/* if native support exits.
dnl dnl
dnl Define USE_COMPLEX_LONG_DOUBLE etc if "atan2l/copysignl" is found. dnl Define USE_COMPLEX_LONG_DOUBLE etc if "copysignl" is found.
dnl dnl
dnl GLIBCPP_CHECK_COMPLEX_MATH_SUPPORT dnl GLIBCPP_CHECK_COMPLEX_MATH_SUPPORT
AC_DEFUN(GLIBCPP_CHECK_COMPLEX_MATH_SUPPORT, [ AC_DEFUN(GLIBCPP_CHECK_COMPLEX_MATH_SUPPORT, [
dnl Check for complex versions of math functions of platform. dnl Check for complex versions of math functions of platform.
AC_CHECK_LIB(m, main) AC_CHECK_LIB(m, main)
AC_REPLACE_MATHFUNCS(nan hypot hypotf copysignf) AC_REPLACE_MATHFUNCS(nan copysignf)
dnl Compile the long double complex functions only if the function dnl Compile the long double complex functions only if the function
dnl provides the non-complex long double functions that are needed. dnl provides the non-complex long double functions that are needed.
dnl Currently this includes copysignl and atan2l, which should be dnl Currently this includes copysignl, which should be
dnl cached from the GLIBCPP_CHECK_MATH_SUPPORT macro, above. dnl cached from the GLIBCPP_CHECK_MATH_SUPPORT macro, above.
USE_COMPLEX_LONG_DOUBLE=no USE_COMPLEX_LONG_DOUBLE=no
if test x$ac_cv_func_atan2l = x"yes" && if test x$ac_cv_func_copysignl = x"yes"; then
test x$ac_cv_func_copysignl = x"yes"; then
USE_COMPLEX_LONG_DOUBLE=yes USE_COMPLEX_LONG_DOUBLE=yes
AC_REPLACE_MATHFUNCS(hypotl signbitl) AC_REPLACE_MATHFUNCS(signbitl)
fi fi
AC_SUBST(USE_COMPLEX_LONG_DOUBLE) AC_SUBST(USE_COMPLEX_LONG_DOUBLE)
......
...@@ -87,6 +87,9 @@ ...@@ -87,6 +87,9 @@
/* Define if you have the _asinl function. */ /* Define if you have the _asinl function. */
#undef HAVE__ASINL #undef HAVE__ASINL
/* Define if you have the _atan2f function. */
#undef HAVE__ATAN2F
/* Define if you have the _atan2l function. */ /* Define if you have the _atan2l function. */
#undef HAVE__ATAN2L #undef HAVE__ATAN2L
...@@ -159,6 +162,15 @@ ...@@ -159,6 +162,15 @@
/* Define if you have the _frexpl function. */ /* Define if you have the _frexpl function. */
#undef HAVE__FREXPL #undef HAVE__FREXPL
/* Define if you have the _hypot function. */
#undef HAVE__HYPOT
/* Define if you have the _hypotf function. */
#undef HAVE__HYPOTF
/* Define if you have the _hypotl function. */
#undef HAVE__HYPOTL
/* Define if you have the _isinf function. */ /* Define if you have the _isinf function. */
#undef HAVE__ISINF #undef HAVE__ISINF
...@@ -261,6 +273,9 @@ ...@@ -261,6 +273,9 @@
/* Define if you have the asinl function. */ /* Define if you have the asinl function. */
#undef HAVE_ASINL #undef HAVE_ASINL
/* Define if you have the atan2f function. */
#undef HAVE_ATAN2F
/* Define if you have the atan2l function. */ /* Define if you have the atan2l function. */
#undef HAVE_ATAN2L #undef HAVE_ATAN2L
......
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -27,12 +27,9 @@ mkinstalldirs = $(SHELL) $(toplevel_srcdir)/mkinstalldirs ...@@ -27,12 +27,9 @@ mkinstalldirs = $(SHELL) $(toplevel_srcdir)/mkinstalldirs
noinst_LTLIBRARIES = libmath.la noinst_LTLIBRARIES = libmath.la
EXTRA_LONG_DOUBLE_yes = \ EXTRA_LONG_DOUBLE_yes = signbitl.c
hypotl.c signbitl.c
EXTRA_DIST = \ EXTRA_DIST = $(EXTRA_LONG_DOUBLE_yes)
hypot.c hypotf.c \
$(EXTRA_LONG_DOUBLE_yes)
libmath_la_LIBADD = \ libmath_la_LIBADD = \
@LIBMATHOBJS@ \ @LIBMATHOBJS@ \
......
...@@ -129,11 +129,9 @@ mkinstalldirs = $(SHELL) $(toplevel_srcdir)/mkinstalldirs ...@@ -129,11 +129,9 @@ mkinstalldirs = $(SHELL) $(toplevel_srcdir)/mkinstalldirs
noinst_LTLIBRARIES = libmath.la 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@ $(EXTRA_LONG_DOUBLE_$(USE_COMPLEX_LONG_DOUBLE)) libmath_la_LIBADD = @LIBMATHOBJS@ $(EXTRA_LONG_DOUBLE_$(USE_COMPLEX_LONG_DOUBLE))
...@@ -278,7 +276,7 @@ distdir: $(DISTFILES) ...@@ -278,7 +276,7 @@ distdir: $(DISTFILES)
@for file in $(DISTFILES); do \ @for file in $(DISTFILES); do \
if test -f $$file; then d=.; else d=$(srcdir); fi; \ if test -f $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \ if test -d $$d/$$file; then \
cp -pr $$d/$$file $(distdir)/$$file; \ cp -pr $$/$$file $(distdir)/$$file; \
else \ else \
test -f $(distdir)/$$file \ test -f $(distdir)/$$file \
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
......
/* 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);
}
/* 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
}
/* 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);
}
...@@ -28,9 +28,13 @@ ...@@ -28,9 +28,13 @@
the GNU General Public License. */ the GNU General Public License. */
#include <math.h> #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 float
atan2f(float x, float y) atan2f(float x, float y)
{ {
...@@ -38,7 +42,16 @@ atan2f(float x, float y) ...@@ -38,7 +42,16 @@ atan2f(float x, float y)
} }
#endif #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 float
cosf(float x) cosf(float x)
{ {
...@@ -46,7 +59,16 @@ cosf(float x) ...@@ -46,7 +59,16 @@ cosf(float x)
} }
#endif #endif
#ifndef _GLIBCPP_HAVE_COSHF #ifndef HAVE_COSL
long double
cosl(long double x)
{
return cos((double) x);
}
#endif
#ifndef HAVE_COSHF
float float
coshf(float x) coshf(float x)
{ {
...@@ -54,7 +76,16 @@ coshf(float x) ...@@ -54,7 +76,16 @@ coshf(float x)
} }
#endif #endif
#ifndef _GLIBCPP_HAVE_EXPF #ifndef HAVE_COSHL
long double
coshl(long double x)
{
return cosh((double) x);
}
#endif
#ifndef HAVE_EXPF
float float
expf(float x) expf(float x)
{ {
...@@ -62,7 +93,49 @@ expf(float x) ...@@ -62,7 +93,49 @@ expf(float x)
} }
#endif #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 float
logf(float x) logf(float x)
{ {
...@@ -70,7 +143,16 @@ logf(float x) ...@@ -70,7 +143,16 @@ logf(float x)
} }
#endif #endif
#ifndef _GLIBCPP_HAVE_LOG10F #ifndef _GBLICPP_HAVE_LOGL
long double
logl(long double x)
{
return log((double) x);
}
#endif
#ifndef HAVE_LOG10F
float float
log10f(float x) log10f(float x)
{ {
...@@ -78,7 +160,16 @@ log10f(float x) ...@@ -78,7 +160,16 @@ log10f(float x)
} }
#endif #endif
#ifndef _GLIBCPP_HAVE_POWF #ifndef HAVE_LOG10L
long double
log10l(long double x)
{
return log10((double) x);
}
#endif
#ifndef HAVE_POWF
float float
powf(float x, float y) powf(float x, float y)
{ {
...@@ -86,7 +177,16 @@ powf(float x, float y) ...@@ -86,7 +177,16 @@ powf(float x, float y)
} }
#endif #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 float
sinf(float x) sinf(float x)
{ {
...@@ -94,7 +194,16 @@ sinf(float x) ...@@ -94,7 +194,16 @@ sinf(float x)
} }
#endif #endif
#ifndef _GLIBCPP_HAVE_SINHF #ifndef HAVE_SINL
long double
sinl(long double x)
{
return sin((double) x);
}
#endif
#ifndef HAVE_SINHF
float float
sinhf(float x) sinhf(float x)
{ {
...@@ -102,7 +211,16 @@ sinhf(float x) ...@@ -102,7 +211,16 @@ sinhf(float x)
} }
#endif #endif
#ifndef _GLIBCPP_HAVE_SQRTF #ifndef HAVE_SINHL
long double
sinhl(long double x)
{
return sinh((double) x);
}
#endif
#ifndef HAVE_SQRTF
float float
sqrtf(float x) sqrtf(float x)
{ {
...@@ -110,7 +228,16 @@ sqrtf(float x) ...@@ -110,7 +228,16 @@ sqrtf(float x)
} }
#endif #endif
#ifndef _GLIBCPP_HAVE_TANF #ifndef HAVE_SQRTL
long double
sqrtl(long double x)
{
return sqrt((double) x);
}
#endif
#ifndef HAVE_TANF
float float
tanf(float x) tanf(float x)
{ {
...@@ -118,10 +245,27 @@ tanf(float x) ...@@ -118,10 +245,27 @@ tanf(float x)
} }
#endif #endif
#ifndef _GLIBCPP_HAVE_TANHF #ifndef HAVE_TANL
long double
tanl(long double x)
{
return tan((double) x);
}
#endif
#ifndef HAVE_TANHF
float float
tanhf(float x) tanhf(float x)
{ {
return (float) tanh(x); return (float) tanh(x);
} }
#endif #endif
#ifndef HAVE_TANHL
long double
tanhl(long double x)
{
return tanh((double) x);
}
#endif
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment