diff main/fixed/src/fixedCMatrix.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 52f21a12e35b
line wrap: on
line diff
--- a/main/fixed/src/fixedCMatrix.cc	Sun May 17 20:06:45 2009 +0000
+++ b/main/fixed/src/fixedCMatrix.cc	Mon May 18 03:18:11 2009 +0000
@@ -42,6 +42,8 @@
 #include "fixedCRowVector.h"
 #include "fixedCMatrix.h"
 
+#include "fixed-inline.cc"
+
 // Fixed Point Complex Matrix class.
 
 FixedComplexMatrix::FixedComplexMatrix (const MArray2<int> &is, 
@@ -1039,89 +1041,43 @@
 boolMatrix
 FixedComplexMatrix::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
 FixedComplexMatrix::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);
 }
 
 FixedComplexMatrix
 FixedComplexMatrix::cumprod (int dim) const
 {
-  MX_CUMULATIVE_OP (FixedComplexMatrix, FixedPointComplex, *=);
+  return do_mx_cum_op<FixedComplexMatrix> (*this, dim, mx_inline_cumprod);
 }
 
 FixedComplexMatrix
 FixedComplexMatrix::cumsum (int dim) const
 {
-  MX_CUMULATIVE_OP (FixedComplexMatrix, FixedPointComplex, +=);
+  return do_mx_cum_op<FixedComplexMatrix> (*this, dim, mx_inline_cumsum);
 }
 
 FixedComplexMatrix
 FixedComplexMatrix::prod (int dim) const
 {
-  FixedPointComplex one(1, 0, 1, 0);
-  MX_REDUCTION_OP (FixedComplexMatrix, *=, one, one);
+  return do_mx_red_op<FixedComplexMatrix> (*this, dim, mx_inline_prod);
 }
 
 FixedComplexMatrix
 FixedComplexMatrix::sum (int dim) const
 {
-  FixedPointComplex zero;
-  MX_REDUCTION_OP (FixedComplexMatrix, +=, zero, zero);
+  return do_mx_red_op<FixedComplexMatrix> (*this, dim, mx_inline_sum);
 }
 
 FixedComplexMatrix
 FixedComplexMatrix::sumsq (int dim) const
 {
-  FixedPointComplex zero;
-#define ROW_EXPR \
-  FixedPointComplex d = elem (i, j); \
-  retval.elem (i, 0) += d * conj(d)
-
-#define COL_EXPR \
-  FixedPointComplex d = elem (i, j); \
-  retval.elem (0, j) += d * conj(d)
-
-  MX_BASE_REDUCTION_OP (FixedComplexMatrix, ROW_EXPR, COL_EXPR, zero, zero);
-
-#undef ROW_EXPR
-#undef COL_EXPR
+  return do_mx_red_op<FixedComplexMatrix> (*this, dim, mx_inline_sumsq);
 }
 
 FixedComplexMatrix