diff liboctave/lo-specfun.cc @ 9812:f80c566bc751

improve unary mapper system
author Jaroslav Hajek <highegg@gmail.com>
date Thu, 12 Nov 2009 15:47:58 +0100
parents b4fdfee405b5
children 1bb1ed717d2f
line wrap: on
line diff
--- a/liboctave/lo-specfun.cc	Wed Nov 11 17:43:45 2009 -0800
+++ b/liboctave/lo-specfun.cc	Thu Nov 12 15:47:58 2009 +0100
@@ -316,10 +316,8 @@
 }
 
 Complex
-xlgamma (const Complex& xc)
+rc_lgamma (double x)
 {
-  // Can only be called with a real value of x.
-  double x = xc.real ();
   double result;
 
 #if defined (HAVE_LGAMMA_R)
@@ -383,10 +381,8 @@
 }
 
 FloatComplex
-xlgamma (const FloatComplex& xc)
+rc_lgamma (float x)
 {
-  // Can only be called with a real value of x.
-  float x = xc.real ();
   float result;
 
 #if defined (HAVE_LGAMMAF_R)
@@ -502,7 +498,7 @@
 #endif
 
 FloatComplex 
-expm1f(const FloatComplex& x)
+expm1(const FloatComplex& x)
 {
   FloatComplex retval;
 
@@ -588,7 +584,7 @@
 #endif
 
 FloatComplex 
-log1pf (const FloatComplex& x)
+log1p (const FloatComplex& x)
 {
   FloatComplex retval;
 
@@ -3092,6 +3088,19 @@
   return retval;
 }
 
+
+Complex rc_log1p (double x)
+{
+  const double pi = 3.14159265358979323846;
+  return x < -1.0 ? Complex (log (-(1.0 + x)), pi) : Complex (log1p (x));
+}
+
+FloatComplex rc_log1p (float x)
+{
+  const float pi = 3.14159265358979323846f;
+  return x < -1.0f ? FloatComplex (logf (-(1.0f + x)), pi) : FloatComplex (log1pf (x));
+}
+
 /*
 ;;; Local Variables: ***
 ;;; mode: C++ ***