From: <par...@us...> - 2011-10-27 18:42:57
|
Revision: 8887 http://octave.svn.sourceforge.net/octave/?rev=8887&view=rev Author: paramaniac Date: 2011-10-27 18:42:50 +0000 (Thu, 27 Oct 2011) Log Message: ----------- control-devel: update draft code Modified Paths: -------------- trunk/octave-forge/extra/control-devel/devel/makefile_modred.m trunk/octave-forge/extra/control-devel/src/slab09id.cc Modified: trunk/octave-forge/extra/control-devel/devel/makefile_modred.m =================================================================== --- trunk/octave-forge/extra/control-devel/devel/makefile_modred.m 2011-10-27 17:07:19 UTC (rev 8886) +++ trunk/octave-forge/extra/control-devel/devel/makefile_modred.m 2011-10-27 18:42:50 UTC (rev 8887) @@ -3,7 +3,18 @@ srcdir = [develdir, "/../src"]; cd (srcdir); -mkoctfile AB09ID.f TB01PD.f SB08DD.f TB01ID.f TB01KD.f \ +mkoctfile "-Wl,-framework" "-Wl,vecLib" \ + slab09hd.cc \ + AB09HD.f TB01ID.f AB04MD.f TB01KD.f AB09HY.f \ + AB09IX.f MB03UD.f SB02MD.f AB09DD.f TB01LD.f \ + SB03OU.f MA02AD.f MB03QX.f select.f SB03OT.f \ + SB02MR.f SB02MS.f MB03QD.f SB02MU.f SB02MV.f \ + SB02MW.f MB04ND.f MB04OD.f MB03QY.f SB03OR.f \ + SB03OY.f SB04PX.f MB04NY.f MB04OY.f SB03OV.f + +mkoctfile "-Wl,-framework" "-Wl,vecLib" \ + slab09id.cc \ + AB09ID.f TB01PD.f SB08DD.f TB01ID.f TB01KD.f \ AB09IX.f AB09IY.f SB08CD.f MB04ND.f TB01XD.f \ MB04OD.f MB01WD.f MB03UD.f AB07MD.f SB01FY.f \ AB09DD.f TB01LD.f SB03OU.f TB01UD.f MA02AD.f \ @@ -23,14 +34,6 @@ MB04ND.f MB04OD.f SB03OR.f SB03OY.f MB04NY.f \ MB04OY.f SB03OV.f -mkoctfile "-Wl,-framework" "-Wl,vecLib" \ - slab09hd.cc \ - AB09HD.f TB01ID.f AB04MD.f TB01KD.f AB09HY.f \ - AB09IX.f MB03UD.f SB02MD.f AB09DD.f TB01LD.f \ - SB03OU.f MA02AD.f MB03QX.f select.f SB03OT.f \ - SB02MR.f SB02MS.f MB03QD.f SB02MU.f SB02MV.f \ - SB02MW.f MB04ND.f MB04OD.f MB03QY.f SB03OR.f \ - SB03OY.f SB04PX.f MB04NY.f MB04OY.f SB03OV.f system ("rm *.o"); cd (homedir); Modified: trunk/octave-forge/extra/control-devel/src/slab09id.cc =================================================================== --- trunk/octave-forge/extra/control-devel/src/slab09id.cc 2011-10-27 17:07:19 UTC (rev 8886) +++ trunk/octave-forge/extra/control-devel/src/slab09id.cc 2011-10-27 18:42:50 UTC (rev 8887) @@ -81,7 +81,7 @@ char jobc; char jobo; char job; - char weigth + char weight; char equil; char ordsel; @@ -182,7 +182,7 @@ int p = c.rows (); // p: number of outputs int nv = av.rows (); - int pw = cv.rows (); + int pv = cv.rows (); int nw = aw.rows (); int mw = bw.columns (); @@ -233,78 +233,53 @@ else liwrk3 = nw + max (m, mw); - liwork = max (3, liwrk1, liwrk2, liwrk3)); + liwork = max (3, liwrk1, liwrk2, liwrk3); int ldwork; - int - - ldwork = max (lminl, lminr, lrcf, - 2*n*n + max (1, lleft, lright, 2*n*n+5*n, n*max (m, p))); -c where -c lminl = 0, if weight = 'r' or 'n' or nv = 0; otherwise, -c lminl = max(llcf,nv+max(nv,3*p)) if p = pv; -c lminl = max(p,pv)*(2*nv+max(p,pv))+ -c max(llcf,nv+max(nv,3*p,3*pv)) if p <> pv; -c lrcf = 0, and -c lminr = 0, if weight = 'l' or 'n' or nw = 0; otherwise, -c lminr = nw+max(nw,3*m) if m = mw; -c lminr = 2*nw*max(m,mw)+nw+max(nw,3*m,3*mw) if m <> mw; -c llcf = pv*(nv+pv)+pv*nv+max(nv*(nv+5), pv*(pv+2), -c 4*pv, 4*p); -c lrcf = mw*(nw+mw)+max(nw*(nw+5),mw*(mw+2),4*mw,4*m) -c lleft = (n+nv)*(n+nv+max(n+nv,pv)+5) -c if weight = 'l' or 'b' and pv > 0; -c lleft = n*(p+5) if weight = 'r' or 'n' or pv = 0; -c lright = (n+nw)*(n+nw+max(n+nw,mw)+5) -c if weight = 'r' or 'b' and mw > 0; -c lright = n*(m+5) if weight = 'l' or 'n' or mw = 0. + int lminl; + int lrcf; + int lminr; + int llcf; + int lleft; + int lright; - - if (jobv == 'N') - tmpc = 0; - else - tmpc = max (2*p, nv+p+n+6, 2*nv+p+2); - - if (jobw == 'N') - tmpd = 0; - else - tmpd = max (2*m, nw+m+n+6, 2*nw+m+2); - - if (dico == 'C') - liwork = max (1, m, tmpc, tmpd); - else - liwork = max (1, n, m, tmpc, tmpd); - - int ldwork; - int nvp = nv + p; - int nwm = nw + m; - int ldw1; - int ldw2; - int ldw3 = n*(2*n + max (n, m, p) + 5) + n*(n+1)/2; - int ldw4 = n*(m+p+2) + 2*m*p + min (n, m) + max (3*m+1, min (n, m) + p); - - if (jobv == 'N') + if (nw == 0 || weight == 'L' || weight == 'N') { - ldw1 = 0; + lrcf = 0; + lminr = 0; } else { - ldw1 = 2*nvp*(nvp+p) + p*p + max (2*nvp*nvp + max (11*nvp+16, p*nvp), - nvp*n + max (nvp*n+n*n, p*n, p*m)); + lrcf = mw*(nw+mw) + max (nw*(nw+5), mw*(mw+2), 4*mw, 4*m); + if (m == mw) + lminr = nw + max (nw, 3*m); + else + lminr = 2*nw*max (m, mw) + nw + max (nw, 3*m, 3*mw); } - if (jobw == 'N') - { - ldw2 = 0; - } + llcf = pv*(nv+pv) + pv*nv + max (nv*(nv+5), pv*(pv+2), 4*pv, 4*p); + + if (nv == 0 || weight == 'R' || weight == 'N') + lminl = 0; + else if (p == pv) + lminl = max (llcf, nv + max (nv, 3*p)); else - { - ldw2 = 2*nwm*(nwm+m) + m*m + max (2*nwm*nwm + max (11*nwm+16, m*nwm), - nwm*n + max (nwm*n+n*n, m*n, p*m)); - } - - ldwork = max (ldw1, ldw2, ldw3, ldw4); + lminl = max (p, pv) * (2*nv + max (p, pv)) + max (llcf, nv + max (nv, 3*p, 3*pv)); + + if (pv == 0 || weight == 'R' || weight == 'N') + lleft = n*(p+5); + else + lleft = (n+nv) * (n + nv + max (n+nv, pv) + 5); + + if (mw == 0 || weight == 'L' || weight == 'N') + lright = n*(m+5); + else + lright = (n+nw) * (n + nw + max (n+nw, mw) + 5); + + ldwork = max (lminl, lminr, lrcf, + 2*n*n + max (1, lleft, lright, 2*n*n+5*n, n*max (m, p))); + OCTAVE_LOCAL_BUFFER (int, iwork, liwork); OCTAVE_LOCAL_BUFFER (double, dwork, ldwork); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |