From: <par...@us...> - 2010-04-18 07:33:48
|
Revision: 7208 http://octave.svn.sourceforge.net/octave/?rev=7208&view=rev Author: paramaniac Date: 2010-04-18 07:33:41 +0000 (Sun, 18 Apr 2010) Log Message: ----------- control: revamp code for oct files Modified Paths: -------------- trunk/octave-forge/main/control/DESCRIPTION trunk/octave-forge/main/control/src/slab08nd.cc trunk/octave-forge/main/control/src/slab13ad.cc trunk/octave-forge/main/control/src/slab13bd.cc trunk/octave-forge/main/control/src/slab13dd.cc trunk/octave-forge/main/control/src/slsb01bd.cc trunk/octave-forge/main/control/src/slsb02od.cc trunk/octave-forge/main/control/src/slsb03md.cc trunk/octave-forge/main/control/src/slsb04md.cc trunk/octave-forge/main/control/src/slsb04qd.cc trunk/octave-forge/main/control/src/slsb10dd.cc trunk/octave-forge/main/control/src/slsb10ed.cc trunk/octave-forge/main/control/src/slsb10fd.cc trunk/octave-forge/main/control/src/slsb10hd.cc trunk/octave-forge/main/control/src/slsg03ad.cc Added Paths: ----------- trunk/octave-forge/main/control/src/common.cc Modified: trunk/octave-forge/main/control/DESCRIPTION =================================================================== --- trunk/octave-forge/main/control/DESCRIPTION 2010-04-17 21:39:03 UTC (rev 7207) +++ trunk/octave-forge/main/control/DESCRIPTION 2010-04-18 07:33:41 UTC (rev 7208) @@ -1,6 +1,6 @@ Name: Control -Version: 0.3.0 -Date: 2010-03-25 +Version: 0.3.1 +Date: 2010-04-18 Author: Lukas Reichlin <luk...@gm...> Maintainer: Lukas Reichlin <luk...@gm...> Title: LTI Syncope Added: trunk/octave-forge/main/control/src/common.cc =================================================================== --- trunk/octave-forge/main/control/src/common.cc (rev 0) +++ trunk/octave-forge/main/control/src/common.cc 2010-04-18 07:33:41 UTC (rev 7208) @@ -0,0 +1,58 @@ +/* + +Copyright (C) 2010 Lukas F. Reichlin + +This file is part of LTI Syncope. + +LTI Syncope is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +LTI Syncope is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. + +Common code for oct-files. + +Author: Lukas Reichlin <luk...@gm...> +Created: April 2010 +Version: 0.1 + +*/ + + +int max (int a, int b) +{ + if (a > b) + return a; + else + return b; +} + +int max (int a, int b, int c) +{ + int d = max (a, b); + + return max (c, d); +} + +int max (int a, int b, int c, int d) +{ + int e = max (a, b); + int f = max (c, d); + + return max (e, f); +} + +int min (int a, int b) +{ + if (a < b) + return a; + else + return b; +} Modified: trunk/octave-forge/main/control/src/slab08nd.cc =================================================================== --- trunk/octave-forge/main/control/src/slab08nd.cc 2010-04-17 21:39:03 UTC (rev 7207) +++ trunk/octave-forge/main/control/src/slab08nd.cc 2010-04-18 07:33:41 UTC (rev 7208) @@ -23,12 +23,13 @@ Author: Lukas Reichlin <luk...@gm...> Created: November 2009 -Version: 0.2 +Version: 0.3 */ #include <octave/oct.h> -#include "f77-fcn.h" +#include <f77-fcn.h> +#include "common.cc" extern "C" { @@ -60,23 +61,7 @@ double* WORK, int& LWORK, int& INFO); } - -int max (int a, int b) -{ - if (a > b) - return a; - else - return b; -} - -int min (int a, int b) -{ - if (a < b) - return a; - else - return b; -} - + DEFUN_DLD (slab08nd, args, nargout, "Slicot AB08ND Release 5.0") { int nargin = args.length (); @@ -91,10 +76,10 @@ // arguments in char equil = 'N'; - NDArray a = args(0).array_value (); - NDArray b = args(1).array_value (); - NDArray c = args(2).array_value (); - NDArray d = args(3).array_value (); + Matrix a = args(0).matrix_value (); + Matrix b = args(1).matrix_value (); + Matrix c = args(2).matrix_value (); + Matrix d = args(3).matrix_value (); int n = a.rows (); // n: number of states int m = b.columns (); // m: number of inputs @@ -171,11 +156,9 @@ int lwork = max (1, 8*nu); OCTAVE_LOCAL_BUFFER (double, work, lwork); - dim_vector dv (1); - dv(0) = nu; - NDArray alphar (dv); - NDArray alphai (dv); - NDArray beta (dv); + ColumnVector alphar (nu); + ColumnVector alphai (nu); + ColumnVector beta (nu); int info2; Modified: trunk/octave-forge/main/control/src/slab13ad.cc =================================================================== --- trunk/octave-forge/main/control/src/slab13ad.cc 2010-04-17 21:39:03 UTC (rev 7207) +++ trunk/octave-forge/main/control/src/slab13ad.cc 2010-04-18 07:33:41 UTC (rev 7208) @@ -23,12 +23,13 @@ Author: Lukas Reichlin <luk...@gm...> Created: January 2010 -Version: 0.1 +Version: 0.2 */ #include <octave/oct.h> #include <f77-fcn.h> +#include "common.cc" extern "C" { @@ -44,21 +45,6 @@ double* DWORK, int& LDWORK, int& INFO); } - -int max (int a, int b) -{ - if (a > b) - return a; - else - return b; -} - -int max (int a, int b, int c) -{ - int d = max (a, b); - - return max (c, d); -} DEFUN_DLD (slab13ad, args, nargout, "Slicot AB13AD Release 5.0") { @@ -75,9 +61,9 @@ char dico; char equil = 'N'; - NDArray a = args(0).array_value (); - NDArray b = args(1).array_value (); - NDArray c = args(2).array_value (); + Matrix a = args(0).matrix_value (); + Matrix b = args(1).matrix_value (); + Matrix c = args(2).matrix_value (); int digital = args(3).int_value (); double alpha = args(4).double_value (); @@ -90,16 +76,14 @@ int m = b.columns (); // m: number of inputs int p = c.rows (); // p: number of outputs - int lda = max (1, n); - int ldb = max (1, n); - int ldc = max (1, p); + int lda = max (1, a.rows ()); + int ldb = max (1, b.rows ()); + int ldc = max (1, c.rows ()); // arguments out int ns; - dim_vector dv (1); - dv(0) = n; - NDArray hsv (dv); + ColumnVector hsv (n); // workspace int ldwork = max (1, n*(max (n, m, p) + 5) + n*(n+1)/2); Modified: trunk/octave-forge/main/control/src/slab13bd.cc =================================================================== --- trunk/octave-forge/main/control/src/slab13bd.cc 2010-04-17 21:39:03 UTC (rev 7207) +++ trunk/octave-forge/main/control/src/slab13bd.cc 2010-04-18 07:33:41 UTC (rev 7208) @@ -23,12 +23,13 @@ Author: Lukas Reichlin <luk...@gm...> Created: November 2009 -Version: 0.2 +Version: 0.3 */ #include <octave/oct.h> #include <f77-fcn.h> +#include "common.cc" extern "C" { @@ -45,29 +46,6 @@ int& IWARN, int& INFO); } - -int max (int a, int b) -{ - if (a > b) - return a; - else - return b; -} - -int max (int a, int b, int c) -{ - int d = max (a, b); - - return max (c, d); -} - -int min (int a, int b) -{ - if (a < b) - return a; - else - return b; -} DEFUN_DLD (slab13bd, args, nargout, "Slicot AB13BD Release 5.0") { @@ -84,10 +62,10 @@ char dico; char jobn = 'H'; - NDArray a = args(0).array_value (); - NDArray b = args(1).array_value (); - NDArray c = args(2).array_value (); - NDArray d = args(3).array_value (); + Matrix a = args(0).matrix_value (); + Matrix b = args(1).matrix_value (); + Matrix c = args(2).matrix_value (); + Matrix d = args(3).matrix_value (); int digital = args(4).int_value (); if (digital == 0) Modified: trunk/octave-forge/main/control/src/slab13dd.cc =================================================================== --- trunk/octave-forge/main/control/src/slab13dd.cc 2010-04-17 21:39:03 UTC (rev 7207) +++ trunk/octave-forge/main/control/src/slab13dd.cc 2010-04-18 07:33:41 UTC (rev 7208) @@ -23,13 +23,14 @@ Author: Lukas Reichlin <luk...@gm...> Created: November 2009 -Version: 0.2 +Version: 0.3 */ #include <octave/oct.h> #include <f77-fcn.h> #include <complex> +#include "common.cc" extern "C" { @@ -49,22 +50,6 @@ Complex* CWORK, int& LCWORK, int& INFO); } - -int max (int a, int b) -{ - if (a > b) - return a; - else - return b; -} - -int min (int a, int b) -{ - if (a < b) - return a; - else - return b; -} DEFUN_DLD (slab13dd, args, nargout, "Slicot AB13DD Release 5.0") { @@ -83,10 +68,10 @@ char equil = 'N'; char jobd = 'D'; - NDArray a = args(0).array_value (); - NDArray b = args(1).array_value (); - NDArray c = args(2).array_value (); - NDArray d = args(3).array_value (); + Matrix a = args(0).matrix_value (); + Matrix b = args(1).matrix_value (); + Matrix c = args(2).matrix_value (); + Matrix d = args(3).matrix_value (); double* e = 0; int digital = args(4).int_value (); double tol = args(5).double_value (); @@ -106,10 +91,8 @@ int ldd = max (1, d.rows ()); int lde = 1; - dim_vector dv (1); - dv(0) = 2; - NDArray fpeak (dv); - NDArray gpeak (dv); + ColumnVector fpeak (2); + ColumnVector gpeak (2); fpeak(0) = 0; fpeak(1) = 1; Modified: trunk/octave-forge/main/control/src/slsb01bd.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb01bd.cc 2010-04-17 21:39:03 UTC (rev 7207) +++ trunk/octave-forge/main/control/src/slsb01bd.cc 2010-04-18 07:33:41 UTC (rev 7208) @@ -23,12 +23,13 @@ Author: Lukas Reichlin <luk...@gm...> Created: November 2009 -Version: 0.2.1 +Version: 0.3 */ #include <octave/oct.h> #include <f77-fcn.h> +#include "common.cc" extern "C" { @@ -46,22 +47,6 @@ double* DWORK, int& LDWORK, int& IWARN, int& INFO); } - -int max (int a, int b) -{ - if (a > b) - return a; - else - return b; -} - -int max (int a, int b, int c, int d) -{ - int e = max (a, b); - int f = max (c, d); - - return max (e, f); -} DEFUN_DLD (slsb01bd, args, nargout, "Slicot SB01BD Release 5.0") { @@ -77,10 +62,10 @@ // arguments in char dico; - NDArray a = args(0).array_value (); - NDArray b = args(1).array_value (); - NDArray wr = args(2).array_value (); - NDArray wi = args(3).array_value (); + Matrix a = args(0).matrix_value (); + Matrix b = args(1).matrix_value (); + ColumnVector wr = args(2).column_vector_value (); + ColumnVector wi = args(3).column_vector_value (); int digital = args(4).int_value (); double alpha = args(5).double_value (); double tol = args(6).double_value (); @@ -104,10 +89,7 @@ int nap; int nup; - dim_vector dv (2); - dv(0) = ldf; - dv(1) = n; - NDArray f (dv); + Matrix f (ldf, n); OCTAVE_LOCAL_BUFFER (double, z, ldz*n); Modified: trunk/octave-forge/main/control/src/slsb02od.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb02od.cc 2010-04-17 21:39:03 UTC (rev 7207) +++ trunk/octave-forge/main/control/src/slsb02od.cc 2010-04-18 07:33:41 UTC (rev 7208) @@ -23,12 +23,13 @@ Author: Lukas Reichlin <luk...@gm...> Created: February 2010 -Version: 0.1 +Version: 0.2 */ #include <octave/oct.h> #include <f77-fcn.h> +#include "common.cc" extern "C" { @@ -55,29 +56,6 @@ bool* BWORK, int& INFO); } - -int max (int a, int b) -{ - if (a > b) - return a; - else - return b; -} - -int max (int a, int b, int c) -{ - int d = max (a, b); - - return max (c, d); -} - -int max (int a, int b, int c, int d) -{ - int e = max (a, b); - int f = max (c, d); - - return max (e, f); -} DEFUN_DLD (slsb02od, args, nargout, "Slicot SB02OD Release 5.0") { @@ -98,11 +76,11 @@ char jobl; char sort = 'S'; - NDArray a = args(0).array_value (); - NDArray b = args(1).array_value (); - NDArray q = args(2).array_value (); - NDArray r = args(3).array_value (); - NDArray l = args(4).array_value (); + Matrix a = args(0).matrix_value (); + Matrix b = args(1).matrix_value (); + Matrix q = args(2).matrix_value (); + Matrix r = args(3).matrix_value (); + Matrix l = args(4).matrix_value (); int digital = args(5).int_value (); int ijobl = args(6).int_value (); @@ -130,10 +108,7 @@ double rcond; int ldx = max (1, n); - dim_vector dv (2); - dv(0) = ldx; - dv(1) = n; - NDArray x (dv); + Matrix x (ldx, n); // unused output arguments OCTAVE_LOCAL_BUFFER (double, alfar, 2*n); Modified: trunk/octave-forge/main/control/src/slsb03md.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb03md.cc 2010-04-17 21:39:03 UTC (rev 7207) +++ trunk/octave-forge/main/control/src/slsb03md.cc 2010-04-18 07:33:41 UTC (rev 7208) @@ -23,12 +23,13 @@ Author: Lukas Reichlin <luk...@gm...> Created: December 2009 -Version: 0.2 +Version: 0.3 */ #include <octave/oct.h> #include <f77-fcn.h> +#include "common.cc" extern "C" { @@ -46,14 +47,6 @@ double* DWORK, int& LDWORK, int& INFO); } - -int max (int a, int b) -{ - if (a > b) - return a; - else - return b; -} DEFUN_DLD (slsb03md, args, nargout, "Slicot SB03MD Release 5.0") { @@ -72,8 +65,8 @@ char fact = 'N'; char trana = 'T'; - NDArray a = args(0).array_value (); - NDArray c = args(1).array_value (); + Matrix a = args(0).matrix_value (); + Matrix c = args(1).matrix_value (); int dt = args(2).int_value (); if (dt == 0) @@ -92,17 +85,10 @@ double sep = 0; double ferr = 0; - dim_vector dv_u (2); - dv_u(0) = ldu; - dv_u(1) = n; + Matrix u (ldu, n); + ColumnVector wr (n); + ColumnVector wi (n); - dim_vector dv (1); - dv(0) = n; - - NDArray u (dv_u); - NDArray wr (dv); - NDArray wi (dv); - // workspace int* iwork = 0; // not referenced because job = X Modified: trunk/octave-forge/main/control/src/slsb04md.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb04md.cc 2010-04-17 21:39:03 UTC (rev 7207) +++ trunk/octave-forge/main/control/src/slsb04md.cc 2010-04-18 07:33:41 UTC (rev 7208) @@ -23,12 +23,13 @@ Author: Lukas Reichlin <luk...@gm...> Created: January 2010 -Version: 0.1 +Version: 0.2 */ #include <octave/oct.h> #include <f77-fcn.h> +#include "common.cc" extern "C" { @@ -42,22 +43,6 @@ double* DWORK, int& LDWORK, int& INFO); } - -int max (int a, int b) -{ - if (a > b) - return a; - else - return b; -} - -int max (int a, int b, int c, int d) -{ - int e = max (a, b); - int f = max (c, d); - - return max (e, f); -} DEFUN_DLD (slsb04md, args, nargout, "Slicot SB04MD Release 5.0") { @@ -71,9 +56,9 @@ else { // arguments in - NDArray a = args(0).array_value (); - NDArray b = args(1).array_value (); - NDArray c = args(2).array_value (); + Matrix a = args(0).matrix_value (); + Matrix b = args(1).matrix_value (); + Matrix c = args(2).matrix_value (); int n = a.rows (); int m = b.rows (); @@ -84,12 +69,8 @@ int ldz = max (1, m); // arguments out - dim_vector dv (2); - dv(0) = ldz; - dv(1) = m; + Matrix z (ldz, m); - NDArray z (dv); - // workspace int ldwork = max (1, 2*n*n + 8*n, 5*m, n + m); Modified: trunk/octave-forge/main/control/src/slsb04qd.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb04qd.cc 2010-04-17 21:39:03 UTC (rev 7207) +++ trunk/octave-forge/main/control/src/slsb04qd.cc 2010-04-18 07:33:41 UTC (rev 7208) @@ -23,12 +23,13 @@ Author: Lukas Reichlin <luk...@gm...> Created: January 2010 -Version: 0.1 +Version: 0.2 */ #include <octave/oct.h> #include <f77-fcn.h> +#include "common.cc" extern "C" { @@ -43,22 +44,6 @@ int& INFO); } -int max (int a, int b) -{ - if (a > b) - return a; - else - return b; -} - -int max (int a, int b, int c, int d) -{ - int e = max (a, b); - int f = max (c, d); - - return max (e, f); -} - DEFUN_DLD (slsb04qd, args, nargout, "Slicot SB04QD Release 5.0") { int nargin = args.length (); @@ -71,9 +56,9 @@ else { // arguments in - NDArray a = args(0).array_value (); - NDArray b = args(1).array_value (); - NDArray c = args(2).array_value (); + Matrix a = args(0).matrix_value (); + Matrix b = args(1).matrix_value (); + Matrix c = args(2).matrix_value (); int n = a.rows (); int m = b.rows (); @@ -84,12 +69,8 @@ int ldz = max (1, m); // arguments out - dim_vector dv (2); - dv(0) = ldz; - dv(1) = m; + Matrix z (ldz, m); - NDArray z (dv); - // workspace int ldwork = max (1, 2*n*n + 9*n, 5*m, n + m); Modified: trunk/octave-forge/main/control/src/slsb10dd.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb10dd.cc 2010-04-17 21:39:03 UTC (rev 7207) +++ trunk/octave-forge/main/control/src/slsb10dd.cc 2010-04-18 07:33:41 UTC (rev 7208) @@ -23,12 +23,13 @@ Author: Lukas Reichlin <luk...@gm...> Created: December 2009 -Version: 0.2 +Version: 0.3 */ #include <octave/oct.h> #include <f77-fcn.h> +#include "common.cc" extern "C" { @@ -53,29 +54,6 @@ bool* BWORK, int& INFO); } - -int max (int a, int b) -{ - if (a > b) - return a; - else - return b; -} - -int max (int a, int b, int c) -{ - int d = max (a, b); - - return max (c, d); -} - -int max (int a, int b, int c, int d) -{ - int e = max (a, b); - int f = max (c, d); - - return max (e, f); -} DEFUN_DLD (slsb10dd, args, nargout, "Slicot SB10DD Release 5.0") { @@ -89,10 +67,10 @@ else { // arguments in - NDArray a = args(0).array_value (); - NDArray b = args(1).array_value (); - NDArray c = args(2).array_value (); - NDArray d = args(3).array_value (); + Matrix a = args(0).matrix_value (); + Matrix b = args(1).matrix_value (); + Matrix c = args(2).matrix_value (); + Matrix d = args(3).matrix_value (); int ncon = args(4).int_value (); int nmeas = args(5).int_value (); @@ -118,41 +96,14 @@ double tol = 0; // arguments out - dim_vector dv_ak (2); - dv_ak(0) = ldak; - dv_ak(1) = n; + Matrix ak (ldak, n); + Matrix bk (ldbk, nmeas); + Matrix ck (ldck, n); + Matrix dk (lddk, nmeas); + Matrix x (ldx, n); + Matrix z (ldz, n); + ColumnVector rcond (8); - dim_vector dv_bk (2); - dv_bk(0) = ldbk; - dv_bk(1) = nmeas; - - dim_vector dv_ck (2); - dv_ck(0) = ldck; - dv_ck(1) = n; - - dim_vector dv_dk (2); - dv_dk(0) = lddk; - dv_dk(1) = nmeas; - - dim_vector dv_x (2); - dv_x(0) = ldx; - dv_x(1) = n; - - dim_vector dv_z (2); - dv_z(0) = ldz; - dv_z(1) = n; - - dim_vector dv (1); - dv(0) = 8; - - NDArray ak (dv_ak); - NDArray bk (dv_bk); - NDArray ck (dv_ck); - NDArray dk (dv_dk); - NDArray x (dv_x); - NDArray z (dv_z); - NDArray rcond (dv); - // workspace int m2 = ncon; int m1 = m - m2; Modified: trunk/octave-forge/main/control/src/slsb10ed.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb10ed.cc 2010-04-17 21:39:03 UTC (rev 7207) +++ trunk/octave-forge/main/control/src/slsb10ed.cc 2010-04-18 07:33:41 UTC (rev 7208) @@ -23,12 +23,13 @@ Author: Lukas Reichlin <luk...@gm...> Created: November 2009 -Version: 0.2 +Version: 0.3 */ #include <octave/oct.h> #include <f77-fcn.h> +#include "common.cc" extern "C" { @@ -51,29 +52,6 @@ int& INFO); } -int max (int a, int b) -{ - if (a > b) - return a; - else - return b; -} - -int max (int a, int b, int c) -{ - int d = max (a, b); - - return max (c, d); -} - -int max (int a, int b, int c, int d) -{ - int e = max (a, b); - int f = max (c, d); - - return max (e, f); -} - DEFUN_DLD (slsb10ed, args, nargout, "Slicot SB10ED Release 5.0") { int nargin = args.length (); @@ -86,10 +64,10 @@ else { // arguments in - NDArray a = args(0).array_value (); - NDArray b = args(1).array_value (); - NDArray c = args(2).array_value (); - NDArray d = args(3).array_value (); + Matrix a = args(0).matrix_value (); + Matrix b = args(1).matrix_value (); + Matrix c = args(2).matrix_value (); + Matrix d = args(3).matrix_value (); int ncon = args(4).int_value (); int nmeas = args(5).int_value (); @@ -110,32 +88,13 @@ double tol = 0; - // arguments out - dim_vector dv_ak (2); - dv_ak(0) = ldak; - dv_ak(1) = n; + // arguments out + Matrix ak (ldak, n); + Matrix bk (ldbk, nmeas); + Matrix ck (ldck, n); + Matrix dk (lddk, nmeas); + ColumnVector rcond (7); - dim_vector dv_bk (2); - dv_bk(0) = ldbk; - dv_bk(1) = nmeas; - - dim_vector dv_ck (2); - dv_ck(0) = ldck; - dv_ck(1) = n; - - dim_vector dv_dk (2); - dv_dk(0) = lddk; - dv_dk(1) = nmeas; - - dim_vector dv (1); - dv(0) = 7; - - NDArray ak (dv_ak); - NDArray bk (dv_bk); - NDArray ck (dv_ck); - NDArray dk (dv_dk); - NDArray rcond (dv); - // workspace int m2 = ncon; int m1 = m - m2; Modified: trunk/octave-forge/main/control/src/slsb10fd.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb10fd.cc 2010-04-17 21:39:03 UTC (rev 7207) +++ trunk/octave-forge/main/control/src/slsb10fd.cc 2010-04-18 07:33:41 UTC (rev 7208) @@ -23,12 +23,13 @@ Author: Lukas Reichlin <luk...@gm...> Created: December 2009 -Version: 0.2 +Version: 0.3 */ #include <octave/oct.h> #include <f77-fcn.h> +#include "common.cc" extern "C" { @@ -51,29 +52,6 @@ bool* BWORK, int& INFO); } - -int max (int a, int b) -{ - if (a > b) - return a; - else - return b; -} - -int max (int a, int b, int c) -{ - int d = max (a, b); - - return max (c, d); -} - -int max (int a, int b, int c, int d) -{ - int e = max (a, b); - int f = max (c, d); - - return max (e, f); -} DEFUN_DLD (slsb10fd, args, nargout, "Slicot SB10FD Release 5.0") { @@ -87,10 +65,10 @@ else { // arguments in - NDArray a = args(0).array_value (); - NDArray b = args(1).array_value (); - NDArray c = args(2).array_value (); - NDArray d = args(3).array_value (); + Matrix a = args(0).matrix_value (); + Matrix b = args(1).matrix_value (); + Matrix c = args(2).matrix_value (); + Matrix d = args(3).matrix_value (); int ncon = args(4).int_value (); int nmeas = args(5).int_value (); @@ -113,31 +91,12 @@ double tol = 0; // arguments out - dim_vector dv_ak (2); - dv_ak(0) = ldak; - dv_ak(1) = n; + Matrix ak (ldak, n); + Matrix bk (ldbk, nmeas); + Matrix ck (ldck, n); + Matrix dk (lddk, nmeas); + ColumnVector rcond (4); - dim_vector dv_bk (2); - dv_bk(0) = ldbk; - dv_bk(1) = nmeas; - - dim_vector dv_ck (2); - dv_ck(0) = ldck; - dv_ck(1) = n; - - dim_vector dv_dk (2); - dv_dk(0) = lddk; - dv_dk(1) = nmeas; - - dim_vector dv (1); - dv(0) = 4; - - NDArray ak (dv_ak); - NDArray bk (dv_bk); - NDArray ck (dv_ck); - NDArray dk (dv_dk); - NDArray rcond (dv); - // workspace int m2 = ncon; Modified: trunk/octave-forge/main/control/src/slsb10hd.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb10hd.cc 2010-04-17 21:39:03 UTC (rev 7207) +++ trunk/octave-forge/main/control/src/slsb10hd.cc 2010-04-18 07:33:41 UTC (rev 7208) @@ -23,12 +23,13 @@ Author: Lukas Reichlin <luk...@gm...> Created: November 2009 -Version: 0.2 +Version: 0.3 */ #include <octave/oct.h> #include <f77-fcn.h> +#include "common.cc" extern "C" { @@ -50,29 +51,6 @@ bool* BWORK, int& INFO); } - -int max (int a, int b) -{ - if (a > b) - return a; - else - return b; -} - -int max (int a, int b, int c) -{ - int d = max (a, b); - - return max (c, d); -} - -int max (int a, int b, int c, int d) -{ - int e = max (a, b); - int f = max (c, d); - - return max (e, f); -} DEFUN_DLD (slsb10hd, args, nargout, "Slicot SB10HD Release 5.0") { @@ -86,10 +64,10 @@ else { // arguments in - NDArray a = args(0).array_value (); - NDArray b = args(1).array_value (); - NDArray c = args(2).array_value (); - NDArray d = args(3).array_value (); + Matrix a = args(0).matrix_value (); + Matrix b = args(1).matrix_value (); + Matrix c = args(2).matrix_value (); + Matrix d = args(3).matrix_value (); int ncon = args(4).int_value (); int nmeas = args(5).int_value (); @@ -111,31 +89,12 @@ double tol = 0; // arguments out - dim_vector dv_ak (2); - dv_ak(0) = ldak; - dv_ak(1) = n; + Matrix ak (ldak, n); + Matrix bk (ldbk, nmeas); + Matrix ck (ldck, n); + Matrix dk (lddk, nmeas); + ColumnVector rcond (4); - dim_vector dv_bk (2); - dv_bk(0) = ldbk; - dv_bk(1) = nmeas; - - dim_vector dv_ck (2); - dv_ck(0) = ldck; - dv_ck(1) = n; - - dim_vector dv_dk (2); - dv_dk(0) = lddk; - dv_dk(1) = nmeas; - - dim_vector dv (1); - dv(0) = 4; - - NDArray ak (dv_ak); - NDArray bk (dv_bk); - NDArray ck (dv_ck); - NDArray dk (dv_dk); - NDArray rcond (dv); - // workspace int m2 = ncon; int m1 = m - m2; Modified: trunk/octave-forge/main/control/src/slsg03ad.cc =================================================================== --- trunk/octave-forge/main/control/src/slsg03ad.cc 2010-04-17 21:39:03 UTC (rev 7207) +++ trunk/octave-forge/main/control/src/slsg03ad.cc 2010-04-18 07:33:41 UTC (rev 7208) @@ -23,12 +23,13 @@ Author: Lukas Reichlin <luk...@gm...> Created: January 2010 -Version: 0.1 +Version: 0.2 */ #include <octave/oct.h> #include <f77-fcn.h> +#include "common.cc" extern "C" { @@ -50,14 +51,6 @@ double* DWORK, int& LDWORK, int& INFO); } - -int max (int a, int b) -{ - if (a > b) - return a; - else - return b; -} DEFUN_DLD (slsg03ad, args, nargout, "Slicot SG03AD Release 5.0") { @@ -77,9 +70,9 @@ char trans = 'T'; char uplo = 'U'; // ?!? - NDArray a = args(0).array_value (); - NDArray e = args(1).array_value (); - NDArray x = args(2).array_value (); + Matrix a = args(0).matrix_value (); + Matrix e = args(1).matrix_value (); + Matrix x = args(2).matrix_value (); int dt = args(3).int_value (); if (dt == 0) @@ -100,23 +93,12 @@ double sep = 0; double ferr = 0; - dim_vector dv_q (2); - dv_q(0) = ldq; - dv_q(1) = n; + Matrix q (ldq, n); + Matrix z (ldz, n); + ColumnVector alphar (n); + ColumnVector alphai (n); + ColumnVector beta (n); - dim_vector dv_z (2); - dv_z(0) = ldz; - dv_z(1) = n; - - dim_vector dv (1); - dv(0) = n; - - NDArray q (dv_q); - NDArray z (dv_z); - NDArray alphar (dv); - NDArray alphai (dv); - NDArray beta (dv); - // workspace int* iwork = 0; // not referenced because job = X This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |