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)