diff src/ov-re-mat.cc @ 8650:a1ae2aae903e

abs,real,imag,conj: use code from mx-inlines rather than the generic map
author Jaroslav Hajek <highegg@gmail.com>
date Mon, 02 Feb 2009 15:35:32 +0100
parents f00578b495e9
children 900a5bf52309
line wrap: on
line diff
--- a/src/ov-re-mat.cc	Sun Feb 01 20:40:10 2009 +0100
+++ b/src/ov-re-mat.cc	Mon Feb 02 15:35:32 2009 +0100
@@ -769,17 +769,35 @@
 	       : octave_value (matrix.map (dmap)))); \
   }
 
-static double
-xconj (double x)
+// The fast mappers.
+octave_value
+octave_matrix::abs (void) const
+{
+  return matrix.abs ();
+}
+
+octave_value
+octave_matrix::real (void) const
 {
-  return x;
+  return matrix;
+}
+
+octave_value
+octave_matrix::conj (void) const
+{
+  return matrix;
+}
+
+octave_value
+octave_matrix::imag (void) const
+{
+  return NDArray (matrix.dims (), 0.0);
 }
 
 ARRAY_MAPPER (erf, NDArray::dmapper, ::erf)
 ARRAY_MAPPER (erfc, NDArray::dmapper, ::erfc)
 ARRAY_MAPPER (gamma, NDArray::dmapper, xgamma)
 CD_ARRAY_MAPPER (lgamma, xlgamma, xlgamma, 0.0, octave_Inf)
-ARRAY_MAPPER (abs, NDArray::dmapper, ::fabs)
 ARRAY_MAPPER (acos, NDArray::dmapper, ::acos)
 CD_ARRAY_MAPPER (acosh, ::acosh, ::acosh, 1.0, octave_Inf)
 ARRAY_MAPPER (angle, NDArray::dmapper, ::arg)
@@ -789,19 +807,16 @@
 ARRAY_MAPPER (atan, NDArray::dmapper, ::atan)
 CD_ARRAY_MAPPER (atanh, ::atanh, ::atanh, -1.0, 1.0)
 ARRAY_MAPPER (ceil, NDArray::dmapper, ::ceil)
-ARRAY_MAPPER (conj, NDArray::dmapper, xconj)
 ARRAY_MAPPER (cos, NDArray::dmapper, ::cos)
 ARRAY_MAPPER (cosh, NDArray::dmapper, ::cosh)
 ARRAY_MAPPER (exp, NDArray::dmapper, ::exp)
 ARRAY_MAPPER (expm1, NDArray::dmapper, ::expm1)
 ARRAY_MAPPER (fix, NDArray::dmapper, ::fix)
 ARRAY_MAPPER (floor, NDArray::dmapper, ::floor)
-ARRAY_MAPPER (imag, NDArray::dmapper, ::imag)
 CD_ARRAY_MAPPER (log, ::log, std::log, 0.0, octave_Inf)
 CD_ARRAY_MAPPER (log2, xlog2, xlog2, 0.0, octave_Inf)
 CD_ARRAY_MAPPER (log10, ::log10, std::log10, 0.0, octave_Inf)
 CD_ARRAY_MAPPER (log1p, ::log1p, ::log1p, -1.0, octave_Inf)
-ARRAY_MAPPER (real, NDArray::dmapper, ::real)
 ARRAY_MAPPER (round, NDArray::dmapper, xround)
 ARRAY_MAPPER (roundb, NDArray::dmapper, xroundb)
 ARRAY_MAPPER (signum, NDArray::dmapper, ::signum)