# HG changeset patch # User jwe # Date 1025722731 0 # Node ID c21bb69ea26201dfa6821dafaae169a9adf51b94 # Parent 41e7fa40ff4c8c24d8008887b186e65b62cd49c5 [project @ 2002-07-03 18:58:51 by jwe] diff --git a/src/ChangeLog b/src/ChangeLog --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2002-07-03 John W. Eaton + + * data.cc (make_diag const octave_value&, const octave_value&): + Allow first arg to be 1x0 or 0x1. + 2002-07-02 John W. Eaton * defaults.cc (loadpath): Comment out previous change. diff --git a/src/data.cc b/src/data.cc --- a/src/data.cc +++ b/src/data.cc @@ -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);