summaryrefslogtreecommitdiff
path: root/libguile/numbers.c
diff options
context:
space:
mode:
authorHan-Wen Nienhuys <hanwen@lilypond.org>2007-04-09 14:47:41 +0000
committerHan-Wen Nienhuys <hanwen@lilypond.org>2007-04-09 14:47:41 +0000
commit1d8ce4c04d984a6a60104ccf47b9b8679d44a493 (patch)
treea955e91bfebeaa4997f89f90fcca626f926bff6b /libguile/numbers.c
parentafb49959b0952c257770f88bc87ca40ae0305c45 (diff)
downloadguile-1d8ce4c04d984a6a60104ccf47b9b8679d44a493.tar.gz
* configure.in (HAVE_CRYPT): check for cexp, clog, carg
* numbers.c (carg): provide carg, cexp, clog in case they are missing.
Diffstat (limited to 'libguile/numbers.c')
-rw-r--r--libguile/numbers.c29
1 files changed, 29 insertions, 0 deletions
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