changeset 2832:4dff308e9acc

[project @ 1997-03-26 05:16:58 by jwe]
author jwe
date Wed, 26 Mar 1997 05:17:00 +0000
parents 19c45d29f177
children 011e9216356f
files liboctave/CMatrix.cc liboctave/CMatrix.h liboctave/ChangeLog liboctave/boolMatrix.cc liboctave/boolMatrix.h liboctave/dMatrix.cc liboctave/dMatrix.h scripts/miscellaneous/bug_report.m src/ChangeLog
diffstat 9 files changed, 158 insertions(+), 38 deletions(-) [+]
line wrap: on
line diff
--- a/liboctave/CMatrix.cc
+++ b/liboctave/CMatrix.cc
@@ -2062,23 +2062,23 @@
   return false;
 }
 
-Matrix
+boolMatrix
 ComplexMatrix::all (void) const
 {
   int nr = rows ();
   int nc = cols ();
-  Matrix retval;
+  boolMatrix retval;
   if (nr > 0 && nc > 0)
     {
       if (nr == 1)
 	{
 	  retval.resize (1, 1);
-	  retval.elem (0, 0) = 1.0;
+	  retval.elem (0, 0) = true;
 	  for (int j = 0; j < nc; j++)
 	    {
 	      if (elem (0, j) == 0.0)
 		{
-		  retval.elem (0, 0) = 0.0;
+		  retval.elem (0, 0) = false;
 		  break;
 		}
 	    }
@@ -2086,12 +2086,12 @@
       else if (nc == 1)
 	{
 	  retval.resize (1, 1);
-	  retval.elem (0, 0) = 1.0;
+	  retval.elem (0, 0) = true;
 	  for (int i = 0; i < nr; i++)
 	    {
 	      if (elem (i, 0) == 0.0)
 		{
-		  retval.elem (0, 0) = 0.0;
+		  retval.elem (0, 0) = false;
 		  break;
 		}
 	    }
@@ -2101,12 +2101,12 @@
 	  retval.resize (1, nc);
 	  for (int j = 0; j < nc; j++)
 	    {
-	      retval.elem (0, j) = 1.0;
+	      retval.elem (0, j) = true;
 	      for (int i = 0; i < nr; i++)
 		{
 		  if (elem (i, j) == 0.0)
 		    {
-		      retval.elem (0, j) = 0.0;
+		      retval.elem (0, j) = false;
 		      break;
 		    }
 		}
@@ -2116,23 +2116,23 @@
   return retval;
 }
 
-Matrix
+boolMatrix
 ComplexMatrix::any (void) const
 {
   int nr = rows ();
   int nc = cols ();
-  Matrix retval;
+  boolMatrix retval;
   if (nr > 0 && nc > 0)
     {
       if (nr == 1)
 	{
 	  retval.resize (1, 1);
-	  retval.elem (0, 0) = 0.0;
+	  retval.elem (0, 0) = false;
 	  for (int j = 0; j < nc; j++)
 	    {
 	      if (elem (0, j) != 0.0)
 		{
-		  retval.elem (0, 0) = 1.0;
+		  retval.elem (0, 0) = true;
 		  break;
 		}
 	    }
@@ -2140,12 +2140,12 @@
       else if (nc == 1)
 	{
 	  retval.resize (1, 1);
-	  retval.elem (0, 0) = 0.0;
+	  retval.elem (0, 0) = false;
 	  for (int i = 0; i < nr; i++)
 	    {
 	      if (elem (i, 0) != 0.0)
 		{
-		  retval.elem (0, 0) = 1.0;
+		  retval.elem (0, 0) = true;
 		  break;
 		}
 	    }
@@ -2155,12 +2155,12 @@
 	  retval.resize (1, nc);
 	  for (int j = 0; j < nc; j++)
 	    {
-	      retval.elem (0, j) = 0.0;
+	      retval.elem (0, j) = false;
 	      for (int i = 0; i < nr; i++)
 		{
 		  if (elem (i, j) != 0.0)
 		    {
-		      retval.elem (0, j) = 1.0;
+		      retval.elem (0, j) = true;
 		      break;
 		    }
 		}
--- a/liboctave/CMatrix.h
+++ b/liboctave/CMatrix.h
@@ -213,8 +213,8 @@
   bool all_integers (double& max_val, double& min_val) const;
   bool too_large_for_float (void) const;
 
-  Matrix all (void) const;
-  Matrix any (void) const;
+  boolMatrix all (void) const;
+  boolMatrix any (void) const;
 
   ComplexMatrix cumprod (void) const;
   ComplexMatrix cumsum (void) const;
--- a/liboctave/ChangeLog
+++ b/liboctave/ChangeLog
@@ -1,5 +1,10 @@
 Tue Mar 25 17:37:25 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>
 
+	* boolMatrix.cc (boolMatrix::all, boolMatrix::any): New functions.
+
+	* dMatrix.cc (Matrix::all, Matrix::any): Return boolMatrix.
+	* CMatrix.cc (ComplexMatrix::all, ComplexMatrix::any): Likewise.
+
 	* idx-vector.h (idx_vector::idx_vector_rep::freeze,
 	idx_vector::freeze): Delete prefer_zero_one arg.
 	* Array-idx.h, Array2-idx.h: Change all callers.
--- a/liboctave/boolMatrix.cc
+++ b/liboctave/boolMatrix.cc
@@ -75,6 +75,114 @@
   return result;
 }
 
+boolMatrix
+Matrix::all (void) const
+{
+  int nr = rows ();
+  int nc = cols ();
+  boolMatrix retval;
+  if (nr > 0 && nc > 0)
+    {
+      if (nr == 1)
+	{
+	  retval.resize (1, 1);
+	  retval.elem (0, 0) = true;
+	  for (int j = 0; j < nc; j++)
+	    {
+	      if (! elem (0, j))
+		{
+		  retval.elem (0, 0) = false;
+		  break;
+		}
+	    }
+	}
+      else if (nc == 1)
+	{
+	  retval.resize (1, 1);
+	  retval.elem (0, 0) = true;
+	  for (int i = 0; i < nr; i++)
+	    {
+	      if (! elem (i, 0))
+		{
+		  retval.elem (0, 0) = false;
+		  break;
+		}
+	    }
+	}
+      else
+	{
+	  retval.resize (1, nc);
+	  for (int j = 0; j < nc; j++)
+	    {
+	      retval.elem (0, j) = true;
+	      for (int i = 0; i < nr; i++)
+		{
+		  if (! elem (i, j))
+		    {
+		      retval.elem (0, j) = false;
+		      break;
+		    }
+		}
+	    }
+	}
+    }
+  return retval;
+}
+
+boolMatrix
+Matrix::any (void) const
+{
+  int nr = rows ();
+  int nc = cols ();
+  boolMatrix retval;
+  if (nr > 0 && nc > 0)
+    {
+      if (nr == 1)
+	{
+	  retval.resize (1, 1);
+	  retval.elem (0, 0) = false;
+	  for (int j = 0; j < nc; j++)
+	    {
+	      if (elem (0, j))
+		{
+		  retval.elem (0, 0) = true;
+		  break;
+		}
+	    }
+	}
+      else if (nc == 1)
+	{
+	  retval.resize (1, 1);
+	  retval.elem (0, 0) = false;
+	  for (int i = 0; i < nr; i++)
+	    {
+	      if (elem (i, 0))
+		{
+		  retval.elem (0, 0) = true;
+		  break;
+		}
+	    }
+	}
+      else
+	{
+	  retval.resize (1, nc);
+	  for (int j = 0; j < nc; j++)
+	    {
+	      retval.elem (0, j) = false;
+	      for (int i = 0; i < nr; i++)
+		{
+		  if (elem (i, j))
+		    {
+		      retval.elem (0, j) = true;
+		      break;
+		    }
+		}
+	    }
+	}
+    }
+  return retval;
+}
+
 /*
 ;;; Local Variables: ***
 ;;; mode: C++ ***
--- a/liboctave/boolMatrix.h
+++ b/liboctave/boolMatrix.h
@@ -57,6 +57,9 @@
 
   boolMatrix transpose (void) const;
 
+  boolMatrix all (void) const;
+  boolMatrix any (void) const;
+
 #if 0
   // i/o
 
--- a/liboctave/dMatrix.cc
+++ b/liboctave/dMatrix.cc
@@ -1691,23 +1691,23 @@
 // cleaned up a bit, no?  What about corresponding functions for the
 // Vectors?
 
-Matrix
+boolMatrix
 Matrix::all (void) const
 {
   int nr = rows ();
   int nc = cols ();
-  Matrix retval;
+  boolMatrix retval;
   if (nr > 0 && nc > 0)
     {
       if (nr == 1)
 	{
 	  retval.resize (1, 1);
-	  retval.elem (0, 0) = 1.0;
+	  retval.elem (0, 0) = true;
 	  for (int j = 0; j < nc; j++)
 	    {
 	      if (elem (0, j) == 0.0)
 		{
-		  retval.elem (0, 0) = 0.0;
+		  retval.elem (0, 0) = false;
 		  break;
 		}
 	    }
@@ -1715,12 +1715,12 @@
       else if (nc == 1)
 	{
 	  retval.resize (1, 1);
-	  retval.elem (0, 0) = 1.0;
+	  retval.elem (0, 0) = true;
 	  for (int i = 0; i < nr; i++)
 	    {
 	      if (elem (i, 0) == 0.0)
 		{
-		  retval.elem (0, 0) = 0.0;
+		  retval.elem (0, 0) = false;
 		  break;
 		}
 	    }
@@ -1730,12 +1730,12 @@
 	  retval.resize (1, nc);
 	  for (int j = 0; j < nc; j++)
 	    {
-	      retval.elem (0, j) = 1.0;
+	      retval.elem (0, j) = true;
 	      for (int i = 0; i < nr; i++)
 		{
 		  if (elem (i, j) == 0.0)
 		    {
-		      retval.elem (0, j) = 0.0;
+		      retval.elem (0, j) = false;
 		      break;
 		    }
 		}
@@ -1745,23 +1745,23 @@
   return retval;
 }
 
-Matrix
+boolMatrix
 Matrix::any (void) const
 {
   int nr = rows ();
   int nc = cols ();
-  Matrix retval;
+  boolMatrix retval;
   if (nr > 0 && nc > 0)
     {
       if (nr == 1)
 	{
 	  retval.resize (1, 1);
-	  retval.elem (0, 0) = 0.0;
+	  retval.elem (0, 0) = false;
 	  for (int j = 0; j < nc; j++)
 	    {
 	      if (elem (0, j) != 0.0)
 		{
-		  retval.elem (0, 0) = 1.0;
+		  retval.elem (0, 0) = true;
 		  break;
 		}
 	    }
@@ -1769,12 +1769,12 @@
       else if (nc == 1)
 	{
 	  retval.resize (1, 1);
-	  retval.elem (0, 0) = 0.0;
+	  retval.elem (0, 0) = false;
 	  for (int i = 0; i < nr; i++)
 	    {
 	      if (elem (i, 0) != 0.0)
 		{
-		  retval.elem (0, 0) = 1.0;
+		  retval.elem (0, 0) = true;
 		  break;
 		}
 	    }
@@ -1784,12 +1784,12 @@
 	  retval.resize (1, nc);
 	  for (int j = 0; j < nc; j++)
 	    {
-	      retval.elem (0, j) = 0.0;
+	      retval.elem (0, j) = false;
 	      for (int i = 0; i < nr; i++)
 		{
 		  if (elem (i, j) != 0.0)
 		    {
-		      retval.elem (0, j) = 1.0;
+		      retval.elem (0, j) = true;
 		      break;
 		    }
 		}
--- a/liboctave/dMatrix.h
+++ b/liboctave/dMatrix.h
@@ -188,8 +188,8 @@
   bool all_integers (double& max_val, double& min_val) const;
   bool too_large_for_float (void) const;
  
-  Matrix all (void) const;
-  Matrix any (void) const;
+  boolMatrix all (void) const;
+  boolMatrix any (void) const;
 
   Matrix cumprod (void) const;
   Matrix cumsum (void) const;
--- a/scripts/miscellaneous/bug_report.m
+++ b/scripts/miscellaneous/bug_report.m
@@ -47,10 +47,10 @@
       fclose (prefs);
     endif
 
-    cmd = "octave-bug";
+    cmd = strcat (OCTAVE_HOME, "/bin/octave-bug");
 
     if (length (subject) > 0)
-      cmd = sprintf ("%s/bin/%s -s \"%s\"", __OCTAVE_HOME__, cmd, subject);
+      cmd = sprintf ("%s -s \"%s\"", cmd, subject);
     endif
 
     if (! isempty (prefs))
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,5 +1,9 @@
 Tue Mar 25 17:17:17 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>
 
+	* ov-bool-mat.cc (octave_bool_matrix::is_true): Write guts.
+
+	* ov-bool-mat.h (octave_bool_matrix): Implement all() and any().
+
 	* defaults.cc (symbols_of_defaults): DEFCONST OCTAVE_HOME.
 
 	* toplev.cc (octave_config_info): Delete use of CXXLIBS.