diff main/fixed/src/fixedMatrix.cc @ 5655:0924c374b60d octave-forge

Update fixed point code for 3.1.x. Minor bug in test code still present though code seems to work fine
author adb014
date Mon, 18 May 2009 03:18:11 +0000
parents f8d77845533f
children d84d2fea3c90
line wrap: on
line diff
--- a/main/fixed/src/fixedMatrix.cc	Sun May 17 20:06:45 2009 +0000
+++ b/main/fixed/src/fixedMatrix.cc	Mon May 18 03:18:11 2009 +0000
@@ -40,6 +40,8 @@
 #include "fixedMatrix.h"
 #include "fixedCMatrix.h"
 
+#include "fixed-inline.cc"
+
 // Fixed Point Matrix class.
 
 FixedMatrix::FixedMatrix (const MArray2<int> &is, const MArray2<int> &ds)
@@ -792,89 +794,43 @@
 boolMatrix
 FixedMatrix::all (int dim) const
 {
-#define ROW_EXPR \
-  if (elem (i, j) .fixedpoint () == 0.0) \
-    { \
-      retval.elem (i, 0) = false; \
-      break; \
-    }
-#define COL_EXPR \
-  if (elem (i, j) .fixedpoint () == 0.0) \
-    { \
-      retval.elem (0, j) = false; \
-      break; \
-    }
-
-  MX_BASE_REDUCTION_OP (boolMatrix, ROW_EXPR, COL_EXPR, true, true);
-
-#undef ROW_EXPR
-#undef COL_EXPR
+  return do_mx_red_op<boolMatrix> (*this, dim, mx_inline_all);
 }
 
 boolMatrix
 FixedMatrix::any (int dim) const
 {
-#define ROW_EXPR \
-  if (elem (i, j) .fixedpoint () != 0.0) \
-    { \
-      retval.elem (i, 0) = true; \
-      break; \
-    }
-#define COL_EXPR \
-  if (elem (i, j) .fixedpoint () != 0.0) \
-    { \
-      retval.elem (0, j) = true; \
-      break; \
-    }
-
-  MX_BASE_REDUCTION_OP (boolMatrix, ROW_EXPR, COL_EXPR, false, false);
-
-#undef ROW_EXPR
-#undef COL_EXPR
+  return do_mx_red_op<boolMatrix> (*this, dim, mx_inline_any);
 }
 
 FixedMatrix
 FixedMatrix::cumprod (int dim) const
 {
-  MX_CUMULATIVE_OP (FixedMatrix, FixedPoint, *=);
+  return do_mx_cum_op<FixedMatrix> (*this, dim, mx_inline_cumprod);
 }
 
 FixedMatrix
 FixedMatrix::cumsum (int dim) const
 {
-  MX_CUMULATIVE_OP (FixedMatrix, FixedPoint, +=);
+  return do_mx_cum_op<FixedMatrix> (*this, dim, mx_inline_cumsum);
 }
 
 FixedMatrix
 FixedMatrix::prod (int dim) const
 {
-  FixedPoint one(1,0,1,0);
-  MX_REDUCTION_OP (FixedMatrix, *=, one, one);
+  return do_mx_red_op<FixedMatrix> (*this, dim, mx_inline_prod);
 }
 
 FixedMatrix
 FixedMatrix::sum (int dim) const
 {
-  FixedPoint zero;
-  MX_REDUCTION_OP (FixedMatrix, +=, zero, zero);
+  return do_mx_red_op<FixedMatrix> (*this, dim, mx_inline_sum);
 }
 
 FixedMatrix
 FixedMatrix::sumsq (int dim) const
 {
-  FixedPoint zero;
-#define ROW_EXPR \
-  FixedPoint d = elem (i, j); \
-  retval.elem (i, 0) += d * d
-
-#define COL_EXPR \
-  FixedPoint d = elem (i, j); \
-  retval.elem (0, j) += d * d
-
-  MX_BASE_REDUCTION_OP (FixedMatrix, ROW_EXPR, COL_EXPR, zero, zero);
-
-#undef ROW_EXPR
-#undef COL_EXPR
+  return do_mx_red_op<FixedMatrix> (*this, dim, mx_inline_sumsq);
 }
 
 FixedMatrix