From 048c989961b261b522d1af001cec42518361e36b Mon Sep 17 00:00:00 2001 From: "Steven G. Kargl" Date: Sun, 29 Aug 2004 16:31:16 +0000 Subject: [PATCH] bessel.c: New file. 2004-08-29 Steven G. Kargl Paul Brook * intrinsics/bessel.c: New file. * intrinsics/erf.c: New file. * Makefie.am: Add intrinsics/bessel.c and intrinsics/erf.c. * configure.ac: Test for C99 Bessel and Error functions. * Makefile.in: Regenerate. * config.h.in: Regenerate. * configure: Regenerate. From-SVN: r86728 --- libgfortran/intrinsics/bessel.c | 72 +++++++++++++++++++++++++++++++++ libgfortran/intrinsics/erf.c | 39 ++++++++++++++++++ 2 files changed, 111 insertions(+) create mode 100644 libgfortran/intrinsics/bessel.c create mode 100644 libgfortran/intrinsics/erf.c diff --git a/libgfortran/intrinsics/bessel.c b/libgfortran/intrinsics/bessel.c new file mode 100644 index 00000000000..ed7424215c6 --- /dev/null +++ b/libgfortran/intrinsics/bessel.c @@ -0,0 +1,72 @@ +/* Wrapper for systems without the various C99 single precision Bessel + functions. + Copyright (C) 2004 Free Software Foundation, Inc. + +This file is part of the GNU Fortran 95 runtime library (libgfortran). + +Libgfortran 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. + +Libgfortran 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 libgfortran; see the file COPYING.LIB. If not, +write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. */ + +#include "config.h" +#include +#include "libgfortran.h" + +/* Assume we have all or none of these. */ +#if HAVE_J0 && !HAVE_J0F +float +j0f (float x) +{ + return (float) j0 ((double) x); +} +#endif + +#if HAVE_J1 && !HAVE_J1F +float j1f (float x) +{ + return (float) j1 ((double) x); +} +#endif + +#if HAVE_JN && !HAVE_JNF +float +jnf (int n, float x) +{ + return (float) jn (n, (double) x); +} +#endif + +#if HAVE_Y0 && !HAVE_Y0F +float +y0f (float x) +{ + return (float) y0 ((double) x); +} +#endif + +#if HAVE_Y1 && !HAVE_Y1F +float +y1f (float x) +{ + return (float) y1 ((double) x); +} +#endif + +#if HAVE_YN && !HAVE_YNF +float +ynf (int n, float x) +{ + return (float) yn (n, (double) x); +} +#endif diff --git a/libgfortran/intrinsics/erf.c b/libgfortran/intrinsics/erf.c new file mode 100644 index 00000000000..93329de4de3 --- /dev/null +++ b/libgfortran/intrinsics/erf.c @@ -0,0 +1,39 @@ +/* Wrapper for systems without the C99 erff() and erfcf() functions + Copyright (C) 2004 Free Software Foundation, Inc. + +This file is part of the GNU Fortran 95 runtime library (libgfortran). + +Libgfortran 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. + +Libgfortran 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 libgfortran; see the file COPYING.LIB. If not, +write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. */ + +#include "config.h" +#include +#include "libgfortran.h" + +#if HAVE_ERF && !HAVE_ERFF +float +erff (float x) +{ + return (float) erf ((double) x); +} +#endif + +#if HAVE_ERFC && !HAVE_ERFCF +float +erfcf (float x) +{ + return (float) erfc ((double) x); +} +#endif