From 1d8ce4c04d984a6a60104ccf47b9b8679d44a493 Mon Sep 17 00:00:00 2001 From: Han-Wen Nienhuys Date: Mon, 9 Apr 2007 14:47:41 +0000 Subject: [PATCH] * configure.in (HAVE_CRYPT): check for cexp, clog, carg * numbers.c (carg): provide carg, cexp, clog in case they are missing. --- ChangeLog | 4 ++++ configure.in | 4 +++- libguile/ChangeLog | 5 +++++ libguile/numbers.c | 29 +++++++++++++++++++++++++++++ 4 files changed, 41 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index e68146419..020d576b4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2007-04-09 Han-Wen Nienhuys + + * configure.in (HAVE_CRYPT): check for cexp, clog, carg + 2007-02-24 Neil Jerram * autogen.sh: Announce versions of autoconf, automake, libtool and diff --git a/configure.in b/configure.in index 9f12fbd8e..b60f0a265 100644 --- a/configure.in +++ b/configure.in @@ -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") diff --git a/libguile/ChangeLog b/libguile/ChangeLog index 19339a97d..6f5984f5d 100644 --- a/libguile/ChangeLog +++ b/libguile/ChangeLog @@ -1,3 +1,8 @@ +2007-04-09 Han-Wen Nienhuys + + * numbers.c (carg): provide carg, cexp, clog in case they are + missing. + 2007-03-12 Ludovic Courtès * i18n.c (scm_nl_langinfo): `#ifdef'd uses of `GROUPING', diff --git a/libguile/numbers.c b/libguile/numbers.c index a0ef29cdd..4454a342c 100644 --- a/libguile/numbers.c +++ b/libguile/numbers.c @@ -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 -- 2.20.1