diff src/tc-rep-idx.cc @ 1130:65430ec9a4aa

[project @ 1995-02-22 13:32:29 by jwe]
author jwe
date Wed, 22 Feb 1995 13:33:31 +0000
parents 75fc98220389
children 8fa4dc6a6068
line wrap: on
line diff
--- a/src/tc-rep-idx.cc	Wed Feb 22 13:29:03 1995 +0000
+++ b/src/tc-rep-idx.cc	Wed Feb 22 13:33:31 1995 +0000
@@ -556,7 +556,45 @@
 
       int result_size = iv.length ();
 
-      if (nc == 1 || (nr != 1 && iv.one_zero_only ()))
+// XXX FIXME XXX -- there is way too much duplicate code here...
+
+      if (iv.one_zero_only ())
+	{
+	  if (iv.ones_count () == 0)
+	    {
+	      retval = Matrix ();
+	    }
+	  else
+	    {
+	      if (nr == 1)
+		{
+		  CRMATRIX (m, cm, 1, result_size);
+
+		  for (int i = 0; i < result_size; i++)
+		    {
+		      int idx = iv.elem (i);
+		      CRMATRIX_ASSIGN_ELEM (m, cm, 0, i, cop_out [idx],
+					    c_cop_out [idx], real_type);
+		    }
+
+		  ASSIGN_CRMATRIX_TO (retval, m, cm);
+		}
+	      else
+		{
+		  CRMATRIX (m, cm, result_size, 1);
+
+		  for (int i = 0; i < result_size; i++)
+		    {
+		      int idx = iv.elem (i);
+		      CRMATRIX_ASSIGN_ELEM (m, cm, i, 0, cop_out [idx],
+					    c_cop_out [idx], real_type);
+		    }
+
+		  ASSIGN_CRMATRIX_TO (retval, m, cm);
+		}
+	    }
+	}
+      else if (nc == 1)
 	{
 	  CRMATRIX (m, cm, result_size, 1);