Merge commit '7337d56d5714227865aeca2b40b6bd97cce296d2' into boehm-demers-weiser-gc
[bpt/guile.git] / libguile / numbers.c
index a8c8996..3059773 100644 (file)
@@ -5998,6 +5998,35 @@ scm_is_number (SCM z)
   return scm_is_true (scm_number_p (z));
 }
 
+#ifdef HAVE_COMPLEX_DOUBLE
+#ifndef HAVE_CLOG
+complex double clog (complex double z);
+complex double
+clog (complex double z)
+{
+  return log(cabs(z))+I*carg(z);
+}
+#endif
+
+#ifndef 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
+
+#ifndef 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