Mercurial > octave-nkf
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,