diff liboctave/CSparse.cc @ 6207:3c92b8d892dd

[project @ 2006-12-06 20:19:14 by dbateman]
author dbateman
date Wed, 06 Dec 2006 20:19:16 +0000
parents da5a11b3d13e
children 7e958a1532c6
line wrap: on
line diff
--- a/liboctave/CSparse.cc	Wed Dec 06 20:10:03 2006 +0000
+++ b/liboctave/CSparse.cc	Wed Dec 06 20:19:16 2006 +0000
@@ -180,12 +180,33 @@
   octave_idx_type nr = rows ();
   octave_idx_type nc = cols ();
 
-  if (is_square () && nr > 0)
+  if (nr == nc && nr > 0)
     {
-      for (octave_idx_type i = 0; i < nr; i++)
-	for (octave_idx_type j = i; j < nc; j++)
-	  if (elem (i, j) != conj (elem (j, i)))
-	    return false;
+      for (octave_idx_type j = 0; j < nc; j++)
+	{
+	  for (octave_idx_type i = cidx(j); i < cidx(j+1); i++)
+	    {
+	      octave_idx_type ri = ridx(i);
+
+	      if (ri != j)
+		{
+		  bool found = false;
+
+		  for (octave_idx_type k = cidx(ri); k < cidx(ri+1); k++)
+		    {
+		      if (ridx(k) == j)
+			{
+			  if (data(i) == conj(data(k)))
+			    found = true;
+			  break;
+			}
+		    }
+
+		  if (! found)
+		    return false;
+		}
+	    }
+	}
 
       return true;
     }