diff liboctave/fMatrix.cc @ 8736:53b4fdeacc2e

improve reduction functions
author Jaroslav Hajek <highegg@gmail.com>
date Fri, 13 Feb 2009 21:04:50 +0100
parents a1ae2aae903e
children 1bd918cfb6e2
line wrap: on
line diff
--- a/liboctave/fMatrix.cc	Fri Feb 13 13:03:04 2009 -0500
+++ b/liboctave/fMatrix.cc	Fri Feb 13 21:04:50 2009 +0100
@@ -2797,42 +2797,31 @@
 FloatMatrix
 FloatMatrix::cumprod (int dim) const
 {
-  MX_CUMULATIVE_OP (FloatMatrix, float, *=);
+  return do_mx_cum_op<FloatMatrix> (*this, dim, mx_inline_cumprod);
 }
 
 FloatMatrix
 FloatMatrix::cumsum (int dim) const
 {
-  MX_CUMULATIVE_OP (FloatMatrix, float, +=);
+  return do_mx_cum_op<FloatMatrix> (*this, dim, mx_inline_cumsum);
 }
 
 FloatMatrix
 FloatMatrix::prod (int dim) const
 {
-  MX_REDUCTION_OP (FloatMatrix, *=, 1.0, 1.0);
+  return do_mx_red_op<FloatMatrix> (*this, dim, mx_inline_prod);
 }
 
 FloatMatrix
 FloatMatrix::sum (int dim) const
 {
-  MX_REDUCTION_OP (FloatMatrix, +=, 0.0, 0.0);
+  return do_mx_red_op<FloatMatrix> (*this, dim, mx_inline_sum);
 }
 
 FloatMatrix
 FloatMatrix::sumsq (int dim) const
 {
-#define ROW_EXPR \
-  float d = elem (i, j); \
-  retval.elem (i, 0) += d * d
-
-#define COL_EXPR \
-  float d = elem (i, j); \
-  retval.elem (0, j) += d * d
-
-  MX_BASE_REDUCTION_OP (FloatMatrix, ROW_EXPR, COL_EXPR, 0.0, 0.0);
-
-#undef ROW_EXPR
-#undef COL_EXPR
+  return do_mx_red_op<FloatMatrix> (*this, dim, mx_inline_sumsq);
 }
 
 FloatMatrix