* configure.in (HAVE_CRYPT): check for cexp, clog, carg
authorHan-Wen Nienhuys <hanwen@lilypond.org>
Mon, 9 Apr 2007 14:47:41 +0000 (14:47 +0000)
committerHan-Wen Nienhuys <hanwen@lilypond.org>
Mon, 9 Apr 2007 14:47:41 +0000 (14:47 +0000)
* numbers.c (carg): provide carg, cexp, clog in case they are
missing.

ChangeLog
configure.in
libguile/ChangeLog
libguile/numbers.c

index e681464..020d576 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2007-04-09  Han-Wen Nienhuys  <hanwen@lilypond.org>
+
+       * configure.in (HAVE_CRYPT): check for cexp, clog, carg
+
 2007-02-24  Neil Jerram  <neil@ossau.uklinux.net>
 
        * autogen.sh: Announce versions of autoconf, automake, libtool and
index 9f12fbd..b60f0a2 100644 (file)
@@ -675,6 +675,8 @@ AC_SEARCH_LIBS(crypt, crypt,
 # for the principal root.
 #
 if test "$ac_cv_type_complex_double" = yes; then
+
+  AC_CHECK_FUNCS(cexp clog carg)                        
   AC_CACHE_CHECK([whether csqrt is usable],
     guile_cv_use_csqrt,
     [AC_TRY_RUN([
@@ -1232,7 +1234,7 @@ if test "$cross_compiling" = "yes"; then
   AC_MSG_CHECKING(guile for build)
   GUILE_FOR_BUILD="${GUILE_FOR_BUILD-guile}"
 else
-  GUILE_FOR_BUILD='$(preinstguile)'
+  GUILE_FOR_BUILD='$(top_builddir_absolute)/$(preinstguile)'
 fi   
 
 ## AC_MSG_CHECKING("if we are cross compiling")
index 19339a9..6f5984f 100644 (file)
@@ -1,3 +1,8 @@
+2007-04-09  Han-Wen Nienhuys  <hanwen@lilypond.org>
+
+       * numbers.c (carg): provide carg, cexp, clog in case they are
+       missing.
+
 2007-03-12  Ludovic Courtès  <ludovic.courtes@laas.fr>
 
        * i18n.c (scm_nl_langinfo): `#ifdef'd uses of `GROUPING',
index a0ef29c..4454a34 100644 (file)
@@ -5997,6 +5997,35 @@ scm_is_number (SCM z)
   return scm_is_true (scm_number_p (z));
 }
 
+#if HAVE_COMPLEX_DOUBLE
+#if !HAVE_CLOG
+complex double clog (complex double z);
+complex double
+clog (complex double z)
+{
+  return log(cabs(z))+I*carg(z);
+}
+#endif
+
+#if !HAVE_CEXP
+complex double cexp (complex double z);
+complex double
+cexp (complex double z)
+{
+  return exp (cabs (z)) * cos(carg (z) + I*sin(carg (z)));
+}
+#endif
+
+#if !HAVE_CARG
+double carg (complex double z);
+double
+carg (complex double z)
+{
+  return atan2 (cimag(z), creal(z));
+}
+#endif
+#endif HAVE_COMPLEX_DOUBLE
+
 
 /* In the following functions we dispatch to the real-arg funcs like log()
    when we know the arg is real, instead of just handing everything to