------- Comment #4 from fxcoudert at gcc dot gnu dot org  2007-09-30 22:28 
-------
The patch below should provide fallback functions (build in maintainer mode or
use autoreconf in libgfortran), does it work?


Index: intrinsics/c99_functions.c
===================================================================
--- intrinsics/c99_functions.c  (revision 128673)
+++ intrinsics/c99_functions.c  (working copy)
@@ -168,6 +168,31 @@ erfcf (float x)
 #endif


+/* Wrappers for systems without the C99 gammaf() and lgammaf() functions.  */
+
+#if defined(HAVE_GAMMA) && !defined(HAVE_GAMMAF)
+#define HAVE_GAMMAF 1
+extern float gammaf (float);
+
+float
+gammaf (float x)
+{
+  return (float) gamma ((double) x);
+}
+#endif
+
+#if defined(HAVE_LGAMMA) && !defined(HAVE_LGAMMAF)
+#define HAVE_LGAMMAF 1
+extern float lgammaf (float);
+
+float
+lgammaf (float x)
+{
+  return (float) lgamma ((double) x);
+}
+#endif
+
+
 #ifndef HAVE_ACOSF
 #define HAVE_ACOSF 1
 float
Index: c99_protos.h
===================================================================
--- c99_protos.h        (revision 128673)
+++ c99_protos.h        (working copy)
@@ -284,6 +284,19 @@ extern float erfcf (float);
 #endif


+/* Wrappers for systems without the C99 gammaf() and lgammaf() functions.  */
+
+#if defined(HAVE_GAMMA) && !defined(HAVE_GAMMAF)
+#define HAVE_GAMMAF 1
+extern float gammaf (float);
+#endif
+
+#if defined(HAVE_LGAMMA) && !defined(HAVE_LGAMMAF)
+#define HAVE_LGAMMAF 1
+extern float lgammaf (float);
+#endif
+
+

 /* log10l is needed on all platforms for decimal I/O */
 #ifndef HAVE_LOG10L
Index: configure.ac
===================================================================
--- configure.ac        (revision 128673)
+++ configure.ac        (working copy)
@@ -379,6 +379,10 @@ AC_CHECK_LIB([m],[y1l],[AC_DEFINE([HAVE_
 AC_CHECK_LIB([m],[ynf],[AC_DEFINE([HAVE_YNF],[1],[libm includes ynf])])
 AC_CHECK_LIB([m],[yn],[AC_DEFINE([HAVE_YN],[1],[libm includes yn])])
 AC_CHECK_LIB([m],[ynl],[AC_DEFINE([HAVE_YNL],[1],[libm includes ynl])])
+AC_CHECK_LIB([m],[gamma],[AC_DEFINE([HAVE_GAMMA],[1],[libm includes gamma])])
+AC_CHECK_LIB([m],[gammaf],[AC_DEFINE([HAVE_GAMMAF],[1],[libm includes
gammaf])]
)
+AC_CHECK_LIB([m],[lgamma],[AC_DEFINE([HAVE_LGAMMA],[1],[libm includes
lgamma])]
)
+AC_CHECK_LIB([m],[lgammaf],[AC_DEFINE([HAVE_LGAMMAF],[1],[libm includes
lgammaf
])])

 # On AIX, clog is present in libm as __clog
 AC_CHECK_LIB([m],[__clog],[AC_DEFINE([HAVE_CLOG],[1],[libm includes clog])])


-- 

fxcoudert at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |fxcoudert at gcc dot gnu dot
                   |                            |org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33583

Reply via email to