Mercurial > forge
changeset 9675:248af5ad631f octave-forge
control-devel: quicksave draft code (3)
author | paramaniac |
---|---|
date | Tue, 13 Mar 2012 14:02:32 +0000 |
parents | 5758bf7f1b2b |
children | 88c84a0b0d2a |
files | extra/control-devel/src/slib01ad.cc |
diffstat | 1 files changed, 15 insertions(+), 20 deletions(-) [+] |
line wrap: on
line diff
--- a/extra/control-devel/src/slib01ad.cc Tue Mar 13 13:53:53 2012 +0000 +++ b/extra/control-devel/src/slib01ad.cc Tue Mar 13 14:02:32 2012 +0000 @@ -158,6 +158,7 @@ int ldy = nsmp; // arguments out + int n; int ldr; if (meth == 'M' && jobd == 'M') @@ -173,21 +174,18 @@ // workspace int liwork; - if (jobmr == 'B') + if (meth == 'N') // if METH = 'N' + liwork = (m+l)*nobr; + else if (alg == 'F') // if METH = 'M' and ALG = 'F' + liwork = m+l; + else // if METH = 'M' and ALG = 'C' or 'Q' liwork = 0; - else // if JOBMR = 'F' - liwork = n; + + // TODO: Handle 'k' for DWORK int ldwork; - int mp; - if (jobcf == 'L') - mp = m; - else // if JOBCF = 'R' - mp = p; - - ldwork = 2*n*n + max (1, 2*n*n + 5*n, n*max(m,p), - n*(n + max(n,mp) + min(n,mp) + 6)); + ldwork = 0; OCTAVE_LOCAL_BUFFER (int, iwork, liwork); @@ -253,17 +251,14 @@ // resize - a.resize (ncr, ncr); // Ac - g.resize (ncr, p); // Bc - f.resize (m, ncr); // Cc - // Dc = 0 + int rs = 2*(m+l)*nobr; + r.resize (rs, rs); + // return values - retval(0) = a; - retval(1) = g; - retval(2) = f; - retval(3) = octave_value (ncr); - retval(4) = hsv; + retval(0) = octave_value (n); + retval(1) = r; + retval(2) = sv; } return retval;