Mercurial > octave
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);