Mercurial > hg > octave-avbm
changeset 7342:9c7073003700
[project @ 2008-01-03 23:05:19 by jwe]
author | jwe |
---|---|
date | Thu, 03 Jan 2008 23:05:19 +0000 |
parents | 72b0181c41f1 |
children | e0a77d2ef9bd |
files | liboctave/ChangeLog liboctave/MSparse.cc liboctave/Sparse-op-defs.h src/OPERATORS/op-sm-sm.cc |
diffstat | 4 files changed, 21 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/liboctave/ChangeLog +++ b/liboctave/ChangeLog @@ -1,3 +1,9 @@ +2008-01-03 David Bateman <dbateman@free.fr> + + * MSparse.cc (SPARSE_A2A2_OP): If first arg is scalar zero, then + need unary operator on remaining argument + * Sparse-op-defs.h (SPARSE_SMSM_BIN_OP_1): ditto. + 2007-12-21 John W. Eaton <jwe@octave.org> Version 3.0.0 released.
--- a/liboctave/MSparse.cc +++ b/liboctave/MSparse.cc @@ -292,7 +292,7 @@ if (a_nr == 1 && a_nc == 1) \ { \ if (a.elem(0,0) == 0.) \ - r = MSparse<T> (b); \ + r = OP MSparse<T> (b); \ else \ { \ r = MSparse<T> (b_nr, b_nc, a.data(0) OP 0.); \
--- a/liboctave/Sparse-op-defs.h +++ b/liboctave/Sparse-op-defs.h @@ -396,7 +396,7 @@ if (m1_nr == 1 && m1_nc == 1) \ { \ if (m1.elem(0,0) == 0.) \ - r = R (m2); \ + r = OP R (m2); \ else \ { \ r = R (m2_nr, m2_nc, m1.data(0) OP 0.); \
--- a/src/OPERATORS/op-sm-sm.cc +++ b/src/OPERATORS/op-sm-sm.cc @@ -52,7 +52,19 @@ // sparse matrix by sparse matrix ops. DEFBINOP_OP (add, sparse_matrix, sparse_matrix, +) -DEFBINOP_OP (sub, sparse_matrix, sparse_matrix, -) + +// DEFBINOP_OP (sub, sparse_matrix, sparse_matrix, -) + + static octave_value + oct_binop_sub (const octave_base_value& a1, const octave_base_value& a2) + { + const octave_sparse_matrix& v1 = dynamic_cast<const octave_sparse_matrix&> (a1); + const octave_sparse_matrix& v2 = dynamic_cast<const octave_sparse_matrix&> (a2); + SparseMatrix m = v1.sparse_matrix_value () - v2.sparse_matrix_value (); + + return octave_value (m); + } + DEFBINOP_OP (mul, sparse_matrix, sparse_matrix, *) DEFBINOP (div, sparse_matrix, sparse_matrix)