changeset 18106:b3f443b4802b gui-release

maint: backout cset 35464baa7d99 on gui-release branch.
author Rik <rik@octave.org>
date Thu, 05 Dec 2013 11:39:02 -0800
parents e0775b4f41dd
children 834549618a52
files liboctave/array/CSparse.cc liboctave/array/dSparse.cc
diffstat 2 files changed, 278 insertions(+), 272 deletions(-) [+]
line wrap: on
line diff
--- a/liboctave/array/CSparse.cc	Thu Dec 05 11:36:54 2013 -0800
+++ b/liboctave/array/CSparse.cc	Thu Dec 05 11:39:02 2013 -0800
@@ -7688,85 +7688,87 @@
 {
   SparseComplexMatrix r;
 
-  octave_idx_type a_nr = a.rows ();
-  octave_idx_type a_nc = a.cols ();
-  octave_idx_type b_nr = b.rows ();
-  octave_idx_type b_nc = b.cols ();
-
-  if (a_nr == b_nr && a_nc == b_nc)
+  if ((a.rows () == b.rows ()) && (a.cols () == b.cols ()))
     {
-      r = SparseComplexMatrix (a_nr, a_nc, (a.nnz () + b.nnz ()));
-
-      octave_idx_type jx = 0;
-      r.cidx (0) = 0;
-      for (octave_idx_type i = 0 ; i < a_nc ; i++)
+      octave_idx_type a_nr = a.rows ();
+      octave_idx_type a_nc = a.cols ();
+
+      octave_idx_type b_nr = b.rows ();
+      octave_idx_type b_nc = b.cols ();
+
+      if (a_nr == 0 || b_nc == 0 || a.nnz () == 0 || b.nnz () == 0)
+        return SparseComplexMatrix (a_nr, a_nc);
+
+      if (a_nr != b_nr || a_nc != b_nc)
+        gripe_nonconformant ("min", a_nr, a_nc, b_nr, b_nc);
+      else
         {
-          octave_idx_type  ja = a.cidx (i);
-          octave_idx_type  ja_max = a.cidx (i+1);
-          bool ja_lt_max= ja < ja_max;
-
-          octave_idx_type  jb = b.cidx (i);
-          octave_idx_type  jb_max = b.cidx (i+1);
-          bool jb_lt_max = jb < jb_max;
-
-          while (ja_lt_max || jb_lt_max )
-            {
-              octave_quit ();
-              if ((! jb_lt_max) ||
-                  (ja_lt_max && (a.ridx (ja) < b.ridx (jb))))
-                {
-                  Complex tmp = xmin (a.data (ja), 0.);
-                  if (tmp != 0.)
+          r = SparseComplexMatrix (a_nr, a_nc, (a.nnz () + b.nnz ()));
+
+          octave_idx_type jx = 0;
+          r.cidx (0) = 0;
+          for (octave_idx_type i = 0 ; i < a_nc ; i++)
+            {
+              octave_idx_type  ja = a.cidx (i);
+              octave_idx_type  ja_max = a.cidx (i+1);
+              bool ja_lt_max= ja < ja_max;
+
+              octave_idx_type  jb = b.cidx (i);
+              octave_idx_type  jb_max = b.cidx (i+1);
+              bool jb_lt_max = jb < jb_max;
+
+              while (ja_lt_max || jb_lt_max )
+                {
+                  octave_quit ();
+                  if ((! jb_lt_max) ||
+                      (ja_lt_max && (a.ridx (ja) < b.ridx (jb))))
                     {
-                      r.ridx (jx) = a.ridx (ja);
-                      r.data (jx) = tmp;
-                      jx++;
+                      Complex tmp = xmin (a.data (ja), 0.);
+                      if (tmp != 0.)
+                        {
+                          r.ridx (jx) = a.ridx (ja);
+                          r.data (jx) = tmp;
+                          jx++;
+                        }
+                      ja++;
+                      ja_lt_max= ja < ja_max;
                     }
-                  ja++;
-                  ja_lt_max= ja < ja_max;
-                }
-              else if (( !ja_lt_max ) ||
-                       (jb_lt_max && (b.ridx (jb) < a.ridx (ja)) ) )
-                {
-                  Complex tmp = xmin (0., b.data (jb));
-                  if (tmp != 0.)
+                  else if (( !ja_lt_max ) ||
+                           (jb_lt_max && (b.ridx (jb) < a.ridx (ja)) ) )
                     {
-                      r.ridx (jx) = b.ridx (jb);
-                      r.data (jx) = tmp;
-                      jx++;
+                      Complex tmp = xmin (0., b.data (jb));
+                      if (tmp != 0.)
+                        {
+                          r.ridx (jx) = b.ridx (jb);
+                          r.data (jx) = tmp;
+                          jx++;
+                        }
+                      jb++;
+                      jb_lt_max= jb < jb_max;
                     }
-                  jb++;
-                  jb_lt_max= jb < jb_max;
-                }
-              else
-                {
-                  Complex tmp = xmin (a.data (ja), b.data (jb));
-                  if (tmp != 0.)
+                  else
                     {
-                      r.data (jx) = tmp;
-                      r.ridx (jx) = a.ridx (ja);
-                      jx++;
+                      Complex tmp = xmin (a.data (ja), b.data (jb));
+                      if (tmp != 0.)
+                        {
+                          r.data (jx) = tmp;
+                          r.ridx (jx) = a.ridx (ja);
+                          jx++;
+                        }
+                      ja++;
+                      ja_lt_max= ja < ja_max;
+                      jb++;
+                      jb_lt_max= jb < jb_max;
                     }
-                  ja++;
-                  ja_lt_max= ja < ja_max;
-                  jb++;
-                  jb_lt_max= jb < jb_max;
-                }
-            }
-          r.cidx (i+1) = jx;
+                }
+              r.cidx (i+1) = jx;
+            }
+
+          r.maybe_compress ();
         }
-
-      r.maybe_compress ();
     }
   else
-    {
-      if (a_nr == 0 || a_nc == 0)
-        r.resize (a_nr, a_nc);
-      else if (b_nr == 0 || b_nc == 0)
-        r.resize (b_nr, b_nc);
-      else
-        gripe_nonconformant ("min", a_nr, a_nc, b_nr, b_nc);
-    }
+    (*current_liboctave_error_handler) ("matrix size mismatch");
 
   return r;
 }
@@ -7806,85 +7808,91 @@
 {
   SparseComplexMatrix r;
 
-  octave_idx_type a_nr = a.rows ();
-  octave_idx_type a_nc = a.cols ();
-  octave_idx_type b_nr = b.rows ();
-  octave_idx_type b_nc = b.cols ();
-
-  if (a_nr == b_nr && a_nc == b_nc)
+  if ((a.rows () == b.rows ()) && (a.cols () == b.cols ()))
     {
-      r = SparseComplexMatrix (a_nr, a_nc, (a.nnz () + b.nnz ()));
-
-      octave_idx_type jx = 0;
-      r.cidx (0) = 0;
-      for (octave_idx_type i = 0 ; i < a_nc ; i++)
+      octave_idx_type a_nr = a.rows ();
+      octave_idx_type a_nc = a.cols ();
+
+      octave_idx_type b_nr = b.rows ();
+      octave_idx_type b_nc = b.cols ();
+
+      if (a_nr == 0 || b_nc == 0)
+        return SparseComplexMatrix (a_nr, a_nc);
+      if (a.nnz () == 0)
+        return SparseComplexMatrix (b);
+      if (b.nnz () == 0)
+        return SparseComplexMatrix (a);
+
+      if (a_nr != b_nr || a_nc != b_nc)
+        gripe_nonconformant ("min", a_nr, a_nc, b_nr, b_nc);
+      else
         {
-          octave_idx_type  ja = a.cidx (i);
-          octave_idx_type  ja_max = a.cidx (i+1);
-          bool ja_lt_max= ja < ja_max;
-
-          octave_idx_type  jb = b.cidx (i);
-          octave_idx_type  jb_max = b.cidx (i+1);
-          bool jb_lt_max = jb < jb_max;
-
-          while (ja_lt_max || jb_lt_max )
-            {
-              octave_quit ();
-              if ((! jb_lt_max) ||
-                  (ja_lt_max && (a.ridx (ja) < b.ridx (jb))))
-                {
-                  Complex tmp = xmax (a.data (ja), 0.);
-                  if (tmp != 0.)
+          r = SparseComplexMatrix (a_nr, a_nc, (a.nnz () + b.nnz ()));
+
+          octave_idx_type jx = 0;
+          r.cidx (0) = 0;
+          for (octave_idx_type i = 0 ; i < a_nc ; i++)
+            {
+              octave_idx_type  ja = a.cidx (i);
+              octave_idx_type  ja_max = a.cidx (i+1);
+              bool ja_lt_max= ja < ja_max;
+
+              octave_idx_type  jb = b.cidx (i);
+              octave_idx_type  jb_max = b.cidx (i+1);
+              bool jb_lt_max = jb < jb_max;
+
+              while (ja_lt_max || jb_lt_max )
+                {
+                  octave_quit ();
+                  if ((! jb_lt_max) ||
+                      (ja_lt_max && (a.ridx (ja) < b.ridx (jb))))
                     {
-                      r.ridx (jx) = a.ridx (ja);
-                      r.data (jx) = tmp;
-                      jx++;
+                      Complex tmp = xmax (a.data (ja), 0.);
+                      if (tmp != 0.)
+                        {
+                          r.ridx (jx) = a.ridx (ja);
+                          r.data (jx) = tmp;
+                          jx++;
+                        }
+                      ja++;
+                      ja_lt_max= ja < ja_max;
                     }
-                  ja++;
-                  ja_lt_max= ja < ja_max;
-                }
-              else if (( !ja_lt_max ) ||
-                       (jb_lt_max && (b.ridx (jb) < a.ridx (ja)) ) )
-                {
-                  Complex tmp = xmax (0., b.data (jb));
-                  if (tmp != 0.)
+                  else if (( !ja_lt_max ) ||
+                           (jb_lt_max && (b.ridx (jb) < a.ridx (ja)) ) )
                     {
-                      r.ridx (jx) = b.ridx (jb);
-                      r.data (jx) = tmp;
-                      jx++;
+                      Complex tmp = xmax (0., b.data (jb));
+                      if (tmp != 0.)
+                        {
+                          r.ridx (jx) = b.ridx (jb);
+                          r.data (jx) = tmp;
+                          jx++;
+                        }
+                      jb++;
+                      jb_lt_max= jb < jb_max;
                     }
-                  jb++;
-                  jb_lt_max= jb < jb_max;
-                }
-              else
-                {
-                  Complex tmp = xmax (a.data (ja), b.data (jb));
-                  if (tmp != 0.)
+                  else
                     {
-                      r.data (jx) = tmp;
-                      r.ridx (jx) = a.ridx (ja);
-                      jx++;
+                      Complex tmp = xmax (a.data (ja), b.data (jb));
+                      if (tmp != 0.)
+                        {
+                          r.data (jx) = tmp;
+                          r.ridx (jx) = a.ridx (ja);
+                          jx++;
+                        }
+                      ja++;
+                      ja_lt_max= ja < ja_max;
+                      jb++;
+                      jb_lt_max= jb < jb_max;
                     }
-                  ja++;
-                  ja_lt_max= ja < ja_max;
-                  jb++;
-                  jb_lt_max= jb < jb_max;
-                }
-            }
-          r.cidx (i+1) = jx;
+                }
+              r.cidx (i+1) = jx;
+            }
+
+          r.maybe_compress ();
         }
-
-      r.maybe_compress ();
     }
   else
-    {
-      if (a_nr == 0 || a_nc == 0)
-        r.resize (a_nr, a_nc);
-      else if (b_nr == 0 || b_nc == 0)
-        r.resize (b_nr, b_nc);
-      else
-        gripe_nonconformant ("max", a_nr, a_nc, b_nr, b_nc);
-    }
+    (*current_liboctave_error_handler) ("matrix size mismatch");
 
   return r;
 }
--- a/liboctave/array/dSparse.cc	Thu Dec 05 11:36:54 2013 -0800
+++ b/liboctave/array/dSparse.cc	Thu Dec 05 11:39:02 2013 -0800
@@ -7801,85 +7801,84 @@
 {
   SparseMatrix r;
 
-  octave_idx_type a_nr = a.rows ();
-  octave_idx_type a_nc = a.cols ();
-  octave_idx_type b_nr = b.rows ();
-  octave_idx_type b_nc = b.cols ();
-
-  if (a_nr == b_nr && a_nc == b_nc)
+  if ((a.rows () == b.rows ()) && (a.cols () == b.cols ()))
     {
-      r = SparseMatrix (a_nr, a_nc, (a.nnz () + b.nnz ()));
-
-      octave_idx_type jx = 0;
-      r.cidx (0) = 0;
-      for (octave_idx_type i = 0 ; i < a_nc ; i++)
+      octave_idx_type a_nr = a.rows ();
+      octave_idx_type a_nc = a.cols ();
+
+      octave_idx_type b_nr = b.rows ();
+      octave_idx_type b_nc = b.cols ();
+
+      if (a_nr != b_nr || a_nc != b_nc)
+        gripe_nonconformant ("min", a_nr, a_nc, b_nr, b_nc);
+      else
         {
-          octave_idx_type  ja = a.cidx (i);
-          octave_idx_type  ja_max = a.cidx (i+1);
-          bool ja_lt_max= ja < ja_max;
-
-          octave_idx_type  jb = b.cidx (i);
-          octave_idx_type  jb_max = b.cidx (i+1);
-          bool jb_lt_max = jb < jb_max;
-
-          while (ja_lt_max || jb_lt_max )
-            {
-              octave_quit ();
-              if ((! jb_lt_max) ||
-                  (ja_lt_max && (a.ridx (ja) < b.ridx (jb))))
-                {
-                  double tmp = xmin (a.data (ja), 0.);
-                  if (tmp != 0.)
+          r = SparseMatrix (a_nr, a_nc, (a.nnz () + b.nnz ()));
+
+          octave_idx_type jx = 0;
+          r.cidx (0) = 0;
+          for (octave_idx_type i = 0 ; i < a_nc ; i++)
+            {
+              octave_idx_type  ja = a.cidx (i);
+              octave_idx_type  ja_max = a.cidx (i+1);
+              bool ja_lt_max= ja < ja_max;
+
+              octave_idx_type  jb = b.cidx (i);
+              octave_idx_type  jb_max = b.cidx (i+1);
+              bool jb_lt_max = jb < jb_max;
+
+              while (ja_lt_max || jb_lt_max )
+                {
+                  octave_quit ();
+                  if ((! jb_lt_max) ||
+                      (ja_lt_max && (a.ridx (ja) < b.ridx (jb))))
                     {
-                      r.ridx (jx) = a.ridx (ja);
-                      r.data (jx) = tmp;
-                      jx++;
+                      double tmp = xmin (a.data (ja), 0.);
+                      if (tmp != 0.)
+                        {
+                          r.ridx (jx) = a.ridx (ja);
+                          r.data (jx) = tmp;
+                          jx++;
+                        }
+                      ja++;
+                      ja_lt_max= ja < ja_max;
                     }
-                  ja++;
-                  ja_lt_max= ja < ja_max;
-                }
-              else if (( !ja_lt_max ) ||
-                       (jb_lt_max && (b.ridx (jb) < a.ridx (ja)) ) )
-                {
-                  double tmp = xmin (0., b.data (jb));
-                  if (tmp != 0.)
+                  else if (( !ja_lt_max ) ||
+                           (jb_lt_max && (b.ridx (jb) < a.ridx (ja)) ) )
                     {
-                      r.ridx (jx) = b.ridx (jb);
-                      r.data (jx) = tmp;
-                      jx++;
+                      double tmp = xmin (0., b.data (jb));
+                      if (tmp != 0.)
+                        {
+                          r.ridx (jx) = b.ridx (jb);
+                          r.data (jx) = tmp;
+                          jx++;
+                        }
+                      jb++;
+                      jb_lt_max= jb < jb_max;
                     }
-                  jb++;
-                  jb_lt_max= jb < jb_max;
-                }
-              else
-                {
-                  double tmp = xmin (a.data (ja), b.data (jb));
-                  if (tmp != 0.)
+                  else
                     {
-                      r.data (jx) = tmp;
-                      r.ridx (jx) = a.ridx (ja);
-                      jx++;
+                      double tmp = xmin (a.data (ja), b.data (jb));
+                      if (tmp != 0.)
+                        {
+                          r.data (jx) = tmp;
+                          r.ridx (jx) = a.ridx (ja);
+                          jx++;
+                        }
+                      ja++;
+                      ja_lt_max= ja < ja_max;
+                      jb++;
+                      jb_lt_max= jb < jb_max;
                     }
-                  ja++;
-                  ja_lt_max= ja < ja_max;
-                  jb++;
-                  jb_lt_max= jb < jb_max;
-                }
-            }
-          r.cidx (i+1) = jx;
+                }
+              r.cidx (i+1) = jx;
+            }
+
+          r.maybe_compress ();
         }
-
-      r.maybe_compress ();
     }
   else
-    {
-      if (a_nr == 0 || a_nc == 0)
-        r.resize (a_nr, a_nc);
-      else if (b_nr == 0 || b_nc == 0)
-        r.resize (b_nr, b_nc);
-      else
-        gripe_nonconformant ("min", a_nr, a_nc, b_nr, b_nc);
-    }
+    (*current_liboctave_error_handler) ("matrix size mismatch");
 
   return r;
 }
@@ -7952,85 +7951,84 @@
 {
   SparseMatrix r;
 
-  octave_idx_type a_nr = a.rows ();
-  octave_idx_type a_nc = a.cols ();
-  octave_idx_type b_nr = b.rows ();
-  octave_idx_type b_nc = b.cols ();
-
-  if (a_nr == b_nr && a_nc == b_nc)
+  if ((a.rows () == b.rows ()) && (a.cols () == b.cols ()))
     {
-      r = SparseMatrix (a_nr, a_nc, (a.nnz () + b.nnz ()));
-
-      octave_idx_type jx = 0;
-      r.cidx (0) = 0;
-      for (octave_idx_type i = 0 ; i < a_nc ; i++)
+      octave_idx_type a_nr = a.rows ();
+      octave_idx_type a_nc = a.cols ();
+
+      octave_idx_type b_nr = b.rows ();
+      octave_idx_type b_nc = b.cols ();
+
+      if (a_nr != b_nr || a_nc != b_nc)
+        gripe_nonconformant ("min", a_nr, a_nc, b_nr, b_nc);
+      else
         {
-          octave_idx_type  ja = a.cidx (i);
-          octave_idx_type  ja_max = a.cidx (i+1);
-          bool ja_lt_max= ja < ja_max;
-
-          octave_idx_type  jb = b.cidx (i);
-          octave_idx_type  jb_max = b.cidx (i+1);
-          bool jb_lt_max = jb < jb_max;
-
-          while (ja_lt_max || jb_lt_max )
-            {
-              octave_quit ();
-              if ((! jb_lt_max) ||
-                  (ja_lt_max && (a.ridx (ja) < b.ridx (jb))))
-                {
-                  double tmp = xmax (a.data (ja), 0.);
-                  if (tmp != 0.)
+          r = SparseMatrix (a_nr, a_nc, (a.nnz () + b.nnz ()));
+
+          octave_idx_type jx = 0;
+          r.cidx (0) = 0;
+          for (octave_idx_type i = 0 ; i < a_nc ; i++)
+            {
+              octave_idx_type  ja = a.cidx (i);
+              octave_idx_type  ja_max = a.cidx (i+1);
+              bool ja_lt_max= ja < ja_max;
+
+              octave_idx_type  jb = b.cidx (i);
+              octave_idx_type  jb_max = b.cidx (i+1);
+              bool jb_lt_max = jb < jb_max;
+
+              while (ja_lt_max || jb_lt_max )
+                {
+                  octave_quit ();
+                  if ((! jb_lt_max) ||
+                      (ja_lt_max && (a.ridx (ja) < b.ridx (jb))))
                     {
-                      r.ridx (jx) = a.ridx (ja);
-                      r.data (jx) = tmp;
-                      jx++;
+                      double tmp = xmax (a.data (ja), 0.);
+                      if (tmp != 0.)
+                        {
+                          r.ridx (jx) = a.ridx (ja);
+                          r.data (jx) = tmp;
+                          jx++;
+                        }
+                      ja++;
+                      ja_lt_max= ja < ja_max;
                     }
-                  ja++;
-                  ja_lt_max= ja < ja_max;
-                }
-              else if (( !ja_lt_max ) ||
-                       (jb_lt_max && (b.ridx (jb) < a.ridx (ja)) ) )
-                {
-                  double tmp = xmax (0., b.data (jb));
-                  if (tmp != 0.)
+                  else if (( !ja_lt_max ) ||
+                           (jb_lt_max && (b.ridx (jb) < a.ridx (ja)) ) )
                     {
-                      r.ridx (jx) = b.ridx (jb);
-                      r.data (jx) = tmp;
-                      jx++;
+                      double tmp = xmax (0., b.data (jb));
+                      if (tmp != 0.)
+                        {
+                          r.ridx (jx) = b.ridx (jb);
+                          r.data (jx) = tmp;
+                          jx++;
+                        }
+                      jb++;
+                      jb_lt_max= jb < jb_max;
                     }
-                  jb++;
-                  jb_lt_max= jb < jb_max;
-                }
-              else
-                {
-                  double tmp = xmax (a.data (ja), b.data (jb));
-                  if (tmp != 0.)
+                  else
                     {
-                      r.data (jx) = tmp;
-                      r.ridx (jx) = a.ridx (ja);
-                      jx++;
+                      double tmp = xmax (a.data (ja), b.data (jb));
+                      if (tmp != 0.)
+                        {
+                          r.data (jx) = tmp;
+                          r.ridx (jx) = a.ridx (ja);
+                          jx++;
+                        }
+                      ja++;
+                      ja_lt_max= ja < ja_max;
+                      jb++;
+                      jb_lt_max= jb < jb_max;
                     }
-                  ja++;
-                  ja_lt_max= ja < ja_max;
-                  jb++;
-                  jb_lt_max= jb < jb_max;
-                }
-            }
-          r.cidx (i+1) = jx;
+                }
+              r.cidx (i+1) = jx;
+            }
+
+          r.maybe_compress ();
         }
-
-      r.maybe_compress ();
     }
   else
-    {
-      if (a_nr == 0 || a_nc == 0)
-        r.resize (a_nr, a_nc);
-      else if (b_nr == 0 || b_nc == 0)
-        r.resize (b_nr, b_nc);
-      else
-        gripe_nonconformant ("max", a_nr, a_nc, b_nr, b_nc);
-    }
+    (*current_liboctave_error_handler) ("matrix size mismatch");
 
   return r;
 }