Mercurial > octave
diff liboctave/lo-mappers.cc @ 11212:ce27d6f4e134
use templates and inline for more lo-mappers functionos
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Tue, 09 Nov 2010 04:24:26 -0500 |
parents | 2554b4a0806e |
children | 110e570e5f8d |
line wrap: on
line diff
--- a/liboctave/lo-mappers.cc Tue Nov 09 03:24:18 2010 -0500 +++ b/liboctave/lo-mappers.cc Tue Nov 09 04:24:26 2010 -0500 @@ -40,42 +40,6 @@ // double -> double mappers. -double -arg (double x) -{ - return atan2 (0.0, x); -} - -double -conj (double x) -{ - return x; -} - -double -fix (double x) -{ - return xtrunc (x); -} - -double -imag (double) -{ - return 0.0; -} - -double -real (double x) -{ - return x; -} - -double -xround (double x) -{ - return gnulib::round (x); -} - double xroundb (double x) { @@ -242,44 +206,6 @@ return log ((1.0 + x) / (1.0 - x)) / 2.0; } -Complex -ceil (const Complex& x) -{ - return Complex (ceil (real (x)), ceil (imag (x))); -} - -Complex -fix (const Complex& x) -{ - return Complex (fix (real (x)), fix (imag (x))); -} - -Complex -floor (const Complex& x) -{ - return Complex (floor (real (x)), floor (imag (x))); -} - -Complex -xround (const Complex& x) -{ - return Complex (xround (real (x)), xround (imag (x))); -} - -Complex -xroundb (const Complex& x) -{ - return Complex (xroundb (real (x)), xroundb (imag (x))); -} - -Complex -signum (const Complex& x) -{ - double tmp = abs (x); - - return tmp == 0 ? 0.0 : x / tmp; -} - // complex -> bool mappers. bool @@ -313,48 +239,12 @@ // float -> float mappers. -float -arg (float x) -{ - return atan2 (0.0f, x); -} - -float -conj (float x) -{ - return x; -} - -float -fix (float x) -{ - return xtrunc (x); -} - -float -imag (float) -{ - return 0.0; -} - -float -real (float x) -{ - return x; -} - -float -xround (float x) -{ - return gnulib::round (x); -} - float xroundb (float x) { float t = xround (x); - if (fabs (x - t) == 0.5) + if (fabsf (x - t) == 0.5) t = 2 * xtrunc (0.5 * t); return t; @@ -515,44 +405,6 @@ return log ((static_cast<float>(1.0) + x) / (static_cast<float>(1.0) - x)) / static_cast<float>(2.0); } -FloatComplex -ceil (const FloatComplex& x) -{ - return FloatComplex (ceil (real (x)), ceil (imag (x))); -} - -FloatComplex -fix (const FloatComplex& x) -{ - return FloatComplex (fix (real (x)), fix (imag (x))); -} - -FloatComplex -floor (const FloatComplex& x) -{ - return FloatComplex (floor (real (x)), floor (imag (x))); -} - -FloatComplex -xround (const FloatComplex& x) -{ - return FloatComplex (xround (real (x)), xround (imag (x))); -} - -FloatComplex -xroundb (const FloatComplex& x) -{ - return FloatComplex (xroundb (real (x)), xroundb (imag (x))); -} - -FloatComplex -signum (const FloatComplex& x) -{ - float tmp = abs (x); - - return tmp == 0 ? 0.0 : x / tmp; -} - // complex -> bool mappers. bool @@ -595,87 +447,107 @@ return fabsf (x) > 1.0f ? acos (FloatComplex (x)) : FloatComplex (acosf (x)); } -Complex rc_acosh (double x) +Complex +rc_acosh (double x) { return x < 1.0 ? acosh (Complex (x)) : Complex (acosh (x)); } -FloatComplex rc_acosh (float x) +FloatComplex +rc_acosh (float x) { return x < 1.0f ? acosh (FloatComplex (x)) : FloatComplex (acoshf (x)); } -Complex rc_asin (double x) +Complex +rc_asin (double x) { return fabs (x) > 1.0 ? asin (Complex (x)) : Complex (asin (x)); } -FloatComplex rc_asin (float x) +FloatComplex +rc_asin (float x) { return fabsf (x) > 1.0f ? asin (FloatComplex (x)) : FloatComplex (asinf (x)); } -Complex rc_atanh (double x) +Complex +rc_atanh (double x) { return fabs (x) > 1.0 ? atanh (Complex (x)) : Complex (atanh (x)); } -FloatComplex rc_atanh (float x) +FloatComplex +rc_atanh (float x) { return fabsf (x) > 1.0f ? atanh (FloatComplex (x)) : FloatComplex (atanhf (x)); } -Complex rc_log (double x) +Complex +rc_log (double x) { const double pi = 3.14159265358979323846; return x < 0.0 ? Complex (log (-x), pi) : Complex (log (x)); } -FloatComplex rc_log (float x) +FloatComplex +rc_log (float x) { const float pi = 3.14159265358979323846f; return x < 0.0f ? FloatComplex (logf (-x), pi) : FloatComplex (logf (x)); } -Complex rc_log2 (double x) +Complex +rc_log2 (double x) { const double pil2 = 4.53236014182719380962; // = pi / log(2) return x < 0.0 ? Complex (xlog2 (-x), pil2) : Complex (xlog2 (x)); } -FloatComplex rc_log2 (float x) +FloatComplex +rc_log2 (float x) { const float pil2 = 4.53236014182719380962f; // = pi / log(2) return x < 0.0f ? FloatComplex (xlog2 (-x), pil2) : FloatComplex (xlog2 (x)); } -Complex rc_log10 (double x) +Complex +rc_log10 (double x) { const double pil10 = 1.36437635384184134748; // = pi / log(10) return x < 0.0 ? Complex (log10 (-x), pil10) : Complex (log10 (x)); } -FloatComplex rc_log10 (float x) +FloatComplex +rc_log10 (float x) { const float pil10 = 1.36437635384184134748f; // = pi / log(10) return x < 0.0f ? FloatComplex (log10 (-x), pil10) : FloatComplex (log10f (x)); } -Complex rc_sqrt (double x) +Complex +rc_sqrt (double x) { return x < 0.0 ? Complex (0.0, sqrt (-x)) : Complex (sqrt (x)); } -FloatComplex rc_sqrt (float x) +FloatComplex +rc_sqrt (float x) { return x < 0.0f ? FloatComplex (0.0f, sqrtf (-x)) : FloatComplex (sqrtf (x)); } -bool xnegative_sign (double x) -{ return __lo_ieee_signbit (x); } +bool +xnegative_sign (double x) +{ + return __lo_ieee_signbit (x); +} -bool xnegative_sign (float x) -{ return __lo_ieee_float_signbit (x); } +bool +xnegative_sign (float x) +{ + return __lo_ieee_float_signbit (x); +} // Convert X to the nearest integer value. Should not pass NaN to // this function.