diff src/data.cc @ 3972:c21bb69ea262

[project @ 2002-07-03 18:58:51 by jwe]
author jwe
date Wed, 03 Jul 2002 18:58:51 +0000
parents f9ea3dcf58ee
children 6476dd85a65f
line wrap: on
line diff
--- a/src/data.cc	Tue Jul 02 23:46:49 2002 +0000
+++ b/src/data.cc	Wed Jul 03 18:58:51 2002 +0000
@@ -317,6 +317,9 @@
   DATA_REDUCTION (cumsum);
 }
 
+// XXX FIXME XXX -- we could eliminate some duplicate code here with
+// some template functions or macros.
+
 static octave_value
 make_diag (const Matrix& v, int k)
 {
@@ -480,10 +483,10 @@
 	  int nr = m.rows ();
 	  int nc = m.columns ();
 
-	  if (nr == 0 || nc == 0)
+	  if (nr == 1 || nc == 1)
+	    retval = make_diag (m, k);
+	  else if (nr == 0 || nc == 0)
 	    retval = Matrix ();
-	  else if (nr == 1 || nc == 1)
-	    retval = make_diag (m, k);
 	  else
 	    {
 	      ColumnVector d = m.diag (k);
@@ -500,10 +503,10 @@
 	  int nr = cm.rows ();
 	  int nc = cm.columns ();
 
-	  if (nr == 0 || nc == 0)
+	  if (nr == 1 || nc == 1)
+	    retval = make_diag (cm, k);
+	  else if (nr == 0 || nc == 0)
 	    retval = Matrix ();
-	  else if (nr == 1 || nc == 1)
-	    retval = make_diag (cm, k);
 	  else
 	    {
 	      ComplexColumnVector d = cm.diag (k);