diff liboctave/dSparse.cc @ 7269:3fade00a6ac7

[project @ 2007-12-07 19:26:20 by jwe]
author jwe
date Fri, 07 Dec 2007 19:26:21 +0000
parents daff886a8e2a
children 402168152bb9 bd72c5e49dcb
line wrap: on
line diff
--- a/liboctave/dSparse.cc	Fri Dec 07 17:11:28 2007 +0000
+++ b/liboctave/dSparse.cc	Fri Dec 07 19:26:21 2007 +0000
@@ -7710,7 +7710,13 @@
 SparseMatrix
 SparseMatrix::prod (int dim) const
 {
-  SPARSE_REDUCTION_OP (SparseMatrix, double, *=, 1.0, 1.0);
+  if ((rows() == 1 && dim == -1) || dim == 1)
+    return transpose (). prod (0). transpose();
+  else
+    {
+      SPARSE_REDUCTION_OP (SparseMatrix, double, *=, 
+			   (cidx(j+1) - cidx(j) < nc ? 0.0 : 1.0), 1.0);
+    }
 }
 
 SparseMatrix
@@ -7723,11 +7729,11 @@
 SparseMatrix::sumsq (int dim) const
 {
 #define ROW_EXPR \
-  double d = elem (i, j); \
-  tmp[i] += d * d
+  double d = data (i); \
+  tmp[ridx(i)] += d * d
 
 #define COL_EXPR \
-  double d = elem (i, j); \
+  double d = data (i); \
   tmp[j] += d * d
 
   SPARSE_BASE_REDUCTION_OP (SparseMatrix, double, ROW_EXPR, COL_EXPR,