changeset 8835:1685c61542f8

Don't perform narrowing to full matrices in mixed spare scalar operators
author David Bateman <dbateman@free.fr>
date Sat, 21 Feb 2009 01:27:23 +0100
parents 8dd69187c4a2
children d79edebd8f45
files src/ChangeLog src/OPERATORS/op-cs-scm.cc src/OPERATORS/op-cs-sm.cc src/OPERATORS/op-s-scm.cc src/OPERATORS/op-s-sm.cc src/OPERATORS/op-scm-cs.cc src/OPERATORS/op-scm-s.cc src/OPERATORS/op-sm-cs.cc src/OPERATORS/op-sm-s.cc
diffstat 9 files changed, 45 insertions(+), 98 deletions(-) [+]
line wrap: on
line diff
--- a/src/ChangeLog	Fri Feb 20 21:49:26 2009 +0100
+++ b/src/ChangeLog	Sat Feb 21 01:27:23 2009 +0100
@@ -1,3 +1,10 @@
+2008-02-21  David Bateman  <dbateman@free.fr>
+
+	* OPERATORS/op-cs-scm.cc, OPERATORS/op-cs-sm.cc, OPERATORS/op-s-scm.cc,
+	OPERATORS/op-s-sm.cc, OPERATORS/op-scm-cs.cc, OPERATORS/op-scm-s.cc,
+	OPERATORS/op-sm-cs.cc, OPERATORS/op-sm-s.cc: Don't perform any 
+	narrowing to full matrices.
+
 2009-02-20  Jaroslav Hajek  <highegg@gmail.com>
 
 	* ov-base-diag.h (octave_base_diag::sqrt): Remove.
--- a/src/OPERATORS/op-cs-scm.cc	Fri Feb 20 21:49:26 2009 +0100
+++ b/src/OPERATORS/op-cs-scm.cc	Sat Feb 21 01:27:23 2009 +0100
@@ -55,7 +55,7 @@
       if (d == 0.0)
 	gripe_divide_by_zero ();
 
-      return octave_value (v1.complex_value () / d);
+      return octave_value (SparseComplexMatrix (1, 1, v1.complex_value () / d));
     }
   else
     {
@@ -107,13 +107,9 @@
   octave_value retval;
 
   if (d == 0.0)
-    {
-      gripe_divide_by_zero ();
+    gripe_divide_by_zero ();
 
-      retval = octave_value (v2.complex_matrix_value () / d);
-    }
-  else
-      retval = octave_value (v2.sparse_complex_matrix_value () / d);
+  retval = octave_value (v2.sparse_complex_matrix_value () / d);
 
   return retval;
 }
--- a/src/OPERATORS/op-cs-sm.cc	Fri Feb 20 21:49:26 2009 +0100
+++ b/src/OPERATORS/op-cs-sm.cc	Sat Feb 21 01:27:23 2009 +0100
@@ -57,7 +57,7 @@
       if (d == 0.0)
 	gripe_divide_by_zero ();
 
-      return octave_value (v1.complex_value () / d);
+      return octave_value (SparseComplexMatrix (1, 1, v1.complex_value () / d));
     }
   else
     {
@@ -84,13 +84,9 @@
   octave_value retval;
 
   if (d == 0.0)
-    {
-      gripe_divide_by_zero ();
+    gripe_divide_by_zero ();
 
-      retval = octave_value (v2.matrix_value () / d);
-    }
-  else
-    retval = octave_value (v2.sparse_matrix_value () / d);
+  retval = octave_value (v2.sparse_matrix_value () / d);
 
   return retval;
 }
@@ -114,13 +110,9 @@
   octave_value retval;
 
   if (d == 0.0)
-    {
-      gripe_divide_by_zero ();
+    gripe_divide_by_zero ();
 
-      retval = octave_value (v2.matrix_value () / d);
-    }
-  else
-    retval = octave_value (v2.sparse_matrix_value () / d);
+  retval = octave_value (v2.sparse_matrix_value () / d);
 
   return retval;
 }
--- a/src/OPERATORS/op-s-scm.cc	Fri Feb 20 21:49:26 2009 +0100
+++ b/src/OPERATORS/op-s-scm.cc	Sat Feb 21 01:27:23 2009 +0100
@@ -58,7 +58,7 @@
       if (d == 0.0)
 	gripe_divide_by_zero ();
 
-      return octave_value (v1.scalar_value () / d);
+      return octave_value (SparseComplexMatrix (1, 1, v1.scalar_value () / d));
     }
   else
     {
@@ -87,13 +87,9 @@
   octave_value retval;
 
   if (d == 0.0)
-    {
-      gripe_divide_by_zero ();
+    gripe_divide_by_zero ();
 
-      retval = octave_value (v2.complex_matrix_value () / d);
-    }
-  else
-    retval = octave_value (v2.sparse_complex_matrix_value () / d);
+  retval = octave_value (v2.sparse_complex_matrix_value () / d);
 
   return retval;
 }
@@ -118,13 +114,9 @@
   octave_value retval;
 
   if (d == 0.0)
-    {
-      gripe_divide_by_zero ();
+    gripe_divide_by_zero ();
 
-      retval =  octave_value (v2.complex_matrix_value () / d);
-    }
-  else
-    retval = octave_value (v2.sparse_complex_matrix_value () / d);
+  retval = octave_value (v2.sparse_complex_matrix_value () / d);
 
   return retval;
 }
--- a/src/OPERATORS/op-s-sm.cc	Fri Feb 20 21:49:26 2009 +0100
+++ b/src/OPERATORS/op-s-sm.cc	Sat Feb 21 01:27:23 2009 +0100
@@ -54,7 +54,7 @@
       if (d == 0.0)
 	gripe_divide_by_zero ();
 
-      return octave_value (v1.scalar_value () / d);
+      return octave_value (SparseMatrix (1, 1, v1.scalar_value () / d));
     }
   else
     {
@@ -81,13 +81,9 @@
   octave_value retval;
 
   if (d == 0.0)
-    {
-      gripe_divide_by_zero ();
+    gripe_divide_by_zero ();
 
-      retval = octave_value (v2.matrix_value () / d);
-    }
-  else
-    retval = octave_value (v2.sparse_matrix_value () / d);
+  retval = octave_value (v2.sparse_matrix_value () / d);
 
   return retval;
 }
@@ -111,13 +107,9 @@
   octave_value retval;
 
   if (d == 0.0)
-    {
-      gripe_divide_by_zero ();
+    gripe_divide_by_zero ();
 
-      retval = octave_value (v2.matrix_value () / d);
-    }
-  else
-    retval = octave_value (v2.sparse_matrix_value () / d);
+  retval = octave_value (v2.sparse_matrix_value () / d);
 
   return retval;
 }
--- a/src/OPERATORS/op-scm-cs.cc	Fri Feb 20 21:49:26 2009 +0100
+++ b/src/OPERATORS/op-scm-cs.cc	Sat Feb 21 01:27:23 2009 +0100
@@ -53,13 +53,9 @@
   octave_value retval;
 
   if (d == 0.0)
-    {
-      gripe_divide_by_zero ();
+    gripe_divide_by_zero ();
 
-      retval = (v1.complex_matrix_value ()  / d);
-    }
-  else
-    retval = octave_value (v1.sparse_complex_matrix_value () / d);
+  retval = octave_value (v1.sparse_complex_matrix_value () / d);
 
   return retval;
 }
@@ -82,7 +78,7 @@
       if (d == 0.0)
 	gripe_divide_by_zero ();
 
-      return octave_value (v2.complex_value () / d);
+      return octave_value (SparseComplexMatrix (1, 1, v2.complex_value () / d));
     }
   else
     {
@@ -114,13 +110,9 @@
   Complex d = v2.complex_value ();
 
   if (d == 0.0)
-    {
-      gripe_divide_by_zero ();
+    gripe_divide_by_zero ();
 
-      retval = octave_value (v1.complex_matrix_value () / d);
-    }
-  else
-    retval =  octave_value (v1.sparse_complex_matrix_value () / d);
+  retval =  octave_value (v1.sparse_complex_matrix_value () / d);
 
   return retval;
 }
--- a/src/OPERATORS/op-scm-s.cc	Fri Feb 20 21:49:26 2009 +0100
+++ b/src/OPERATORS/op-scm-s.cc	Sat Feb 21 01:27:23 2009 +0100
@@ -56,13 +56,9 @@
   octave_value retval;
 
   if (d == 0.0)
-    {
-      gripe_divide_by_zero ();
+    gripe_divide_by_zero ();
 
-      retval = octave_value (v1.complex_matrix_value () / d);
-    }
-  else
-    retval = octave_value (v1.sparse_complex_matrix_value () / d);
+  retval = octave_value (v1.sparse_complex_matrix_value () / d);
 
   return retval;
 }
@@ -90,7 +86,7 @@
       if (d == 0.0)
 	gripe_divide_by_zero ();
 
-      return octave_value (v2.scalar_value () / d);
+      return octave_value (SparseComplexMatrix (1, 1, v2.scalar_value () / d));
     }
   else
     {
@@ -121,13 +117,9 @@
   octave_value retval;
 
   if (d == 0.0)
-    {
-      gripe_divide_by_zero ();
+    gripe_divide_by_zero ();
 
-      retval = octave_value (v1.complex_matrix_value () / d);
-    }
-  else
-    retval = octave_value (v1.sparse_complex_matrix_value () / d);
+  retval = octave_value (v1.sparse_complex_matrix_value () / d);
 
   return retval;
 }
--- a/src/OPERATORS/op-sm-cs.cc	Fri Feb 20 21:49:26 2009 +0100
+++ b/src/OPERATORS/op-sm-cs.cc	Sat Feb 21 01:27:23 2009 +0100
@@ -54,13 +54,9 @@
   octave_value retval;
 
   if (d == 0.0)
-    {
-      gripe_divide_by_zero ();
+    gripe_divide_by_zero ();
 
-      retval = octave_value (v1.matrix_value () / d);
-    }
-  else
-    retval = octave_value (v1.sparse_matrix_value () / d);
+  retval = octave_value (v1.sparse_matrix_value () / d);
 
   return retval;
 }
@@ -82,7 +78,7 @@
       if (d == 0.0)
 	gripe_divide_by_zero ();
 
-      return octave_value (v2.complex_value () / d);
+      return octave_value (SparseComplexMatrix (1, 1, v2.complex_value () / d));
     }
   else
     {
@@ -112,13 +108,9 @@
   octave_value retval;
 
   if (d == 0.0)
-    {
-      gripe_divide_by_zero ();
+    gripe_divide_by_zero ();
 
-      retval =  octave_value (v1.matrix_value () / d);
-    }
-  else
-    retval = octave_value (v1.sparse_matrix_value () / d);
+  retval = octave_value (v1.sparse_matrix_value () / d);
 
   return retval;
 }
--- a/src/OPERATORS/op-sm-s.cc	Fri Feb 20 21:49:26 2009 +0100
+++ b/src/OPERATORS/op-sm-s.cc	Sat Feb 21 01:27:23 2009 +0100
@@ -51,13 +51,9 @@
   octave_value retval;
 
   if (d == 0.0)
-    {
-      gripe_divide_by_zero ();
+    gripe_divide_by_zero ();
 
-      retval = octave_value (v1.matrix_value () / d);
-    }
-  else
-    retval = octave_value (v1.sparse_matrix_value () / d);
+  retval = octave_value (v1.sparse_matrix_value () / d);
 
   return retval;
 }
@@ -84,7 +80,7 @@
       if (d == 0.0)
 	gripe_divide_by_zero ();
 
-      return octave_value (v2.scalar_value () / d);
+      return octave_value (SparseMatrix(1, 1, v2.scalar_value () / d));
     }
   else
     {
@@ -114,13 +110,9 @@
   octave_value retval;
 
   if (d == 0.0)
-    {
-      gripe_divide_by_zero ();
+    gripe_divide_by_zero ();
 
-      retval = octave_value (v1.matrix_value () / d);
-    }
-  else
-    retval = octave_value (v1.sparse_matrix_value () / d);
+  retval = octave_value (v1.sparse_matrix_value () / d);
 
   return retval;
 }