From: <par...@us...> - 2010-08-29 19:20:00
|
Revision: 7599 http://octave.svn.sourceforge.net/octave/?rev=7599&view=rev Author: paramaniac Date: 2010-08-29 19:19:52 +0000 (Sun, 29 Aug 2010) Log Message: ----------- control: add Slicot AB01OD (staircase form) Modified Paths: -------------- trunk/octave-forge/main/control/src/Makefile Added Paths: ----------- trunk/octave-forge/main/control/src/AB01ND.f trunk/octave-forge/main/control/src/AB01OD.f trunk/octave-forge/main/control/src/MB01PD.f trunk/octave-forge/main/control/src/MB01QD.f trunk/octave-forge/main/control/src/slab01od.cc Added: trunk/octave-forge/main/control/src/AB01ND.f =================================================================== --- trunk/octave-forge/main/control/src/AB01ND.f (rev 0) +++ trunk/octave-forge/main/control/src/AB01ND.f 2010-08-29 19:19:52 UTC (rev 7599) @@ -0,0 +1,470 @@ + SUBROUTINE AB01ND( JOBZ, N, M, A, LDA, B, LDB, NCONT, INDCON, + $ NBLK, Z, LDZ, TAU, TOL, IWORK, DWORK, LDWORK, + $ INFO ) +C +C SLICOT RELEASE 5.0. +C +C Copyright (c) 2002-2009 NICONET e.V. +C +C This program is free software: you can redistribute it and/or +C modify it under the terms of the GNU General Public License as +C published by the Free Software Foundation, either version 2 of +C the License, or (at your option) any later version. +C +C This program is distributed in the hope that it will be useful, +C but WITHOUT ANY WARRANTY; without even the implied warranty of +C MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +C GNU General Public License for more details. +C +C You should have received a copy of the GNU General Public License +C along with this program. If not, see +C <http://www.gnu.org/licenses/>. +C +C PURPOSE +C +C To find a controllable realization for the linear time-invariant +C multi-input system +C +C dX/dt = A * X + B * U, +C +C where A and B are N-by-N and N-by-M matrices, respectively, +C which are reduced by this routine to orthogonal canonical form +C using (and optionally accumulating) orthogonal similarity +C transformations. Specifically, the pair (A, B) is reduced to +C the pair (Ac, Bc), Ac = Z' * A * Z, Bc = Z' * B, given by +C +C [ Acont * ] [ Bcont ] +C Ac = [ ], Bc = [ ], +C [ 0 Auncont ] [ 0 ] +C +C and +C +C [ A11 A12 . . . A1,p-1 A1p ] [ B1 ] +C [ A21 A22 . . . A2,p-1 A2p ] [ 0 ] +C [ 0 A32 . . . A3,p-1 A3p ] [ 0 ] +C Acont = [ . . . . . . . ], Bc = [ . ], +C [ . . . . . . ] [ . ] +C [ . . . . . ] [ . ] +C [ 0 0 . . . Ap,p-1 App ] [ 0 ] +C +C where the blocks B1, A21, ..., Ap,p-1 have full row ranks and +C p is the controllability index of the pair. The size of the +C block Auncont is equal to the dimension of the uncontrollable +C subspace of the pair (A, B). +C +C ARGUMENTS +C +C Mode Parameters +C +C JOBZ CHARACTER*1 +C Indicates whether the user wishes to accumulate in a +C matrix Z the orthogonal similarity transformations for +C reducing the system, as follows: +C = 'N': Do not form Z and do not store the orthogonal +C transformations; +C = 'F': Do not form Z, but store the orthogonal +C transformations in the factored form; +C = 'I': Z is initialized to the unit matrix and the +C orthogonal transformation matrix Z is returned. +C +C Input/Output Parameters +C +C N (input) INTEGER +C The order of the original state-space representation, +C i.e. the order of the matrix A. N >= 0. +C +C M (input) INTEGER +C The number of system inputs, or of columns of B. M >= 0. +C +C A (input/output) DOUBLE PRECISION array, dimension (LDA,N) +C On entry, the leading N-by-N part of this array must +C contain the original state dynamics matrix A. +C On exit, the leading NCONT-by-NCONT part contains the +C upper block Hessenberg state dynamics matrix Acont in Ac, +C given by Z' * A * Z, of a controllable realization for +C the original system. The elements below the first block- +C subdiagonal are set to zero. +C +C LDA INTEGER +C The leading dimension of array A. LDA >= MAX(1,N). +C +C B (input/output) DOUBLE PRECISION array, dimension (LDB,M) +C On entry, the leading N-by-M part of this array must +C contain the input matrix B. +C On exit, the leading NCONT-by-M part of this array +C contains the transformed input matrix Bcont in Bc, given +C by Z' * B, with all elements but the first block set to +C zero. +C +C LDB INTEGER +C The leading dimension of array B. LDB >= MAX(1,N). +C +C NCONT (output) INTEGER +C The order of the controllable state-space representation. +C +C INDCON (output) INTEGER +C The controllability index of the controllable part of the +C system representation. +C +C NBLK (output) INTEGER array, dimension (N) +C The leading INDCON elements of this array contain the +C the orders of the diagonal blocks of Acont. +C +C Z (output) DOUBLE PRECISION array, dimension (LDZ,N) +C If JOBZ = 'I', then the leading N-by-N part of this +C array contains the matrix of accumulated orthogonal +C similarity transformations which reduces the given system +C to orthogonal canonical form. +C If JOBZ = 'F', the elements below the diagonal, with the +C array TAU, represent the orthogonal transformation matrix +C as a product of elementary reflectors. The transformation +C matrix can then be obtained by calling the LAPACK Library +C routine DORGQR. +C If JOBZ = 'N', the array Z is not referenced and can be +C supplied as a dummy array (i.e. set parameter LDZ = 1 and +C declare this array to be Z(1,1) in the calling program). +C +C LDZ INTEGER +C The leading dimension of array Z. If JOBZ = 'I' or +C JOBZ = 'F', LDZ >= MAX(1,N); if JOBZ = 'N', LDZ >= 1. +C +C TAU (output) DOUBLE PRECISION array, dimension (N) +C The elements of TAU contain the scalar factors of the +C elementary reflectors used in the reduction of B and A. +C +C Tolerances +C +C TOL DOUBLE PRECISION +C The tolerance to be used in rank determination when +C transforming (A, B). If the user sets TOL > 0, then +C the given value of TOL is used as a lower bound for the +C reciprocal condition number (see the description of the +C argument RCOND in the SLICOT routine MB03OD); a +C (sub)matrix whose estimated condition number is less than +C 1/TOL is considered to be of full rank. If the user sets +C TOL <= 0, then an implicitly computed, default tolerance, +C defined by TOLDEF = N*N*EPS, is used instead, where EPS +C is the machine precision (see LAPACK Library routine +C DLAMCH). +C +C Workspace +C +C IWORK INTEGER array, dimension (M) +C +C DWORK DOUBLE PRECISION array, dimension (LDWORK) +C On exit, if INFO = 0, DWORK(1) returns the optimal value +C of LDWORK. +C +C LDWORK INTEGER +C The length of the array DWORK. +C LDWORK >= MAX(1, N, 3*M). +C For optimum performance LDWORK should be larger. +C +C Error Indicator +C +C INFO INTEGER +C = 0: successful exit; +C < 0: if INFO = -i, the i-th argument had an illegal +C value. +C +C METHOD +C +C Matrix B is first QR-decomposed and the appropriate orthogonal +C similarity transformation applied to the matrix A. Leaving the +C first rank(B) states unchanged, the remaining lower left block +C of A is then QR-decomposed and the new orthogonal matrix, Q1, +C is also applied to the right of A to complete the similarity +C transformation. By continuing in this manner, a completely +C controllable state-space pair (Acont, Bcont) is found for the +C given (A, B), where Acont is upper block Hessenberg with each +C subdiagonal block of full row rank, and Bcont is zero apart from +C its (independent) first rank(B) rows. +C NOTE that the system controllability indices are easily +C calculated from the dimensions of the blocks of Acont. +C +C REFERENCES +C +C [1] Konstantinov, M.M., Petkov, P.Hr. and Christov, N.D. +C Orthogonal Invariants and Canonical Forms for Linear +C Controllable Systems. +C Proc. 8th IFAC World Congress, Kyoto, 1, pp. 49-54, 1981. +C +C [2] Paige, C.C. +C Properties of numerical algorithms related to computing +C controllablity. +C IEEE Trans. Auto. Contr., AC-26, pp. 130-138, 1981. +C +C [3] Petkov, P.Hr., Konstantinov, M.M., Gu, D.W. and +C Postlethwaite, I. +C Optimal Pole Assignment Design of Linear Multi-Input Systems. +C Leicester University, Report 99-11, May 1996. +C +C NUMERICAL ASPECTS +C 3 +C The algorithm requires 0(N ) operations and is backward stable. +C +C FURTHER COMMENTS +C +C If the system matrices A and B are badly scaled, it would be +C useful to scale them with SLICOT routine TB01ID, before calling +C the routine. +C +C CONTRIBUTOR +C +C Release 3.0: V. Sima, Katholieke Univ. Leuven, Belgium, Nov. 1996. +C Supersedes Release 2.0 routine AB01BD by P.Hr. Petkov. +C +C REVISIONS +C +C January 14, 1997, June 4, 1997, February 13, 1998, +C September 22, 2003, February 29, 2004. +C +C KEYWORDS +C +C Controllability, minimal realization, orthogonal canonical form, +C orthogonal transformation. +C +C ****************************************************************** +C +C .. Parameters .. + DOUBLE PRECISION ZERO, ONE + PARAMETER ( ZERO = 0.0D0, ONE = 1.0D0 ) +C .. Scalar Arguments .. + CHARACTER JOBZ + INTEGER INDCON, INFO, LDA, LDB, LDWORK, LDZ, M, N, NCONT + DOUBLE PRECISION TOL +C .. Array Arguments .. + DOUBLE PRECISION A(LDA,*), B(LDB,*), DWORK(*), TAU(*), Z(LDZ,*) + INTEGER IWORK(*), NBLK(*) +C .. Local Scalars .. + LOGICAL LJOBF, LJOBI, LJOBZ + INTEGER IQR, ITAU, J, MCRT, NBL, NCRT, NI, NJ, RANK, + $ WRKOPT + DOUBLE PRECISION ANORM, BNORM, FNRM, TOLDEF +C .. Local Arrays .. + DOUBLE PRECISION SVAL(3) +C .. External Functions .. + LOGICAL LSAME + DOUBLE PRECISION DLAMCH, DLANGE, DLAPY2 + EXTERNAL DLAMCH, DLANGE, DLAPY2, LSAME +C .. External Subroutines .. + EXTERNAL DCOPY, DLACPY, DLAPMT, DLASET, DORGQR, DORMQR, + $ MB01PD, MB03OY, XERBLA +C .. Intrinsic Functions .. + INTRINSIC DBLE, INT, MAX, MIN +C .. +C .. Executable Statements .. +C + INFO = 0 + LJOBF = LSAME( JOBZ, 'F' ) + LJOBI = LSAME( JOBZ, 'I' ) + LJOBZ = LJOBF.OR.LJOBI +C +C Test the input scalar arguments. +C + IF( .NOT.LJOBZ .AND. .NOT.LSAME( JOBZ, 'N' ) ) THEN + INFO = -1 + ELSE IF( N.LT.0 ) THEN + INFO = -2 + ELSE IF( M.LT.0 ) THEN + INFO = -3 + ELSE IF( LDA.LT.MAX( 1, N ) ) THEN + INFO = -5 + ELSE IF( LDB.LT.MAX( 1, N ) ) THEN + INFO = -7 + ELSE IF( LDZ.LT.1 .OR. ( LJOBZ .AND. LDZ.LT.N ) ) THEN + INFO = -12 + ELSE IF( LDWORK.LT.MAX( 1, N, 3*M ) ) THEN + INFO = -17 + END IF +C + IF ( INFO.NE.0 ) THEN +C +C Error return. +C + CALL XERBLA( 'AB01ND', -INFO ) + RETURN + END IF +C + NCONT = 0 + INDCON = 0 +C +C Quick return if possible. +C + IF ( MIN( N, M ).EQ.0 ) THEN + IF( N.GT.0 ) THEN + IF ( LJOBI ) THEN + CALL DLASET( 'Full', N, N, ZERO, ONE, Z, LDZ ) + ELSE IF ( LJOBF ) THEN + CALL DLASET( 'Full', N, N, ZERO, ZERO, Z, LDZ ) + CALL DLASET( 'Full', N, 1, ZERO, ZERO, TAU, N ) + END IF + END IF + DWORK(1) = ONE + RETURN + END IF +C +C Calculate the absolute norms of A and B (used for scaling). +C + ANORM = DLANGE( 'M', N, N, A, LDA, DWORK ) + BNORM = DLANGE( 'M', N, M, B, LDB, DWORK ) +C +C Return if matrix B is zero. +C + IF( BNORM.EQ.ZERO ) THEN + IF ( LJOBI ) THEN + CALL DLASET( 'Full', N, N, ZERO, ONE, Z, LDZ ) + ELSE IF ( LJOBF ) THEN + CALL DLASET( 'Full', N, N, ZERO, ZERO, Z, LDZ ) + CALL DLASET( 'Full', N, 1, ZERO, ZERO, TAU, N ) + END IF + DWORK(1) = ONE + RETURN + END IF +C +C Scale (if needed) the matrices A and B. +C + CALL MB01PD( 'Scale', 'G', N, N, 0, 0, ANORM, 0, NBLK, A, LDA, + $ INFO ) + CALL MB01PD( 'Scale', 'G', N, M, 0, 0, BNORM, 0, NBLK, B, LDB, + $ INFO ) +C +C Compute the Frobenius norm of [ B A ] (used for rank estimation). +C + FNRM = DLAPY2( DLANGE( 'F', N, M, B, LDB, DWORK ), + $ DLANGE( 'F', N, N, A, LDA, DWORK ) ) +C + TOLDEF = TOL + IF ( TOLDEF.LE.ZERO ) THEN +C +C Use the default tolerance in controllability determination. +C + TOLDEF = DBLE( N*N )*DLAMCH( 'EPSILON' ) + END IF +C + WRKOPT = 1 + NI = 0 + ITAU = 1 + NCRT = N + MCRT = M + IQR = 1 +C +C (Note: Comments in the code beginning "Workspace:" describe the +C minimal amount of real workspace needed at that point in the +C code, as well as the preferred amount for good performance. +C NB refers to the optimal block size for the immediately +C following subroutine, as returned by ILAENV.) +C + 10 CONTINUE +C +C Rank-revealing QR decomposition with column pivoting. +C The calculation is performed in NCRT rows of B starting from +C the row IQR (initialized to 1 and then set to rank(B)+1). +C Workspace: 3*MCRT. +C + CALL MB03OY( NCRT, MCRT, B(IQR,1), LDB, TOLDEF, FNRM, RANK, + $ SVAL, IWORK, TAU(ITAU), DWORK, INFO ) +C + IF ( RANK.NE.0 ) THEN + NJ = NI + NI = NCONT + NCONT = NCONT + RANK + INDCON = INDCON + 1 + NBLK(INDCON) = RANK +C +C Premultiply and postmultiply the appropriate block row +C and block column of A by Q' and Q, respectively. +C Workspace: need NCRT; +C prefer NCRT*NB. +C + CALL DORMQR( 'Left', 'Transpose', NCRT, NCRT, RANK, + $ B(IQR,1), LDB, TAU(ITAU), A(NI+1,NI+1), LDA, + $ DWORK, LDWORK, INFO ) + WRKOPT = MAX( WRKOPT, INT( DWORK(1) ) ) +C +C Workspace: need N; +C prefer N*NB. +C + CALL DORMQR( 'Right', 'No transpose', N, NCRT, RANK, + $ B(IQR,1), LDB, TAU(ITAU), A(1,NI+1), LDA, + $ DWORK, LDWORK, INFO ) + WRKOPT = MAX( WRKOPT, INT( DWORK(1) ) ) +C +C If required, save transformations. +C + IF ( LJOBZ.AND.NCRT.GT.1 ) THEN + CALL DLACPY( 'L', NCRT-1, MIN( RANK, NCRT-1 ), + $ B(IQR+1,1), LDB, Z(NI+2,ITAU), LDZ ) + END IF +C +C Zero the subdiagonal elements of the current matrix. +C + IF ( RANK.GT.1 ) + $ CALL DLASET( 'L', RANK-1, RANK-1, ZERO, ZERO, B(IQR+1,1), + $ LDB ) +C +C Backward permutation of the columns of B or A. +C + IF ( INDCON.EQ.1 ) THEN + CALL DLAPMT( .FALSE., RANK, M, B(IQR,1), LDB, IWORK ) + IQR = RANK + 1 + ELSE + DO 20 J = 1, MCRT + CALL DCOPY( RANK, B(IQR,J), 1, A(NI+1,NJ+IWORK(J)), + $ 1 ) + 20 CONTINUE + END IF +C + ITAU = ITAU + RANK + IF ( RANK.NE.NCRT ) THEN + MCRT = RANK + NCRT = NCRT - RANK + CALL DLACPY( 'G', NCRT, MCRT, A(NCONT+1,NI+1), LDA, + $ B(IQR,1), LDB ) + CALL DLASET( 'G', NCRT, MCRT, ZERO, ZERO, + $ A(NCONT+1,NI+1), LDA ) + GO TO 10 + END IF + END IF +C +C If required, accumulate transformations. +C Workspace: need N; prefer N*NB. +C + IF ( LJOBI ) THEN + CALL DORGQR( N, N, MAX( 1, ITAU-1 ), Z, LDZ, TAU, DWORK, + $ LDWORK, INFO ) + WRKOPT = MAX( WRKOPT, INT( DWORK(1) ) ) + END IF +C +C Annihilate the trailing blocks of B. +C + IF ( N.GE.IQR ) + $ CALL DLASET( 'G', N-IQR+1, M, ZERO, ZERO, B(IQR,1), LDB ) +C +C Annihilate the trailing elements of TAU, if JOBZ = 'F'. +C + IF ( LJOBF ) THEN + DO 30 J = ITAU, N + TAU(J) = ZERO + 30 CONTINUE + END IF +C +C Undo scaling of A and B. +C + IF ( INDCON.LT.N ) THEN + NBL = INDCON + 1 + NBLK(NBL) = N - NCONT + ELSE + NBL = 0 + END IF + CALL MB01PD( 'Undo', 'H', N, N, 0, 0, ANORM, NBL, NBLK, A, + $ LDA, INFO ) + CALL MB01PD( 'Undo', 'G', NBLK(1), M, 0, 0, BNORM, 0, NBLK, B, + $ LDB, INFO ) +C +C Set optimal workspace dimension. +C + DWORK(1) = WRKOPT + RETURN +C *** Last line of AB01ND *** + END Added: trunk/octave-forge/main/control/src/AB01OD.f =================================================================== --- trunk/octave-forge/main/control/src/AB01OD.f (rev 0) +++ trunk/octave-forge/main/control/src/AB01OD.f 2010-08-29 19:19:52 UTC (rev 7599) @@ -0,0 +1,535 @@ + SUBROUTINE AB01OD( STAGES, JOBU, JOBV, N, M, A, LDA, B, LDB, U, + $ LDU, V, LDV, NCONT, INDCON, KSTAIR, TOL, IWORK, + $ DWORK, LDWORK, INFO ) +C +C SLICOT RELEASE 5.0. +C +C Copyright (c) 2002-2009 NICONET e.V. +C +C This program is free software: you can redistribute it and/or +C modify it under the terms of the GNU General Public License as +C published by the Free Software Foundation, either version 2 of +C the License, or (at your option) any later version. +C +C This program is distributed in the hope that it will be useful, +C but WITHOUT ANY WARRANTY; without even the implied warranty of +C MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +C GNU General Public License for more details. +C +C You should have received a copy of the GNU General Public License +C along with this program. If not, see +C <http://www.gnu.org/licenses/>. +C +C PURPOSE +C +C To reduce the matrices A and B using (and optionally accumulating) +C state-space and input-space transformations U and V respectively, +C such that the pair of matrices +C +C Ac = U' * A * U, Bc = U' * B * V +C +C are in upper "staircase" form. Specifically, +C +C [ Acont * ] [ Bcont ] +C Ac = [ ], Bc = [ ], +C [ 0 Auncont ] [ 0 ] +C +C and +C +C [ A11 A12 . . . A1,p-1 A1p ] [ B1 ] +C [ A21 A22 . . . A2,p-1 A2p ] [ 0 ] +C [ 0 A32 . . . A3,p-1 A3p ] [ 0 ] +C Acont = [ . . . . . . . ], Bc = [ . ], +C [ . . . . . . ] [ . ] +C [ . . . . . ] [ . ] +C [ 0 0 . . . Ap,p-1 App ] [ 0 ] +C +C where the blocks B1, A21, ..., Ap,p-1 have full row ranks and +C p is the controllability index of the pair. The size of the +C block Auncont is equal to the dimension of the uncontrollable +C subspace of the pair (A, B). The first stage of the reduction, +C the "forward" stage, accomplishes the reduction to the orthogonal +C canonical form (see SLICOT library routine AB01ND). The blocks +C B1, A21, ..., Ap,p-1 are further reduced in a second, "backward" +C stage to upper triangular form using RQ factorization. Each of +C these stages is optional. +C +C ARGUMENTS +C +C Mode Parameters +C +C STAGES CHARACTER*1 +C Specifies the reduction stages to be performed as follows: +C = 'F': Perform the forward stage only; +C = 'B': Perform the backward stage only; +C = 'A': Perform both (all) stages. +C +C JOBU CHARACTER*1 +C Indicates whether the user wishes to accumulate in a +C matrix U the state-space transformations as follows: +C = 'N': Do not form U; +C = 'I': U is internally initialized to the unit matrix (if +C STAGES <> 'B'), or updated (if STAGES = 'B'), and +C the orthogonal transformation matrix U is +C returned. +C +C JOBV CHARACTER*1 +C Indicates whether the user wishes to accumulate in a +C matrix V the input-space transformations as follows: +C = 'N': Do not form V; +C = 'I': V is initialized to the unit matrix and the +C orthogonal transformation matrix V is returned. +C JOBV is not referenced if STAGES = 'F'. +C +C Input/Output Parameters +C +C N (input) INTEGER +C The actual state dimension, i.e. the order of the +C matrix A. N >= 0. +C +C M (input) INTEGER +C The actual input dimension. M >= 0. +C +C A (input/output) DOUBLE PRECISION array, dimension (LDA,N) +C On entry, the leading N-by-N part of this array must +C contain the state transition matrix A to be transformed. +C If STAGES = 'B', A should be in the orthogonal canonical +C form, as returned by SLICOT library routine AB01ND. +C On exit, the leading N-by-N part of this array contains +C the transformed state transition matrix U' * A * U. +C The leading NCONT-by-NCONT part contains the upper block +C Hessenberg state matrix Acont in Ac, given by U' * A * U, +C of a controllable realization for the original system. +C The elements below the first block-subdiagonal are set to +C zero. If STAGES <> 'F', the subdiagonal blocks of A are +C triangularized by RQ factorization, and the annihilated +C elements are explicitly zeroed. +C +C LDA INTEGER +C The leading dimension of array A. LDA >= MAX(1,N). +C +C B (input/output) DOUBLE PRECISION array, dimension (LDB,M) +C On entry, the leading N-by-M part of this array must +C contain the input matrix B to be transformed. +C If STAGES = 'B', B should be in the orthogonal canonical +C form, as returned by SLICOT library routine AB01ND. +C On exit with STAGES = 'F', the leading N-by-M part of +C this array contains the transformed input matrix U' * B, +C with all elements but the first block set to zero. +C On exit with STAGES <> 'F', the leading N-by-M part of +C this array contains the transformed input matrix +C U' * B * V, with all elements but the first block set to +C zero and the first block in upper triangular form. +C +C LDB INTEGER +C The leading dimension of array B. LDB >= MAX(1,N). +C +C U (input/output) DOUBLE PRECISION array, dimension (LDU,N) +C If STAGES <> 'B' or JOBU = 'N', then U need not be set +C on entry. +C If STAGES = 'B' and JOBU = 'I', then, on entry, the +C leading N-by-N part of this array must contain the +C transformation matrix U that reduced the pair to the +C orthogonal canonical form. +C On exit, if JOBU = 'I', the leading N-by-N part of this +C array contains the transformation matrix U that performed +C the specified reduction. +C If JOBU = 'N', the array U is not referenced and can be +C supplied as a dummy array (i.e. set parameter LDU = 1 and +C declare this array to be U(1,1) in the calling program). +C +C LDU INTEGER +C The leading dimension of array U. +C If JOBU = 'I', LDU >= MAX(1,N); if JOBU = 'N', LDU >= 1. +C +C V (output) DOUBLE PRECISION array, dimension (LDV,M) +C If JOBV = 'I', then the leading M-by-M part of this array +C contains the transformation matrix V. +C If STAGES = 'F', or JOBV = 'N', the array V is not +C referenced and can be supplied as a dummy array (i.e. set +C parameter LDV = 1 and declare this array to be V(1,1) in +C the calling program). +C +C LDV INTEGER +C The leading dimension of array V. +C If STAGES <> 'F' and JOBV = 'I', LDV >= MAX(1,M); +C if STAGES = 'F' or JOBV = 'N', LDV >= 1. +C +C NCONT (input/output) INTEGER +C The order of the controllable state-space representation. +C NCONT is input only if STAGES = 'B'. +C +C INDCON (input/output) INTEGER +C The number of stairs in the staircase form (also, the +C controllability index of the controllable part of the +C system representation). +C INDCON is input only if STAGES = 'B'. +C +C KSTAIR (input/output) INTEGER array, dimension (N) +C The leading INDCON elements of this array contain the +C dimensions of the stairs, or, also, the orders of the +C diagonal blocks of Acont. +C KSTAIR is input if STAGES = 'B', and output otherwise. +C +C Tolerances +C +C TOL DOUBLE PRECISION +C The tolerance to be used in rank determination when +C transforming (A, B). If the user sets TOL > 0, then +C the given value of TOL is used as a lower bound for the +C reciprocal condition number (see the description of the +C argument RCOND in the SLICOT routine MB03OD); a +C (sub)matrix whose estimated condition number is less than +C 1/TOL is considered to be of full rank. If the user sets +C TOL <= 0, then an implicitly computed, default tolerance, +C defined by TOLDEF = N*N*EPS, is used instead, where EPS +C is the machine precision (see LAPACK Library routine +C DLAMCH). +C TOL is not referenced if STAGES = 'B'. +C +C Workspace +C +C IWORK INTEGER array, dimension (M) +C IWORK is not referenced if STAGES = 'B'. +C +C DWORK DOUBLE PRECISION array, dimension (LDWORK) +C On exit, if INFO = 0, DWORK(1) returns the optimal value +C of LDWORK. +C +C LDWORK INTEGER +C The length of the array DWORK. +C If STAGES <> 'B', LDWORK >= MAX(1, N + MAX(N,3*M)); +C If STAGES = 'B', LDWORK >= MAX(1, M + MAX(N,M)). +C For optimum performance LDWORK should be larger. +C +C Error Indicator +C +C INFO INTEGER +C = 0: successful exit; +C < 0: if INFO = -i, the i-th argument had an illegal +C value. +C +C METHOD +C +C Staircase reduction of the pencil [B|sI - A] is used. Orthogonal +C transformations U and V are constructed such that +C +C +C |B |sI-A * . . . * * | +C | 1| 11 . . . | +C | | A sI-A . . . | +C | | 21 22 . . . | +C | | . . * * | +C [U'BV|sI - U'AU] = |0 | 0 . . | +C | | A sI-A * | +C | | p,p-1 pp | +C | | | +C |0 | 0 0 sI-A | +C | | p+1,p+1| +C +C +C where the i-th diagonal block of U'AU has dimension KSTAIR(i), +C for i = 1,...,p. The value of p is returned in INDCON. The last +C block contains the uncontrollable modes of the (A,B)-pair which +C are also the generalized eigenvalues of the above pencil. +C +C The complete reduction is performed in two stages. The first, +C forward stage accomplishes the reduction to the orthogonal +C canonical form. The second, backward stage consists in further +C reduction to triangular form by applying left and right orthogonal +C transformations. +C +C REFERENCES +C +C [1] Van Dooren, P. +C The generalized eigenvalue problem in linear system theory. +C IEEE Trans. Auto. Contr., AC-26, pp. 111-129, 1981. +C +C [2] Miminis, G. and Paige, C. +C An algorithm for pole assignment of time-invariant multi-input +C linear systems. +C Proc. 21st IEEE CDC, Orlando, Florida, 1, pp. 62-67, 1982. +C +C NUMERICAL ASPECTS +C +C The algorithm requires O((N + M) x N**2) operations and is +C backward stable (see [1]). +C +C FURTHER COMMENTS +C +C If the system matrices A and B are badly scaled, it would be +C useful to scale them with SLICOT routine TB01ID, before calling +C the routine. +C +C CONTRIBUTOR +C +C Release 3.0: V. Sima, Katholieke Univ. Leuven, Belgium, Nov. 1996. +C Supersedes Release 2.0 routine AB01CD by M. Vanbegin, and +C P. Van Dooren, Philips Research Laboratory, Brussels, Belgium. +C +C REVISIONS +C +C January 14, 1997, February 12, 1998, September 22, 2003. +C +C KEYWORDS +C +C Controllability, generalized eigenvalue problem, orthogonal +C transformation, staircase form. +C +C ****************************************************************** +C +C .. Parameters .. + DOUBLE PRECISION ZERO, ONE + PARAMETER ( ZERO = 0.0D0, ONE = 1.0D0 ) +C .. Scalar Arguments .. + CHARACTER JOBU, JOBV, STAGES + INTEGER INDCON, INFO, LDA, LDB, LDU, LDV, LDWORK, M, N, + $ NCONT + DOUBLE PRECISION TOL +C .. Array Arguments .. + INTEGER IWORK(*), KSTAIR(*) + DOUBLE PRECISION A(LDA,*), B(LDB,*), DWORK(*), U(LDU,*), V(LDV,*) +C .. Local Scalars .. + LOGICAL LJOBUI, LJOBVI, LSTAGB, LSTGAB + INTEGER I, I0, IBSTEP, ITAU, J0, JINI, JWORK, MCRT, MM, + $ NCRT, WRKOPT +C .. External Functions .. + LOGICAL LSAME + EXTERNAL LSAME +C .. External Subroutines .. + EXTERNAL AB01ND, DGERQF, DLACPY, DLASET, DORGRQ, DORMRQ, + $ DSWAP, XERBLA +C .. Intrinsic Functions .. + INTRINSIC INT, MAX, MIN +C .. Executable Statements .. +C + INFO = 0 + LJOBUI = LSAME( JOBU, 'I' ) +C + LSTAGB = LSAME( STAGES, 'B' ) + LSTGAB = LSAME( STAGES, 'A' ).OR.LSTAGB +C + IF ( LSTGAB ) THEN + LJOBVI = LSAME( JOBV, 'I' ) + END IF +C +C Test the input scalar arguments. +C + IF( .NOT.LSTGAB .AND. .NOT.LSAME( STAGES, 'F' ) ) THEN + INFO = -1 + ELSE IF( .NOT.LJOBUI .AND. .NOT.LSAME( JOBU, 'N' ) ) THEN + INFO = -2 + ELSE IF( N.LT.0 ) THEN + INFO = -4 + ELSE IF( M.LT.0 ) THEN + INFO = -5 + ELSE IF( LDA.LT.MAX( 1, N ) ) THEN + INFO = -7 + ELSE IF( LDB.LT.MAX( 1, N ) ) THEN + INFO = -9 + ELSE IF( LDU.LT.1 .OR. ( LJOBUI .AND. LDU.LT.N ) ) THEN + INFO = -11 + ELSE IF( .NOT.LSTAGB .AND. LDWORK.LT.MAX( 1, N + MAX( N, 3*M ) ) + $ .OR. LSTAGB .AND. LDWORK.LT.MAX( 1, M + MAX( N, M ) ) ) + $ THEN + INFO = -20 + ELSE IF( LSTAGB .AND. NCONT.GT.N ) THEN + INFO = -14 + ELSE IF( LSTAGB .AND. INDCON.GT.N ) THEN + INFO = -15 + ELSE IF( LSTGAB ) THEN + IF( .NOT.LJOBVI .AND. .NOT.LSAME( JOBV, 'N' ) ) THEN + INFO = -3 + ELSE IF( LDV.LT.1 .OR. ( LJOBVI .AND. LDV.LT.M ) ) THEN + INFO = -13 + END IF + END IF +C + IF ( INFO.NE.0 ) THEN +C +C Error return. +C + CALL XERBLA( 'AB01OD', -INFO ) + RETURN + END IF +C +C Quick return if possible. +C + IF ( MIN( N, M ).EQ.0 ) THEN + NCONT = 0 + INDCON = 0 + IF( N.GT.0 .AND. LJOBUI ) + $ CALL DLASET( 'F', N, N, ZERO, ONE, U, LDU ) + IF( LSTGAB ) THEN + IF( M.GT.0 .AND. LJOBVI ) + $ CALL DLASET( 'F', M, M, ZERO, ONE, V, LDV ) + END IF + DWORK(1) = ONE + RETURN + END IF +C +C (Note: Comments in the code beginning "Workspace:" describe the +C minimal amount of real workspace needed at that point in the +C code, as well as the preferred amount for good performance. +C NB refers to the optimal block size for the immediately +C following subroutine, as returned by ILAENV.) +C + ITAU = 1 + WRKOPT = 1 +C + IF ( .NOT.LSTAGB ) THEN +C +C Perform the forward stage computations of the staircase +C algorithm on B and A: reduce the (A, B) pair to orthogonal +C canonical form. +C +C Workspace: N + MAX(N,3*M). +C + JWORK = N + 1 + CALL AB01ND( JOBU, N, M, A, LDA, B, LDB, NCONT, INDCON, + $ KSTAIR, U, LDU, DWORK(ITAU), TOL, IWORK, + $ DWORK(JWORK), LDWORK-JWORK+1, INFO ) +C + WRKOPT = INT( DWORK(JWORK) ) + JWORK - 1 + END IF +C +C Exit if no further reduction to triangularize B1 and subdiagonal +C blocks of A is required, or if the order of the controllable part +C is 0. +C + IF ( .NOT.LSTGAB ) THEN + DWORK(1) = WRKOPT + RETURN + ELSE IF ( NCONT.EQ.0 .OR. INDCON.EQ.0 ) THEN + IF( LJOBVI ) + $ CALL DLASET( 'F', M, M, ZERO, ONE, V, LDV ) + DWORK(1) = WRKOPT + RETURN + END IF +C +C Now perform the backward steps except the last one. +C + MCRT = KSTAIR(INDCON) + I0 = NCONT - MCRT + 1 + JWORK = M + 1 +C + DO 10 IBSTEP = INDCON, 2, -1 + NCRT = KSTAIR(IBSTEP-1) + J0 = I0 - NCRT + MM = MIN( NCRT, MCRT ) +C +C Compute the RQ factorization of the current subdiagonal block +C of A, Ai,i-1 = R*Q (where i is IBSTEP), of dimension +C MCRT-by-NCRT, starting in position (I0,J0). +C The matrix Q' should postmultiply U, if required. +C Workspace: need M + MCRT; +C prefer M + MCRT*NB. +C + CALL DGERQF( MCRT, NCRT, A(I0,J0), LDA, DWORK(ITAU), + $ DWORK(JWORK), LDWORK-JWORK+1, INFO ) + WRKOPT = MAX( WRKOPT, INT( DWORK(JWORK) )+JWORK-1 ) +C +C Set JINI to the first column number in A where the current +C transformation Q is to be applied, taking the block Hessenberg +C form into account. +C + IF ( IBSTEP.GT.2 ) THEN + JINI = J0 - KSTAIR(IBSTEP-2) + ELSE + JINI = 1 +C +C Premultiply the first block row (B1) of B by Q. +C Workspace: need 2*M; +C prefer M + M*NB. +C + CALL DORMRQ( 'Left', 'No transpose', NCRT, M, MM, A(I0,J0), + $ LDA, DWORK(ITAU), B, LDB, DWORK(JWORK), + $ LDWORK-JWORK+1, INFO ) + WRKOPT = MAX( WRKOPT, INT( DWORK(JWORK) )+JWORK-1 ) + END IF +C +C Premultiply the appropriate block row of A by Q. +C Workspace: need M + N; +C prefer M + N*NB. +C + CALL DORMRQ( 'Left', 'No transpose', NCRT, N-JINI+1, MM, + $ A(I0,J0), LDA, DWORK(ITAU), A(J0,JINI), LDA, + $ DWORK(JWORK), LDWORK-JWORK+1, INFO ) + WRKOPT = MAX( WRKOPT, INT( DWORK(JWORK) )+JWORK-1 ) +C +C Postmultiply the appropriate block column of A by Q'. +C Workspace: need M + I0-1; +C prefer M + (I0-1)*NB. +C + CALL DORMRQ( 'Right', 'Transpose', I0-1, NCRT, MM, A(I0,J0), + $ LDA, DWORK(ITAU), A(1,J0), LDA, DWORK(JWORK), + $ LDWORK-JWORK+1, INFO ) + WRKOPT = MAX( WRKOPT, INT( DWORK(JWORK) )+JWORK-1 ) +C + IF ( LJOBUI ) THEN +C +C Update U, postmultiplying it by Q'. +C Workspace: need M + N; +C prefer M + N*NB. +C + CALL DORMRQ( 'Right', 'Transpose', N, NCRT, MM, A(I0,J0), + $ LDA, DWORK(ITAU), U(1,J0), LDU, DWORK(JWORK), + $ LDWORK-JWORK+1, INFO ) + WRKOPT = MAX( WRKOPT, INT( DWORK(JWORK) )+JWORK-1 ) + END IF +C +C Zero the subdiagonal elements of the current subdiagonal block +C of A. +C + CALL DLASET( 'F', MCRT, NCRT-MCRT, ZERO, ZERO, A(I0,J0), LDA ) + IF ( I0.LT.N ) + $ CALL DLASET( 'L', MCRT-1, MCRT-1, ZERO, ZERO, + $ A(I0+1,I0-MCRT), LDA ) +C + MCRT = NCRT + I0 = J0 +C + 10 CONTINUE +C +C Now perform the last backward step on B, V = Qb'. +C +C Compute the RQ factorization of the first block of B, B1 = R*Qb. +C Workspace: need M + MCRT; +C prefer M + MCRT*NB. +C + CALL DGERQF( MCRT, M, B, LDB, DWORK(ITAU), DWORK(JWORK), + $ LDWORK-JWORK+1, INFO ) + WRKOPT = MAX( WRKOPT, INT( DWORK(JWORK) )+JWORK-1 ) +C + IF ( LJOBVI ) THEN +C +C Accumulate the input-space transformations V. +C Workspace: need 2*M; prefer M + M*NB. +C + CALL DLACPY( 'F', MCRT, M-MCRT, B, LDB, V(M-MCRT+1,1), LDV ) + IF ( MCRT.GT.1 ) + $ CALL DLACPY( 'L', MCRT-1, MCRT-1, B(2,M-MCRT+1), LDB, + $ V(M-MCRT+2,M-MCRT+1), LDV ) + CALL DORGRQ( M, M, MCRT, V, LDV, DWORK(ITAU), DWORK(JWORK), + $ LDWORK-JWORK+1, INFO ) +C + DO 20 I = 2, M + CALL DSWAP( I-1, V(I,1), LDV, V(1,I), 1 ) + 20 CONTINUE +C + WRKOPT = MAX( WRKOPT, INT( DWORK(JWORK) )+JWORK-1 ) + END IF +C +C Zero the subdiagonal elements of the submatrix B1. +C + CALL DLASET( 'F', MCRT, M-MCRT, ZERO, ZERO, B, LDB ) + IF ( MCRT.GT.1 ) + $ CALL DLASET( 'L', MCRT-1, MCRT-1, ZERO, ZERO, B(2,M-MCRT+1), + $ LDB ) +C +C Set optimal workspace dimension. +C + DWORK(1) = WRKOPT + RETURN +C *** Last line of AB01OD *** + END Added: trunk/octave-forge/main/control/src/MB01PD.f =================================================================== --- trunk/octave-forge/main/control/src/MB01PD.f (rev 0) +++ trunk/octave-forge/main/control/src/MB01PD.f 2010-08-29 19:19:52 UTC (rev 7599) @@ -0,0 +1,271 @@ + SUBROUTINE MB01PD( SCUN, TYPE, M, N, KL, KU, ANRM, NBL, NROWS, A, + $ LDA, INFO ) +C +C SLICOT RELEASE 5.0. +C +C Copyright (c) 2002-2009 NICONET e.V. +C +C This program is free software: you can redistribute it and/or +C modify it under the terms of the GNU General Public License as +C published by the Free Software Foundation, either version 2 of +C the License, or (at your option) any later version. +C +C This program is distributed in the hope that it will be useful, +C but WITHOUT ANY WARRANTY; without even the implied warranty of +C MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +C GNU General Public License for more details. +C +C You should have received a copy of the GNU General Public License +C along with this program. If not, see +C <http://www.gnu.org/licenses/>. +C +C PURPOSE +C +C To scale a matrix or undo scaling. Scaling is performed, if +C necessary, so that the matrix norm will be in a safe range of +C representable numbers. +C +C ARGUMENTS +C +C Mode Parameters +C +C SCUN CHARACTER*1 +C SCUN indicates the operation to be performed. +C = 'S': scale the matrix. +C = 'U': undo scaling of the matrix. +C +C TYPE CHARACTER*1 +C TYPE indicates the storage type of the input matrix. +C = 'G': A is a full matrix. +C = 'L': A is a (block) lower triangular matrix. +C = 'U': A is an (block) upper triangular matrix. +C = 'H': A is an (block) upper Hessenberg matrix. +C = 'B': A is a symmetric band matrix with lower bandwidth +C KL and upper bandwidth KU and with the only the +C lower half stored. +C = 'Q': A is a symmetric band matrix with lower bandwidth +C KL and upper bandwidth KU and with the only the +C upper half stored. +C = 'Z': A is a band matrix with lower bandwidth KL and +C upper bandwidth KU. +C +C Input/Output Parameters +C +C M (input) INTEGER +C The number of rows of the matrix A. M >= 0. +C +C N (input) INTEGER +C The number of columns of the matrix A. N >= 0. +C +C KL (input) INTEGER +C The lower bandwidth of A. Referenced only if TYPE = 'B', +C 'Q' or 'Z'. +C +C KU (input) INTEGER +C The upper bandwidth of A. Referenced only if TYPE = 'B', +C 'Q' or 'Z'. +C +C ANRM (input) DOUBLE PRECISION +C The norm of the initial matrix A. ANRM >= 0. +C When ANRM = 0 then an immediate return is effected. +C ANRM should be preserved between the call of the routine +C with SCUN = 'S' and the corresponding one with SCUN = 'U'. +C +C NBL (input) INTEGER +C The number of diagonal blocks of the matrix A, if it has a +C block structure. To specify that matrix A has no block +C structure, set NBL = 0. NBL >= 0. +C +C NROWS (input) INTEGER array, dimension max(1,NBL) +C NROWS(i) contains the number of rows and columns of the +C i-th diagonal block of matrix A. The sum of the values +C NROWS(i), for i = 1: NBL, should be equal to min(M,N). +C The elements of the array NROWS are not referenced if +C NBL = 0. +C +C A (input/output) DOUBLE PRECISION array, dimension (LDA,N) +C On entry, the leading M by N part of this array must +C contain the matrix to be scaled/unscaled. +C On exit, the leading M by N part of A will contain +C the modified matrix. +C The storage mode of A is specified by TYPE. +C +C LDA (input) INTEGER +C The leading dimension of the array A. LDA >= max(1,M). +C +C Error Indicator +C +C INFO (output) INTEGER +C = 0: successful exit +C < 0: if INFO = -i, the i-th argument had an illegal +C value. +C +C METHOD +C +C Denote by ANRM the norm of the matrix, and by SMLNUM and BIGNUM, +C two positive numbers near the smallest and largest safely +C representable numbers, respectively. The matrix is scaled, if +C needed, such that the norm of the result is in the range +C [SMLNUM, BIGNUM]. The scaling factor is represented as a ratio +C of two numbers, one of them being ANRM, and the other one either +C SMLNUM or BIGNUM, depending on ANRM being less than SMLNUM or +C larger than BIGNUM, respectively. For undoing the scaling, the +C norm is again compared with SMLNUM or BIGNUM, and the reciprocal +C of the previous scaling factor is used. +C +C CONTRIBUTOR +C +C V. Sima, Katholieke Univ. Leuven, Belgium, Nov. 1996. +C +C REVISIONS +C +C Oct. 2001, V. Sima, Research Institute for Informatics, Bucharest. +C +C ****************************************************************** +C +C .. Parameters .. + DOUBLE PRECISION ZERO, ONE + PARAMETER ( ZERO = 0.0D0, ONE = 1.0D0 ) +C .. Scalar Arguments .. + CHARACTER SCUN, TYPE + INTEGER INFO, KL, KU, LDA, M, MN, N, NBL + DOUBLE PRECISION ANRM +C .. Array Arguments .. + INTEGER NROWS ( * ) + DOUBLE PRECISION A( LDA, * ) +C .. Local Scalars .. + LOGICAL FIRST, LSCALE + INTEGER I, ISUM, ITYPE + DOUBLE PRECISION BIGNUM, SMLNUM +C .. External Functions .. + LOGICAL LSAME + DOUBLE PRECISION DLAMCH + EXTERNAL DLAMCH, LSAME +C .. +C .. External Subroutines .. + EXTERNAL DLABAD, MB01QD, XERBLA +C .. Intrinsic Functions .. + INTRINSIC MAX, MIN +C .. Save statement .. + SAVE BIGNUM, FIRST, SMLNUM +C .. Data statements .. + DATA FIRST/.TRUE./ +C .. +C .. Executable Statements .. +C +C Test the input scalar arguments. +C + INFO = 0 + LSCALE = LSAME( SCUN, 'S' ) + IF( LSAME( TYPE, 'G' ) ) THEN + ITYPE = 0 + ELSE IF( LSAME( TYPE, 'L' ) ) THEN + ITYPE = 1 + ELSE IF( LSAME( TYPE, 'U' ) ) THEN + ITYPE = 2 + ELSE IF( LSAME( TYPE, 'H' ) ) THEN + ITYPE = 3 + ELSE IF( LSAME( TYPE, 'B' ) ) THEN + ITYPE = 4 + ELSE IF( LSAME( TYPE, 'Q' ) ) THEN + ITYPE = 5 + ELSE IF( LSAME( TYPE, 'Z' ) ) THEN + ITYPE = 6 + ELSE + ITYPE = -1 + END IF +C + MN = MIN( M, N ) +C + ISUM = 0 + IF( NBL.GT.0 ) THEN + DO 10 I = 1, NBL + ISUM = ISUM + NROWS(I) + 10 CONTINUE + END IF +C + IF( .NOT.LSCALE .AND. .NOT.LSAME( SCUN, 'U' ) ) THEN + INFO = -1 + ELSE IF( ITYPE.EQ.-1 ) THEN + INFO = -2 + ELSE IF( M.LT.0 ) THEN + INFO = -3 + ELSE IF( N.LT.0 .OR. + $ ( ( ITYPE.EQ.4 .OR. ITYPE.EQ.5 ) .AND. N.NE.M ) ) THEN + INFO = -4 + ELSE IF( ANRM.LT.ZERO ) THEN + INFO = -7 + ELSE IF( NBL.LT.0 ) THEN + INFO = -8 + ELSE IF( NBL.GT.0 .AND. ISUM.NE.MN ) THEN + INFO = -9 + ELSE IF( ITYPE.LE.3 .AND. LDA.LT.MAX( 1, M ) ) THEN + INFO = -11 + ELSE IF( ITYPE.GE.4 ) THEN + IF( KL.LT.0 .OR. KL.GT.MAX( M-1, 0 ) ) THEN + INFO = -5 + ELSE IF( KU.LT.0 .OR. KU.GT.MAX( N-1, 0 ) .OR. + $ ( ( ITYPE.EQ.4 .OR. ITYPE.EQ.5 ) .AND. KL.NE.KU ) ) + $ THEN + INFO = -6 + ELSE IF( ( ITYPE.EQ.4 .AND. LDA.LT.KL+1 ) .OR. + $ ( ITYPE.EQ.5 .AND. LDA.LT.KU+1 ) .OR. + $ ( ITYPE.EQ.6 .AND. LDA.LT.2*KL+KU+1 ) ) THEN + INFO = -11 + END IF + END IF +C + IF( INFO.NE.0 ) THEN + CALL XERBLA( 'MB01PD', -INFO ) + RETURN + END IF +C +C Quick return if possible. +C + IF( MN.EQ.0 .OR. ANRM.EQ.ZERO ) + $ RETURN +C + IF ( FIRST ) THEN +C +C Get machine parameters. +C + SMLNUM = DLAMCH( 'S' ) / DLAMCH( 'P' ) + BIGNUM = ONE / SMLNUM + CALL DLABAD( SMLNUM, BIGNUM ) + FIRST = .FALSE. + END IF +C + IF ( LSCALE ) THEN +C +C Scale A, if its norm is outside range [SMLNUM,BIGNUM]. +C + IF( ANRM.LT.SMLNUM ) THEN +C +C Scale matrix norm up to SMLNUM. +C + CALL MB01QD( TYPE, M, N, KL, KU, ANRM, SMLNUM, NBL, NROWS, + $ A, LDA, INFO ) + ELSE IF( ANRM.GT.BIGNUM ) THEN +C +C Scale matrix norm down to BIGNUM. +C + CALL MB01QD( TYPE, M, N, KL, KU, ANRM, BIGNUM, NBL, NROWS, + $ A, LDA, INFO ) + END IF +C + ELSE +C +C Undo scaling. +C + IF( ANRM.LT.SMLNUM ) THEN + CALL MB01QD( TYPE, M, N, KL, KU, SMLNUM, ANRM, NBL, NROWS, + $ A, LDA, INFO ) + ELSE IF( ANRM.GT.BIGNUM ) THEN + CALL MB01QD( TYPE, M, N, KL, KU, BIGNUM, ANRM, NBL, NROWS, + $ A, LDA, INFO ) + END IF + END IF +C + RETURN +C *** Last line of MB01PD *** + END Added: trunk/octave-forge/main/control/src/MB01QD.f =================================================================== --- trunk/octave-forge/main/control/src/MB01QD.f (rev 0) +++ trunk/octave-forge/main/control/src/MB01QD.f 2010-08-29 19:19:52 UTC (rev 7599) @@ -0,0 +1,334 @@ + SUBROUTINE MB01QD( TYPE, M, N, KL, KU, CFROM, CTO, NBL, NROWS, A, + $ LDA, INFO ) +C +C SLICOT RELEASE 5.0. +C +C Copyright (c) 2002-2009 NICONET e.V. +C +C This program is free software: you can redistribute it and/or +C modify it under the terms of the GNU General Public License as +C published by the Free Software Foundation, either version 2 of +C the License, or (at your option) any later version. +C +C This program is distributed in the hope that it will be useful, +C but WITHOUT ANY WARRANTY; without even the implied warranty of +C MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +C GNU General Public License for more details. +C +C You should have received a copy of the GNU General Public License +C along with this program. If not, see +C <http://www.gnu.org/licenses/>. +C +C PURPOSE +C +C To multiply the M by N real matrix A by the real scalar CTO/CFROM. +C This is done without over/underflow as long as the final result +C CTO*A(I,J)/CFROM does not over/underflow. TYPE specifies that +C A may be full, (block) upper triangular, (block) lower triangular, +C (block) upper Hessenberg, or banded. +C +C ARGUMENTS +C +C Mode Parameters +C +C TYPE CHARACTER*1 +C TYPE indices the storage type of the input matrix. +C = 'G': A is a full matrix. +C = 'L': A is a (block) lower triangular matrix. +C = 'U': A is a (block) upper triangular matrix. +C = 'H': A is a (block) upper Hessenberg matrix. +C = 'B': A is a symmetric band matrix with lower bandwidth +C KL and upper bandwidth KU and with the only the +C lower half stored. +C = 'Q': A is a symmetric band matrix with lower bandwidth +C KL and upper bandwidth KU and with the only the +C upper half stored. +C = 'Z': A is a band matrix with lower bandwidth KL and +C upper bandwidth KU. +C +C Input/Output Parameters +C +C M (input) INTEGER +C The number of rows of the matrix A. M >= 0. +C +C N (input) INTEGER +C The number of columns of the matrix A. N >= 0. +C +C KL (input) INTEGER +C The lower bandwidth of A. Referenced only if TYPE = 'B', +C 'Q' or 'Z'. +C +C KU (input) INTEGER +C The upper bandwidth of A. Referenced only if TYPE = 'B', +C 'Q' or 'Z'. +C +C CFROM (input) DOUBLE PRECISION +C CTO (input) DOUBLE PRECISION +C The matrix A is multiplied by CTO/CFROM. A(I,J) is +C computed without over/underflow if the final result +C CTO*A(I,J)/CFROM can be represented without over/ +C underflow. CFROM must be nonzero. +C +C NBL (input) INTEGER +C The number of diagonal blocks of the matrix A, if it has a +C block structure. To specify that matrix A has no block +C structure, set NBL = 0. NBL >= 0. +C +C NROWS (input) INTEGER array, dimension max(1,NBL) +C NROWS(i) contains the number of rows and columns of the +C i-th diagonal block of matrix A. The sum of the values +C NROWS(i), for i = 1: NBL, should be equal to min(M,N). +C The array NROWS is not referenced if NBL = 0. +C +C A (input/output) DOUBLE PRECISION array, dimension (LDA,N) +C The matrix to be multiplied by CTO/CFROM. See TYPE for +C the storage type. +C +C LDA (input) INTEGER +C The leading dimension of the array A. LDA >= max(1,M). +C +C Error Indicator +C +C INFO INTEGER +C Not used in this implementation. +C +C METHOD +C +C Matrix A is multiplied by the real scalar CTO/CFROM, taking into +C account the specified storage mode of the matrix. +C MB01QD is a version of the LAPACK routine DLASCL, modified for +C dealing with block triangular, or block Hessenberg matrices. +C For efficiency, no tests of the input scalar parameters are +C performed. +C +C CONTRIBUTOR +C +C V. Sima, Katholieke Univ. Leuven, Belgium, Nov. 1996. +C +C ****************************************************************** +C +C .. Parameters .. + DOUBLE PRECISION ZERO, ONE + PARAMETER ( ZERO = 0.0D0, ONE = 1.0D0 ) +C .. +C .. Scalar Arguments .. + CHARACTER TYPE + INTEGER INFO, KL, KU, LDA, M, N, NBL + DOUBLE PRECISION CFROM, CTO +C .. +C .. Array Arguments .. + INTEGER NROWS ( * ) + DOUBLE PRECISION A( LDA, * ) +C .. +C .. Local Scalars .. + LOGICAL DONE, NOBLC + INTEGER I, IFIN, ITYPE, J, JFIN, JINI, K, K1, K2, K3, + $ K4 + DOUBLE PRECISION BIGNUM, CFROM1, CFROMC, CTO1, CTOC, MUL, SMLNUM +C .. +C .. External Functions .. + LOGICAL LSAME + DOUBLE PRECISION DLAMCH + EXTERNAL LSAME, DLAMCH +C .. +C .. Intrinsic Functions .. + INTRINSIC ABS, MAX, MIN +C .. +C .. Executable Statements .. +C + IF( LSAME( TYPE, 'G' ) ) THEN + ITYPE = 0 + ELSE IF( LSAME( TYPE, 'L' ) ) THEN + ITYPE = 1 + ELSE IF( LSAME( TYPE, 'U' ) ) THEN + ITYPE = 2 + ELSE IF( LSAME( TYPE, 'H' ) ) THEN + ITYPE = 3 + ELSE IF( LSAME( TYPE, 'B' ) ) THEN + ITYPE = 4 + ELSE IF( LSAME( TYPE, 'Q' ) ) THEN + ITYPE = 5 + ELSE + ITYPE = 6 + END IF +C +C Quick return if possible. +C + IF( MIN( M, N ).EQ.0 ) + $ RETURN +C +C Get machine parameters. +C + SMLNUM = DLAMCH( 'S' ) + BIGNUM = ONE / SMLNUM +C + CFROMC = CFROM + CTOC = CTO +C + 10 CONTINUE + CFROM1 = CFROMC*SMLNUM + CTO1 = CTOC / BIGNUM + IF( ABS( CFROM1 ).GT.ABS( CTOC ) .AND. CTOC.NE.ZERO ) THEN + MUL = SMLNUM + DONE = .FALSE. + CFROMC = CFROM1 + ELSE IF( ABS( CTO1 ).GT.ABS( CFROMC ) ) THEN + MUL = BIGNUM + DONE = .FALSE. + CTOC = CTO1 + ELSE + MUL = CTOC / CFROMC + DONE = .TRUE. + END IF +C + NOBLC = NBL.EQ.0 +C + IF( ITYPE.EQ.0 ) THEN +C +C Full matrix +C + DO 30 J = 1, N + DO 20 I = 1, M + A( I, J ) = A( I, J )*MUL + 20 CONTINUE + 30 CONTINUE +C + ELSE IF( ITYPE.EQ.1 ) THEN +C + IF ( NOBLC ) THEN +C +C Lower triangular matrix +C + DO 50 J = 1, N + DO 40 I = J, M + A( I, J ) = A( I, J )*MUL + 40 CONTINUE + 50 CONTINUE +C + ELSE +C +C Block lower triangular matrix +C + JFIN = 0 + DO 80 K = 1, NBL + JINI = JFIN + 1 + JFIN = JFIN + NROWS( K ) + DO 70 J = JINI, JFIN + DO 60 I = JINI, M + A( I, J ) = A( I, J )*MUL + 60 CONTINUE + 70 CONTINUE + 80 CONTINUE + END IF +C + ELSE IF( ITYPE.EQ.2 ) THEN +C + IF ( NOBLC ) THEN +C +C Upper triangular matrix +C + DO 100 J = 1, N + DO 90 I = 1, MIN( J, M ) + A( I, J ) = A( I, J )*MUL + 90 CONTINUE + 100 CONTINUE +C + ELSE +C +C Block upper triangular matrix +C + JFIN = 0 + DO 130 K = 1, NBL + JINI = JFIN + 1 + JFIN = JFIN + NROWS( K ) + IF ( K.EQ.NBL ) JFIN = N + DO 120 J = JINI, JFIN + DO 110 I = 1, MIN( JFIN, M ) + A( I, J ) = A( I, J )*MUL + 110 CONTINUE + 120 CONTINUE + 130 CONTINUE + END IF +C + ELSE IF( ITYPE.EQ.3 ) THEN +C + IF ( NOBLC ) THEN +C +C Upper Hessenberg matrix +C + DO 150 J = 1, N + DO 140 I = 1, MIN( J+1, M ) + A( I, J ) = A( I, J )*MUL + 140 CONTINUE + 150 CONTINUE +C + ELSE +C +C Block upper Hessenberg matrix +C + JFIN = 0 + DO 180 K = 1, NBL + JINI = JFIN + 1 + JFIN = JFIN + NROWS( K ) +C + IF ( K.EQ.NBL ) THEN + JFIN = N + IFIN = N + ELSE + IFIN = JFIN + NROWS( K+1 ) + END IF +C + DO 170 J = JINI, JFIN + DO 160 I = 1, MIN( IFIN, M ) + A( I, J ) = A( I, J )*MUL + 160 CONTINUE + 170 CONTINUE + 180 CONTINUE + END IF +C + ELSE IF( ITYPE.EQ.4 ) THEN +C +C Lower half of a symmetric band matrix +C + K3 = KL + 1 + K4 = N + 1 + DO 200 J = 1, N + DO 190 I = 1, MIN( K3, K4-J ) + A( I, J ) = A( I, J )*MUL + 190 CONTINUE + 200 CONTINUE +C + ELSE IF( ITYPE.EQ.5 ) THEN +C +C Upper half of a symmetric band matrix +C + K1 = KU + 2 + K3 = KU + 1 + DO 220 J = 1, N + DO 210 I = MAX( K1-J, 1 ), K3 + A( I, J ) = A( I, J )*MUL + 210 CONTINUE + 220 CONTINUE +C + ELSE IF( ITYPE.EQ.6 ) THEN +C +C Band matrix +C + K1 = KL + KU + 2 + K2 = KL + 1 + K3 = 2*KL + KU + 1 + K4 = KL + KU + 1 + M + DO 240 J = 1, N + DO 230 I = MAX( K1-J, K2 ), MIN( K3, K4-J ) + A( I, J ) = A( I, J )*MUL + 230 CONTINUE + 240 CONTINUE +C + END IF +C + IF( .NOT.DONE ) + $ GO TO 10 +C + RETURN +C *** Last line of MB01QD *** + END Modified: trunk/octave-forge/main/control/src/Makefile =================================================================== --- trunk/octave-forge/main/control/src/Makefile 2010-08-29 11:45:46 UTC (rev 7598) +++ trunk/octave-forge/main/control/src/Makefile 2010-08-29 19:19:52 UTC (rev 7599) @@ -1,6 +1,6 @@ all: slab08nd.oct slab13dd.oct slsb10hd.oct slsb10ed.oct slab13bd.oct \ slsb01bd.oct slsb10fd.oct slsb10dd.oct slsb03md.oct slsb04md.oct \ - slsb04qd.oct slsg03ad.oct slsb02od.oct slab13ad.oct + slsb04qd.oct slsg03ad.oct slsb02od.oct slab13ad.oct slab01od.oct # transmission zeros of state-space models slab08nd.oct: slab08nd.cc @@ -106,5 +106,10 @@ SB03OR.f SB03OY.f SB04PX.f MB04NY.f MB04OY.f \ SB03OV.f +# Staircase form using orthogonal transformations +slab01od.oct: slab01od.cc + mkoctfile slab01od.cc \ + AB01OD.f AB01ND.f MB03OY.f MB01PD... [truncated message content] |
From: <par...@us...> - 2010-09-07 06:25:16
|
Revision: 7672 http://octave.svn.sourceforge.net/octave/?rev=7672&view=rev Author: paramaniac Date: 2010-09-07 06:25:09 +0000 (Tue, 07 Sep 2010) Log Message: ----------- control: fix copy-paste typos in C++ comments Modified Paths: -------------- trunk/octave-forge/main/control/src/slab01od.cc trunk/octave-forge/main/control/src/slab13ad.cc trunk/octave-forge/main/control/src/slsb01bd.cc trunk/octave-forge/main/control/src/slsb02od.cc trunk/octave-forge/main/control/src/slsb04qd.cc trunk/octave-forge/main/control/src/slsb10ed.cc Modified: trunk/octave-forge/main/control/src/slab01od.cc =================================================================== --- trunk/octave-forge/main/control/src/slab01od.cc 2010-09-06 22:16:20 UTC (rev 7671) +++ trunk/octave-forge/main/control/src/slab01od.cc 2010-09-07 06:25:09 UTC (rev 7672) @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. -Hankel singular values. +Staircase controllability form. Uses SLICOT AB01OD by courtesy of NICONET e.V. <http://www.slicot.org> @@ -113,10 +113,10 @@ info)); if (f77_exception_encountered) - error ("place: slab01od: exception in SLICOT subroutine AB01OD"); + error ("slab01od: exception in SLICOT subroutine AB01OD"); if (info != 0) - error ("place: slab01od: AB01OD returned info = %d", info); + error ("slab01od: AB01OD returned info = %d", info); // return values retval(0) = a; Modified: trunk/octave-forge/main/control/src/slab13ad.cc =================================================================== --- trunk/octave-forge/main/control/src/slab13ad.cc 2010-09-06 22:16:20 UTC (rev 7671) +++ trunk/octave-forge/main/control/src/slab13ad.cc 2010-09-07 06:25:09 UTC (rev 7672) @@ -94,7 +94,7 @@ int info; - // SLICOT routine AB13DD + // SLICOT routine AB13AD F77_XFCN (ab13ad, AB13AD, (dico, equil, n, m, p, @@ -108,10 +108,10 @@ info)); if (f77_exception_encountered) - error ("place: slab13ad: exception in SLICOT subroutine AB13AD"); + error ("hsvd: slab13ad: exception in SLICOT subroutine AB13AD"); if (info != 0) - error ("place: slab13ad: AB13AD returned info = %d", info); + error ("hsvd: slab13ad: AB13AD returned info = %d", info); // return values retval(0) = hsv; Modified: trunk/octave-forge/main/control/src/slsb01bd.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb01bd.cc 2010-09-06 22:16:20 UTC (rev 7671) +++ trunk/octave-forge/main/control/src/slsb01bd.cc 2010-09-07 06:25:09 UTC (rev 7672) @@ -103,7 +103,7 @@ int info; - // SLICOT routine AB13DD + // SLICOT routine SB01BD F77_XFCN (sb01bd, SB01BD, (dico, n, m, np, Modified: trunk/octave-forge/main/control/src/slsb02od.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb02od.cc 2010-09-06 22:16:20 UTC (rev 7671) +++ trunk/octave-forge/main/control/src/slsb02od.cc 2010-09-07 06:25:09 UTC (rev 7672) @@ -165,10 +165,10 @@ info)); if (f77_exception_encountered) - error ("lti: norm: slsb02od: exception in SLICOT subroutine SB02OD"); + error ("are: slsb02od: exception in SLICOT subroutine SB02OD"); if (info != 0) - error ("lti: norm: slsb02od: SB02OD returned info = %d", info); + error ("are: slsb02od: SB02OD returned info = %d", info); // return value retval(0) = x; Modified: trunk/octave-forge/main/control/src/slsb04qd.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb04qd.cc 2010-09-06 22:16:20 UTC (rev 7671) +++ trunk/octave-forge/main/control/src/slsb04qd.cc 2010-09-07 06:25:09 UTC (rev 7672) @@ -93,10 +93,10 @@ info)); if (f77_exception_encountered) - error ("lyap: slsb04qd: exception in SLICOT subroutine SB04QD"); + error ("dlyap: slsb04qd: exception in SLICOT subroutine SB04QD"); if (info != 0) - error ("lyap: slsb04qd: SB04QD returned info = %d", info); + error ("dlyap: slsb04qd: SB04QD returned info = %d", info); // return values retval(0) = c; Modified: trunk/octave-forge/main/control/src/slsb10ed.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb10ed.cc 2010-09-06 22:16:20 UTC (rev 7671) +++ trunk/octave-forge/main/control/src/slsb10ed.cc 2010-09-07 06:25:09 UTC (rev 7672) @@ -115,7 +115,7 @@ int info; - // SLICOT routine SB10HD + // SLICOT routine SB10ED F77_XFCN (sb10ed, SB10ED, (n, m, np, ncon, nmeas, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2010-09-07 10:33:05
|
Revision: 7675 http://octave.svn.sourceforge.net/octave/?rev=7675&view=rev Author: paramaniac Date: 2010-09-07 10:32:59 +0000 (Tue, 07 Sep 2010) Log Message: ----------- control: may prevent segfaults after repeated calls Modified Paths: -------------- trunk/octave-forge/main/control/src/slab13ad.cc trunk/octave-forge/main/control/src/sltb01pd.cc Modified: trunk/octave-forge/main/control/src/slab13ad.cc =================================================================== --- trunk/octave-forge/main/control/src/slab13ad.cc 2010-09-07 09:45:52 UTC (rev 7674) +++ trunk/octave-forge/main/control/src/slab13ad.cc 2010-09-07 10:32:59 UTC (rev 7675) @@ -81,7 +81,7 @@ int ldc = max (1, c.rows ()); // arguments out - int ns; + int ns = 0; ColumnVector hsv (n); @@ -91,7 +91,7 @@ OCTAVE_LOCAL_BUFFER (double, dwork, ldwork); // error indicators - int info; + int info = 0; // SLICOT routine AB13AD Modified: trunk/octave-forge/main/control/src/sltb01pd.cc =================================================================== --- trunk/octave-forge/main/control/src/sltb01pd.cc 2010-09-07 09:45:52 UTC (rev 7674) +++ trunk/octave-forge/main/control/src/sltb01pd.cc 2010-09-07 10:32:59 UTC (rev 7675) @@ -80,7 +80,7 @@ ldc = max (1, m, p); // arguments out - int nr; + int nr = 0; // workspace int liwork = n + max (m, p); @@ -90,7 +90,7 @@ OCTAVE_LOCAL_BUFFER (double, dwork, ldwork); // error indicators - int info; + int info = 0; // SLICOT routine TB01PD This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2010-09-14 12:55:21
|
Revision: 7717 http://octave.svn.sourceforge.net/octave/?rev=7717&view=rev Author: paramaniac Date: 2010-09-14 12:55:14 +0000 (Tue, 14 Sep 2010) Log Message: ----------- control: add my makefiles for single oct-files (for development use only) Added Paths: ----------- trunk/octave-forge/main/control/src/makefile_all.m trunk/octave-forge/main/control/src/makefile_chol.m trunk/octave-forge/main/control/src/makefile_h2syn.m trunk/octave-forge/main/control/src/makefile_hankel.m trunk/octave-forge/main/control/src/makefile_hinfsyn.m trunk/octave-forge/main/control/src/makefile_lqr.m trunk/octave-forge/main/control/src/makefile_lyap.m trunk/octave-forge/main/control/src/makefile_minreal.m trunk/octave-forge/main/control/src/makefile_norm.m trunk/octave-forge/main/control/src/makefile_place.m trunk/octave-forge/main/control/src/makefile_staircase.m trunk/octave-forge/main/control/src/makefile_zero.m Added: trunk/octave-forge/main/control/src/makefile_all.m =================================================================== --- trunk/octave-forge/main/control/src/makefile_all.m (rev 0) +++ trunk/octave-forge/main/control/src/makefile_all.m 2010-09-14 12:55:14 UTC (rev 7717) @@ -0,0 +1,25 @@ +## ============================================================================== +## Developer Makefile for OCT-files +## ============================================================================== +## USAGE: * fetch control from Octave-Forge by svn +## * add control/inst and control/src to your Octave path +## * run makefile_* +## ============================================================================== + +homedir = pwd (); +srcdir = fileparts (which ("makefile_all")); +cd (srcdir); + +makefile_chol +makefile_h2syn +makefile_hankel +makefile_hinfsyn +makefile_lqr +makefile_lyap +makefile_minreal +makefile_norm +makefile_place +makefile_staircase +makefile_zero + +cd (homedir); \ No newline at end of file Added: trunk/octave-forge/main/control/src/makefile_chol.m =================================================================== --- trunk/octave-forge/main/control/src/makefile_chol.m (rev 0) +++ trunk/octave-forge/main/control/src/makefile_chol.m 2010-09-14 12:55:14 UTC (rev 7717) @@ -0,0 +1,23 @@ +## ============================================================================== +## Developer Makefile for OCT-files +## ============================================================================== +## USAGE: * fetch control from Octave-Forge by svn +## * add control/inst and control/src to your Octave path +## * run makefile_* +## ============================================================================== + +homedir = pwd (); +srcdir = fileparts (which ("makefile_chol")); +cd (srcdir); + +mkoctfile slsb03od.cc \ + SB03OD.f select.f SB03OU.f SB03OT.f MB04ND.f \ + MB04OD.f SB03OR.f SB03OY.f SB04PX.f MB04NY.f \ + MB04OY.f SB03OV.f + + +mkoctfile slsg03bd.cc \ + SG03BD.f SG03BV.f SG03BU.f SG03BW.f SG03BX.f \ + SG03BY.f MB02UU.f MB02UV.f + +cd (homedir); \ No newline at end of file Added: trunk/octave-forge/main/control/src/makefile_h2syn.m =================================================================== --- trunk/octave-forge/main/control/src/makefile_h2syn.m (rev 0) +++ trunk/octave-forge/main/control/src/makefile_h2syn.m 2010-09-14 12:55:14 UTC (rev 7717) @@ -0,0 +1,28 @@ +## ============================================================================== +## Developer Makefile for OCT-files +## ============================================================================== +## USAGE: * fetch control from Octave-Forge by svn +## * add control/inst and control/src to your Octave path +## * run makefile_* +## ============================================================================== + +homedir = pwd (); +srcdir = fileparts (which ("makefile_h2syn")); +cd (srcdir); + +mkoctfile slsb10hd.cc \ + SB10HD.f SB10UD.f SB10VD.f SB10WD.f SB02RD.f \ + MB01RU.f SB02SD.f MA02ED.f SB02RU.f SB02MR.f \ + MB01SD.f SB02MS.f SB02MV.f SB02MW.f MA02AD.f \ + SB02QD.f MB02PD.f SB03QX.f SB03QY.f MB01RX.f \ + MB01RY.f SB03SX.f SB03SY.f select.f SB03MX.f \ + SB03MY.f MB01UD.f SB03MV.f SB03MW.f SB04PX.f + +mkoctfile slsb10ed.cc \ + SB10ED.f SB10SD.f SB10TD.f SB10PD.f MB01RX.f \ + SB02SD.f SB02OD.f MB01RU.f SB02OU.f SB02OV.f \ + SB02OW.f MB01RY.f SB02OY.f SB03SX.f SB03SY.f \ + MA02ED.f select.f SB03MX.f SB02MR.f SB02MV.f \ + MB01UD.f SB03MV.f SB04PX.f + +cd (homedir); \ No newline at end of file Added: trunk/octave-forge/main/control/src/makefile_hankel.m =================================================================== --- trunk/octave-forge/main/control/src/makefile_hankel.m (rev 0) +++ trunk/octave-forge/main/control/src/makefile_hankel.m 2010-09-14 12:55:14 UTC (rev 7717) @@ -0,0 +1,20 @@ +## ============================================================================== +## Developer Makefile for OCT-files +## ============================================================================== +## USAGE: * fetch control from Octave-Forge by svn +## * add control/inst and control/src to your Octave path +## * run makefile_* +## ============================================================================== + +homedir = pwd (); +srcdir = fileparts (which ("makefile_hankel")); +cd (srcdir); + +mkoctfile slab13ad.cc \ + AB13AD.f TB01ID.f TB01KD.f AB13AX.f MA02DD.f \ + MB03UD.f TB01LD.f SB03OU.f MB03QX.f select.f \ + SB03OT.f MB03QD.f MB04ND.f MB04OD.f MB03QY.f \ + SB03OR.f SB03OY.f SB04PX.f MB04NY.f MB04OY.f \ + SB03OV.f + +cd (homedir); \ No newline at end of file Added: trunk/octave-forge/main/control/src/makefile_hinfsyn.m =================================================================== --- trunk/octave-forge/main/control/src/makefile_hinfsyn.m (rev 0) +++ trunk/octave-forge/main/control/src/makefile_hinfsyn.m 2010-09-14 12:55:14 UTC (rev 7717) @@ -0,0 +1,28 @@ +## ============================================================================== +## Developer Makefile for OCT-files +## ============================================================================== +## USAGE: * fetch control from Octave-Forge by svn +## * add control/inst and control/src to your Octave path +## * run makefile_* +## ============================================================================== + +homedir = pwd (); +srcdir = fileparts (which ("makefile_hinfsyn")); +cd (srcdir); + +mkoctfile slsb10fd.cc \ + SB10FD.f SB10PD.f SB10QD.f SB10RD.f SB02RD.f \ + MB01RU.f MB01RX.f MA02AD.f SB02SD.f MA02ED.f \ + SB02RU.f SB02MR.f MB01SD.f SB02MS.f SB02MV.f \ + SB02MW.f SB02QD.f MB02PD.f SB03QX.f SB03QY.f \ + MB01RY.f SB03SX.f SB03SY.f select.f SB03MX.f \ + SB03MY.f MB01UD.f SB03MV.f SB03MW.f SB04PX.f + +mkoctfile slsb10dd.cc \ + SB10DD.f MB01RU.f MB01RX.f SB02SD.f SB02OD.f \ + MA02AD.f SB02OU.f SB02OV.f SB02OW.f MB01RY.f \ + SB02OY.f SB03SX.f SB03SY.f MA02ED.f select.f \ + SB03MX.f SB02MR.f SB02MV.f MB01UD.f SB03MV.f \ + SB04PX.f + +cd (homedir); \ No newline at end of file Added: trunk/octave-forge/main/control/src/makefile_lqr.m =================================================================== --- trunk/octave-forge/main/control/src/makefile_lqr.m (rev 0) +++ trunk/octave-forge/main/control/src/makefile_lqr.m 2010-09-14 12:55:14 UTC (rev 7717) @@ -0,0 +1,17 @@ +## ============================================================================== +## Developer Makefile for OCT-files +## ============================================================================== +## USAGE: * fetch control from Octave-Forge by svn +## * add control/inst and control/src to your Octave path +## * run makefile_* +## ============================================================================== + +homedir = pwd (); +srcdir = fileparts (which ("makefile_lqr")); +cd (srcdir); + +mkoctfile slsb02od.cc \ + SB02OD.f SB02OU.f SB02OV.f SB02OW.f SB02OY.f \ + SB02MR.f SB02MV.f + +cd (homedir); \ No newline at end of file Added: trunk/octave-forge/main/control/src/makefile_lyap.m =================================================================== --- trunk/octave-forge/main/control/src/makefile_lyap.m (rev 0) +++ trunk/octave-forge/main/control/src/makefile_lyap.m 2010-09-14 12:55:14 UTC (rev 7717) @@ -0,0 +1,32 @@ +## ============================================================================== +## Developer Makefile for OCT-files +## ============================================================================== +## USAGE: * fetch control from Octave-Forge by svn +## * add control/inst and control/src to your Octave path +## * run makefile_* +## ============================================================================== + +homedir = pwd (); +srcdir = fileparts (which ("makefile_lyap")); +cd (srcdir); + +## Lypunov +mkoctfile slsb03md.cc \ + SB03MD.f select.f SB03MX.f SB03MY.f MB01RD.f \ + SB03MV.f SB03MW.f SB04PX.f + + +## Sylvester +mkoctfile slsb04md.cc \ + SB04MD.f SB04MU.f SB04MY.f SB04MR.f SB04MW.f + +mkoctfile slsb04qd.cc \ + SB04QD.f SB04QU.f SB04QY.f SB04MW.f SB04QR.f + + +## Generalized Lyapunov +mkoctfile slsg03ad.cc \ + SG03AD.f MB01RW.f MB01RD.f SG03AX.f SG03AY.f \ + MB02UU.f MB02UV.f + +cd (homedir); \ No newline at end of file Added: trunk/octave-forge/main/control/src/makefile_minreal.m =================================================================== --- trunk/octave-forge/main/control/src/makefile_minreal.m (rev 0) +++ trunk/octave-forge/main/control/src/makefile_minreal.m 2010-09-14 12:55:14 UTC (rev 7717) @@ -0,0 +1,17 @@ +## ============================================================================== +## Developer Makefile for OCT-files +## ============================================================================== +## USAGE: * fetch control from Octave-Forge by svn +## * add control/inst and control/src to your Octave path +## * run makefile_* +## ============================================================================== + +homedir = pwd (); +srcdir = fileparts (which ("makefile_minreal")); +cd (srcdir); + +mkoctfile sltb01pd.cc \ + TB01PD.f TB01XD.f TB01ID.f AB07MD.f TB01UD.f \ + MB03OY.f MB01PD.f MB01QD.f + +cd (homedir); \ No newline at end of file Added: trunk/octave-forge/main/control/src/makefile_norm.m =================================================================== --- trunk/octave-forge/main/control/src/makefile_norm.m (rev 0) +++ trunk/octave-forge/main/control/src/makefile_norm.m 2010-09-14 12:55:14 UTC (rev 7717) @@ -0,0 +1,29 @@ +## ============================================================================== +## Developer Makefile for OCT-files +## ============================================================================== +## USAGE: * fetch control from Octave-Forge by svn +## * add control/inst and control/src to your Octave path +## * run makefile_* +## ============================================================================== + +homedir = pwd (); +srcdir = fileparts (which ("makefile_norm")); +cd (srcdir); + +## H-2 norm +mkoctfile slab13bd.cc \ + AB13BD.f SB08DD.f SB03OU.f SB01FY.f TB01LD.f \ + SB03OT.f MB04ND.f MB04OD.f MB03QX.f select.f \ + SB03OR.f MB04OX.f MB03QD.f SB03OY.f MA02AD.f \ + MB03QY.f SB04PX.f MB04NY.f MB04OY.f SB03OV.f + +## L-inf norm +mkoctfile slab13dd.cc \ + AB13DD.f MA02AD.f MB01SD.f MB03XD.f TB01ID.f \ + TG01AD.f TG01BD.f AB13DX.f MA01AD.f MA02ID.f \ + MB03XP.f MB04DD.f MB04QB.f MB04TB.f MB03XU.f \ + MB04TS.f UE01MD.f MB02RD.f MB02SD.f MB04QC.f \ + MB04QF.f MB03YA.f MB03YD.f MB02RZ.f MB04QU.f \ + MB02SZ.f MB03YT.f + +cd (homedir); \ No newline at end of file Added: trunk/octave-forge/main/control/src/makefile_place.m =================================================================== --- trunk/octave-forge/main/control/src/makefile_place.m (rev 0) +++ trunk/octave-forge/main/control/src/makefile_place.m 2010-09-14 12:55:14 UTC (rev 7717) @@ -0,0 +1,17 @@ +## ============================================================================== +## Developer Makefile for OCT-files +## ============================================================================== +## USAGE: * fetch control from Octave-Forge by svn +## * add control/inst and control/src to your Octave path +## * run makefile_* +## ============================================================================== + +homedir = pwd (); +srcdir = fileparts (which ("makefile_place")); +cd (srcdir); + +mkoctfile slsb01bd.cc \ + SB01BD.f MB03QD.f MB03QY.f SB01BX.f SB01BY.f \ + select.f + +cd (homedir); \ No newline at end of file Added: trunk/octave-forge/main/control/src/makefile_staircase.m =================================================================== --- trunk/octave-forge/main/control/src/makefile_staircase.m (rev 0) +++ trunk/octave-forge/main/control/src/makefile_staircase.m 2010-09-14 12:55:14 UTC (rev 7717) @@ -0,0 +1,16 @@ +## ============================================================================== +## Developer Makefile for OCT-files +## ============================================================================== +## USAGE: * fetch control from Octave-Forge by svn +## * add control/inst and control/src to your Octave path +## * run makefile_* +## ============================================================================== + +homedir = pwd (); +srcdir = fileparts (which ("makefile_staircase")); +cd (srcdir); + +mkoctfile slab01od.cc \ + AB01OD.f AB01ND.f MB03OY.f MB01PD.f MB01QD.f + +cd (homedir); \ No newline at end of file Added: trunk/octave-forge/main/control/src/makefile_zero.m =================================================================== --- trunk/octave-forge/main/control/src/makefile_zero.m (rev 0) +++ trunk/octave-forge/main/control/src/makefile_zero.m 2010-09-14 12:55:14 UTC (rev 7717) @@ -0,0 +1,16 @@ +## ============================================================================== +## Developer Makefile for OCT-files +## ============================================================================== +## USAGE: * fetch control from Octave-Forge by svn +## * add control/inst and control/src to your Octave path +## * run makefile_* +## ============================================================================== + +homedir = pwd (); +srcdir = fileparts (which ("makefile_zero")); +cd (srcdir); + +mkoctfile slab08nd.cc \ + AB08ND.f AB08NX.f TB01ID.f MB03OY.f MB03PY.f + +cd (homedir); \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2010-09-16 19:27:40
|
Revision: 7739 http://octave.svn.sourceforge.net/octave/?rev=7739&view=rev Author: paramaniac Date: 2010-09-16 19:27:34 +0000 (Thu, 16 Sep 2010) Log Message: ----------- control: add draft code Modified Paths: -------------- trunk/octave-forge/main/control/src/Makefile Added Paths: ----------- trunk/octave-forge/main/control/src/is_real_scalar.cc trunk/octave-forge/main/control/src/is_ss_mat.cc trunk/octave-forge/main/control/src/makefile_helpers.m Modified: trunk/octave-forge/main/control/src/Makefile =================================================================== --- trunk/octave-forge/main/control/src/Makefile 2010-09-16 15:48:20 UTC (rev 7738) +++ trunk/octave-forge/main/control/src/Makefile 2010-09-16 19:27:34 UTC (rev 7739) @@ -1,7 +1,8 @@ all: slab08nd.oct slab13dd.oct slsb10hd.oct slsb10ed.oct slab13bd.oct \ slsb01bd.oct slsb10fd.oct slsb10dd.oct slsb03md.oct slsb04md.oct \ slsb04qd.oct slsg03ad.oct slsb02od.oct slab13ad.oct slab01od.oct \ - sltb01pd.oct slsb03od.oct slsg03bd.oct + sltb01pd.oct slsb03od.oct slsg03bd.oct \ + is_ss_mat.oct is_real_scalar.oct # transmission zeros of state-space models slab08nd.oct: slab08nd.cc @@ -131,5 +132,12 @@ SG03BD.f SG03BV.f SG03BU.f SG03BW.f SG03BX.f \ SG03BY.f MB02UU.f MB02UV.f +# helpers +is_ss_mat.oct: is_ss_mat.cc + mkoctfile is_ss_mat.cc + +is_real_scalar.oct: is_real_scalar.cc + mkoctfile is_real_scalar.cc + clean: rm *.o core octave-core *.oct *~ Added: trunk/octave-forge/main/control/src/is_real_scalar.cc =================================================================== --- trunk/octave-forge/main/control/src/is_real_scalar.cc (rev 0) +++ trunk/octave-forge/main/control/src/is_real_scalar.cc 2010-09-16 19:27:34 UTC (rev 7739) @@ -0,0 +1,31 @@ +#include <octave/oct.h> + +DEFUN_DLD (is_real_scalar, args, nargout, + "-*- texinfo -*-\n\ +@deftypefn {Loadable Function} {} is_real_scalar (@var{a}, @dots{})\n\ +Return true if arguent is a real scalar.\n\ +@seealso{isreal, ndims}\n\ +@end deftypefn") +{ + octave_value retval = true; + int nargin = args.length (); + + if (nargin == 0) + { + print_usage (); + } + else + { + for (int i = 0; i < nargin; i++) + { + if (args(i).ndims () != 2 || ! args(i).is_scalar_type () + || ! args(i).is_numeric_type () || ! args(i).is_real_type ()) + { + retval = false; + break; + } + } + } + + return retval; +} Added: trunk/octave-forge/main/control/src/is_ss_mat.cc =================================================================== --- trunk/octave-forge/main/control/src/is_ss_mat.cc (rev 0) +++ trunk/octave-forge/main/control/src/is_ss_mat.cc 2010-09-16 19:27:34 UTC (rev 7739) @@ -0,0 +1,31 @@ +#include <octave/oct.h> + +DEFUN_DLD (is_ss_mat, args, nargout, + "-*- texinfo -*-\n\ +@deftypefn {Loadable Function} {} is_ss_mat (@var{a}, @dots{})\n\ +Return true if arguents look like a state-space matrix.\n\ +@seealso{isreal, ndims}\n\ +@end deftypefn") +{ + octave_value retval = true; + int nargin = args.length (); + + if (nargin == 0) + { + print_usage (); + } + else + { + for (int i = 0; i < nargin; i++) + { + if (args(i).ndims () != 2 || ! args(i).is_numeric_type () + || ! args(i).is_real_type ()) + { + retval = false; + break; + } + } + } + + return retval; +} Added: trunk/octave-forge/main/control/src/makefile_helpers.m =================================================================== --- trunk/octave-forge/main/control/src/makefile_helpers.m (rev 0) +++ trunk/octave-forge/main/control/src/makefile_helpers.m 2010-09-16 19:27:34 UTC (rev 7739) @@ -0,0 +1,17 @@ +## ============================================================================== +## Developer Makefile for OCT-files +## ============================================================================== +## USAGE: * fetch control from Octave-Forge by svn +## * add control/inst and control/src to your Octave path +## * run makefile_* +## ============================================================================== + +homedir = pwd (); +srcdir = fileparts (which ("makefile_helpers")); +cd (srcdir); + +mkoctfile is_ss_mat.cc + +mkoctfile is_real_scalar.cc + +cd (homedir); \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2010-09-17 12:18:40
|
Revision: 7743 http://octave.svn.sourceforge.net/octave/?rev=7743&view=rev Author: paramaniac Date: 2010-09-17 12:18:32 +0000 (Fri, 17 Sep 2010) Log Message: ----------- control: improve texinfo strings Modified Paths: -------------- trunk/octave-forge/main/control/src/is_real_matrix.cc trunk/octave-forge/main/control/src/is_real_scalar.cc trunk/octave-forge/main/control/src/is_real_square_matrix.cc trunk/octave-forge/main/control/src/is_real_vector.cc Removed Paths: ------------- trunk/octave-forge/main/control/src/is_ss_mat.cc Modified: trunk/octave-forge/main/control/src/is_real_matrix.cc =================================================================== --- trunk/octave-forge/main/control/src/is_real_matrix.cc 2010-09-17 12:10:17 UTC (rev 7742) +++ trunk/octave-forge/main/control/src/is_real_matrix.cc 2010-09-17 12:18:32 UTC (rev 7743) @@ -3,8 +3,9 @@ DEFUN_DLD (is_real_matrix, args, nargout, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {} is_real_matrix (@var{a}, @dots{})\n\ -Return true if arguments look like a state-space matrix.\n\ -Avoid nasty stuff like @code{true = isreal (""a"")}\n\ +Return true if argument is a real matrix.\n\ +@var{[]} is a valid matrix.\n\ +Avoid nasty stuff like @code{true = isreal (\"a\")}\n\ @seealso{is_real_square_matrix, is_real_vector, is_real_scalar}\n\ @end deftypefn") { Modified: trunk/octave-forge/main/control/src/is_real_scalar.cc =================================================================== --- trunk/octave-forge/main/control/src/is_real_scalar.cc 2010-09-17 12:10:17 UTC (rev 7742) +++ trunk/octave-forge/main/control/src/is_real_scalar.cc 2010-09-17 12:18:32 UTC (rev 7743) @@ -4,7 +4,8 @@ "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {} is_real_scalar (@var{a}, @dots{})\n\ Return true if argument is a real scalar.\n\ -Avoid nasty stuff like @code{true = isreal (""a"")}\n\ +@var{[]} is not a valid scalar.\n\ +Avoid nasty stuff like @code{true = isreal (\"a\")}\n\ @seealso{is_real_matrix, is_real_vector}\n\ @end deftypefn") { Modified: trunk/octave-forge/main/control/src/is_real_square_matrix.cc =================================================================== --- trunk/octave-forge/main/control/src/is_real_square_matrix.cc 2010-09-17 12:10:17 UTC (rev 7742) +++ trunk/octave-forge/main/control/src/is_real_square_matrix.cc 2010-09-17 12:18:32 UTC (rev 7743) @@ -3,8 +3,9 @@ DEFUN_DLD (is_real_square_matrix, args, nargout, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {} is_real_square_matrix (@var{a}, @dots{})\n\ -Return true if arguments look like a square state-space matrix.\n\ -Avoid nasty stuff like @code{true = isreal (""a"")}\n\ +Return true if argument is a real square matrix.\n\ +@var{[]} is a valid square matrix.\n\ +Avoid nasty stuff like @code{true = isreal (\"a\")}\n\ @seealso{is_real_matrix, is_real_vector, is_real_scalar}\n\ @end deftypefn") { Modified: trunk/octave-forge/main/control/src/is_real_vector.cc =================================================================== --- trunk/octave-forge/main/control/src/is_real_vector.cc 2010-09-17 12:10:17 UTC (rev 7742) +++ trunk/octave-forge/main/control/src/is_real_vector.cc 2010-09-17 12:18:32 UTC (rev 7743) @@ -4,7 +4,8 @@ "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {} is_real_vwctor (@var{a}, @dots{})\n\ Return true if argument is a real vector.\n\ -Avoid nasty stuff like @code{true = isreal (""a"")}\n\ +@var{[]} is not a valid vector.\n\ +Avoid nasty stuff like @code{true = isreal (\"a\")}\n\ @seealso{is_real_square_matrix, is_real_matrix, is_real_scalar}\n\ @end deftypefn") { Deleted: trunk/octave-forge/main/control/src/is_ss_mat.cc =================================================================== --- trunk/octave-forge/main/control/src/is_ss_mat.cc 2010-09-17 12:10:17 UTC (rev 7742) +++ trunk/octave-forge/main/control/src/is_ss_mat.cc 2010-09-17 12:18:32 UTC (rev 7743) @@ -1,31 +0,0 @@ -#include <octave/oct.h> - -DEFUN_DLD (is_ss_mat, args, nargout, - "-*- texinfo -*-\n\ -@deftypefn {Loadable Function} {} is_ss_mat (@var{a}, @dots{})\n\ -Return true if arguents look like a state-space matrix.\n\ -@seealso{isreal, ndims}\n\ -@end deftypefn") -{ - octave_value retval = true; - int nargin = args.length (); - - if (nargin == 0) - { - print_usage (); - } - else - { - for (int i = 0; i < nargin; i++) - { - if (args(i).ndims () != 2 || ! args(i).is_numeric_type () - || ! args(i).is_real_type ()) - { - retval = false; - break; - } - } - } - - return retval; -} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2010-09-20 18:45:56
|
Revision: 7758 http://octave.svn.sourceforge.net/octave/?rev=7758&view=rev Author: paramaniac Date: 2010-09-20 18:45:49 +0000 (Mon, 20 Sep 2010) Log Message: ----------- control: add experimental code (thanks to Ben Abbott) Modified Paths: -------------- trunk/octave-forge/main/control/src/makefile_chol.m trunk/octave-forge/main/control/src/makefile_h2syn.m trunk/octave-forge/main/control/src/makefile_hankel.m trunk/octave-forge/main/control/src/makefile_hinfsyn.m trunk/octave-forge/main/control/src/makefile_lqr.m trunk/octave-forge/main/control/src/makefile_lyap.m trunk/octave-forge/main/control/src/makefile_minreal.m trunk/octave-forge/main/control/src/makefile_norm.m trunk/octave-forge/main/control/src/makefile_place.m trunk/octave-forge/main/control/src/makefile_staircase.m trunk/octave-forge/main/control/src/makefile_zero.m Modified: trunk/octave-forge/main/control/src/makefile_chol.m =================================================================== --- trunk/octave-forge/main/control/src/makefile_chol.m 2010-09-20 12:45:12 UTC (rev 7757) +++ trunk/octave-forge/main/control/src/makefile_chol.m 2010-09-20 18:45:49 UTC (rev 7758) @@ -10,13 +10,15 @@ srcdir = fileparts (which ("makefile_chol")); cd (srcdir); -mkoctfile slsb03od.cc \ +mkoctfile "-Wl,-framework" "-Wl,vecLib" \ + slsb03od.cc \ SB03OD.f select.f SB03OU.f SB03OT.f MB04ND.f \ MB04OD.f SB03OR.f SB03OY.f SB04PX.f MB04NY.f \ MB04OY.f SB03OV.f -mkoctfile slsg03bd.cc \ +mkoctfile "-Wl,-framework" "-Wl,vecLib" \ + slsg03bd.cc \ SG03BD.f SG03BV.f SG03BU.f SG03BW.f SG03BX.f \ SG03BY.f MB02UU.f MB02UV.f Modified: trunk/octave-forge/main/control/src/makefile_h2syn.m =================================================================== --- trunk/octave-forge/main/control/src/makefile_h2syn.m 2010-09-20 12:45:12 UTC (rev 7757) +++ trunk/octave-forge/main/control/src/makefile_h2syn.m 2010-09-20 18:45:49 UTC (rev 7758) @@ -10,7 +10,8 @@ srcdir = fileparts (which ("makefile_h2syn")); cd (srcdir); -mkoctfile slsb10hd.cc \ +mkoctfile "-Wl,-framework" "-Wl,vecLib" \ + slsb10hd.cc \ SB10HD.f SB10UD.f SB10VD.f SB10WD.f SB02RD.f \ MB01RU.f SB02SD.f MA02ED.f SB02RU.f SB02MR.f \ MB01SD.f SB02MS.f SB02MV.f SB02MW.f MA02AD.f \ @@ -18,7 +19,8 @@ MB01RY.f SB03SX.f SB03SY.f select.f SB03MX.f \ SB03MY.f MB01UD.f SB03MV.f SB03MW.f SB04PX.f -mkoctfile slsb10ed.cc \ +mkoctfile "-Wl,-framework" "-Wl,vecLib" \ + slsb10ed.cc \ SB10ED.f SB10SD.f SB10TD.f SB10PD.f MB01RX.f \ SB02SD.f SB02OD.f MB01RU.f SB02OU.f SB02OV.f \ SB02OW.f MB01RY.f SB02OY.f SB03SX.f SB03SY.f \ Modified: trunk/octave-forge/main/control/src/makefile_hankel.m =================================================================== --- trunk/octave-forge/main/control/src/makefile_hankel.m 2010-09-20 12:45:12 UTC (rev 7757) +++ trunk/octave-forge/main/control/src/makefile_hankel.m 2010-09-20 18:45:49 UTC (rev 7758) @@ -10,7 +10,8 @@ srcdir = fileparts (which ("makefile_hankel")); cd (srcdir); -mkoctfile slab13ad.cc \ +mkoctfile "-Wl,-framework" "-Wl,vecLib" \ + slab13ad.cc \ AB13AD.f TB01ID.f TB01KD.f AB13AX.f MA02DD.f \ MB03UD.f TB01LD.f SB03OU.f MB03QX.f select.f \ SB03OT.f MB03QD.f MB04ND.f MB04OD.f MB03QY.f \ Modified: trunk/octave-forge/main/control/src/makefile_hinfsyn.m =================================================================== --- trunk/octave-forge/main/control/src/makefile_hinfsyn.m 2010-09-20 12:45:12 UTC (rev 7757) +++ trunk/octave-forge/main/control/src/makefile_hinfsyn.m 2010-09-20 18:45:49 UTC (rev 7758) @@ -10,7 +10,8 @@ srcdir = fileparts (which ("makefile_hinfsyn")); cd (srcdir); -mkoctfile slsb10fd.cc \ +mkoctfile "-Wl,-framework" "-Wl,vecLib" \ + slsb10fd.cc \ SB10FD.f SB10PD.f SB10QD.f SB10RD.f SB02RD.f \ MB01RU.f MB01RX.f MA02AD.f SB02SD.f MA02ED.f \ SB02RU.f SB02MR.f MB01SD.f SB02MS.f SB02MV.f \ @@ -18,7 +19,8 @@ MB01RY.f SB03SX.f SB03SY.f select.f SB03MX.f \ SB03MY.f MB01UD.f SB03MV.f SB03MW.f SB04PX.f -mkoctfile slsb10dd.cc \ +mkoctfile "-Wl,-framework" "-Wl,vecLib" \ + slsb10dd.cc \ SB10DD.f MB01RU.f MB01RX.f SB02SD.f SB02OD.f \ MA02AD.f SB02OU.f SB02OV.f SB02OW.f MB01RY.f \ SB02OY.f SB03SX.f SB03SY.f MA02ED.f select.f \ Modified: trunk/octave-forge/main/control/src/makefile_lqr.m =================================================================== --- trunk/octave-forge/main/control/src/makefile_lqr.m 2010-09-20 12:45:12 UTC (rev 7757) +++ trunk/octave-forge/main/control/src/makefile_lqr.m 2010-09-20 18:45:49 UTC (rev 7758) @@ -10,7 +10,8 @@ srcdir = fileparts (which ("makefile_lqr")); cd (srcdir); -mkoctfile slsb02od.cc \ +mkoctfile "-Wl,-framework" "-Wl,vecLib" \ + slsb02od.cc \ SB02OD.f SB02OU.f SB02OV.f SB02OW.f SB02OY.f \ SB02MR.f SB02MV.f Modified: trunk/octave-forge/main/control/src/makefile_lyap.m =================================================================== --- trunk/octave-forge/main/control/src/makefile_lyap.m 2010-09-20 12:45:12 UTC (rev 7757) +++ trunk/octave-forge/main/control/src/makefile_lyap.m 2010-09-20 18:45:49 UTC (rev 7758) @@ -11,21 +11,25 @@ cd (srcdir); ## Lypunov -mkoctfile slsb03md.cc \ +mkoctfile "-Wl,-framework" "-Wl,vecLib" \ + slsb03md.cc \ SB03MD.f select.f SB03MX.f SB03MY.f MB01RD.f \ SB03MV.f SB03MW.f SB04PX.f ## Sylvester -mkoctfile slsb04md.cc \ +mkoctfile "-Wl,-framework" "-Wl,vecLib" \ + slsb04md.cc \ SB04MD.f SB04MU.f SB04MY.f SB04MR.f SB04MW.f -mkoctfile slsb04qd.cc \ +mkoctfile "-Wl,-framework" "-Wl,vecLib" \ + slsb04qd.cc \ SB04QD.f SB04QU.f SB04QY.f SB04MW.f SB04QR.f ## Generalized Lyapunov -mkoctfile slsg03ad.cc \ +mkoctfile "-Wl,-framework" "-Wl,vecLib" \ + slsg03ad.cc \ SG03AD.f MB01RW.f MB01RD.f SG03AX.f SG03AY.f \ MB02UU.f MB02UV.f Modified: trunk/octave-forge/main/control/src/makefile_minreal.m =================================================================== --- trunk/octave-forge/main/control/src/makefile_minreal.m 2010-09-20 12:45:12 UTC (rev 7757) +++ trunk/octave-forge/main/control/src/makefile_minreal.m 2010-09-20 18:45:49 UTC (rev 7758) @@ -10,7 +10,8 @@ srcdir = fileparts (which ("makefile_minreal")); cd (srcdir); -mkoctfile sltb01pd.cc \ +mkoctfile "-Wl,-framework" "-Wl,vecLib" \ + sltb01pd.cc \ TB01PD.f TB01XD.f TB01ID.f AB07MD.f TB01UD.f \ MB03OY.f MB01PD.f MB01QD.f Modified: trunk/octave-forge/main/control/src/makefile_norm.m =================================================================== --- trunk/octave-forge/main/control/src/makefile_norm.m 2010-09-20 12:45:12 UTC (rev 7757) +++ trunk/octave-forge/main/control/src/makefile_norm.m 2010-09-20 18:45:49 UTC (rev 7758) @@ -11,14 +11,16 @@ cd (srcdir); ## H-2 norm -mkoctfile slab13bd.cc \ +mkoctfile "-Wl,-framework" "-Wl,vecLib" \ + slab13bd.cc \ AB13BD.f SB08DD.f SB03OU.f SB01FY.f TB01LD.f \ SB03OT.f MB04ND.f MB04OD.f MB03QX.f select.f \ SB03OR.f MB04OX.f MB03QD.f SB03OY.f MA02AD.f \ MB03QY.f SB04PX.f MB04NY.f MB04OY.f SB03OV.f ## L-inf norm -mkoctfile slab13dd.cc \ +mkoctfile "-Wl,-framework" "-Wl,vecLib" \ + slab13dd.cc \ AB13DD.f MA02AD.f MB01SD.f MB03XD.f TB01ID.f \ TG01AD.f TG01BD.f AB13DX.f MA01AD.f MA02ID.f \ MB03XP.f MB04DD.f MB04QB.f MB04TB.f MB03XU.f \ Modified: trunk/octave-forge/main/control/src/makefile_place.m =================================================================== --- trunk/octave-forge/main/control/src/makefile_place.m 2010-09-20 12:45:12 UTC (rev 7757) +++ trunk/octave-forge/main/control/src/makefile_place.m 2010-09-20 18:45:49 UTC (rev 7758) @@ -10,7 +10,8 @@ srcdir = fileparts (which ("makefile_place")); cd (srcdir); -mkoctfile slsb01bd.cc \ +mkoctfile "-Wl,-framework" "-Wl,vecLib" \ + slsb01bd.cc \ SB01BD.f MB03QD.f MB03QY.f SB01BX.f SB01BY.f \ select.f Modified: trunk/octave-forge/main/control/src/makefile_staircase.m =================================================================== --- trunk/octave-forge/main/control/src/makefile_staircase.m 2010-09-20 12:45:12 UTC (rev 7757) +++ trunk/octave-forge/main/control/src/makefile_staircase.m 2010-09-20 18:45:49 UTC (rev 7758) @@ -10,7 +10,8 @@ srcdir = fileparts (which ("makefile_staircase")); cd (srcdir); -mkoctfile slab01od.cc \ +mkoctfile "-Wl,-framework" "-Wl,vecLib" \ + slab01od.cc \ AB01OD.f AB01ND.f MB03OY.f MB01PD.f MB01QD.f cd (homedir); \ No newline at end of file Modified: trunk/octave-forge/main/control/src/makefile_zero.m =================================================================== --- trunk/octave-forge/main/control/src/makefile_zero.m 2010-09-20 12:45:12 UTC (rev 7757) +++ trunk/octave-forge/main/control/src/makefile_zero.m 2010-09-20 18:45:49 UTC (rev 7758) @@ -11,11 +11,13 @@ cd (srcdir); ## transmission zeros of state-space models -mkoctfile slab08nd.cc \ +mkoctfile "-Wl,-framework" "-Wl,vecLib" \ + slab08nd.cc \ AB08ND.f AB08NX.f TB01ID.f MB03OY.f MB03PY.f ## transmission zeros of descriptor state-space models -mkoctfile slag08bd.cc \ +mkoctfile "-Wl,-framework" "-Wl,vecLib" \ + slag08bd.cc \ AG08BD.f AG08BY.f TG01AD.f TB01XD.f MA02CD.f \ TG01FD.f MA02BD.f MB03OY.f This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2010-11-05 06:59:30
|
Revision: 7899 http://octave.svn.sourceforge.net/octave/?rev=7899&view=rev Author: paramaniac Date: 2010-11-05 06:59:23 +0000 (Fri, 05 Nov 2010) Log Message: ----------- ? Property Changed: ---------------- trunk/octave-forge/main/control/src/ trunk/octave-forge/main/control/src/MA02ID.f trunk/octave-forge/main/control/src/MB03XP.f trunk/octave-forge/main/control/src/MB03XU.f trunk/octave-forge/main/control/src/MB03YA.f trunk/octave-forge/main/control/src/MB03YD.f trunk/octave-forge/main/control/src/MB03YT.f trunk/octave-forge/main/control/src/MB04DD.f trunk/octave-forge/main/control/src/MB04QB.f trunk/octave-forge/main/control/src/MB04QC.f trunk/octave-forge/main/control/src/MB04QF.f trunk/octave-forge/main/control/src/MB04QU.f trunk/octave-forge/main/control/src/MB04TB.f trunk/octave-forge/main/control/src/MB04TS.f trunk/octave-forge/main/control/src/UE01MD.f Property changes on: trunk/octave-forge/main/control/src ___________________________________________________________________ Added: svn:ignore + is_real_matrix.oct is_real_scalar.oct is_real_square_matrix.oct is_real_vector.oct slab01od.oct slab08nd.oct slab13ad.oct slab13bd.oct slab13dd.oct slag08bd.oct slsb01bd.oct slsb02od.oct slsb03md.oct slsb03od.oct slsb04md.oct slsb04qd.oct slsb10dd.oct slsb10ed.oct slsb10fd.oct slsb10hd.oct slsg02ad.oct slsg03ad.oct slsg03bd.oct sltb01pd.oct sltg01hd.oct sltg01id.oct sltg01jd.oct Property changes on: trunk/octave-forge/main/control/src/MA02ID.f ___________________________________________________________________ Deleted: svn:executable - * Property changes on: trunk/octave-forge/main/control/src/MB03XP.f ___________________________________________________________________ Deleted: svn:executable - * Property changes on: trunk/octave-forge/main/control/src/MB03XU.f ___________________________________________________________________ Deleted: svn:executable - * Property changes on: trunk/octave-forge/main/control/src/MB03YA.f ___________________________________________________________________ Deleted: svn:executable - * Property changes on: trunk/octave-forge/main/control/src/MB03YD.f ___________________________________________________________________ Deleted: svn:executable - * Property changes on: trunk/octave-forge/main/control/src/MB03YT.f ___________________________________________________________________ Deleted: svn:executable - * Property changes on: trunk/octave-forge/main/control/src/MB04DD.f ___________________________________________________________________ Deleted: svn:executable - * Property changes on: trunk/octave-forge/main/control/src/MB04QB.f ___________________________________________________________________ Deleted: svn:executable - * Property changes on: trunk/octave-forge/main/control/src/MB04QC.f ___________________________________________________________________ Deleted: svn:executable - * Property changes on: trunk/octave-forge/main/control/src/MB04QF.f ___________________________________________________________________ Deleted: svn:executable - * Property changes on: trunk/octave-forge/main/control/src/MB04QU.f ___________________________________________________________________ Deleted: svn:executable - * Property changes on: trunk/octave-forge/main/control/src/MB04TB.f ___________________________________________________________________ Deleted: svn:executable - * Property changes on: trunk/octave-forge/main/control/src/MB04TS.f ___________________________________________________________________ Deleted: svn:executable - * Property changes on: trunk/octave-forge/main/control/src/UE01MD.f ___________________________________________________________________ Deleted: svn:executable - * This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2011-02-08 10:57:28
|
Revision: 8103 http://octave.svn.sourceforge.net/octave/?rev=8103&view=rev Author: paramaniac Date: 2011-02-08 10:57:21 +0000 (Tue, 08 Feb 2011) Log Message: ----------- control: add two Fortran routines which compute the gain of (descriptor) state-space models Added Paths: ----------- trunk/octave-forge/main/control/src/TB04BX.f trunk/octave-forge/main/control/src/TG04BX.f Added: trunk/octave-forge/main/control/src/TB04BX.f =================================================================== --- trunk/octave-forge/main/control/src/TB04BX.f (rev 0) +++ trunk/octave-forge/main/control/src/TB04BX.f 2011-02-08 10:57:21 UTC (rev 8103) @@ -0,0 +1,246 @@ + SUBROUTINE TB04BX( IP, IZ, A, LDA, B, C, D, PR, PI, ZR, ZI, GAIN, + $ IWORK ) +C +C SLICOT RELEASE 5.0. +C +C Copyright (c) 2002-2009 NICONET e.V. +C +C This program is free software: you can redistribute it and/or +C modify it under the terms of the GNU General Public License as +C published by the Free Software Foundation, either version 2 of +C the License, or (at your option) any later version. +C +C This program is distributed in the hope that it will be useful, +C but WITHOUT ANY WARRANTY; without even the implied warranty of +C MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +C GNU General Public License for more details. +C +C You should have received a copy of the GNU General Public License +C along with this program. If not, see +C <http://www.gnu.org/licenses/>. +C +C PURPOSE +C +C To compute the gain of a single-input single-output linear system, +C given its state-space representation (A,b,c,d), and its poles and +C zeros. The matrix A is assumed to be in an upper Hessenberg form. +C The gain is computed using the formula +C +C -1 IP IZ +C g = (c*( S0*I - A ) *b + d)*Prod( S0 - Pi )/Prod( S0 - Zi ) , +C i=1 i=1 (1) +C +C where Pi, i = 1 : IP, and Zj, j = 1 : IZ, are the poles and zeros, +C respectively, and S0 is a real scalar different from all poles and +C zeros. +C +C ARGUMENTS +C +C Input/Output Parameters +C +C IP (input) INTEGER +C The number of the system poles. IP >= 0. +C +C IZ (input) INTEGER +C The number of the system zeros. IZ >= 0. +C +C A (input/output) DOUBLE PRECISION array, dimension (LDA,IP) +C On entry, the leading IP-by-IP part of this array must +C contain the state dynamics matrix A in an upper Hessenberg +C form. The elements below the second diagonal are not +C referenced. +C On exit, the leading IP-by-IP upper Hessenberg part of +C this array contains the LU factorization of the matrix +C A - S0*I, as computed by SLICOT Library routine MB02SD. +C +C LDA INTEGER +C The leading dimension of array A. LDA >= max(1,IP). +C +C B (input/output) DOUBLE PRECISION array, dimension (IP) +C On entry, this array must contain the system input +C vector b. +C On exit, this array contains the solution of the linear +C system ( A - S0*I )x = b . +C +C C (input) DOUBLE PRECISION array, dimension (IP) +C This array must contain the system output vector c. +C +C D (input) DOUBLE PRECISION +C The variable must contain the system feedthrough scalar d. +C +C PR (input) DOUBLE PRECISION array, dimension (IP) +C This array must contain the real parts of the system +C poles. Pairs of complex conjugate poles must be stored in +C consecutive memory locations. +C +C PI (input) DOUBLE PRECISION array, dimension (IP) +C This array must contain the imaginary parts of the system +C poles. +C +C ZR (input) DOUBLE PRECISION array, dimension (IZ) +C This array must contain the real parts of the system +C zeros. Pairs of complex conjugate zeros must be stored in +C consecutive memory locations. +C +C ZI (input) DOUBLE PRECISION array, dimension (IZ) +C This array must contain the imaginary parts of the system +C zeros. +C +C GAIN (output) DOUBLE PRECISION +C The gain of the linear system (A,b,c,d), given by (1). +C +C Workspace +C +C IWORK INTEGER array, dimension (IP) +C On exit, it contains the pivot indices; for 1 <= i <= IP, +C row i of the matrix A - S0*I was interchanged with +C row IWORK(i). +C +C METHOD +C +C The routine implements the method presented in [1]. A suitable +C value of S0 is chosen based on the system poles and zeros. +C Then, the LU factorization of the upper Hessenberg, nonsingular +C matrix A - S0*I is computed and used to solve the linear system +C in (1). +C +C REFERENCES +C +C [1] Varga, A. and Sima, V. +C Numerically Stable Algorithm for Transfer Function Matrix +C Evaluation. +C Int. J. Control, vol. 33, nr. 6, pp. 1123-1133, 1981. +C +C NUMERICAL ASPECTS +C +C The algorithm is numerically stable in practice and requires +C O(IP*IP) floating point operations. +C +C CONTRIBUTORS +C +C V. Sima, Research Institute for Informatics, Bucharest, May 2002. +C Partly based on the BIMASC Library routine GAIN by A. Varga. +C +C REVISIONS +C +C - +C +C KEYWORDS +C +C Eigenvalue, state-space representation, transfer function, zeros. +C +C ****************************************************************** +C +C .. Parameters .. + DOUBLE PRECISION ZERO, ONE, TWO, P1, ONEP1 + PARAMETER ( ZERO = 0.0D0, ONE = 1.0D0, TWO = 2.0D0, + $ P1 = 0.1D0, ONEP1 = 1.1D0 ) +C .. Scalar Arguments .. + DOUBLE PRECISION D, GAIN + INTEGER IP, IZ, LDA +C .. Array Arguments .. + DOUBLE PRECISION A(LDA,*), B(*), C(*), PI(*), PR(*), ZI(*), + $ ZR(*) + INTEGER IWORK(*) +C .. Local Scalars .. + INTEGER I, INFO + DOUBLE PRECISION S0, S +C .. External Functions .. + DOUBLE PRECISION DDOT + EXTERNAL DDOT +C .. External Subroutines .. + EXTERNAL MB02RD, MB02SD +C .. Intrinsic Functions .. + INTRINSIC ABS, MAX +C .. +C .. Executable Statements .. +C +C For efficiency, the input scalar parameters are not checked. +C +C Quick return if possible. +C + IF( IP.EQ.0 ) THEN + GAIN = ZERO + RETURN + END IF +C +C Compute a suitable value for S0 . +C + S0 = ZERO +C + DO 10 I = 1, IP + S = ABS( PR(I) ) + IF ( PI(I).NE.ZERO ) + $ S = S + ABS( PI(I) ) + S0 = MAX( S0, S ) + 10 CONTINUE +C + DO 20 I = 1, IZ + S = ABS( ZR(I) ) + IF ( ZI(I).NE.ZERO ) + $ S = S + ABS( ZI(I) ) + S0 = MAX( S0, S ) + 20 CONTINUE +C + S0 = TWO*S0 + P1 + IF ( S0.LE.ONE ) + $ S0 = ONEP1 +C +C Form A - S0*I . +C + DO 30 I = 1, IP + A(I,I) = A(I,I) - S0 + 30 CONTINUE +C +C Compute the LU factorization of the matrix A - S0*I +C (guaranteed to be nonsingular). +C + CALL MB02SD( IP, A, LDA, IWORK, INFO ) +C +C Solve the linear system (A - S0*I)*x = b . +C + CALL MB02RD( 'No Transpose', IP, 1, A, LDA, IWORK, B, IP, INFO ) +C -1 +C Compute c*(S0*I - A) *b + d . +C + GAIN = D - DDOT( IP, C, 1, B, 1 ) +C +C Multiply by the products in terms of poles and zeros in (1). +C + I = 1 +C +C WHILE ( I <= IP ) DO +C + 40 IF ( I.LE.IP ) THEN + IF ( PI(I).EQ.ZERO ) THEN + GAIN = GAIN*( S0 - PR(I) ) + I = I + 1 + ELSE + GAIN = GAIN*( S0*( S0 - TWO*PR(I) ) + PR(I)**2 + PI(I)**2 ) + I = I + 2 + END IF + GO TO 40 + END IF +C +C END WHILE 40 +C + I = 1 +C +C WHILE ( I <= IZ ) DO +C + 50 IF ( I.LE.IZ ) THEN + IF ( ZI(I).EQ.ZERO ) THEN + GAIN = GAIN/( S0 - ZR(I) ) + I = I + 1 + ELSE + GAIN = GAIN/( S0*( S0 - TWO*ZR(I) ) + ZR(I)**2 + ZI(I)**2 ) + I = I + 2 + END IF + GO TO 50 + END IF +C +C END WHILE 50 +C + RETURN +C *** Last line of TB04BX *** + END Added: trunk/octave-forge/main/control/src/TG04BX.f =================================================================== --- trunk/octave-forge/main/control/src/TG04BX.f (rev 0) +++ trunk/octave-forge/main/control/src/TG04BX.f 2011-02-08 10:57:21 UTC (rev 8103) @@ -0,0 +1,257 @@ + SUBROUTINE TG04BX( IP, IZ, E, A, LDA, B, C, D, PR, PI, ZR, ZI, + $ GAIN, IWORK ) +C +C WARNING +C +C This routine is a modified version of TB04BX. It is intended +C for the Octave Control Systems Package and supports Descriptor +C State-Space models. TG04BX is *NOT* part of SLICOT and the +C authors from NICONET e.V. are *NOT* responsible for it. +C See file DESCRIPTION for the current maintainer of the Octave +C control package. +C +C SLICOT RELEASE 5.0. +C +C Copyright (c) 2002-2009 NICONET e.V. +C +C This program is free software: you can redistribute it and/or +C modify it under the terms of the GNU General Public License as +C published by the Free Software Foundation, either version 2 of +C the License, or (at your option) any later version. +C +C This program is distributed in the hope that it will be useful, +C but WITHOUT ANY WARRANTY; without even the implied warranty of +C MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +C GNU General Public License for more details. +C +C You should have received a copy of the GNU General Public License +C along with this program. If not, see +C <http://www.gnu.org/licenses/>. +C +C PURPOSE +C +C To compute the gain of a single-input single-output linear system, +C given its state-space representation (A,b,c,d), and its poles and +C zeros. The matrix A is assumed to be in an upper Hessenberg form. +C The gain is computed using the formula +C +C -1 IP IZ +C g = (c*( S0*E - A ) *b + d)*Prod( S0 - Pi )/Prod( S0 - Zi ) , +C i=1 i=1 (1) +C +C where Pi, i = 1 : IP, and Zj, j = 1 : IZ, are the poles and zeros, +C respectively, and S0 is a real scalar different from all poles and +C zeros. +C +C ARGUMENTS +C +C Input/Output Parameters +C +C IP (input) INTEGER +C The number of the system poles. IP >= 0. +C +C IZ (input) INTEGER +C The number of the system zeros. IZ >= 0. +C +C A (input/output) DOUBLE PRECISION array, dimension (LDA,IP) +C On entry, the leading IP-by-IP part of this array must +C contain the state dynamics matrix A in an upper Hessenberg +C form. The elements below the second diagonal are not +C referenced. +C On exit, the leading IP-by-IP upper Hessenberg part of +C this array contains the LU factorization of the matrix +C A - S0*I, as computed by SLICOT Library routine MB02SD. +C +C LDA INTEGER +C The leading dimension of array A. LDA >= max(1,IP). +C +C B (input/output) DOUBLE PRECISION array, dimension (IP) +C On entry, this array must contain the system input +C vector b. +C On exit, this array contains the solution of the linear +C system ( A - S0*I )x = b . +C +C C (input) DOUBLE PRECISION array, dimension (IP) +C This array must contain the system output vector c. +C +C D (input) DOUBLE PRECISION +C The variable must contain the system feedthrough scalar d. +C +C PR (input) DOUBLE PRECISION array, dimension (IP) +C This array must contain the real parts of the system +C poles. Pairs of complex conjugate poles must be stored in +C consecutive memory locations. +C +C PI (input) DOUBLE PRECISION array, dimension (IP) +C This array must contain the imaginary parts of the system +C poles. +C +C ZR (input) DOUBLE PRECISION array, dimension (IZ) +C This array must contain the real parts of the system +C zeros. Pairs of complex conjugate zeros must be stored in +C consecutive memory locations. +C +C ZI (input) DOUBLE PRECISION array, dimension (IZ) +C This array must contain the imaginary parts of the system +C zeros. +C +C GAIN (output) DOUBLE PRECISION +C The gain of the linear system (A,b,c,d), given by (1). +C +C Workspace +C +C IWORK INTEGER array, dimension (IP) +C On exit, it contains the pivot indices; for 1 <= i <= IP, +C row i of the matrix A - S0*I was interchanged with +C row IWORK(i). +C +C METHOD +C +C The routine implements the method presented in [1]. A suitable +C value of S0 is chosen based on the system poles and zeros. +C Then, the LU factorization of the upper Hessenberg, nonsingular +C matrix A - S0*I is computed and used to solve the linear system +C in (1). +C +C REFERENCES +C +C [1] Varga, A. and Sima, V. +C Numerically Stable Algorithm for Transfer Function Matrix +C Evaluation. +C Int. J. Control, vol. 33, nr. 6, pp. 1123-1133, 1981. +C +C NUMERICAL ASPECTS +C +C The algorithm is numerically stable in practice and requires +C O(IP*IP) floating point operations. +C +C CONTRIBUTORS +C +C V. Sima, Research Institute for Informatics, Bucharest, May 2002. +C Partly based on the BIMASC Library routine GAIN by A. Varga. +C +C REVISIONS +C +C 2011-02-08 (Lukas Reichlin) Modifications for Descriptor Systems. +C +C KEYWORDS +C +C Eigenvalue, state-space representation, transfer function, zeros. +C +C ****************************************************************** +C +C .. Parameters .. + DOUBLE PRECISION ZERO, ONE, TWO, P1, ONEP1 + PARAMETER ( ZERO = 0.0D0, ONE = 1.0D0, TWO = 2.0D0, + $ P1 = 0.1D0, ONEP1 = 1.1D0 ) +C .. Scalar Arguments .. + DOUBLE PRECISION D, GAIN + INTEGER IP, IZ, LDA +C .. Array Arguments .. + DOUBLE PRECISION E(LDA,*), A(LDA,*), B(*), C(*), PI(*), PR(*), + $ ZI(*), ZR(*) + INTEGER IWORK(*) +C .. Local Scalars .. + INTEGER I, J, INFO + DOUBLE PRECISION S0, S +C .. External Functions .. + DOUBLE PRECISION DDOT + EXTERNAL DDOT +C .. External Subroutines .. + EXTERNAL MB02RD, MB02SD +C .. Intrinsic Functions .. + INTRINSIC ABS, MAX +C .. +C .. Executable Statements .. +C +C For efficiency, the input scalar parameters are not checked. +C +C Quick return if possible. +C + IF( IP.EQ.0 ) THEN + GAIN = ZERO + RETURN + END IF +C +C Compute a suitable value for S0 . +C + S0 = ZERO +C + DO 10 I = 1, IP + S = ABS( PR(I) ) + IF ( PI(I).NE.ZERO ) + $ S = S + ABS( PI(I) ) + S0 = MAX( S0, S ) + 10 CONTINUE +C + DO 20 I = 1, IZ + S = ABS( ZR(I) ) + IF ( ZI(I).NE.ZERO ) + $ S = S + ABS( ZI(I) ) + S0 = MAX( S0, S ) + 20 CONTINUE +C + S0 = TWO*S0 + P1 + IF ( S0.LE.ONE ) + $ S0 = ONEP1 +C +C Form A - S0*E . +C + DO 30 J = 1, IP + DO 25 I = 1, IP + A(I,J) = A(I,J) - S0*E(I,J) + 25 CONTINUE + 30 CONTINUE +C +C Compute the LU factorization of the matrix A - S0*E +C (guaranteed to be nonsingular). +C + CALL MB02SD( IP, A, LDA, IWORK, INFO ) +C +C Solve the linear system (A - S0*E)*x = b . +C + CALL MB02RD( 'No Transpose', IP, 1, A, LDA, IWORK, B, IP, INFO ) +C -1 +C Compute c*(S0*E - A) *b + d . +C + GAIN = D - DDOT( IP, C, 1, B, 1 ) +C +C Multiply by the products in terms of poles and zeros in (1). +C + I = 1 +C +C WHILE ( I <= IP ) DO +C + 40 IF ( I.LE.IP ) THEN + IF ( PI(I).EQ.ZERO ) THEN + GAIN = GAIN*( S0 - PR(I) ) + I = I + 1 + ELSE + GAIN = GAIN*( S0*( S0 - TWO*PR(I) ) + PR(I)**2 + PI(I)**2 ) + I = I + 2 + END IF + GO TO 40 + END IF +C +C END WHILE 40 +C + I = 1 +C +C WHILE ( I <= IZ ) DO +C + 50 IF ( I.LE.IZ ) THEN + IF ( ZI(I).EQ.ZERO ) THEN + GAIN = GAIN/( S0 - ZR(I) ) + I = I + 1 + ELSE + GAIN = GAIN/( S0*( S0 - TWO*ZR(I) ) + ZR(I)**2 + ZI(I)**2 ) + I = I + 2 + END IF + GO TO 50 + END IF +C +C END WHILE 50 +C + RETURN +C *** Last line of TG04BX *** + END This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2011-08-10 09:23:43
|
Revision: 8454 http://octave.svn.sourceforge.net/octave/?rev=8454&view=rev Author: paramaniac Date: 2011-08-10 09:03:19 +0000 (Wed, 10 Aug 2011) Log Message: ----------- control: fix wrong variable name (copy-paste error) Modified Paths: -------------- trunk/octave-forge/main/control/src/slsb02od.cc trunk/octave-forge/main/control/src/slsg02ad.cc Modified: trunk/octave-forge/main/control/src/slsb02od.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb02od.cc 2011-08-09 07:14:56 UTC (rev 8453) +++ trunk/octave-forge/main/control/src/slsb02od.cc 2011-08-10 09:03:19 UTC (rev 8454) @@ -181,20 +181,20 @@ alfai.resize (n); beta.resize (n); - ColumnVector zeror (n); - ColumnVector zeroi (n); + ColumnVector poler (n); + ColumnVector polei (n); - zeror = quotient (alfar, beta); - zeroi = quotient (alfai, beta); + poler = quotient (alfar, beta); + polei = quotient (alfai, beta); - ComplexColumnVector zero (n, Complex ()); + ComplexColumnVector pole (n, Complex ()); for (octave_idx_type i = 0; i < n; i++) - zero.xelem (i) = Complex (zeror(i), zeroi(i)); + pole.xelem (i) = Complex (poler(i), polei(i)); // return value retval(0) = x; - retval(1) = zero; + retval(1) = pole; } return retval; Modified: trunk/octave-forge/main/control/src/slsg02ad.cc =================================================================== --- trunk/octave-forge/main/control/src/slsg02ad.cc 2011-08-09 07:14:56 UTC (rev 8453) +++ trunk/octave-forge/main/control/src/slsg02ad.cc 2011-08-10 09:03:19 UTC (rev 8454) @@ -193,20 +193,20 @@ alfai.resize (n); beta.resize (n); - ColumnVector zeror (n); - ColumnVector zeroi (n); + ColumnVector poler (n); + ColumnVector polei (n); - zeror = quotient (alfar, beta); - zeroi = quotient (alfai, beta); + poler = quotient (alfar, beta); + polei = quotient (alfai, beta); - ComplexColumnVector zero (n, Complex ()); + ComplexColumnVector pole (n, Complex ()); for (octave_idx_type i = 0; i < n; i++) - zero.xelem (i) = Complex (zeror(i), zeroi(i)); + pole.xelem (i) = Complex (poler(i), polei(i)); // return value retval(0) = x; - retval(1) = zero; + retval(1) = pole; } return retval; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2011-11-04 22:36:41
|
Revision: 8988 http://octave.svn.sourceforge.net/octave/?rev=8988&view=rev Author: paramaniac Date: 2011-11-04 22:36:35 +0000 (Fri, 04 Nov 2011) Log Message: ----------- control: improve error messages for ncfsyn Modified Paths: -------------- trunk/octave-forge/main/control/src/slsb10id.cc trunk/octave-forge/main/control/src/slsb10kd.cc trunk/octave-forge/main/control/src/slsb10zd.cc Modified: trunk/octave-forge/main/control/src/slsb10id.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb10id.cc 2011-11-04 20:18:44 UTC (rev 8987) +++ trunk/octave-forge/main/control/src/slsb10id.cc 2011-11-04 22:36:35 UTC (rev 8988) @@ -23,7 +23,7 @@ Author: Lukas Reichlin <luk...@gm...> Created: July 2011 -Version: 0.1 +Version: 0.2 */ @@ -128,10 +128,34 @@ info)); if (f77_exception_encountered) - error ("hinfsyn: slsb10id: exception in SLICOT subroutine SB10ID"); + error ("ncfsyn: slsb10id: exception in SLICOT subroutine SB10ID"); if (info != 0) - error ("hinfsyn: slsb10id: SB10ID returned info = %d", info); + { + if (info < 0) + error ("ncfsyn: slsb10id: the %d-th argument had an invalid value", info); + else + { + switch (info) + { + case 1: + error ("ncfsyn: 1: the X-Riccati equation is not solved successfully"); + case 2: + error ("ncfsyn: 2: the Z-Riccati equation is not solved successfully"); + case 3: + error ("ncfsyn: 3: the iteration to compute eigenvalues or singular " + "values failed to converge"); + case 4: + error ("ncfsyn: 4: the matrix Ip - D*Dk is singular"); + case 5: + error ("ncfsyn: 5: the matrix Im - Dk*D is singular"); + case 6: + error ("ncfsyn: 6: the closed-loop system is unstable"); + default: + error ("ncfsyn: unknown error, info = %d", info); + } + } + } // resizing ak.resize (nk, nk); Modified: trunk/octave-forge/main/control/src/slsb10kd.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb10kd.cc 2011-11-04 20:18:44 UTC (rev 8987) +++ trunk/octave-forge/main/control/src/slsb10kd.cc 2011-11-04 22:36:35 UTC (rev 8988) @@ -23,7 +23,7 @@ Author: Lukas Reichlin <luk...@gm...> Created: July 2011 -Version: 0.1 +Version: 0.2 */ @@ -124,11 +124,36 @@ info)); if (f77_exception_encountered) - error ("hinfsyn: slsb10kd: exception in SLICOT subroutine SB10KD"); + error ("ncfsyn: slsb10kd: exception in SLICOT subroutine SB10KD"); if (info != 0) - error ("hinfsyn: slsb10kd: SB10KD returned info = %d", info); + { + if (info < 0) + error ("ncfsyn: slsb10kd: the %d-th argument had an invalid value", info); + else + { + switch (info) + { + case 1: + error ("ncfsyn: 1: the P-Riccati equation is not solved successfully"); + case 2: + error ("ncfsyn: 2: the Q-Riccati equation is not solved successfully"); + case 3: + error ("ncfsyn: 3: the X-Riccati equation is not solved successfully"); + case 4: + error ("ncfsyn: 4: the iteration to compute eigenvalues failed to " + "converge"); + case 5: + error ("ncfsyn: 5: the matrix Rx + Bx'*X*Bx is singular"); + case 6: + error ("ncfsyn: 6: the closed-loop system is unstable"); + default: + error ("ncfsyn: unknown error, info = %d", info); + } + } + } + // resizing ak.resize (n, n); bk.resize (n, np); Modified: trunk/octave-forge/main/control/src/slsb10zd.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb10zd.cc 2011-11-04 20:18:44 UTC (rev 8987) +++ trunk/octave-forge/main/control/src/slsb10zd.cc 2011-11-04 22:36:35 UTC (rev 8988) @@ -23,7 +23,7 @@ Author: Lukas Reichlin <luk...@gm...> Created: August 2011 -Version: 0.1 +Version: 0.2 */ @@ -134,8 +134,41 @@ error ("hinfsyn: slsb10zd: exception in SLICOT subroutine SB10ZD"); if (info != 0) - error ("hinfsyn: slsb10zd: SB10ZD returned info = %d", info); + { + if (info < 0) + error ("ncfsyn: slsb10zd: the %d-th argument had an invalid value", info); + else + { + switch (info) + { + case 1: + error ("ncfsyn: 1: the P-Riccati equation is not solved successfully"); + case 2: + error ("ncfsyn: 2: the Q-Riccati equation is not solved successfully"); + case 3: + error ("ncfsyn: 3: the iteration to compute eigenvalues or singular " + "values failed to converge"); + case 4: + error ("ncfsyn: 4: the matrix (gamma^2-1)*In - P*Q is singular"); + case 5: + error ("ncfsyn: 5: the matrix Rx + Bx'*X*Bx is singular"); + case 6: + error ("ncfsyn: 6: the matrix Ip + D*Dk is singular"); + case 7: + error ("ncfsyn: 7: the matrix Im + Dk*D is singular"); + case 8: + error ("ncfsyn: 8: the matrix Ip - D*Dk is singular"); + case 9: + error ("ncfsyn: 9: the matrix Im - Dk*D is singular"); + case 10: + error ("ncfsyn: 10: the closed-loop system is unstable"); + default: + error ("ncfsyn: unknown error, info = %d", info); + } + } + } + // resizing ak.resize (n, n); bk.resize (n, np); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2011-11-04 23:02:33
|
Revision: 8989 http://octave.svn.sourceforge.net/octave/?rev=8989&view=rev Author: paramaniac Date: 2011-11-04 23:02:27 +0000 (Fri, 04 Nov 2011) Log Message: ----------- control: improve error messages for hinfsyn Modified Paths: -------------- trunk/octave-forge/main/control/src/slsb10dd.cc trunk/octave-forge/main/control/src/slsb10fd.cc Modified: trunk/octave-forge/main/control/src/slsb10dd.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb10dd.cc 2011-11-04 22:36:35 UTC (rev 8988) +++ trunk/octave-forge/main/control/src/slsb10dd.cc 2011-11-04 23:02:27 UTC (rev 8989) @@ -1,6 +1,6 @@ /* -Copyright (C) 2009, 2010 Lukas F. Reichlin +Copyright (C) 2009, 2010, 2011 Lukas F. Reichlin This file is part of LTI Syncope. @@ -23,7 +23,7 @@ Author: Lukas Reichlin <luk...@gm...> Created: December 2009 -Version: 0.3 +Version: 0.4 */ @@ -152,9 +152,47 @@ if (f77_exception_encountered) error ("hinfsyn: slsb10dd: exception in SLICOT subroutine SB10DD"); - + if (info != 0) - error ("hinfsyn: slsb10dd: SB10DD returned info = %d", info); + { + if (info < 0) + error ("hinfsyn: slsb10dd: the %d-th argument had an invalid value", info); + else + { + switch (info) + { + case 1: + error ("hinfsyn: 1: the matrix [A-exp(j*Theta)*I, B2; C1, D12] " + "had not full column rank"); + case 2: + error ("hinfsyn: 2: the matrix | A-exp(j*Theta)*I, B1; C2, D21] " + "had not full row rank"); + case 3: + error ("hinfsyn: 3: the matrix D12 had not full column rank"); + case 4: + error ("hinfsyn: 4: the matrix D21 had not full row rank"); + case 5: + error ("hinfsyn: 5: the controller is not admissible " + "(too small value of gamma)"); + case 6: + error ("hinfsyn: 6: the X-Riccati equation was not solved " + "successfully (the controller is not admissible or " + "there are numerical difficulties)"); + case 7: + error ("hinfsyn: 7: the Z-Riccati equation was not solved " + "successfully (the controller is not admissible or " + "there are numerical difficulties)"); + case 8: + error ("hinfsyn: 8: the matrix Im2 + DKHAT*D22 is singular"); + case 9: + error ("hinfsyn: 9: the singular value decomposition (SVD) algorithm " + "did not converge (when computing the SVD of one of " + "the matrices [A, B2; C1, D12], [A, B1; C2, D21], D12 or D21)"); + default: + error ("hinfsyn: unknown error, info = %d", info); + } + } + } // return values retval(0) = ak; Modified: trunk/octave-forge/main/control/src/slsb10fd.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb10fd.cc 2011-11-04 22:36:35 UTC (rev 8988) +++ trunk/octave-forge/main/control/src/slsb10fd.cc 2011-11-04 23:02:27 UTC (rev 8989) @@ -1,6 +1,6 @@ /* -Copyright (C) 2009, 2010 Lukas F. Reichlin +Copyright (C) 2009, 2010, 2011 Lukas F. Reichlin This file is part of LTI Syncope. @@ -23,7 +23,7 @@ Author: Lukas Reichlin <luk...@gm...> Created: December 2009 -Version: 0.3 +Version: 0.4 */ @@ -147,8 +147,49 @@ error ("hinfsyn: slsb10fd: exception in SLICOT subroutine SB10FD"); if (info != 0) - error ("hinfsyn: slsb10fd: SB10FD returned info = %d", info); - + { + if (info < 0) + error ("hinfsyn: slsb10fd: the %d-th argument had an invalid value", info); + else + { + switch (info) + { + case 1: + error ("hinfsyn: 1: the matrix [A-j*omega*I, B2; C1, D12] had " + "not full column rank in respect to the tolerance EPS"); + case 2: + error ("hinfsyn: 2: the matrix [A-j*omega*I, B1; C2, D21] " + "had not full row rank in respect to the tolerance EPS"); + case 3: + error ("hinfsyn: 3: the matrix D12 had not full column rank in " + "respect to the tolerance TOL"); + case 4: + error ("hinfsyn: 4: the matrix D21 had not full row rank in respect " + "to the tolerance TOL"); + case 5: + error ("hinfsyn: 5: the singular value decomposition (SVD) algorithm " + "did not converge (when computing the SVD of one of the matrices " + "[A, B2; C1, D12], [A, B1; C2, D21], D12 or D21)"); + case 6: + error ("hinfsyn: 6: the controller is not admissible (too small value " + "of gamma)"); + case 7: + error ("hinfsyn: 7: the X-Riccati equation was not solved " + "successfully (the controller is not admissible or " + "there are numerical difficulties)"); + case 8: + error ("hinfsyn: 8: the Y-Riccati equation was not solved " + "successfully (the controller is not admissible or " + "there are numerical difficulties)"); + case 9: + error ("hinfsyn: 9: the determinant of Im2 + Tu*D11HAT*Ty*D22 is " + "zero [3]"); + default: + error ("hinfsyn: unknown error, info = %d", info); + } + } + } + // return values retval(0) = ak; retval(1) = bk; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2011-11-04 23:21:43
|
Revision: 8990 http://octave.svn.sourceforge.net/octave/?rev=8990&view=rev Author: paramaniac Date: 2011-11-04 23:21:36 +0000 (Fri, 04 Nov 2011) Log Message: ----------- control: improve error messages for h2syn Modified Paths: -------------- trunk/octave-forge/main/control/src/slsb10ed.cc trunk/octave-forge/main/control/src/slsb10hd.cc Modified: trunk/octave-forge/main/control/src/slsb10ed.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb10ed.cc 2011-11-04 23:02:27 UTC (rev 8989) +++ trunk/octave-forge/main/control/src/slsb10ed.cc 2011-11-04 23:21:36 UTC (rev 8990) @@ -1,6 +1,6 @@ /* -Copyright (C) 2009, 2010 Lukas F. Reichlin +Copyright (C) 2009, 2010, 2011 Lukas F. Reichlin This file is part of LTI Syncope. @@ -23,7 +23,7 @@ Author: Lukas Reichlin <luk...@gm...> Created: November 2009 -Version: 0.3 +Version: 0.4 */ @@ -140,10 +140,53 @@ if (f77_exception_encountered) error ("h2syn: slsb10ed: exception in SLICOT subroutine SB10ED"); - + if (info != 0) - error ("h2syn: slsb10ed: SB10ED returned info = %d", info); - + { + if (info < 0) + error ("h2syn: slsb10ed: the %d-th argument had an invalid value", info); + else + { + switch (info) + { + case 1: + error ("h2syn: 1: the matrix [A-exp(j*Theta)*I, B2; C1, D12] " + "had not full column rank in respect to the tolerance EPS"); + case 2: + error ("h2syn: 2: the matrix [A-exp(j*Theta)*I, B1; C2, D21] " + "had not full row rank in respect to the tolerance EPS"); + case 3: + error ("h2syn: 3: the matrix D12 had not full column rank in " + "respect to the tolerance TOL"); + case 4: + error ("h2syn: 4: the matrix D21 had not full row rank in respect " + "to the tolerance TOL"); + case 5: + error ("h2syn: 5: the singular value decomposition (SVD) algorithm " + "did not converge (when computing the SVD of one of the matrices " + "[A-I, B2; C1, D12], [A-I, B1; C2, D21], D12 or D21)"); + case 6: + error ("h2syn: 6: the X-Riccati equation was not solved successfully"); + case 7: + error ("h2syn: 7: the matrix Im2 + B2'*X2*B2 is not positive " + "definite, or it is numerically singular (with " + "respect to the tolerance TOL)"); + case 8: + error ("h2syn: 8: the Y-Riccati equation was not solved successfully"); + case 9: + error ("h2syn: 9: the matrix Ip2 + C2*Y2*C2' is not positive " + "definite, or it is numerically singular (with " + "respect to the tolerance TOL)"); + case 10: + error ("h2syn: 10: the matrix Im2 + DKHAT*D22 is singular, or its " + "estimated condition number is larger than or equal " + "to 1/TOL"); + default: + error ("h2syn: unknown error, info = %d", info); + } + } + } + // return values retval(0) = ak; retval(1) = bk; Modified: trunk/octave-forge/main/control/src/slsb10hd.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb10hd.cc 2011-11-04 23:02:27 UTC (rev 8989) +++ trunk/octave-forge/main/control/src/slsb10hd.cc 2011-11-04 23:21:36 UTC (rev 8990) @@ -1,6 +1,6 @@ /* -Copyright (C) 2009, 2010 Lukas F. Reichlin +Copyright (C) 2009, 2010, 2011 Lukas F. Reichlin This file is part of LTI Syncope. @@ -23,7 +23,7 @@ Author: Lukas Reichlin <luk...@gm...> Created: November 2009 -Version: 0.3 +Version: 0.4 */ @@ -139,7 +139,32 @@ error ("h2syn: slsb10hd: exception in SLICOT subroutine SB10HD"); if (info != 0) - error ("h2syn: slsb10hd: SB10HD returned info = %d", info); + { + if (info < 0) + error ("h2syn: slsb10hd: the %d-th argument had an invalid value", info); + else + { + switch (info) + { + case 1: + error ("h2syn: 1: the matrix D12 had not full column rank in " + "respect to the tolerance TOL"); + case 2: + error ("h2syn: 2: the matrix D21 had not full row rank in respect " + "to the tolerance TOL"); + case 3: + error ("h2syn: 3: the singular value decomposition (SVD) algorithm " + "did not converge (when computing the SVD of one of " + "the matrices D12 or D21)"); + case 4: + error ("h2syn: 4: the X-Riccati equation was not solved successfully"); + case 5: + error ("h2syn: 5: the Y-Riccati equation was not solved successfully"); + default: + error ("h2syn: unknown error, info = %d", info); + } + } + } // return values retval(0) = ak; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2011-11-04 23:38:48
|
Revision: 8991 http://octave.svn.sourceforge.net/octave/?rev=8991&view=rev Author: paramaniac Date: 2011-11-04 23:38:40 +0000 (Fri, 04 Nov 2011) Log Message: ----------- control: improve error messages for ARE solvers Modified Paths: -------------- trunk/octave-forge/main/control/src/slsb02od.cc trunk/octave-forge/main/control/src/slsg02ad.cc Modified: trunk/octave-forge/main/control/src/slsb02od.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb02od.cc 2011-11-04 23:21:36 UTC (rev 8990) +++ trunk/octave-forge/main/control/src/slsb02od.cc 2011-11-04 23:38:40 UTC (rev 8991) @@ -1,6 +1,6 @@ /* -Copyright (C) 2010 Lukas F. Reichlin +Copyright (C) 2010, 2011 Lukas F. Reichlin This file is part of LTI Syncope. @@ -23,7 +23,7 @@ Author: Lukas Reichlin <luk...@gm...> Created: February 2010 -Version: 0.2.1 +Version: 0.3 */ @@ -174,7 +174,38 @@ error ("are: slsb02od: exception in SLICOT subroutine SB02OD"); if (info != 0) - error ("are: slsb02od: SB02OD returned info = %d", info); + { + if (info < 0) + error ("are: slsb02od: the %d-th argument had an invalid value", info); + else + { + switch (info) + { + case 1: + error ("are: 1: the computed extended matrix pencil is singular, " + "possibly due to rounding errors"); + case 2: + error ("are: 2: the QZ (or QR) algorithm failed"); + case 3: + error ("are: 3: reordering of the (generalized) eigenvalues " + "failed"); + case 4: + error ("are: 4: after reordering, roundoff changed values of " + "some complex eigenvalues so that leading eigenvalues " + "in the (generalized) Schur form no longer satisfy " + "the stability condition; this could also be caused " + "due to scaling"); + case 5: + error ("are: 5: the computed dimension of the solution does not " + "equal N"); + case 6: + error ("are: 6: a singular matrix was encountered during the " + "computation of the solution matrix X"); + default: + error ("are: unknown error, info = %d", info); + } + } + } // assemble complex vector - adapted from DEFUN complex in data.cc alfar.resize (n); Modified: trunk/octave-forge/main/control/src/slsg02ad.cc =================================================================== --- trunk/octave-forge/main/control/src/slsg02ad.cc 2011-11-04 23:21:36 UTC (rev 8990) +++ trunk/octave-forge/main/control/src/slsg02ad.cc 2011-11-04 23:38:40 UTC (rev 8991) @@ -1,6 +1,6 @@ /* -Copyright (C) 2010 Lukas F. Reichlin +Copyright (C) 2010, 2011 Lukas F. Reichlin This file is part of LTI Syncope. @@ -23,7 +23,7 @@ Author: Lukas Reichlin <luk...@gm...> Created: October 2010 -Version: 0.1 +Version: 0.2 */ @@ -183,10 +183,44 @@ error ("are: slsg02ad: exception in SLICOT subroutine SG02AD"); if (iwarn != 0) - warning ("are: slsg02ad: solution may be inaccurate due to poor scaling or eigenvalues too close to the boundary of the stability domain"); + warning ("are: slsg02ad: solution may be inaccurate due to poor scaling " + "or eigenvalues too close to the boundary of the stability domain"); if (info != 0) - error ("are: slsg02ad: SG02AD returned info = %d", info); + { + if (info < 0) + error ("are: slsg02ad: the %d-th argument had an invalid value", info); + else + { + switch (info) + { + case 1: + error ("are: 1: the computed extended matrix pencil is singular, " + "possibly due to rounding errors"); + case 2: + error ("are: 2: the QZ algorithm failed"); + case 3: + error ("are: 3: reordering of the generalized eigenvalues failed"); + case 4: + error ("are: 4: after reordering, roundoff changed values of " + "some complex eigenvalues so that leading eigenvalues " + "in the generalized Schur form no longer satisfy the " + "stability condition; this could also be caused due " + "to scaling"); + case 5: + error ("are: 5: the computed dimension of the solution does not " + "equal N"); + case 6: + error ("are: 6: the spectrum is too close to the boundary of " + "the stability domain"); + case 7: + error ("are: 7: a singular matrix was encountered during the " + "computation of the solution matrix X"); + default: + error ("are: unknown error, info = %d", info); + } + } + } // assemble complex vector - adapted from DEFUN complex in data.cc alfar.resize (n); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2011-12-21 07:47:13
|
Revision: 9446 http://octave.svn.sourceforge.net/octave/?rev=9446&view=rev Author: paramaniac Date: 2011-12-21 07:47:05 +0000 (Wed, 21 Dec 2011) Log Message: ----------- control: more compact code due to use of common function for warning and error messages Modified Paths: -------------- trunk/octave-forge/main/control/src/common.cc trunk/octave-forge/main/control/src/slsb01bd.cc trunk/octave-forge/main/control/src/slsb02od.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/slsb10id.cc trunk/octave-forge/main/control/src/slsb10kd.cc trunk/octave-forge/main/control/src/slsb10zd.cc trunk/octave-forge/main/control/src/slsg02ad.cc Modified: trunk/octave-forge/main/control/src/common.cc =================================================================== --- trunk/octave-forge/main/control/src/common.cc 2011-12-20 23:19:14 UTC (rev 9445) +++ trunk/octave-forge/main/control/src/common.cc 2011-12-21 07:47:05 UTC (rev 9446) @@ -1,6 +1,6 @@ /* -Copyright (C) 2010 Lukas F. Reichlin +Copyright (C) 2010, 2011 Lukas F. Reichlin This file is part of LTI Syncope. @@ -21,7 +21,7 @@ Author: Lukas Reichlin <luk...@gm...> Created: April 2010 -Version: 0.1 +Version: 0.3 */ @@ -44,6 +44,11 @@ return max (max (a, b), max (c, d)); } +int max (int a, int b, int c, int d, int e) +{ + return max (max (a, b, c, d), e); +} + int min (int a, int b) { if (a < b) @@ -51,3 +56,40 @@ else return b; } + +void error_msg (const char name[], int index, int max, const char* msg[]) +{ + if (index == 0) + return; + + if (index < 0) + error ("%s: the %d-th argument had an invalid value", name, index); + else if (index <= max) + error ("%s: %s", name, msg[index]); + else + error ("%s: unknown error, info = %d", name, index); +} + +void warning_msg (const char name[], int index, int max, const char* msg[]) +{ + if (index == 0) + return; + + if (index > 0 && index <= max) + warning ("%s: %s", name, msg[index]); + else + warning ("%s: unknown warning, iwarn = %d", name, index); +} + +void warning_msg (const char name[], int index, int max, const char* msg[], int offset) +{ + if (index == 0) + return; + + if (index > 0 && index <= max) + warning ("%s: %s", name, msg[index]); + else if (index > offset) + warning ("%s: %d+%d: %d %s", name, offset, index-offset, index-offset, msg[max+1]); + else + warning ("%s: unknown warning, iwarn = %d", name, index); +} Modified: trunk/octave-forge/main/control/src/slsb01bd.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb01bd.cc 2011-12-20 23:19:14 UTC (rev 9445) +++ trunk/octave-forge/main/control/src/slsb01bd.cc 2011-12-21 07:47:05 UTC (rev 9446) @@ -1,6 +1,6 @@ /* -Copyright (C) 2009, 2010 Lukas F. Reichlin +Copyright (C) 2009, 2010, 2011 Lukas F. Reichlin This file is part of LTI Syncope. @@ -23,7 +23,7 @@ Author: Lukas Reichlin <luk...@gm...> Created: November 2009 -Version: 0.4 +Version: 0.5 */ @@ -124,48 +124,35 @@ if (f77_exception_encountered) error ("place: slsb01bd: exception in SLICOT subroutine SB01BD"); - if (info != 0) - error ("place: slsb01bd: SB01BD returned info = %d", info); + static const char* err_msg[] = { + "0: OK", + "1: the reduction of A to a real Schur form failed.", + "2: a failure was detected during the ordering of the " + "real Schur form of A, or in the iterative process " + "for reordering the eigenvalues of Z'*(A + B*F)*Z " + "along the diagonal.", + "3: the number of eigenvalues to be assigned is less " + "than the number of possibly assignable eigenvalues; " + "NAP eigenvalues have been properly assigned, " + "but some assignable eigenvalues remain unmodified.", + "4: an attempt is made to place a complex conjugate " + "pair on the location of a real eigenvalue. This " + "situation can only appear when N-NFP is odd, " + "NP > N-NFP-NUP is even, and for the last real " + "eigenvalue to be modified there exists no available " + "real eigenvalue to be assigned. However, NAP " + "eigenvalues have been already properly assigned."}; - if (info != 0) - { - if (info < 0) - error ("place: slsb01bd: the %d-th argument had an invalid value", info); - else - { - switch (info) - { - case 1: - error ("place: 1: the reduction of A to a real Schur form failed."); - case 2: - error ("place: 2: a failure was detected during the ordering of the " - "real Schur form of A, or in the iterative process " - "for reordering the eigenvalues of Z'*(A + B*F)*Z " - "along the diagonal."); - case 3: - error ("place: 3: the number of eigenvalues to be assigned is less " - "than the number of possibly assignable eigenvalues; " - "NAP eigenvalues have been properly assigned, " - "but some assignable eigenvalues remain unmodified."); - case 4: - error ("place: 4: an attempt is made to place a complex conjugate " - "pair on the location of a real eigenvalue. This " - "situation can only appear when N-NFP is odd, " - "NP > N-NFP-NUP is even, and for the last real " - "eigenvalue to be modified there exists no available " - "real eigenvalue to be assigned. However, NAP " - "eigenvalues have been already properly assigned."); - default: - error ("place: unknown error, info = %d", info); - } - } - } + static const char* warn_msg[] = { + "0: OK", +/* 0+%d: %d */ "violations of the numerical stability condition " + "NORM(F) <= 100*NORM(A)/NORM(B) occured during the " + "assignment of eigenvalues."}; - if (iwarn != 0) - warning ("place: slsb01bd: %d violations of the numerical stability condition " - "NORM(F) <= 100*NORM(A)/NORM(B) occured during the " - "assignment of eigenvalues.", iwarn); + error_msg ("place", info, 4, err_msg); + warning_msg ("place", iwarn, 0, warn_msg, 0); + // return values retval(0) = f; retval(1) = octave_value (nfp); Modified: trunk/octave-forge/main/control/src/slsb02od.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb02od.cc 2011-12-20 23:19:14 UTC (rev 9445) +++ trunk/octave-forge/main/control/src/slsb02od.cc 2011-12-21 07:47:05 UTC (rev 9446) @@ -23,7 +23,7 @@ Author: Lukas Reichlin <luk...@gm...> Created: February 2010 -Version: 0.3 +Version: 0.4 */ @@ -173,40 +173,26 @@ if (f77_exception_encountered) error ("are: slsb02od: exception in SLICOT subroutine SB02OD"); - if (info != 0) - { - if (info < 0) - error ("are: slsb02od: the %d-th argument had an invalid value", info); - else - { - switch (info) - { - case 1: - error ("are: 1: the computed extended matrix pencil is singular, " - "possibly due to rounding errors"); - case 2: - error ("are: 2: the QZ (or QR) algorithm failed"); - case 3: - error ("are: 3: reordering of the (generalized) eigenvalues " - "failed"); - case 4: - error ("are: 4: after reordering, roundoff changed values of " - "some complex eigenvalues so that leading eigenvalues " - "in the (generalized) Schur form no longer satisfy " - "the stability condition; this could also be caused " - "due to scaling"); - case 5: - error ("are: 5: the computed dimension of the solution does not " - "equal N"); - case 6: - error ("are: 6: a singular matrix was encountered during the " - "computation of the solution matrix X"); - default: - error ("are: unknown error, info = %d", info); - } - } - } + static const char* err_msg[] = { + "0: OK", + "1: the computed extended matrix pencil is singular, " + "possibly due to rounding errors", + "2: the QZ (or QR) algorithm failed", + "3: reordering of the (generalized) eigenvalues " + "failed", + "4: after reordering, roundoff changed values of " + "some complex eigenvalues so that leading eigenvalues " + "in the (generalized) Schur form no longer satisfy " + "the stability condition; this could also be caused " + "due to scaling", + "5: the computed dimension of the solution does not " + "equal N", + "6: a singular matrix was encountered during the " + "computation of the solution matrix X"}; + error_msg ("are", info, 6, err_msg); + + // assemble complex vector - adapted from DEFUN complex in data.cc alfar.resize (n); alfai.resize (n); Modified: trunk/octave-forge/main/control/src/slsb10dd.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb10dd.cc 2011-12-20 23:19:14 UTC (rev 9445) +++ trunk/octave-forge/main/control/src/slsb10dd.cc 2011-12-21 07:47:05 UTC (rev 9446) @@ -23,7 +23,7 @@ Author: Lukas Reichlin <luk...@gm...> Created: December 2009 -Version: 0.4 +Version: 0.5 */ @@ -152,48 +152,31 @@ if (f77_exception_encountered) error ("hinfsyn: slsb10dd: exception in SLICOT subroutine SB10DD"); + + static const char* err_msg[] = { + "0: OK", + "1: the matrix [A-exp(j*Theta)*I, B2; C1, D12] " + "had not full column rank", + "2: the matrix | A-exp(j*Theta)*I, B1; C2, D21] " + "had not full row rank", + "3: the matrix D12 had not full column rank", + "4: the matrix D21 had not full row rank", + "5: the controller is not admissible " + "(too small value of gamma)", + "6: the X-Riccati equation was not solved " + "successfully (the controller is not admissible or " + "there are numerical difficulties)", + "7: the Z-Riccati equation was not solved " + "successfully (the controller is not admissible or " + "there are numerical difficulties)", + "8: the matrix Im2 + DKHAT*D22 is singular", + "9: the singular value decomposition (SVD) algorithm " + "did not converge (when computing the SVD of one of " + "the matrices [A, B2; C1, D12], [A, B1; C2, D21], D12 or D21)"}; + + error_msg ("hinfsyn", info, 9, err_msg); + - if (info != 0) - { - if (info < 0) - error ("hinfsyn: slsb10dd: the %d-th argument had an invalid value", info); - else - { - switch (info) - { - case 1: - error ("hinfsyn: 1: the matrix [A-exp(j*Theta)*I, B2; C1, D12] " - "had not full column rank"); - case 2: - error ("hinfsyn: 2: the matrix | A-exp(j*Theta)*I, B1; C2, D21] " - "had not full row rank"); - case 3: - error ("hinfsyn: 3: the matrix D12 had not full column rank"); - case 4: - error ("hinfsyn: 4: the matrix D21 had not full row rank"); - case 5: - error ("hinfsyn: 5: the controller is not admissible " - "(too small value of gamma)"); - case 6: - error ("hinfsyn: 6: the X-Riccati equation was not solved " - "successfully (the controller is not admissible or " - "there are numerical difficulties)"); - case 7: - error ("hinfsyn: 7: the Z-Riccati equation was not solved " - "successfully (the controller is not admissible or " - "there are numerical difficulties)"); - case 8: - error ("hinfsyn: 8: the matrix Im2 + DKHAT*D22 is singular"); - case 9: - error ("hinfsyn: 9: the singular value decomposition (SVD) algorithm " - "did not converge (when computing the SVD of one of " - "the matrices [A, B2; C1, D12], [A, B1; C2, D21], D12 or D21)"); - default: - error ("hinfsyn: unknown error, info = %d", info); - } - } - } - // return values retval(0) = ak; retval(1) = bk; Modified: trunk/octave-forge/main/control/src/slsb10ed.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb10ed.cc 2011-12-20 23:19:14 UTC (rev 9445) +++ trunk/octave-forge/main/control/src/slsb10ed.cc 2011-12-21 07:47:05 UTC (rev 9446) @@ -23,7 +23,7 @@ Author: Lukas Reichlin <luk...@gm...> Created: November 2009 -Version: 0.4 +Version: 0.5 */ @@ -141,52 +141,34 @@ if (f77_exception_encountered) error ("h2syn: slsb10ed: exception in SLICOT subroutine SB10ED"); - if (info != 0) - { - if (info < 0) - error ("h2syn: slsb10ed: the %d-th argument had an invalid value", info); - else - { - switch (info) - { - case 1: - error ("h2syn: 1: the matrix [A-exp(j*Theta)*I, B2; C1, D12] " - "had not full column rank in respect to the tolerance EPS"); - case 2: - error ("h2syn: 2: the matrix [A-exp(j*Theta)*I, B1; C2, D21] " - "had not full row rank in respect to the tolerance EPS"); - case 3: - error ("h2syn: 3: the matrix D12 had not full column rank in " - "respect to the tolerance TOL"); - case 4: - error ("h2syn: 4: the matrix D21 had not full row rank in respect " - "to the tolerance TOL"); - case 5: - error ("h2syn: 5: the singular value decomposition (SVD) algorithm " - "did not converge (when computing the SVD of one of the matrices " - "[A-I, B2; C1, D12], [A-I, B1; C2, D21], D12 or D21)"); - case 6: - error ("h2syn: 6: the X-Riccati equation was not solved successfully"); - case 7: - error ("h2syn: 7: the matrix Im2 + B2'*X2*B2 is not positive " - "definite, or it is numerically singular (with " - "respect to the tolerance TOL)"); - case 8: - error ("h2syn: 8: the Y-Riccati equation was not solved successfully"); - case 9: - error ("h2syn: 9: the matrix Ip2 + C2*Y2*C2' is not positive " - "definite, or it is numerically singular (with " - "respect to the tolerance TOL)"); - case 10: - error ("h2syn: 10: the matrix Im2 + DKHAT*D22 is singular, or its " - "estimated condition number is larger than or equal " - "to 1/TOL"); - default: - error ("h2syn: unknown error, info = %d", info); - } - } - } + static const char* err_msg[] = { + "0: OK", + "1: the matrix [A-exp(j*Theta)*I, B2; C1, D12] " + "had not full column rank in respect to the tolerance EPS", + "2: the matrix [A-exp(j*Theta)*I, B1; C2, D21] " + "had not full row rank in respect to the tolerance EPS", + "3: the matrix D12 had not full column rank in " + "respect to the tolerance TOL", + "4: the matrix D21 had not full row rank in respect " + "to the tolerance TOL", + "5: the singular value decomposition (SVD) algorithm " + "did not converge (when computing the SVD of one of the matrices " + "[A-I, B2; C1, D12], [A-I, B1; C2, D21], D12 or D21)", + "6: the X-Riccati equation was not solved successfully", + "7: the matrix Im2 + B2'*X2*B2 is not positive " + "definite, or it is numerically singular (with " + "respect to the tolerance TOL)", + "8: the Y-Riccati equation was not solved successfully", + "9: the matrix Ip2 + C2*Y2*C2' is not positive " + "definite, or it is numerically singular (with " + "respect to the tolerance TOL)", + "10: the matrix Im2 + DKHAT*D22 is singular, or its " + "estimated condition number is larger than or equal " + "to 1/TOL"}; + error_msg ("h2syn", info, 10, err_msg); + + // return values retval(0) = ak; retval(1) = bk; Modified: trunk/octave-forge/main/control/src/slsb10fd.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb10fd.cc 2011-12-20 23:19:14 UTC (rev 9445) +++ trunk/octave-forge/main/control/src/slsb10fd.cc 2011-12-21 07:47:05 UTC (rev 9446) @@ -23,7 +23,7 @@ Author: Lukas Reichlin <luk...@gm...> Created: December 2009 -Version: 0.4 +Version: 0.5 */ @@ -146,49 +146,32 @@ if (f77_exception_encountered) error ("hinfsyn: slsb10fd: exception in SLICOT subroutine SB10FD"); - if (info != 0) - { - if (info < 0) - error ("hinfsyn: slsb10fd: the %d-th argument had an invalid value", info); - else - { - switch (info) - { - case 1: - error ("hinfsyn: 1: the matrix [A-j*omega*I, B2; C1, D12] had " - "not full column rank in respect to the tolerance EPS"); - case 2: - error ("hinfsyn: 2: the matrix [A-j*omega*I, B1; C2, D21] " - "had not full row rank in respect to the tolerance EPS"); - case 3: - error ("hinfsyn: 3: the matrix D12 had not full column rank in " - "respect to the tolerance TOL"); - case 4: - error ("hinfsyn: 4: the matrix D21 had not full row rank in respect " - "to the tolerance TOL"); - case 5: - error ("hinfsyn: 5: the singular value decomposition (SVD) algorithm " - "did not converge (when computing the SVD of one of the matrices " - "[A, B2; C1, D12], [A, B1; C2, D21], D12 or D21)"); - case 6: - error ("hinfsyn: 6: the controller is not admissible (too small value " - "of gamma)"); - case 7: - error ("hinfsyn: 7: the X-Riccati equation was not solved " - "successfully (the controller is not admissible or " - "there are numerical difficulties)"); - case 8: - error ("hinfsyn: 8: the Y-Riccati equation was not solved " - "successfully (the controller is not admissible or " - "there are numerical difficulties)"); - case 9: - error ("hinfsyn: 9: the determinant of Im2 + Tu*D11HAT*Ty*D22 is " - "zero [3]"); - default: - error ("hinfsyn: unknown error, info = %d", info); - } - } - } + static const char* err_msg[] = { + "0: OK", + "1: the matrix [A-j*omega*I, B2; C1, D12] had " + "not full column rank in respect to the tolerance EPS", + "2: the matrix [A-j*omega*I, B1; C2, D21] " + "had not full row rank in respect to the tolerance EPS", + "3: the matrix D12 had not full column rank in " + "respect to the tolerance TOL", + "4: the matrix D21 had not full row rank in respect " + "to the tolerance TOL", + "5: the singular value decomposition (SVD) algorithm " + "did not converge (when computing the SVD of one of the matrices " + "[A, B2; C1, D12], [A, B1; C2, D21], D12 or D21)", + "6: the controller is not admissible (too small value " + "of gamma)", + "7: the X-Riccati equation was not solved " + "successfully (the controller is not admissible or " + "there are numerical difficulties)", + "8: the Y-Riccati equation was not solved " + "successfully (the controller is not admissible or " + "there are numerical difficulties)", + "9: the determinant of Im2 + Tu*D11HAT*Ty*D22 is " + "zero [3]"}; + + error_msg ("hinfsyn", info, 9, err_msg); + // return values retval(0) = ak; Modified: trunk/octave-forge/main/control/src/slsb10hd.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb10hd.cc 2011-12-20 23:19:14 UTC (rev 9445) +++ trunk/octave-forge/main/control/src/slsb10hd.cc 2011-12-21 07:47:05 UTC (rev 9446) @@ -23,7 +23,7 @@ Author: Lukas Reichlin <luk...@gm...> Created: November 2009 -Version: 0.4 +Version: 0.5 */ @@ -138,33 +138,20 @@ if (f77_exception_encountered) error ("h2syn: slsb10hd: exception in SLICOT subroutine SB10HD"); - if (info != 0) - { - if (info < 0) - error ("h2syn: slsb10hd: the %d-th argument had an invalid value", info); - else - { - switch (info) - { - case 1: - error ("h2syn: 1: the matrix D12 had not full column rank in " - "respect to the tolerance TOL"); - case 2: - error ("h2syn: 2: the matrix D21 had not full row rank in respect " - "to the tolerance TOL"); - case 3: - error ("h2syn: 3: the singular value decomposition (SVD) algorithm " - "did not converge (when computing the SVD of one of " - "the matrices D12 or D21)"); - case 4: - error ("h2syn: 4: the X-Riccati equation was not solved successfully"); - case 5: - error ("h2syn: 5: the Y-Riccati equation was not solved successfully"); - default: - error ("h2syn: unknown error, info = %d", info); - } - } - } + static const char* err_msg[] = { + "0: OK", + "1: the matrix D12 had not full column rank in " + "respect to the tolerance TOL", + "2: the matrix D21 had not full row rank in respect " + "to the tolerance TOL", + "3: the singular value decomposition (SVD) algorithm " + "did not converge (when computing the SVD of one of " + "the matrices D12 or D21)", + "4: the X-Riccati equation was not solved successfully", + "5: the Y-Riccati equation was not solved successfully"}; + + error_msg ("h2syn", info, 5, err_msg); + // return values retval(0) = ak; Modified: trunk/octave-forge/main/control/src/slsb10id.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb10id.cc 2011-12-20 23:19:14 UTC (rev 9445) +++ trunk/octave-forge/main/control/src/slsb10id.cc 2011-12-21 07:47:05 UTC (rev 9446) @@ -23,7 +23,7 @@ Author: Lukas Reichlin <luk...@gm...> Created: July 2011 -Version: 0.2 +Version: 0.3 */ @@ -130,33 +130,19 @@ if (f77_exception_encountered) error ("ncfsyn: slsb10id: exception in SLICOT subroutine SB10ID"); - if (info != 0) - { - if (info < 0) - error ("ncfsyn: slsb10id: the %d-th argument had an invalid value", info); - else - { - switch (info) - { - case 1: - error ("ncfsyn: 1: the X-Riccati equation is not solved successfully"); - case 2: - error ("ncfsyn: 2: the Z-Riccati equation is not solved successfully"); - case 3: - error ("ncfsyn: 3: the iteration to compute eigenvalues or singular " - "values failed to converge"); - case 4: - error ("ncfsyn: 4: the matrix Ip - D*Dk is singular"); - case 5: - error ("ncfsyn: 5: the matrix Im - Dk*D is singular"); - case 6: - error ("ncfsyn: 6: the closed-loop system is unstable"); - default: - error ("ncfsyn: unknown error, info = %d", info); - } - } - } + static const char* err_msg[] = { + "0: OK", + "1: the X-Riccati equation is not solved successfully", + "2: the Z-Riccati equation is not solved successfully", + "3: the iteration to compute eigenvalues or singular " + "values failed to converge", + "4: the matrix Ip - D*Dk is singular", + "5: the matrix Im - Dk*D is singular", + "6: the closed-loop system is unstable"}; + error_msg ("ncfsyn", info, 6, err_msg); + + // resizing ak.resize (nk, nk); bk.resize (nk, np); Modified: trunk/octave-forge/main/control/src/slsb10kd.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb10kd.cc 2011-12-20 23:19:14 UTC (rev 9445) +++ trunk/octave-forge/main/control/src/slsb10kd.cc 2011-12-21 07:47:05 UTC (rev 9446) @@ -23,7 +23,7 @@ Author: Lukas Reichlin <luk...@gm...> Created: July 2011 -Version: 0.2 +Version: 0.3 */ @@ -126,34 +126,19 @@ if (f77_exception_encountered) error ("ncfsyn: slsb10kd: exception in SLICOT subroutine SB10KD"); - if (info != 0) - { - if (info < 0) - error ("ncfsyn: slsb10kd: the %d-th argument had an invalid value", info); - else - { - switch (info) - { - case 1: - error ("ncfsyn: 1: the P-Riccati equation is not solved successfully"); - case 2: - error ("ncfsyn: 2: the Q-Riccati equation is not solved successfully"); - case 3: - error ("ncfsyn: 3: the X-Riccati equation is not solved successfully"); - case 4: - error ("ncfsyn: 4: the iteration to compute eigenvalues failed to " - "converge"); - case 5: - error ("ncfsyn: 5: the matrix Rx + Bx'*X*Bx is singular"); - case 6: - error ("ncfsyn: 6: the closed-loop system is unstable"); - default: - error ("ncfsyn: unknown error, info = %d", info); - } - } - } + static const char* err_msg[] = { + "0: OK", + "1: the P-Riccati equation is not solved successfully", + "2: the Q-Riccati equation is not solved successfully", + "3: the X-Riccati equation is not solved successfully", + "4: the iteration to compute eigenvalues failed to " + "converge", + "5: the matrix Rx + Bx'*X*Bx is singular", + "6: the closed-loop system is unstable"}; + error_msg ("ncfsyn", info, 6, err_msg); + // resizing ak.resize (n, n); bk.resize (n, np); Modified: trunk/octave-forge/main/control/src/slsb10zd.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb10zd.cc 2011-12-20 23:19:14 UTC (rev 9445) +++ trunk/octave-forge/main/control/src/slsb10zd.cc 2011-12-21 07:47:05 UTC (rev 9446) @@ -23,7 +23,7 @@ Author: Lukas Reichlin <luk...@gm...> Created: August 2011 -Version: 0.2 +Version: 0.3 */ @@ -133,42 +133,23 @@ if (f77_exception_encountered) error ("hinfsyn: slsb10zd: exception in SLICOT subroutine SB10ZD"); - if (info != 0) - { - if (info < 0) - error ("ncfsyn: slsb10zd: the %d-th argument had an invalid value", info); - else - { - switch (info) - { - case 1: - error ("ncfsyn: 1: the P-Riccati equation is not solved successfully"); - case 2: - error ("ncfsyn: 2: the Q-Riccati equation is not solved successfully"); - case 3: - error ("ncfsyn: 3: the iteration to compute eigenvalues or singular " - "values failed to converge"); - case 4: - error ("ncfsyn: 4: the matrix (gamma^2-1)*In - P*Q is singular"); - case 5: - error ("ncfsyn: 5: the matrix Rx + Bx'*X*Bx is singular"); - case 6: - error ("ncfsyn: 6: the matrix Ip + D*Dk is singular"); - case 7: - error ("ncfsyn: 7: the matrix Im + Dk*D is singular"); - case 8: - error ("ncfsyn: 8: the matrix Ip - D*Dk is singular"); - case 9: - error ("ncfsyn: 9: the matrix Im - Dk*D is singular"); - case 10: - error ("ncfsyn: 10: the closed-loop system is unstable"); - default: - error ("ncfsyn: unknown error, info = %d", info); - } - } - } + static const char* err_msg[] = { + "0: OK", + "1: the P-Riccati equation is not solved successfully", + "2: the Q-Riccati equation is not solved successfully", + "3: the iteration to compute eigenvalues or singular " + "values failed to converge", + "4: the matrix (gamma^2-1)*In - P*Q is singular", + "5: the matrix Rx + Bx'*X*Bx is singular", + "6: the matrix Ip + D*Dk is singular", + "7: the matrix Im + Dk*D is singular", + "8: the matrix Ip - D*Dk is singular", + "9: the matrix Im - Dk*D is singular", + "10: the closed-loop system is unstable"}; + error_msg ("ncfsyn", info, 10, err_msg); + // resizing ak.resize (n, n); bk.resize (n, np); Modified: trunk/octave-forge/main/control/src/slsg02ad.cc =================================================================== --- trunk/octave-forge/main/control/src/slsg02ad.cc 2011-12-20 23:19:14 UTC (rev 9445) +++ trunk/octave-forge/main/control/src/slsg02ad.cc 2011-12-21 07:47:05 UTC (rev 9446) @@ -23,7 +23,7 @@ Author: Lukas Reichlin <luk...@gm...> Created: October 2010 -Version: 0.2 +Version: 0.3 */ @@ -182,46 +182,34 @@ if (f77_exception_encountered) error ("are: slsg02ad: exception in SLICOT subroutine SG02AD"); - if (iwarn != 0) - warning ("are: slsg02ad: solution may be inaccurate due to poor scaling " - "or eigenvalues too close to the boundary of the stability domain"); + static const char* err_msg[] = { + "0: OK", + "1: the computed extended matrix pencil is singular, " + "possibly due to rounding errors", + "2: the QZ algorithm failed", + "3: reordering of the generalized eigenvalues failed", + "4: after reordering, roundoff changed values of " + "some complex eigenvalues so that leading eigenvalues " + "in the generalized Schur form no longer satisfy the " + "stability condition; this could also be caused due " + "to scaling", + "5: the computed dimension of the solution does not " + "equal N", + "6: the spectrum is too close to the boundary of " + "the stability domain", + "7: a singular matrix was encountered during the " + "computation of the solution matrix X"}; - if (info != 0) - { - if (info < 0) - error ("are: slsg02ad: the %d-th argument had an invalid value", info); - else - { - switch (info) - { - case 1: - error ("are: 1: the computed extended matrix pencil is singular, " - "possibly due to rounding errors"); - case 2: - error ("are: 2: the QZ algorithm failed"); - case 3: - error ("are: 3: reordering of the generalized eigenvalues failed"); - case 4: - error ("are: 4: after reordering, roundoff changed values of " - "some complex eigenvalues so that leading eigenvalues " - "in the generalized Schur form no longer satisfy the " - "stability condition; this could also be caused due " - "to scaling"); - case 5: - error ("are: 5: the computed dimension of the solution does not " - "equal N"); - case 6: - error ("are: 6: the spectrum is too close to the boundary of " - "the stability domain"); - case 7: - error ("are: 7: a singular matrix was encountered during the " - "computation of the solution matrix X"); - default: - error ("are: unknown error, info = %d", info); - } - } - } + static const char* warn_msg[] = { + "0: OK", + "1: solution may be inaccurate due to poor scaling " + "or eigenvalues too close to the boundary of the stability domain " + "(the imaginary axis, if DICO = 'C', or the unit circle, if DICO = 'D')"}; + error_msg ("are", info, 7, err_msg); + warning_msg ("are", iwarn, 1, warn_msg); + + // assemble complex vector - adapted from DEFUN complex in data.cc alfar.resize (n); alfai.resize (n); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2012-02-26 09:42:27
|
Revision: 9690 http://octave.svn.sourceforge.net/octave/?rev=9690&view=rev Author: paramaniac Date: 2012-02-26 09:42:19 +0000 (Sun, 26 Feb 2012) Log Message: ----------- control: create a single oct-file Modified Paths: -------------- trunk/octave-forge/main/control/src/Makefile trunk/octave-forge/main/control/src/slab01od.cc trunk/octave-forge/main/control/src/slab04md.cc trunk/octave-forge/main/control/src/slab08nd.cc trunk/octave-forge/main/control/src/slab09hd.cc trunk/octave-forge/main/control/src/slab09id.cc trunk/octave-forge/main/control/src/slab09jd.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/slag08bd.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/slsb03od.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/slsb10id.cc trunk/octave-forge/main/control/src/slsb10jd.cc trunk/octave-forge/main/control/src/slsb10kd.cc trunk/octave-forge/main/control/src/slsb10yd.cc trunk/octave-forge/main/control/src/slsb10zd.cc trunk/octave-forge/main/control/src/slsb16ad.cc trunk/octave-forge/main/control/src/slsb16bd.cc trunk/octave-forge/main/control/src/slsb16cd.cc trunk/octave-forge/main/control/src/slsg02ad.cc trunk/octave-forge/main/control/src/slsg03ad.cc trunk/octave-forge/main/control/src/slsg03bd.cc trunk/octave-forge/main/control/src/sltb01id.cc trunk/octave-forge/main/control/src/sltb01pd.cc trunk/octave-forge/main/control/src/sltb01ud.cc trunk/octave-forge/main/control/src/sltb04bd.cc trunk/octave-forge/main/control/src/sltd04ad.cc trunk/octave-forge/main/control/src/sltg01ad.cc trunk/octave-forge/main/control/src/sltg01hd.cc trunk/octave-forge/main/control/src/sltg01id.cc trunk/octave-forge/main/control/src/sltg01jd.cc trunk/octave-forge/main/control/src/sltg04bx.cc Added Paths: ----------- trunk/octave-forge/main/control/src/control_slicot_functions.cc Modified: trunk/octave-forge/main/control/src/Makefile =================================================================== --- trunk/octave-forge/main/control/src/Makefile 2012-02-26 08:39:01 UTC (rev 9689) +++ trunk/octave-forge/main/control/src/Makefile 2012-02-26 09:42:19 UTC (rev 9690) @@ -4,15 +4,7 @@ BLAS_LIBS := $(shell mkoctfile -p BLAS_LIBS) FLIBS := $(shell mkoctfile -p FLIBS) -all: slab08nd.oct slab13dd.oct slsb10hd.oct slsb10ed.oct slab13bd.oct \ - slsb01bd.oct slsb10fd.oct slsb10dd.oct slsb03md.oct slsb04md.oct \ - slsb04qd.oct slsg03ad.oct slsb02od.oct slab13ad.oct slab01od.oct \ - sltb01pd.oct slsb03od.oct slsg03bd.oct slag08bd.oct sltg01jd.oct \ - sltg01hd.oct sltg01id.oct slsg02ad.oct sltg04bx.oct sltb01id.oct \ - sltg01ad.oct slsb10id.oct slsb10kd.oct slsb10zd.oct sltb04bd.oct \ - slab04md.oct slsb10jd.oct sltd04ad.oct sltb01ud.oct slab09hd.oct \ - slab09id.oct slab09jd.oct slsb16ad.oct slsb16bd.oct slsb16cd.oct \ - slsb10yd.oct \ +all: control_slicot_functions.oct \ is_real_scalar.oct is_real_vector.oct is_real_matrix.oct \ is_real_square_matrix.oct \ copy_NEWS @@ -41,211 +33,11 @@ ar -r slicotlibrary.a *.o rm -rf *.o *.f slicot -# transmission zeros of state-space models -slab08nd.oct: slab08nd.cc slicotlibrary.a - mkoctfile slab08nd.cc slicotlibrary.a \ - ${LAPACK_LIBS} ${BLAS_LIBS} - -# L-infinity norm -slab13dd.oct: slab13dd.cc slicotlibrary.a - mkoctfile slab13dd.cc slicotlibrary.a \ +# slicot functions +control_slicot_functions.oct: control_slicot_functions.cc slicotlibrary.a + mkoctfile control_slicot_functions.cc slicotlibrary.a \ ${LAPACK_LIBS} ${BLAS_LIBS} ${FLIBS} -# H-2 controller synthesis - continuous-time -slsb10hd.oct: slsb10hd.cc slicotlibrary.a - mkoctfile slsb10hd.cc slicotlibrary.a \ - ${LAPACK_LIBS} ${BLAS_LIBS} - -# H-2 controller synthesis - discrete-time -slsb10ed.oct: slsb10ed.cc slicotlibrary.a - mkoctfile slsb10ed.cc slicotlibrary.a \ - ${LAPACK_LIBS} ${BLAS_LIBS} - -# H-2 norm -slab13bd.oct: slab13bd.cc slicotlibrary.a - mkoctfile slab13bd.cc slicotlibrary.a \ - ${LAPACK_LIBS} ${BLAS_LIBS} - -# Pole assignment -slsb01bd.oct: slsb01bd.cc slicotlibrary.a - mkoctfile slsb01bd.cc slicotlibrary.a \ - ${LAPACK_LIBS} ${BLAS_LIBS} - -# H-inf controller synthesis - continuous-time -slsb10fd.oct: slsb10fd.cc slicotlibrary.a - mkoctfile slsb10fd.cc slicotlibrary.a \ - ${LAPACK_LIBS} ${BLAS_LIBS} - -# H-inf controller synthesis - discrete-time -slsb10dd.oct: slsb10dd.cc slicotlibrary.a - mkoctfile slsb10dd.cc slicotlibrary.a \ - ${LAPACK_LIBS} ${BLAS_LIBS} - -# Lyapunov equations -slsb03md.oct: slsb03md.cc slicotlibrary.a - mkoctfile slsb03md.cc slicotlibrary.a \ - ${LAPACK_LIBS} ${BLAS_LIBS} - -# Sylvester equations - continuous-time -slsb04md.oct: slsb04md.cc slicotlibrary.a - mkoctfile slsb04md.cc slicotlibrary.a \ - ${LAPACK_LIBS} ${BLAS_LIBS} - -# Sylvester equations - discrete-time -slsb04qd.oct: slsb04qd.cc slicotlibrary.a - mkoctfile slsb04qd.cc slicotlibrary.a \ - ${LAPACK_LIBS} ${BLAS_LIBS} - -# generalized Lyapunov equations -slsg03ad.oct: slsg03ad.cc slicotlibrary.a - mkoctfile slsg03ad.cc slicotlibrary.a \ - ${LAPACK_LIBS} ${BLAS_LIBS} - -# algebraic Riccati equations -slsb02od.oct: slsb02od.cc slicotlibrary.a - mkoctfile slsb02od.cc slicotlibrary.a \ - ${LAPACK_LIBS} ${BLAS_LIBS} - -# Hankel singular values -slab13ad.oct: slab13ad.cc slicotlibrary.a - mkoctfile slab13ad.cc slicotlibrary.a \ - ${LAPACK_LIBS} ${BLAS_LIBS} - -# staircase form using orthogonal transformations -slab01od.oct: slab01od.cc slicotlibrary.a - mkoctfile slab01od.cc slicotlibrary.a \ - ${LAPACK_LIBS} ${BLAS_LIBS} - -# minimal realization of state-space models -sltb01pd.oct: sltb01pd.cc slicotlibrary.a - mkoctfile sltb01pd.cc slicotlibrary.a \ - $(LAPACK_LIBS) $(BLAS_LIBS) - -# Cholesky factor of Lyapunov equations -slsb03od.oct: slsb03od.cc slicotlibrary.a - mkoctfile slsb03od.cc slicotlibrary.a \ - ${LAPACK_LIBS} ${BLAS_LIBS} - -# Cholesky factor of generalized Lyapunov equations -slsg03bd.oct: slsg03bd.cc slicotlibrary.a - mkoctfile slsg03bd.cc slicotlibrary.a \ - ${LAPACK_LIBS} ${BLAS_LIBS} - -# transmission zeros of descriptor state-space models -slag08bd.oct: slag08bd.cc slicotlibrary.a - mkoctfile slag08bd.cc slicotlibrary.a \ - ${LAPACK_LIBS} ${BLAS_LIBS} - -# minimal realization of descriptor state-space models -sltg01jd.oct: sltg01jd.cc slicotlibrary.a - mkoctfile sltg01jd.cc slicotlibrary.a \ - ${LAPACK_LIBS} ${BLAS_LIBS} - -# controllability staircase form of descriptor state-space models -sltg01hd.oct: sltg01hd.cc slicotlibrary.a - mkoctfile sltg01hd.cc slicotlibrary.a \ - ${LAPACK_LIBS} ${BLAS_LIBS} - -# observability staircase form of descriptor state-space models -sltg01id.oct: sltg01id.cc slicotlibrary.a - mkoctfile sltg01id.cc slicotlibrary.a \ - ${LAPACK_LIBS} ${BLAS_LIBS} - -# solution of algebraic Riccati equations for descriptor systems -slsg02ad.oct: slsg02ad.cc slicotlibrary.a - mkoctfile slsg02ad.cc slicotlibrary.a \ - ${LAPACK_LIBS} ${BLAS_LIBS} - -# gain of descriptor state-space models -sltg04bx.oct: sltg04bx.cc slicotlibrary.a - mkoctfile sltg04bx.cc slicotlibrary.a \ - ${LAPACK_LIBS} ${BLAS_LIBS} - -# scaling of state-space models -sltb01id.oct: sltb01id.cc slicotlibrary.a - mkoctfile sltb01id.cc slicotlibrary.a \ - ${LAPACK_LIBS} ${BLAS_LIBS} - -# scaling of descriptor state-space models -sltg01ad.oct: sltg01ad.cc slicotlibrary.a - mkoctfile sltg01ad.cc slicotlibrary.a \ - ${LAPACK_LIBS} ${BLAS_LIBS} - -# H-infinity loop shaping - continuous-time -slsb10id.oct: slsb10id.cc slicotlibrary.a - mkoctfile slsb10id.cc slicotlibrary.a \ - ${LAPACK_LIBS} ${BLAS_LIBS} - -# H-infinity loop shaping - discrete-time - strictly proper case -slsb10kd.oct: slsb10kd.cc slicotlibrary.a - mkoctfile slsb10kd.cc slicotlibrary.a \ - ${LAPACK_LIBS} ${BLAS_LIBS} - -# H-infinity loop shaping - discrete-time - proper case -slsb10zd.oct: slsb10zd.cc slicotlibrary.a - mkoctfile slsb10zd.cc slicotlibrary.a \ - ${LAPACK_LIBS} ${BLAS_LIBS} - -# State-space to transfer function conversion -sltb04bd.oct: sltb04bd.cc slicotlibrary.a - mkoctfile sltb04bd.cc slicotlibrary.a \ - ${LAPACK_LIBS} ${BLAS_LIBS} - -# bilinear transformation -slab04md.oct: slab04md.cc slicotlibrary.a - mkoctfile slab04md.cc slicotlibrary.a \ - ${LAPACK_LIBS} ${BLAS_LIBS} - -# descriptor to regular state-space conversion -slsb10jd.oct: slsb10jd.cc slicotlibrary.a - mkoctfile slsb10jd.cc slicotlibrary.a \ - ${LAPACK_LIBS} ${BLAS_LIBS} - -# transfer function to state-space conversion -sltd04ad.oct: sltd04ad.cc slicotlibrary.a - mkoctfile sltd04ad.cc slicotlibrary.a \ - ${LAPACK_LIBS} ${BLAS_LIBS} - -# controllable block Hessenberg realization -sltb01ud.oct: sltb01ud.cc slicotlibrary.a - mkoctfile sltb01ud.cc slicotlibrary.a \ - ${LAPACK_LIBS} ${BLAS_LIBS} - -# balanced stochastic truncation model reduction -slab09hd.oct: slab09hd.cc slicotlibrary.a - mkoctfile slab09hd.cc slicotlibrary.a \ - ${LAPACK_LIBS} ${BLAS_LIBS} - -# balanced truncation & singular perturbation approximation model reduction -slab09id.oct: slab09id.cc slicotlibrary.a - mkoctfile slab09id.cc slicotlibrary.a \ - ${LAPACK_LIBS} ${BLAS_LIBS} - -# hankel-norm approximation model reduction -slab09jd.oct: slab09jd.cc slicotlibrary.a - mkoctfile slab09jd.cc slicotlibrary.a \ - ${LAPACK_LIBS} ${BLAS_LIBS} - -# balanced truncation & singular perturbation approximation controller reduction -slsb16ad.oct: slsb16ad.cc slicotlibrary.a - mkoctfile slsb16ad.cc slicotlibrary.a \ - ${LAPACK_LIBS} ${BLAS_LIBS} - -# coprime factorization state-feedback controller reduction -slsb16bd.oct: slsb16bd.cc slicotlibrary.a - mkoctfile slsb16bd.cc slicotlibrary.a \ - ${LAPACK_LIBS} ${BLAS_LIBS} - -# frequency-weighted coprime factorization state-feedback controller reduction -slsb16cd.oct: slsb16cd.cc slicotlibrary.a - mkoctfile slsb16cd.cc slicotlibrary.a \ - ${LAPACK_LIBS} ${BLAS_LIBS} - -# fit state-space model to frequency response data -slsb10yd.oct: slsb10yd.cc slicotlibrary.a - mkoctfile slsb10yd.cc slicotlibrary.a \ - ${LAPACK_LIBS} ${BLAS_LIBS} - # helpers is_real_scalar.oct: is_real_scalar.cc mkoctfile is_real_scalar.cc Added: trunk/octave-forge/main/control/src/control_slicot_functions.cc =================================================================== --- trunk/octave-forge/main/control/src/control_slicot_functions.cc (rev 0) +++ trunk/octave-forge/main/control/src/control_slicot_functions.cc 2012-02-26 09:42:19 UTC (rev 9690) @@ -0,0 +1,46 @@ +#define SLICOTCONTROL "control_slicot_functions" + +#include <octave/oct.h> +#include "common.cc" + +#include "slab08nd.cc" +#include "slab13dd.cc" +#include "slsb10hd.cc" +#include "slsb10ed.cc" +#include "slab13bd.cc" +#include "slsb01bd.cc" +#include "slsb10fd.cc" +#include "slsb10dd.cc" +#include "slsb03md.cc" +#include "slsb04md.cc" +#include "slsb04qd.cc" +#include "slsg03ad.cc" +#include "slsb02od.cc" +#include "slab13ad.cc" +#include "slab01od.cc" +#include "sltb01pd.cc" +#include "slsb03od.cc" +#include "slsg03bd.cc" +#include "slag08bd.cc" +#include "sltg01jd.cc" +#include "sltg01hd.cc" +#include "sltg01id.cc" +#include "slsg02ad.cc" +#include "sltg04bx.cc" +#include "sltb01id.cc" +#include "sltg01ad.cc" +#include "slsb10id.cc" +#include "slsb10kd.cc" +#include "slsb10zd.cc" +#include "sltb04bd.cc" +#include "slab04md.cc" +#include "slsb10jd.cc" +#include "sltd04ad.cc" +#include "sltb01ud.cc" +#include "slab09hd.cc" +#include "slab09id.cc" +#include "slab09jd.cc" +#include "slsb16ad.cc" +#include "slsb16bd.cc" +#include "slsb16cd.cc" +#include "slsb10yd.cc" \ No newline at end of file Modified: trunk/octave-forge/main/control/src/slab01od.cc =================================================================== --- trunk/octave-forge/main/control/src/slab01od.cc 2012-02-26 08:39:01 UTC (rev 9689) +++ trunk/octave-forge/main/control/src/slab01od.cc 2012-02-26 09:42:19 UTC (rev 9690) @@ -29,7 +29,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -#include "common.cc" +//#include "common.cc" extern "C" { @@ -48,7 +48,8 @@ double* DWORK, int& LDWORK, int& INFO); } - + +// PKG_ADD: autoload (slab01od, SLICOTCONTROL".oct"); DEFUN_DLD (slab01od, args, nargout, "-*- texinfo -*-\n\ Slicot AB01OD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slab04md.cc =================================================================== --- trunk/octave-forge/main/control/src/slab04md.cc 2012-02-26 08:39:01 UTC (rev 9689) +++ trunk/octave-forge/main/control/src/slab04md.cc 2012-02-26 09:42:19 UTC (rev 9690) @@ -30,7 +30,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -#include "common.cc" +//#include "common.cc" extern "C" { @@ -46,7 +46,8 @@ double* DWORK, int& LDWORK, int& INFO); } - + +// PKG_ADD: autoload (slab04md, SLICOTCONTROL".oct"); DEFUN_DLD (slab04md, args, nargout, "-*- texinfo -*-\n\ Slicot AB04MD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slab08nd.cc =================================================================== --- trunk/octave-forge/main/control/src/slab08nd.cc 2012-02-26 08:39:01 UTC (rev 9689) +++ trunk/octave-forge/main/control/src/slab08nd.cc 2012-02-26 09:42:19 UTC (rev 9690) @@ -29,7 +29,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -#include "common.cc" +//#include "common.cc" #include <complex> #include <xpow.h> @@ -63,7 +63,8 @@ double* WORK, int& LWORK, int& INFO); } - + +// PKG_ADD: autoload (slab08nd, SLICOTCONTROL".oct"); DEFUN_DLD (slab08nd, args, nargout, "-*- texinfo -*-\n\ Slicot AB08ND Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slab09hd.cc =================================================================== --- trunk/octave-forge/main/control/src/slab09hd.cc 2012-02-26 08:39:01 UTC (rev 9689) +++ trunk/octave-forge/main/control/src/slab09hd.cc 2012-02-26 09:42:19 UTC (rev 9690) @@ -29,7 +29,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -#include "common.cc" +//#include "common.cc" extern "C" { @@ -50,7 +50,8 @@ bool* BWORK, int& IWARN, int& INFO); } - + +// PKG_ADD: autoload (slab09hd, SLICOTCONTROL".oct"); DEFUN_DLD (slab09hd, args, nargout, "-*- texinfo -*-\n\ Slicot AB09HD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slab09id.cc =================================================================== --- trunk/octave-forge/main/control/src/slab09id.cc 2012-02-26 08:39:01 UTC (rev 9689) +++ trunk/octave-forge/main/control/src/slab09id.cc 2012-02-26 09:42:19 UTC (rev 9690) @@ -30,7 +30,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -#include "common.cc" +//#include "common.cc" extern "C" { @@ -60,7 +60,8 @@ double* DWORK, int& LDWORK, int& IWARN, int& INFO); } - + +// PKG_ADD: autoload (slab09id, SLICOTCONTROL".oct"); DEFUN_DLD (slab09id, args, nargout, "-*- texinfo -*-\n\ Slicot AB09ID Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slab09jd.cc =================================================================== --- trunk/octave-forge/main/control/src/slab09jd.cc 2012-02-26 08:39:01 UTC (rev 9689) +++ trunk/octave-forge/main/control/src/slab09jd.cc 2012-02-26 09:42:19 UTC (rev 9690) @@ -29,7 +29,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -#include "common.cc" +//#include "common.cc" extern "C" { @@ -58,7 +58,8 @@ double* DWORK, int& LDWORK, int& IWARN, int& INFO); } - + +// PKG_ADD: autoload (slab09jd, SLICOTCONTROL".oct"); DEFUN_DLD (slab09jd, args, nargout, "-*- texinfo -*-\n\ Slicot AB09JD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slab13ad.cc =================================================================== --- trunk/octave-forge/main/control/src/slab13ad.cc 2012-02-26 08:39:01 UTC (rev 9689) +++ trunk/octave-forge/main/control/src/slab13ad.cc 2012-02-26 09:42:19 UTC (rev 9690) @@ -29,7 +29,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -#include "common.cc" +//#include "common.cc" extern "C" { @@ -45,7 +45,8 @@ double* DWORK, int& LDWORK, int& INFO); } - + +// PKG_ADD: autoload (slab13ad, SLICOTCONTROL".oct"); DEFUN_DLD (slab13ad, args, nargout, "-*- texinfo -*-\n\ Slicot AB13AD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slab13bd.cc =================================================================== --- trunk/octave-forge/main/control/src/slab13bd.cc 2012-02-26 08:39:01 UTC (rev 9689) +++ trunk/octave-forge/main/control/src/slab13bd.cc 2012-02-26 09:42:19 UTC (rev 9690) @@ -29,7 +29,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -#include "common.cc" +//#include "common.cc" extern "C" { @@ -46,7 +46,8 @@ int& IWARN, int& INFO); } - + +// PKG_ADD: autoload (slab13bd, SLICOTCONTROL".oct"); DEFUN_DLD (slab13bd, args, nargout, "-*- texinfo -*-\n\ Slicot AB13BD Release 5.\n\ Modified: trunk/octave-forge/main/control/src/slab13dd.cc =================================================================== --- trunk/octave-forge/main/control/src/slab13dd.cc 2012-02-26 08:39:01 UTC (rev 9689) +++ trunk/octave-forge/main/control/src/slab13dd.cc 2012-02-26 09:42:19 UTC (rev 9690) @@ -30,7 +30,7 @@ #include <octave/oct.h> #include <f77-fcn.h> #include <complex> -#include "common.cc" +//#include "common.cc" extern "C" { @@ -50,7 +50,8 @@ Complex* CWORK, int& LCWORK, int& INFO); } - + +// PKG_ADD: autoload (slab13dd, SLICOTCONTROL".oct"); DEFUN_DLD (slab13dd, args, nargout, "-*- texinfo -*-\n\ Slicot AB13DD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slag08bd.cc =================================================================== --- trunk/octave-forge/main/control/src/slag08bd.cc 2012-02-26 08:39:01 UTC (rev 9689) +++ trunk/octave-forge/main/control/src/slag08bd.cc 2012-02-26 09:42:19 UTC (rev 9690) @@ -29,7 +29,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -#include "common.cc" +//#include "common.cc" #include <complex> #include <xpow.h> @@ -63,7 +63,8 @@ double* WORK, int& LWORK, int& INFO); } - + +// PKG_ADD: autoload (slag08bd, SLICOTCONTROL".oct"); DEFUN_DLD (slag08bd, args, nargout, "-*- texinfo -*-\n\ Slicot AG08BD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slsb01bd.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb01bd.cc 2012-02-26 08:39:01 UTC (rev 9689) +++ trunk/octave-forge/main/control/src/slsb01bd.cc 2012-02-26 09:42:19 UTC (rev 9690) @@ -29,7 +29,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -#include "common.cc" +//#include "common.cc" extern "C" { @@ -47,7 +47,8 @@ double* DWORK, int& LDWORK, int& IWARN, int& INFO); } - + +// PKG_ADD: autoload (slsb01bd, SLICOTCONTROL".oct"); DEFUN_DLD (slsb01bd, args, nargout, "-*- texinfo -*-\n\ Slicot SB01BD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slsb02od.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb02od.cc 2012-02-26 08:39:01 UTC (rev 9689) +++ trunk/octave-forge/main/control/src/slsb02od.cc 2012-02-26 09:42:19 UTC (rev 9690) @@ -29,7 +29,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -#include "common.cc" +//#include "common.cc" #include <complex> extern "C" @@ -58,6 +58,7 @@ int& INFO); } +// PKG_ADD: autoload (slsb02od, SLICOTCONTROL".oct"); DEFUN_DLD (slsb02od, args, nargout, "-*- texinfo -*-\n\ Slicot SB02OD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slsb03md.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb03md.cc 2012-02-26 08:39:01 UTC (rev 9689) +++ trunk/octave-forge/main/control/src/slsb03md.cc 2012-02-26 09:42:19 UTC (rev 9690) @@ -29,7 +29,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -#include "common.cc" +//#include "common.cc" extern "C" { @@ -47,7 +47,8 @@ double* DWORK, int& LDWORK, int& INFO); } - + +// PKG_ADD: autoload (slsb03md, SLICOTCONTROL".oct"); DEFUN_DLD (slsb03md, args, nargout, "-*- texinfo -*-\n\ Slicot SB03MD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slsb03od.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb03od.cc 2012-02-26 08:39:01 UTC (rev 9689) +++ trunk/octave-forge/main/control/src/slsb03od.cc 2012-02-26 09:42:19 UTC (rev 9690) @@ -29,7 +29,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -#include "common.cc" +//#include "common.cc" extern "C" { @@ -44,7 +44,8 @@ double* DWORK, int& LDWORK, int& INFO); } - + +// PKG_ADD: autoload (slsb03od, SLICOTCONTROL".oct"); DEFUN_DLD (slsb03od, args, nargout, "-*- texinfo -*-\n\ Slicot SB03OD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slsb04md.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb04md.cc 2012-02-26 08:39:01 UTC (rev 9689) +++ trunk/octave-forge/main/control/src/slsb04md.cc 2012-02-26 09:42:19 UTC (rev 9690) @@ -29,7 +29,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -#include "common.cc" +//#include "common.cc" extern "C" { @@ -43,7 +43,8 @@ double* DWORK, int& LDWORK, int& INFO); } - + +// PKG_ADD: autoload (slsb04md, SLICOTCONTROL".oct"); DEFUN_DLD (slsb04md, args, nargout, "-*- texinfo -*-\n\ Slicot SB04MD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slsb04qd.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb04qd.cc 2012-02-26 08:39:01 UTC (rev 9689) +++ trunk/octave-forge/main/control/src/slsb04qd.cc 2012-02-26 09:42:19 UTC (rev 9690) @@ -29,7 +29,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -#include "common.cc" +//#include "common.cc" extern "C" { @@ -44,6 +44,7 @@ int& INFO); } +// PKG_ADD: autoload (slsb04qd, SLICOTCONTROL".oct"); DEFUN_DLD (slsb04qd, args, nargout, "-*- texinfo -*-\n\ Slicot SB04QD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slsb10dd.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb10dd.cc 2012-02-26 08:39:01 UTC (rev 9689) +++ trunk/octave-forge/main/control/src/slsb10dd.cc 2012-02-26 09:42:19 UTC (rev 9690) @@ -29,7 +29,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -#include "common.cc" +//#include "common.cc" extern "C" { @@ -54,7 +54,8 @@ bool* BWORK, int& INFO); } - + +// PKG_ADD: autoload (slsb10dd, SLICOTCONTROL".oct"); DEFUN_DLD (slsb10dd, args, nargout, "-*- texinfo -*-\n\ Slicot SB10DD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slsb10ed.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb10ed.cc 2012-02-26 08:39:01 UTC (rev 9689) +++ trunk/octave-forge/main/control/src/slsb10ed.cc 2012-02-26 09:42:19 UTC (rev 9690) @@ -29,7 +29,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -#include "common.cc" +//#include "common.cc" extern "C" { @@ -52,6 +52,7 @@ int& INFO); } +// PKG_ADD: autoload (slsb10ed, SLICOTCONTROL".oct"); DEFUN_DLD (slsb10ed, args, nargout, "-*- texinfo -*-\n\ Slicot SB10ED Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slsb10fd.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb10fd.cc 2012-02-26 08:39:01 UTC (rev 9689) +++ trunk/octave-forge/main/control/src/slsb10fd.cc 2012-02-26 09:42:19 UTC (rev 9690) @@ -29,7 +29,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -#include "common.cc" +//#include "common.cc" extern "C" { @@ -52,7 +52,8 @@ bool* BWORK, int& INFO); } - + +// PKG_ADD: autoload (slsb10fd, SLICOTCONTROL".oct"); DEFUN_DLD (slsb10fd, args, nargout, "-*- texinfo -*-\n\ Slicot SB10FD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slsb10hd.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb10hd.cc 2012-02-26 08:39:01 UTC (rev 9689) +++ trunk/octave-forge/main/control/src/slsb10hd.cc 2012-02-26 09:42:19 UTC (rev 9690) @@ -29,7 +29,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -#include "common.cc" +//#include "common.cc" extern "C" { @@ -51,7 +51,8 @@ bool* BWORK, int& INFO); } - + +// PKG_ADD: autoload (slsb10hd, SLICOTCONTROL".oct"); DEFUN_DLD (slsb10hd, args, nargout, "-*- texinfo -*-\n\ Slicot SB10HD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slsb10id.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb10id.cc 2012-02-26 08:39:01 UTC (rev 9689) +++ trunk/octave-forge/main/control/src/slsb10id.cc 2012-02-26 09:42:19 UTC (rev 9690) @@ -29,7 +29,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -#include "common.cc" +//#include "common.cc" extern "C" { @@ -50,7 +50,8 @@ bool* BWORK, int& INFO); } - + +// PKG_ADD: autoload (slsb10id, SLICOTCONTROL".oct"); DEFUN_DLD (slsb10id, args, nargout, "-*- texinfo -*-\n\ Slicot SB10ID Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slsb10jd.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb10jd.cc 2012-02-26 08:39:01 UTC (rev 9689) +++ trunk/octave-forge/main/control/src/slsb10jd.cc 2012-02-26 09:42:19 UTC (rev 9690) @@ -29,7 +29,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -#include "common.cc" +//#include "common.cc" extern "C" { @@ -44,7 +44,8 @@ double* DWORK, int& LDWORK, int& INFO); } - + +// PKG_ADD: autoload (slsb10jd, SLICOTCONTROL".oct"); DEFUN_DLD (slsb10jd, args, nargout, "-*- texinfo -*-\n\ Slicot SB10JD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slsb10kd.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb10kd.cc 2012-02-26 08:39:01 UTC (rev 9689) +++ trunk/octave-forge/main/control/src/slsb10kd.cc 2012-02-26 09:42:19 UTC (rev 9690) @@ -29,7 +29,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -#include "common.cc" +//#include "common.cc" extern "C" { @@ -49,7 +49,8 @@ bool* BWORK, int& INFO); } - + +// PKG_ADD: autoload (slsb10kd, SLICOTCONTROL".oct"); DEFUN_DLD (slsb10kd, args, nargout, "-*- texinfo -*-\n\ Slicot SB10KD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slsb10yd.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb10yd.cc 2012-02-26 08:39:01 UTC (rev 9689) +++ trunk/octave-forge/main/control/src/slsb10yd.cc 2012-02-26 09:42:19 UTC (rev 9690) @@ -30,7 +30,7 @@ #include <octave/oct.h> #include <f77-fcn.h> #include <complex> -#include "common.cc" +//#include "common.cc" extern "C" { @@ -49,7 +49,8 @@ Complex* ZWORK, int& LZWORK, int& INFO); } - + +// PKG_ADD: autoload (slsb10yd, SLICOTCONTROL".oct"); DEFUN_DLD (slsb10yd, args, nargout, "-*- texinfo -*-\n\ Slicot SB10YD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slsb10zd.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb10zd.cc 2012-02-26 08:39:01 UTC (rev 9689) +++ trunk/octave-forge/main/control/src/slsb10zd.cc 2012-02-26 09:42:19 UTC (rev 9690) @@ -29,7 +29,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -#include "common.cc" +//#include "common.cc" extern "C" { @@ -51,7 +51,8 @@ bool* BWORK, int& INFO); } - + +// PKG_ADD: autoload (slsb10zd, SLICOTCONTROL".oct"); DEFUN_DLD (slsb10zd, args, nargout, "-*- texinfo -*-\n\ Slicot SB10ZD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slsb16ad.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb16ad.cc 2012-02-26 08:39:01 UTC (rev 9689) +++ trunk/octave-forge/main/control/src/slsb16ad.cc 2012-02-26 09:42:19 UTC (rev 9690) @@ -30,7 +30,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -#include "common.cc" +//#include "common.cc" extern "C" { @@ -55,7 +55,8 @@ double* DWORK, int& LDWORK, int& IWARN, int& INFO); } - + +// PKG_ADD: autoload (slsb16ad, SLICOTCONTROL".oct"); DEFUN_DLD (slsb16ad, args, nargout, "-*- texinfo -*-\n\ Slicot SB16AD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slsb16bd.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb16bd.cc 2012-02-26 08:39:01 UTC (rev 9689) +++ trunk/octave-forge/main/control/src/slsb16bd.cc 2012-02-26 09:42:19 UTC (rev 9690) @@ -29,7 +29,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -#include "common.cc" +//#include "common.cc" extern "C" { @@ -51,7 +51,8 @@ double* DWORK, int& LDWORK, int& IWARN, int& INFO); } - + +// PKG_ADD: autoload (slsb16bd, SLICOTCONTROL".oct"); DEFUN_DLD (slsb16bd, args, nargout, "-*- texinfo -*-\n\ Slicot SB16BD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slsb16cd.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb16cd.cc 2012-02-26 08:39:01 UTC (rev 9689) +++ trunk/octave-forge/main/control/src/slsb16cd.cc 2012-02-26 09:42:19 UTC (rev 9690) @@ -29,7 +29,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -#include "common.cc" +//#include "common.cc" extern "C" { @@ -50,7 +50,8 @@ double* DWORK, int& LDWORK, int& IWARN, int& INFO); } - + +// PKG_ADD: autoload (slsb16cd, SLICOTCONTROL".oct"); DEFUN_DLD (slsb16cd, args, nargout, "-*- texinfo -*-\n\ Slicot SB16CD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slsg02ad.cc =================================================================== --- trunk/octave-forge/main/control/src/slsg02ad.cc 2012-02-26 08:39:01 UTC (rev 9689) +++ trunk/octave-forge/main/control/src/slsg02ad.cc 2012-02-26 09:42:19 UTC (rev 9690) @@ -29,7 +29,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -#include "common.cc" +//#include "common.cc" #include <complex> extern "C" @@ -60,6 +60,7 @@ int& IWARN, int& INFO); } +// PKG_ADD: autoload (slsg02ad, SLICOTCONTROL".oct"); DEFUN_DLD (slsg02ad, args, nargout, "-*- texinfo -*-\n\ Slicot SG02AD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slsg03ad.cc =================================================================== --- trunk/octave-forge/main/control/src/slsg03ad.cc 2012-02-26 08:39:01 UTC (rev 9689) +++ trunk/octave-forge/main/control/src/slsg03ad.cc 2012-02-26 09:42:19 UTC (rev 9690) @@ -29,7 +29,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -#include "common.cc" +//#include "common.cc" extern "C" { @@ -51,7 +51,8 @@ double* DWORK, int& LDWORK, int& INFO); } - + +// PKG_ADD: autoload (slsg03ad, SLICOTCONTROL".oct"); DEFUN_DLD (slsg03ad, args, nargout, "-*- texinfo -*-\n\ Slicot SG03AD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slsg03bd.cc =================================================================== --- trunk/octave-forge/main/control/src/slsg03bd.cc 2012-02-26 08:39:01 UTC (rev 9689) +++ trunk/octave-forge/main/control/src/slsg03bd.cc 2012-02-26 09:42:19 UTC (rev 9690) @@ -29,7 +29,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -#include "common.cc" +//#include "common.cc" extern "C" { @@ -47,7 +47,8 @@ double* DWORK, int& LDWORK, int& INFO); } - + +// PKG_ADD: autoload (slsg03bd, SLICOTCONTROL".oct"); DEFUN_DLD (slsg03bd, args, nargout, "-*- texinfo -*-\n\ Slicot SG03BD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/sltb01id.cc =================================================================== --- trunk/octave-forge/main/control/src/sltb01id.cc 2012-02-26 08:39:01 UTC (rev 9689) +++ trunk/octave-forge/main/control/src/sltb01id.cc 2012-02-26 09:42:19 UTC (rev 9690) @@ -29,7 +29,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -#include "common.cc" +//#include "common.cc" extern "C" { @@ -43,7 +43,8 @@ double* SCALE, int& INFO); } - + +// PKG_ADD: autoload (sltb01id, SLICOTCONTROL".oct"); DEFUN_DLD (sltb01id, args, nargout, "-*- texinfo -*-\n\ Slicot TB01ID Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/sltb01pd.cc =================================================================== --- trunk/octave-forge/main/control/src/sltb01pd.cc 2012-02-26 08:39:01 UTC (rev 9689) +++ trunk/octave-forge/main/control/src/sltb01pd.cc 2012-02-26 09:42:19 UTC (rev 9690) @@ -29,7 +29,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -#include "common.cc" +//#include "common.cc" extern "C" { @@ -45,7 +45,8 @@ double* DWORK, int& LDWORK, int& INFO); } - + +// PKG_ADD: autoload (sltb01pd, SLICOTCONTROL".oct"); DEFUN_DLD (sltb01pd, args, nargout, "-*- texinfo -*-\n\ Slicot TB01PD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/sltb01ud.cc =================================================================== --- trunk/octave-forge/main/control/src/sltb01ud.cc 2012-02-26 08:39:01 UTC (rev 9689) +++ trunk/octave-forge/main/control/src/sltb01ud.cc 2012-02-26 09:42:19 UTC (rev 9690) @@ -29,7 +29,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -#include "common.cc" +//#include "common.cc" extern "C" { @@ -48,7 +48,8 @@ double* DWORK, int& LDWORK, int& INFO); } - + +// PKG_ADD: autoload (sltb01ud, SLICOTCONTROL".oct"); DEFUN_DLD (sltb01ud, args, nargout, "-*- texinfo -*-\n\ Slicot TB01UD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/sltb04bd.cc =================================================================== --- trunk/octave-forge/main/control/src/sltb04bd.cc 2012-02-26 08:39:01 UTC (rev 9689) +++ trunk/octave-forge/main/control/src/sltb04bd.cc 2012-02-26 09:42:19 UTC (rev 9690) @@ -30,7 +30,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -#include "common.cc" +//#include "common.cc" extern "C" { @@ -50,6 +50,7 @@ int& INFO); } +// PKG_ADD: autoload (sltb04bd, SLICOTCONTROL".oct"); DEFUN_DLD (sltb04bd, args, nargout, "-*- texinfo -*-\n\ Slicot TB04BD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/sltd04ad.cc =================================================================== --- trunk/octave-forge/main/control/src/sltd04ad.cc 2012-02-26 08:39:01 UTC (rev 9689) +++ trunk/octave-forge/main/control/src/sltd04ad.cc 2012-02-26 09:42:19 UTC (rev 9690) @@ -32,7 +32,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -#include "common.cc" +//#include "common.cc" extern "C" { @@ -53,6 +53,7 @@ int& INFO); } +// PKG_ADD: autoload (sltd04ad, SLICOTCONTROL".oct"); DEFUN_DLD (sltd04ad, args, nargout, "-*- texinfo -*-\n\ Slicot TD04AD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/sltg01ad.cc =================================================================== --- trunk/octave-forge/main/control/src/sltg01ad.cc 2012-02-26 08:39:01 UTC (rev 9689) +++ trunk/octave-forge/main/control/src/sltg01ad.cc 2012-02-26 09:42:19 UTC (rev 9690) @@ -29,7 +29,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -#include "common.cc" +//#include "common.cc" extern "C" { @@ -45,7 +45,8 @@ double* DWORK, int& INFO); } - + +// PKG_ADD: autoload (sltg01ad, SLICOTCONTROL".oct"); DEFUN_DLD (sltg01ad, args, nargout, "-*- texinfo -*-\n\ Slicot TG01AD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/sltg01hd.cc =================================================================== --- trunk/octave-forge/main/control/src/sltg01hd.cc 2012-02-26 08:39:01 UTC (rev 9689) +++ trunk/octave-forge/main/control/src/sltg01hd.cc 2012-02-26 09:42:19 UTC (rev 9690) @@ -29,7 +29,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -#include "common.cc" +//#include "common.cc" extern "C" { @@ -50,7 +50,8 @@ int* IWORK, double* DWORK, int& INFO); } - + +// PKG_ADD: autoload (sltg01hd, SLICOTCONTROL".oct"); DEFUN_DLD (sltg01hd, args, nargout, "Slicot TG01HD Release 5.0") { int nargin = args.length (); Modified: trunk/octave-forge/main/control/src/sltg01id.cc =================================================================== --- trunk/octave-forge/main/control/src/sltg01id.cc 2012-02-26 08:39:01 UTC (rev 9689) +++ trunk/octave-forge/main/control/src/sltg01id.cc 2012-02-26 09:42:19 UTC (rev 9690) @@ -29,7 +29,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -#include "common.cc" +//#include "common.cc" extern "C" { @@ -50,7 +50,8 @@ int* IWORK, double* DWORK, int& INFO); } - + +// PKG_ADD: autoload (sltg01id, SLICOTCONTROL".oct"); DEFUN_DLD (sltg01id, args, nargout, "Slicot TG01ID Release 5.0") { int nargin = args.length (); Modified: trunk/octave-forge/main/control/src/sltg01jd.cc =================================================================== --- trunk/octave-forge/main/control/src/sltg01jd.cc 2012-02-26 08:39:01 UTC (rev 9689) +++ trunk/octave-forge/main/control/src/sltg01jd.cc 2012-02-26 09:42:19 UTC (rev 9690) @@ -29,7 +29,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -#include "common.cc" +//#include "common.cc" extern "C" { @@ -47,7 +47,8 @@ double* DWORK, int& LDWORK, int& INFO); } - + +// PKG_ADD: autoload (sltg01jd, SLICOTCONTROL".oct"); DEFUN_DLD (sltg01jd, args, nargout, "-*- texinfo -*-\n\ Slicot TG01JD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/sltg04bx.cc =================================================================== --- trunk/octave-forge/main/control/src/sltg04bx.cc 2012-02-26 08:39:01 UTC (rev 9689) +++ trunk/octave-forge/main/control/src/sltg04bx.cc 2012-02-26 09:42:19 UTC (rev 9690) @@ -27,7 +27,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -#include "common.cc" +//#include "common.cc" #include <complex> #include <xpow.h> @@ -45,7 +45,8 @@ double& GAIN, int* IWORK); } - + +// PKG_ADD: autoload (sltg04bx, SLICOTCONTROL".oct"); DEFUN_DLD (sltg04bx, args, nargout, "-*- texinfo -*-\n\ Slicot TG04BX Release 5.0\n\ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2012-02-26 09:58:17
|
Revision: 9692 http://octave.svn.sourceforge.net/octave/?rev=9692&view=rev Author: paramaniac Date: 2012-02-26 09:58:10 +0000 (Sun, 26 Feb 2012) Log Message: ----------- control: add missing double quotes Modified Paths: -------------- trunk/octave-forge/main/control/src/slab01od.cc trunk/octave-forge/main/control/src/slab04md.cc trunk/octave-forge/main/control/src/slab08nd.cc trunk/octave-forge/main/control/src/slab09hd.cc trunk/octave-forge/main/control/src/slab09id.cc trunk/octave-forge/main/control/src/slab09jd.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/slag08bd.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/slsb03od.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/slsb10id.cc trunk/octave-forge/main/control/src/slsb10jd.cc trunk/octave-forge/main/control/src/slsb10kd.cc trunk/octave-forge/main/control/src/slsb10yd.cc trunk/octave-forge/main/control/src/slsb10zd.cc trunk/octave-forge/main/control/src/slsb16ad.cc trunk/octave-forge/main/control/src/slsb16bd.cc trunk/octave-forge/main/control/src/slsb16cd.cc trunk/octave-forge/main/control/src/slsg02ad.cc trunk/octave-forge/main/control/src/slsg03ad.cc trunk/octave-forge/main/control/src/slsg03bd.cc trunk/octave-forge/main/control/src/sltb01id.cc trunk/octave-forge/main/control/src/sltb01pd.cc trunk/octave-forge/main/control/src/sltb01ud.cc trunk/octave-forge/main/control/src/sltb04bd.cc trunk/octave-forge/main/control/src/sltd04ad.cc trunk/octave-forge/main/control/src/sltg01ad.cc trunk/octave-forge/main/control/src/sltg01hd.cc trunk/octave-forge/main/control/src/sltg01id.cc trunk/octave-forge/main/control/src/sltg01jd.cc trunk/octave-forge/main/control/src/sltg04bx.cc Modified: trunk/octave-forge/main/control/src/slab01od.cc =================================================================== --- trunk/octave-forge/main/control/src/slab01od.cc 2012-02-26 09:56:52 UTC (rev 9691) +++ trunk/octave-forge/main/control/src/slab01od.cc 2012-02-26 09:58:10 UTC (rev 9692) @@ -49,7 +49,7 @@ int& INFO); } -// PKG_ADD: autoload (slab01od, SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("slab01od", SLICOTCONTROL".oct"); DEFUN_DLD (slab01od, args, nargout, "-*- texinfo -*-\n\ Slicot AB01OD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slab04md.cc =================================================================== --- trunk/octave-forge/main/control/src/slab04md.cc 2012-02-26 09:56:52 UTC (rev 9691) +++ trunk/octave-forge/main/control/src/slab04md.cc 2012-02-26 09:58:10 UTC (rev 9692) @@ -47,7 +47,7 @@ int& INFO); } -// PKG_ADD: autoload (slab04md, SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("slab04md", SLICOTCONTROL".oct"); DEFUN_DLD (slab04md, args, nargout, "-*- texinfo -*-\n\ Slicot AB04MD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slab08nd.cc =================================================================== --- trunk/octave-forge/main/control/src/slab08nd.cc 2012-02-26 09:56:52 UTC (rev 9691) +++ trunk/octave-forge/main/control/src/slab08nd.cc 2012-02-26 09:58:10 UTC (rev 9692) @@ -64,7 +64,7 @@ int& INFO); } -// PKG_ADD: autoload (slab08nd, SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("slab08nd", SLICOTCONTROL".oct"); DEFUN_DLD (slab08nd, args, nargout, "-*- texinfo -*-\n\ Slicot AB08ND Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slab09hd.cc =================================================================== --- trunk/octave-forge/main/control/src/slab09hd.cc 2012-02-26 09:56:52 UTC (rev 9691) +++ trunk/octave-forge/main/control/src/slab09hd.cc 2012-02-26 09:58:10 UTC (rev 9692) @@ -51,7 +51,7 @@ int& IWARN, int& INFO); } -// PKG_ADD: autoload (slab09hd, SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("slab09hd", SLICOTCONTROL".oct"); DEFUN_DLD (slab09hd, args, nargout, "-*- texinfo -*-\n\ Slicot AB09HD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slab09id.cc =================================================================== --- trunk/octave-forge/main/control/src/slab09id.cc 2012-02-26 09:56:52 UTC (rev 9691) +++ trunk/octave-forge/main/control/src/slab09id.cc 2012-02-26 09:58:10 UTC (rev 9692) @@ -61,7 +61,7 @@ int& IWARN, int& INFO); } -// PKG_ADD: autoload (slab09id, SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("slab09id", SLICOTCONTROL".oct"); DEFUN_DLD (slab09id, args, nargout, "-*- texinfo -*-\n\ Slicot AB09ID Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slab09jd.cc =================================================================== --- trunk/octave-forge/main/control/src/slab09jd.cc 2012-02-26 09:56:52 UTC (rev 9691) +++ trunk/octave-forge/main/control/src/slab09jd.cc 2012-02-26 09:58:10 UTC (rev 9692) @@ -59,7 +59,7 @@ int& IWARN, int& INFO); } -// PKG_ADD: autoload (slab09jd, SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("slab09jd", SLICOTCONTROL".oct"); DEFUN_DLD (slab09jd, args, nargout, "-*- texinfo -*-\n\ Slicot AB09JD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slab13ad.cc =================================================================== --- trunk/octave-forge/main/control/src/slab13ad.cc 2012-02-26 09:56:52 UTC (rev 9691) +++ trunk/octave-forge/main/control/src/slab13ad.cc 2012-02-26 09:58:10 UTC (rev 9692) @@ -46,7 +46,7 @@ int& INFO); } -// PKG_ADD: autoload (slab13ad, SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("slab13ad", SLICOTCONTROL".oct"); DEFUN_DLD (slab13ad, args, nargout, "-*- texinfo -*-\n\ Slicot AB13AD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slab13bd.cc =================================================================== --- trunk/octave-forge/main/control/src/slab13bd.cc 2012-02-26 09:56:52 UTC (rev 9691) +++ trunk/octave-forge/main/control/src/slab13bd.cc 2012-02-26 09:58:10 UTC (rev 9692) @@ -47,7 +47,7 @@ int& INFO); } -// PKG_ADD: autoload (slab13bd, SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("slab13bd", SLICOTCONTROL".oct"); DEFUN_DLD (slab13bd, args, nargout, "-*- texinfo -*-\n\ Slicot AB13BD Release 5.\n\ Modified: trunk/octave-forge/main/control/src/slab13dd.cc =================================================================== --- trunk/octave-forge/main/control/src/slab13dd.cc 2012-02-26 09:56:52 UTC (rev 9691) +++ trunk/octave-forge/main/control/src/slab13dd.cc 2012-02-26 09:58:10 UTC (rev 9692) @@ -51,7 +51,7 @@ int& INFO); } -// PKG_ADD: autoload (slab13dd, SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("slab13dd", SLICOTCONTROL".oct"); DEFUN_DLD (slab13dd, args, nargout, "-*- texinfo -*-\n\ Slicot AB13DD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slag08bd.cc =================================================================== --- trunk/octave-forge/main/control/src/slag08bd.cc 2012-02-26 09:56:52 UTC (rev 9691) +++ trunk/octave-forge/main/control/src/slag08bd.cc 2012-02-26 09:58:10 UTC (rev 9692) @@ -64,7 +64,7 @@ int& INFO); } -// PKG_ADD: autoload (slag08bd, SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("slag08bd", SLICOTCONTROL".oct"); DEFUN_DLD (slag08bd, args, nargout, "-*- texinfo -*-\n\ Slicot AG08BD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slsb01bd.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb01bd.cc 2012-02-26 09:56:52 UTC (rev 9691) +++ trunk/octave-forge/main/control/src/slsb01bd.cc 2012-02-26 09:58:10 UTC (rev 9692) @@ -48,7 +48,7 @@ int& IWARN, int& INFO); } -// PKG_ADD: autoload (slsb01bd, SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("slsb01bd", SLICOTCONTROL".oct"); DEFUN_DLD (slsb01bd, args, nargout, "-*- texinfo -*-\n\ Slicot SB01BD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slsb02od.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb02od.cc 2012-02-26 09:56:52 UTC (rev 9691) +++ trunk/octave-forge/main/control/src/slsb02od.cc 2012-02-26 09:58:10 UTC (rev 9692) @@ -58,7 +58,7 @@ int& INFO); } -// PKG_ADD: autoload (slsb02od, SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("slsb02od", SLICOTCONTROL".oct"); DEFUN_DLD (slsb02od, args, nargout, "-*- texinfo -*-\n\ Slicot SB02OD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slsb03md.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb03md.cc 2012-02-26 09:56:52 UTC (rev 9691) +++ trunk/octave-forge/main/control/src/slsb03md.cc 2012-02-26 09:58:10 UTC (rev 9692) @@ -48,7 +48,7 @@ int& INFO); } -// PKG_ADD: autoload (slsb03md, SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("slsb03md", SLICOTCONTROL".oct"); DEFUN_DLD (slsb03md, args, nargout, "-*- texinfo -*-\n\ Slicot SB03MD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slsb03od.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb03od.cc 2012-02-26 09:56:52 UTC (rev 9691) +++ trunk/octave-forge/main/control/src/slsb03od.cc 2012-02-26 09:58:10 UTC (rev 9692) @@ -45,7 +45,7 @@ int& INFO); } -// PKG_ADD: autoload (slsb03od, SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("slsb03od", SLICOTCONTROL".oct"); DEFUN_DLD (slsb03od, args, nargout, "-*- texinfo -*-\n\ Slicot SB03OD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slsb04md.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb04md.cc 2012-02-26 09:56:52 UTC (rev 9691) +++ trunk/octave-forge/main/control/src/slsb04md.cc 2012-02-26 09:58:10 UTC (rev 9692) @@ -44,7 +44,7 @@ int& INFO); } -// PKG_ADD: autoload (slsb04md, SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("slsb04md", SLICOTCONTROL".oct"); DEFUN_DLD (slsb04md, args, nargout, "-*- texinfo -*-\n\ Slicot SB04MD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slsb04qd.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb04qd.cc 2012-02-26 09:56:52 UTC (rev 9691) +++ trunk/octave-forge/main/control/src/slsb04qd.cc 2012-02-26 09:58:10 UTC (rev 9692) @@ -44,7 +44,7 @@ int& INFO); } -// PKG_ADD: autoload (slsb04qd, SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("slsb04qd", SLICOTCONTROL".oct"); DEFUN_DLD (slsb04qd, args, nargout, "-*- texinfo -*-\n\ Slicot SB04QD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slsb10dd.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb10dd.cc 2012-02-26 09:56:52 UTC (rev 9691) +++ trunk/octave-forge/main/control/src/slsb10dd.cc 2012-02-26 09:58:10 UTC (rev 9692) @@ -55,7 +55,7 @@ int& INFO); } -// PKG_ADD: autoload (slsb10dd, SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("slsb10dd", SLICOTCONTROL".oct"); DEFUN_DLD (slsb10dd, args, nargout, "-*- texinfo -*-\n\ Slicot SB10DD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slsb10ed.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb10ed.cc 2012-02-26 09:56:52 UTC (rev 9691) +++ trunk/octave-forge/main/control/src/slsb10ed.cc 2012-02-26 09:58:10 UTC (rev 9692) @@ -52,7 +52,7 @@ int& INFO); } -// PKG_ADD: autoload (slsb10ed, SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("slsb10ed", SLICOTCONTROL".oct"); DEFUN_DLD (slsb10ed, args, nargout, "-*- texinfo -*-\n\ Slicot SB10ED Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slsb10fd.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb10fd.cc 2012-02-26 09:56:52 UTC (rev 9691) +++ trunk/octave-forge/main/control/src/slsb10fd.cc 2012-02-26 09:58:10 UTC (rev 9692) @@ -53,7 +53,7 @@ int& INFO); } -// PKG_ADD: autoload (slsb10fd, SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("slsb10fd", SLICOTCONTROL".oct"); DEFUN_DLD (slsb10fd, args, nargout, "-*- texinfo -*-\n\ Slicot SB10FD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slsb10hd.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb10hd.cc 2012-02-26 09:56:52 UTC (rev 9691) +++ trunk/octave-forge/main/control/src/slsb10hd.cc 2012-02-26 09:58:10 UTC (rev 9692) @@ -52,7 +52,7 @@ int& INFO); } -// PKG_ADD: autoload (slsb10hd, SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("slsb10hd", SLICOTCONTROL".oct"); DEFUN_DLD (slsb10hd, args, nargout, "-*- texinfo -*-\n\ Slicot SB10HD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slsb10id.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb10id.cc 2012-02-26 09:56:52 UTC (rev 9691) +++ trunk/octave-forge/main/control/src/slsb10id.cc 2012-02-26 09:58:10 UTC (rev 9692) @@ -51,7 +51,7 @@ int& INFO); } -// PKG_ADD: autoload (slsb10id, SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("slsb10id", SLICOTCONTROL".oct"); DEFUN_DLD (slsb10id, args, nargout, "-*- texinfo -*-\n\ Slicot SB10ID Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slsb10jd.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb10jd.cc 2012-02-26 09:56:52 UTC (rev 9691) +++ trunk/octave-forge/main/control/src/slsb10jd.cc 2012-02-26 09:58:10 UTC (rev 9692) @@ -45,7 +45,7 @@ int& INFO); } -// PKG_ADD: autoload (slsb10jd, SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("slsb10jd", SLICOTCONTROL".oct"); DEFUN_DLD (slsb10jd, args, nargout, "-*- texinfo -*-\n\ Slicot SB10JD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slsb10kd.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb10kd.cc 2012-02-26 09:56:52 UTC (rev 9691) +++ trunk/octave-forge/main/control/src/slsb10kd.cc 2012-02-26 09:58:10 UTC (rev 9692) @@ -50,7 +50,7 @@ int& INFO); } -// PKG_ADD: autoload (slsb10kd, SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("slsb10kd", SLICOTCONTROL".oct"); DEFUN_DLD (slsb10kd, args, nargout, "-*- texinfo -*-\n\ Slicot SB10KD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slsb10yd.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb10yd.cc 2012-02-26 09:56:52 UTC (rev 9691) +++ trunk/octave-forge/main/control/src/slsb10yd.cc 2012-02-26 09:58:10 UTC (rev 9692) @@ -50,7 +50,7 @@ int& INFO); } -// PKG_ADD: autoload (slsb10yd, SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("slsb10yd", SLICOTCONTROL".oct"); DEFUN_DLD (slsb10yd, args, nargout, "-*- texinfo -*-\n\ Slicot SB10YD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slsb10zd.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb10zd.cc 2012-02-26 09:56:52 UTC (rev 9691) +++ trunk/octave-forge/main/control/src/slsb10zd.cc 2012-02-26 09:58:10 UTC (rev 9692) @@ -52,7 +52,7 @@ int& INFO); } -// PKG_ADD: autoload (slsb10zd, SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("slsb10zd", SLICOTCONTROL".oct"); DEFUN_DLD (slsb10zd, args, nargout, "-*- texinfo -*-\n\ Slicot SB10ZD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slsb16ad.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb16ad.cc 2012-02-26 09:56:52 UTC (rev 9691) +++ trunk/octave-forge/main/control/src/slsb16ad.cc 2012-02-26 09:58:10 UTC (rev 9692) @@ -56,7 +56,7 @@ int& IWARN, int& INFO); } -// PKG_ADD: autoload (slsb16ad, SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("slsb16ad", SLICOTCONTROL".oct"); DEFUN_DLD (slsb16ad, args, nargout, "-*- texinfo -*-\n\ Slicot SB16AD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slsb16bd.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb16bd.cc 2012-02-26 09:56:52 UTC (rev 9691) +++ trunk/octave-forge/main/control/src/slsb16bd.cc 2012-02-26 09:58:10 UTC (rev 9692) @@ -52,7 +52,7 @@ int& IWARN, int& INFO); } -// PKG_ADD: autoload (slsb16bd, SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("slsb16bd", SLICOTCONTROL".oct"); DEFUN_DLD (slsb16bd, args, nargout, "-*- texinfo -*-\n\ Slicot SB16BD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slsb16cd.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb16cd.cc 2012-02-26 09:56:52 UTC (rev 9691) +++ trunk/octave-forge/main/control/src/slsb16cd.cc 2012-02-26 09:58:10 UTC (rev 9692) @@ -51,7 +51,7 @@ int& IWARN, int& INFO); } -// PKG_ADD: autoload (slsb16cd, SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("slsb16cd", SLICOTCONTROL".oct"); DEFUN_DLD (slsb16cd, args, nargout, "-*- texinfo -*-\n\ Slicot SB16CD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slsg02ad.cc =================================================================== --- trunk/octave-forge/main/control/src/slsg02ad.cc 2012-02-26 09:56:52 UTC (rev 9691) +++ trunk/octave-forge/main/control/src/slsg02ad.cc 2012-02-26 09:58:10 UTC (rev 9692) @@ -60,7 +60,7 @@ int& IWARN, int& INFO); } -// PKG_ADD: autoload (slsg02ad, SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("slsg02ad", SLICOTCONTROL".oct"); DEFUN_DLD (slsg02ad, args, nargout, "-*- texinfo -*-\n\ Slicot SG02AD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slsg03ad.cc =================================================================== --- trunk/octave-forge/main/control/src/slsg03ad.cc 2012-02-26 09:56:52 UTC (rev 9691) +++ trunk/octave-forge/main/control/src/slsg03ad.cc 2012-02-26 09:58:10 UTC (rev 9692) @@ -52,7 +52,7 @@ int& INFO); } -// PKG_ADD: autoload (slsg03ad, SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("slsg03ad", SLICOTCONTROL".oct"); DEFUN_DLD (slsg03ad, args, nargout, "-*- texinfo -*-\n\ Slicot SG03AD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slsg03bd.cc =================================================================== --- trunk/octave-forge/main/control/src/slsg03bd.cc 2012-02-26 09:56:52 UTC (rev 9691) +++ trunk/octave-forge/main/control/src/slsg03bd.cc 2012-02-26 09:58:10 UTC (rev 9692) @@ -48,7 +48,7 @@ int& INFO); } -// PKG_ADD: autoload (slsg03bd, SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("slsg03bd", SLICOTCONTROL".oct"); DEFUN_DLD (slsg03bd, args, nargout, "-*- texinfo -*-\n\ Slicot SG03BD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/sltb01id.cc =================================================================== --- trunk/octave-forge/main/control/src/sltb01id.cc 2012-02-26 09:56:52 UTC (rev 9691) +++ trunk/octave-forge/main/control/src/sltb01id.cc 2012-02-26 09:58:10 UTC (rev 9692) @@ -44,7 +44,7 @@ int& INFO); } -// PKG_ADD: autoload (sltb01id, SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("sltb01id", SLICOTCONTROL".oct"); DEFUN_DLD (sltb01id, args, nargout, "-*- texinfo -*-\n\ Slicot TB01ID Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/sltb01pd.cc =================================================================== --- trunk/octave-forge/main/control/src/sltb01pd.cc 2012-02-26 09:56:52 UTC (rev 9691) +++ trunk/octave-forge/main/control/src/sltb01pd.cc 2012-02-26 09:58:10 UTC (rev 9692) @@ -46,7 +46,7 @@ int& INFO); } -// PKG_ADD: autoload (sltb01pd, SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("sltb01pd", SLICOTCONTROL".oct"); DEFUN_DLD (sltb01pd, args, nargout, "-*- texinfo -*-\n\ Slicot TB01PD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/sltb01ud.cc =================================================================== --- trunk/octave-forge/main/control/src/sltb01ud.cc 2012-02-26 09:56:52 UTC (rev 9691) +++ trunk/octave-forge/main/control/src/sltb01ud.cc 2012-02-26 09:58:10 UTC (rev 9692) @@ -49,7 +49,7 @@ int& INFO); } -// PKG_ADD: autoload (sltb01ud, SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("sltb01ud", SLICOTCONTROL".oct"); DEFUN_DLD (sltb01ud, args, nargout, "-*- texinfo -*-\n\ Slicot TB01UD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/sltb04bd.cc =================================================================== --- trunk/octave-forge/main/control/src/sltb04bd.cc 2012-02-26 09:56:52 UTC (rev 9691) +++ trunk/octave-forge/main/control/src/sltb04bd.cc 2012-02-26 09:58:10 UTC (rev 9692) @@ -50,7 +50,7 @@ int& INFO); } -// PKG_ADD: autoload (sltb04bd, SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("sltb04bd", SLICOTCONTROL".oct"); DEFUN_DLD (sltb04bd, args, nargout, "-*- texinfo -*-\n\ Slicot TB04BD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/sltd04ad.cc =================================================================== --- trunk/octave-forge/main/control/src/sltd04ad.cc 2012-02-26 09:56:52 UTC (rev 9691) +++ trunk/octave-forge/main/control/src/sltd04ad.cc 2012-02-26 09:58:10 UTC (rev 9692) @@ -53,7 +53,7 @@ int& INFO); } -// PKG_ADD: autoload (sltd04ad, SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("sltd04ad", SLICOTCONTROL".oct"); DEFUN_DLD (sltd04ad, args, nargout, "-*- texinfo -*-\n\ Slicot TD04AD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/sltg01ad.cc =================================================================== --- trunk/octave-forge/main/control/src/sltg01ad.cc 2012-02-26 09:56:52 UTC (rev 9691) +++ trunk/octave-forge/main/control/src/sltg01ad.cc 2012-02-26 09:58:10 UTC (rev 9692) @@ -46,7 +46,7 @@ int& INFO); } -// PKG_ADD: autoload (sltg01ad, SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("sltg01ad", SLICOTCONTROL".oct"); DEFUN_DLD (sltg01ad, args, nargout, "-*- texinfo -*-\n\ Slicot TG01AD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/sltg01hd.cc =================================================================== --- trunk/octave-forge/main/control/src/sltg01hd.cc 2012-02-26 09:56:52 UTC (rev 9691) +++ trunk/octave-forge/main/control/src/sltg01hd.cc 2012-02-26 09:58:10 UTC (rev 9692) @@ -51,7 +51,7 @@ int& INFO); } -// PKG_ADD: autoload (sltg01hd, SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("sltg01hd", SLICOTCONTROL".oct"); DEFUN_DLD (sltg01hd, args, nargout, "Slicot TG01HD Release 5.0") { int nargin = args.length (); Modified: trunk/octave-forge/main/control/src/sltg01id.cc =================================================================== --- trunk/octave-forge/main/control/src/sltg01id.cc 2012-02-26 09:56:52 UTC (rev 9691) +++ trunk/octave-forge/main/control/src/sltg01id.cc 2012-02-26 09:58:10 UTC (rev 9692) @@ -51,7 +51,7 @@ int& INFO); } -// PKG_ADD: autoload (sltg01id, SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("sltg01id", SLICOTCONTROL".oct"); DEFUN_DLD (sltg01id, args, nargout, "Slicot TG01ID Release 5.0") { int nargin = args.length (); Modified: trunk/octave-forge/main/control/src/sltg01jd.cc =================================================================== --- trunk/octave-forge/main/control/src/sltg01jd.cc 2012-02-26 09:56:52 UTC (rev 9691) +++ trunk/octave-forge/main/control/src/sltg01jd.cc 2012-02-26 09:58:10 UTC (rev 9692) @@ -48,7 +48,7 @@ int& INFO); } -// PKG_ADD: autoload (sltg01jd, SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("sltg01jd", SLICOTCONTROL".oct"); DEFUN_DLD (sltg01jd, args, nargout, "-*- texinfo -*-\n\ Slicot TG01JD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/sltg04bx.cc =================================================================== --- trunk/octave-forge/main/control/src/sltg04bx.cc 2012-02-26 09:56:52 UTC (rev 9691) +++ trunk/octave-forge/main/control/src/sltg04bx.cc 2012-02-26 09:58:10 UTC (rev 9692) @@ -46,7 +46,7 @@ int* IWORK); } -// PKG_ADD: autoload (sltg04bx, SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("sltg04bx", SLICOTCONTROL".oct"); DEFUN_DLD (sltg04bx, args, nargout, "-*- texinfo -*-\n\ Slicot TG04BX Release 5.0\n\ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2012-02-26 10:04:58
|
Revision: 9694 http://octave.svn.sourceforge.net/octave/?rev=9694&view=rev Author: paramaniac Date: 2012-02-26 10:04:51 +0000 (Sun, 26 Feb 2012) Log Message: ----------- control: fix possibly invalid statement Modified Paths: -------------- trunk/octave-forge/main/control/src/control_slicot_functions.cc trunk/octave-forge/main/control/src/slab01od.cc trunk/octave-forge/main/control/src/slab04md.cc trunk/octave-forge/main/control/src/slab08nd.cc trunk/octave-forge/main/control/src/slab09hd.cc trunk/octave-forge/main/control/src/slab09id.cc trunk/octave-forge/main/control/src/slab09jd.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/slag08bd.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/slsb03od.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/slsb10id.cc trunk/octave-forge/main/control/src/slsb10jd.cc trunk/octave-forge/main/control/src/slsb10kd.cc trunk/octave-forge/main/control/src/slsb10yd.cc trunk/octave-forge/main/control/src/slsb10zd.cc trunk/octave-forge/main/control/src/slsb16ad.cc trunk/octave-forge/main/control/src/slsb16bd.cc trunk/octave-forge/main/control/src/slsb16cd.cc trunk/octave-forge/main/control/src/slsg02ad.cc trunk/octave-forge/main/control/src/slsg03ad.cc trunk/octave-forge/main/control/src/slsg03bd.cc trunk/octave-forge/main/control/src/sltb01id.cc trunk/octave-forge/main/control/src/sltb01pd.cc trunk/octave-forge/main/control/src/sltb01ud.cc trunk/octave-forge/main/control/src/sltb04bd.cc trunk/octave-forge/main/control/src/sltd04ad.cc trunk/octave-forge/main/control/src/sltg01ad.cc trunk/octave-forge/main/control/src/sltg01hd.cc trunk/octave-forge/main/control/src/sltg01id.cc trunk/octave-forge/main/control/src/sltg01jd.cc trunk/octave-forge/main/control/src/sltg04bx.cc Modified: trunk/octave-forge/main/control/src/control_slicot_functions.cc =================================================================== --- trunk/octave-forge/main/control/src/control_slicot_functions.cc 2012-02-26 09:58:14 UTC (rev 9693) +++ trunk/octave-forge/main/control/src/control_slicot_functions.cc 2012-02-26 10:04:51 UTC (rev 9694) @@ -1,4 +1,4 @@ -#define SLICOTCONTROL "control_slicot_functions" +//#define SLICOTCONTROL "control_slicot_functions" #include <octave/oct.h> #include "common.cc" Modified: trunk/octave-forge/main/control/src/slab01od.cc =================================================================== --- trunk/octave-forge/main/control/src/slab01od.cc 2012-02-26 09:58:14 UTC (rev 9693) +++ trunk/octave-forge/main/control/src/slab01od.cc 2012-02-26 10:04:51 UTC (rev 9694) @@ -49,7 +49,7 @@ int& INFO); } -// PKG_ADD: autoload ("slab01od", SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("slab01od", "control_slicot_functions.oct"); DEFUN_DLD (slab01od, args, nargout, "-*- texinfo -*-\n\ Slicot AB01OD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slab04md.cc =================================================================== --- trunk/octave-forge/main/control/src/slab04md.cc 2012-02-26 09:58:14 UTC (rev 9693) +++ trunk/octave-forge/main/control/src/slab04md.cc 2012-02-26 10:04:51 UTC (rev 9694) @@ -47,7 +47,7 @@ int& INFO); } -// PKG_ADD: autoload ("slab04md", SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("slab04md", "control_slicot_functions.oct"); DEFUN_DLD (slab04md, args, nargout, "-*- texinfo -*-\n\ Slicot AB04MD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slab08nd.cc =================================================================== --- trunk/octave-forge/main/control/src/slab08nd.cc 2012-02-26 09:58:14 UTC (rev 9693) +++ trunk/octave-forge/main/control/src/slab08nd.cc 2012-02-26 10:04:51 UTC (rev 9694) @@ -64,7 +64,7 @@ int& INFO); } -// PKG_ADD: autoload ("slab08nd", SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("slab08nd", "control_slicot_functions.oct"); DEFUN_DLD (slab08nd, args, nargout, "-*- texinfo -*-\n\ Slicot AB08ND Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slab09hd.cc =================================================================== --- trunk/octave-forge/main/control/src/slab09hd.cc 2012-02-26 09:58:14 UTC (rev 9693) +++ trunk/octave-forge/main/control/src/slab09hd.cc 2012-02-26 10:04:51 UTC (rev 9694) @@ -51,7 +51,7 @@ int& IWARN, int& INFO); } -// PKG_ADD: autoload ("slab09hd", SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("slab09hd", "control_slicot_functions.oct"); DEFUN_DLD (slab09hd, args, nargout, "-*- texinfo -*-\n\ Slicot AB09HD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slab09id.cc =================================================================== --- trunk/octave-forge/main/control/src/slab09id.cc 2012-02-26 09:58:14 UTC (rev 9693) +++ trunk/octave-forge/main/control/src/slab09id.cc 2012-02-26 10:04:51 UTC (rev 9694) @@ -61,7 +61,7 @@ int& IWARN, int& INFO); } -// PKG_ADD: autoload ("slab09id", SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("slab09id", "control_slicot_functions.oct"); DEFUN_DLD (slab09id, args, nargout, "-*- texinfo -*-\n\ Slicot AB09ID Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slab09jd.cc =================================================================== --- trunk/octave-forge/main/control/src/slab09jd.cc 2012-02-26 09:58:14 UTC (rev 9693) +++ trunk/octave-forge/main/control/src/slab09jd.cc 2012-02-26 10:04:51 UTC (rev 9694) @@ -59,7 +59,7 @@ int& IWARN, int& INFO); } -// PKG_ADD: autoload ("slab09jd", SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("slab09jd", "control_slicot_functions.oct"); DEFUN_DLD (slab09jd, args, nargout, "-*- texinfo -*-\n\ Slicot AB09JD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slab13ad.cc =================================================================== --- trunk/octave-forge/main/control/src/slab13ad.cc 2012-02-26 09:58:14 UTC (rev 9693) +++ trunk/octave-forge/main/control/src/slab13ad.cc 2012-02-26 10:04:51 UTC (rev 9694) @@ -46,7 +46,7 @@ int& INFO); } -// PKG_ADD: autoload ("slab13ad", SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("slab13ad", "control_slicot_functions.oct"); DEFUN_DLD (slab13ad, args, nargout, "-*- texinfo -*-\n\ Slicot AB13AD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slab13bd.cc =================================================================== --- trunk/octave-forge/main/control/src/slab13bd.cc 2012-02-26 09:58:14 UTC (rev 9693) +++ trunk/octave-forge/main/control/src/slab13bd.cc 2012-02-26 10:04:51 UTC (rev 9694) @@ -47,7 +47,7 @@ int& INFO); } -// PKG_ADD: autoload ("slab13bd", SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("slab13bd", "control_slicot_functions.oct"); DEFUN_DLD (slab13bd, args, nargout, "-*- texinfo -*-\n\ Slicot AB13BD Release 5.\n\ Modified: trunk/octave-forge/main/control/src/slab13dd.cc =================================================================== --- trunk/octave-forge/main/control/src/slab13dd.cc 2012-02-26 09:58:14 UTC (rev 9693) +++ trunk/octave-forge/main/control/src/slab13dd.cc 2012-02-26 10:04:51 UTC (rev 9694) @@ -51,7 +51,7 @@ int& INFO); } -// PKG_ADD: autoload ("slab13dd", SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("slab13dd", "control_slicot_functions.oct"); DEFUN_DLD (slab13dd, args, nargout, "-*- texinfo -*-\n\ Slicot AB13DD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slag08bd.cc =================================================================== --- trunk/octave-forge/main/control/src/slag08bd.cc 2012-02-26 09:58:14 UTC (rev 9693) +++ trunk/octave-forge/main/control/src/slag08bd.cc 2012-02-26 10:04:51 UTC (rev 9694) @@ -64,7 +64,7 @@ int& INFO); } -// PKG_ADD: autoload ("slag08bd", SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("slag08bd", "control_slicot_functions.oct"); DEFUN_DLD (slag08bd, args, nargout, "-*- texinfo -*-\n\ Slicot AG08BD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slsb01bd.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb01bd.cc 2012-02-26 09:58:14 UTC (rev 9693) +++ trunk/octave-forge/main/control/src/slsb01bd.cc 2012-02-26 10:04:51 UTC (rev 9694) @@ -48,7 +48,7 @@ int& IWARN, int& INFO); } -// PKG_ADD: autoload ("slsb01bd", SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("slsb01bd", "control_slicot_functions.oct"); DEFUN_DLD (slsb01bd, args, nargout, "-*- texinfo -*-\n\ Slicot SB01BD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slsb02od.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb02od.cc 2012-02-26 09:58:14 UTC (rev 9693) +++ trunk/octave-forge/main/control/src/slsb02od.cc 2012-02-26 10:04:51 UTC (rev 9694) @@ -58,7 +58,7 @@ int& INFO); } -// PKG_ADD: autoload ("slsb02od", SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("slsb02od", "control_slicot_functions.oct"); DEFUN_DLD (slsb02od, args, nargout, "-*- texinfo -*-\n\ Slicot SB02OD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slsb03md.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb03md.cc 2012-02-26 09:58:14 UTC (rev 9693) +++ trunk/octave-forge/main/control/src/slsb03md.cc 2012-02-26 10:04:51 UTC (rev 9694) @@ -48,7 +48,7 @@ int& INFO); } -// PKG_ADD: autoload ("slsb03md", SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("slsb03md", "control_slicot_functions.oct"); DEFUN_DLD (slsb03md, args, nargout, "-*- texinfo -*-\n\ Slicot SB03MD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slsb03od.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb03od.cc 2012-02-26 09:58:14 UTC (rev 9693) +++ trunk/octave-forge/main/control/src/slsb03od.cc 2012-02-26 10:04:51 UTC (rev 9694) @@ -45,7 +45,7 @@ int& INFO); } -// PKG_ADD: autoload ("slsb03od", SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("slsb03od", "control_slicot_functions.oct"); DEFUN_DLD (slsb03od, args, nargout, "-*- texinfo -*-\n\ Slicot SB03OD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slsb04md.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb04md.cc 2012-02-26 09:58:14 UTC (rev 9693) +++ trunk/octave-forge/main/control/src/slsb04md.cc 2012-02-26 10:04:51 UTC (rev 9694) @@ -44,7 +44,7 @@ int& INFO); } -// PKG_ADD: autoload ("slsb04md", SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("slsb04md", "control_slicot_functions.oct"); DEFUN_DLD (slsb04md, args, nargout, "-*- texinfo -*-\n\ Slicot SB04MD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slsb04qd.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb04qd.cc 2012-02-26 09:58:14 UTC (rev 9693) +++ trunk/octave-forge/main/control/src/slsb04qd.cc 2012-02-26 10:04:51 UTC (rev 9694) @@ -44,7 +44,7 @@ int& INFO); } -// PKG_ADD: autoload ("slsb04qd", SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("slsb04qd", "control_slicot_functions.oct"); DEFUN_DLD (slsb04qd, args, nargout, "-*- texinfo -*-\n\ Slicot SB04QD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slsb10dd.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb10dd.cc 2012-02-26 09:58:14 UTC (rev 9693) +++ trunk/octave-forge/main/control/src/slsb10dd.cc 2012-02-26 10:04:51 UTC (rev 9694) @@ -55,7 +55,7 @@ int& INFO); } -// PKG_ADD: autoload ("slsb10dd", SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("slsb10dd", "control_slicot_functions.oct"); DEFUN_DLD (slsb10dd, args, nargout, "-*- texinfo -*-\n\ Slicot SB10DD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slsb10ed.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb10ed.cc 2012-02-26 09:58:14 UTC (rev 9693) +++ trunk/octave-forge/main/control/src/slsb10ed.cc 2012-02-26 10:04:51 UTC (rev 9694) @@ -52,7 +52,7 @@ int& INFO); } -// PKG_ADD: autoload ("slsb10ed", SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("slsb10ed", "control_slicot_functions.oct"); DEFUN_DLD (slsb10ed, args, nargout, "-*- texinfo -*-\n\ Slicot SB10ED Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slsb10fd.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb10fd.cc 2012-02-26 09:58:14 UTC (rev 9693) +++ trunk/octave-forge/main/control/src/slsb10fd.cc 2012-02-26 10:04:51 UTC (rev 9694) @@ -53,7 +53,7 @@ int& INFO); } -// PKG_ADD: autoload ("slsb10fd", SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("slsb10fd", "control_slicot_functions.oct"); DEFUN_DLD (slsb10fd, args, nargout, "-*- texinfo -*-\n\ Slicot SB10FD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slsb10hd.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb10hd.cc 2012-02-26 09:58:14 UTC (rev 9693) +++ trunk/octave-forge/main/control/src/slsb10hd.cc 2012-02-26 10:04:51 UTC (rev 9694) @@ -52,7 +52,7 @@ int& INFO); } -// PKG_ADD: autoload ("slsb10hd", SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("slsb10hd", "control_slicot_functions.oct"); DEFUN_DLD (slsb10hd, args, nargout, "-*- texinfo -*-\n\ Slicot SB10HD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slsb10id.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb10id.cc 2012-02-26 09:58:14 UTC (rev 9693) +++ trunk/octave-forge/main/control/src/slsb10id.cc 2012-02-26 10:04:51 UTC (rev 9694) @@ -51,7 +51,7 @@ int& INFO); } -// PKG_ADD: autoload ("slsb10id", SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("slsb10id", "control_slicot_functions.oct"); DEFUN_DLD (slsb10id, args, nargout, "-*- texinfo -*-\n\ Slicot SB10ID Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slsb10jd.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb10jd.cc 2012-02-26 09:58:14 UTC (rev 9693) +++ trunk/octave-forge/main/control/src/slsb10jd.cc 2012-02-26 10:04:51 UTC (rev 9694) @@ -45,7 +45,7 @@ int& INFO); } -// PKG_ADD: autoload ("slsb10jd", SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("slsb10jd", "control_slicot_functions.oct"); DEFUN_DLD (slsb10jd, args, nargout, "-*- texinfo -*-\n\ Slicot SB10JD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slsb10kd.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb10kd.cc 2012-02-26 09:58:14 UTC (rev 9693) +++ trunk/octave-forge/main/control/src/slsb10kd.cc 2012-02-26 10:04:51 UTC (rev 9694) @@ -50,7 +50,7 @@ int& INFO); } -// PKG_ADD: autoload ("slsb10kd", SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("slsb10kd", "control_slicot_functions.oct"); DEFUN_DLD (slsb10kd, args, nargout, "-*- texinfo -*-\n\ Slicot SB10KD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slsb10yd.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb10yd.cc 2012-02-26 09:58:14 UTC (rev 9693) +++ trunk/octave-forge/main/control/src/slsb10yd.cc 2012-02-26 10:04:51 UTC (rev 9694) @@ -50,7 +50,7 @@ int& INFO); } -// PKG_ADD: autoload ("slsb10yd", SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("slsb10yd", "control_slicot_functions.oct"); DEFUN_DLD (slsb10yd, args, nargout, "-*- texinfo -*-\n\ Slicot SB10YD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slsb10zd.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb10zd.cc 2012-02-26 09:58:14 UTC (rev 9693) +++ trunk/octave-forge/main/control/src/slsb10zd.cc 2012-02-26 10:04:51 UTC (rev 9694) @@ -52,7 +52,7 @@ int& INFO); } -// PKG_ADD: autoload ("slsb10zd", SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("slsb10zd", "control_slicot_functions.oct"); DEFUN_DLD (slsb10zd, args, nargout, "-*- texinfo -*-\n\ Slicot SB10ZD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slsb16ad.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb16ad.cc 2012-02-26 09:58:14 UTC (rev 9693) +++ trunk/octave-forge/main/control/src/slsb16ad.cc 2012-02-26 10:04:51 UTC (rev 9694) @@ -56,7 +56,7 @@ int& IWARN, int& INFO); } -// PKG_ADD: autoload ("slsb16ad", SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("slsb16ad", "control_slicot_functions.oct"); DEFUN_DLD (slsb16ad, args, nargout, "-*- texinfo -*-\n\ Slicot SB16AD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slsb16bd.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb16bd.cc 2012-02-26 09:58:14 UTC (rev 9693) +++ trunk/octave-forge/main/control/src/slsb16bd.cc 2012-02-26 10:04:51 UTC (rev 9694) @@ -52,7 +52,7 @@ int& IWARN, int& INFO); } -// PKG_ADD: autoload ("slsb16bd", SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("slsb16bd", "control_slicot_functions.oct"); DEFUN_DLD (slsb16bd, args, nargout, "-*- texinfo -*-\n\ Slicot SB16BD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slsb16cd.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb16cd.cc 2012-02-26 09:58:14 UTC (rev 9693) +++ trunk/octave-forge/main/control/src/slsb16cd.cc 2012-02-26 10:04:51 UTC (rev 9694) @@ -51,7 +51,7 @@ int& IWARN, int& INFO); } -// PKG_ADD: autoload ("slsb16cd", SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("slsb16cd", "control_slicot_functions.oct"); DEFUN_DLD (slsb16cd, args, nargout, "-*- texinfo -*-\n\ Slicot SB16CD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slsg02ad.cc =================================================================== --- trunk/octave-forge/main/control/src/slsg02ad.cc 2012-02-26 09:58:14 UTC (rev 9693) +++ trunk/octave-forge/main/control/src/slsg02ad.cc 2012-02-26 10:04:51 UTC (rev 9694) @@ -60,7 +60,7 @@ int& IWARN, int& INFO); } -// PKG_ADD: autoload ("slsg02ad", SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("slsg02ad", "control_slicot_functions.oct"); DEFUN_DLD (slsg02ad, args, nargout, "-*- texinfo -*-\n\ Slicot SG02AD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slsg03ad.cc =================================================================== --- trunk/octave-forge/main/control/src/slsg03ad.cc 2012-02-26 09:58:14 UTC (rev 9693) +++ trunk/octave-forge/main/control/src/slsg03ad.cc 2012-02-26 10:04:51 UTC (rev 9694) @@ -52,7 +52,7 @@ int& INFO); } -// PKG_ADD: autoload ("slsg03ad", SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("slsg03ad", "control_slicot_functions.oct"); DEFUN_DLD (slsg03ad, args, nargout, "-*- texinfo -*-\n\ Slicot SG03AD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slsg03bd.cc =================================================================== --- trunk/octave-forge/main/control/src/slsg03bd.cc 2012-02-26 09:58:14 UTC (rev 9693) +++ trunk/octave-forge/main/control/src/slsg03bd.cc 2012-02-26 10:04:51 UTC (rev 9694) @@ -48,7 +48,7 @@ int& INFO); } -// PKG_ADD: autoload ("slsg03bd", SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("slsg03bd", "control_slicot_functions.oct"); DEFUN_DLD (slsg03bd, args, nargout, "-*- texinfo -*-\n\ Slicot SG03BD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/sltb01id.cc =================================================================== --- trunk/octave-forge/main/control/src/sltb01id.cc 2012-02-26 09:58:14 UTC (rev 9693) +++ trunk/octave-forge/main/control/src/sltb01id.cc 2012-02-26 10:04:51 UTC (rev 9694) @@ -44,7 +44,7 @@ int& INFO); } -// PKG_ADD: autoload ("sltb01id", SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("sltb01id", "control_slicot_functions.oct"); DEFUN_DLD (sltb01id, args, nargout, "-*- texinfo -*-\n\ Slicot TB01ID Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/sltb01pd.cc =================================================================== --- trunk/octave-forge/main/control/src/sltb01pd.cc 2012-02-26 09:58:14 UTC (rev 9693) +++ trunk/octave-forge/main/control/src/sltb01pd.cc 2012-02-26 10:04:51 UTC (rev 9694) @@ -46,7 +46,7 @@ int& INFO); } -// PKG_ADD: autoload ("sltb01pd", SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("sltb01pd", "control_slicot_functions.oct"); DEFUN_DLD (sltb01pd, args, nargout, "-*- texinfo -*-\n\ Slicot TB01PD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/sltb01ud.cc =================================================================== --- trunk/octave-forge/main/control/src/sltb01ud.cc 2012-02-26 09:58:14 UTC (rev 9693) +++ trunk/octave-forge/main/control/src/sltb01ud.cc 2012-02-26 10:04:51 UTC (rev 9694) @@ -49,7 +49,7 @@ int& INFO); } -// PKG_ADD: autoload ("sltb01ud", SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("sltb01ud", "control_slicot_functions.oct"); DEFUN_DLD (sltb01ud, args, nargout, "-*- texinfo -*-\n\ Slicot TB01UD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/sltb04bd.cc =================================================================== --- trunk/octave-forge/main/control/src/sltb04bd.cc 2012-02-26 09:58:14 UTC (rev 9693) +++ trunk/octave-forge/main/control/src/sltb04bd.cc 2012-02-26 10:04:51 UTC (rev 9694) @@ -50,7 +50,7 @@ int& INFO); } -// PKG_ADD: autoload ("sltb04bd", SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("sltb04bd", "control_slicot_functions.oct"); DEFUN_DLD (sltb04bd, args, nargout, "-*- texinfo -*-\n\ Slicot TB04BD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/sltd04ad.cc =================================================================== --- trunk/octave-forge/main/control/src/sltd04ad.cc 2012-02-26 09:58:14 UTC (rev 9693) +++ trunk/octave-forge/main/control/src/sltd04ad.cc 2012-02-26 10:04:51 UTC (rev 9694) @@ -53,7 +53,7 @@ int& INFO); } -// PKG_ADD: autoload ("sltd04ad", SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("sltd04ad", "control_slicot_functions.oct"); DEFUN_DLD (sltd04ad, args, nargout, "-*- texinfo -*-\n\ Slicot TD04AD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/sltg01ad.cc =================================================================== --- trunk/octave-forge/main/control/src/sltg01ad.cc 2012-02-26 09:58:14 UTC (rev 9693) +++ trunk/octave-forge/main/control/src/sltg01ad.cc 2012-02-26 10:04:51 UTC (rev 9694) @@ -46,7 +46,7 @@ int& INFO); } -// PKG_ADD: autoload ("sltg01ad", SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("sltg01ad", "control_slicot_functions.oct"); DEFUN_DLD (sltg01ad, args, nargout, "-*- texinfo -*-\n\ Slicot TG01AD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/sltg01hd.cc =================================================================== --- trunk/octave-forge/main/control/src/sltg01hd.cc 2012-02-26 09:58:14 UTC (rev 9693) +++ trunk/octave-forge/main/control/src/sltg01hd.cc 2012-02-26 10:04:51 UTC (rev 9694) @@ -51,7 +51,7 @@ int& INFO); } -// PKG_ADD: autoload ("sltg01hd", SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("sltg01hd", "control_slicot_functions.oct"); DEFUN_DLD (sltg01hd, args, nargout, "Slicot TG01HD Release 5.0") { int nargin = args.length (); Modified: trunk/octave-forge/main/control/src/sltg01id.cc =================================================================== --- trunk/octave-forge/main/control/src/sltg01id.cc 2012-02-26 09:58:14 UTC (rev 9693) +++ trunk/octave-forge/main/control/src/sltg01id.cc 2012-02-26 10:04:51 UTC (rev 9694) @@ -51,7 +51,7 @@ int& INFO); } -// PKG_ADD: autoload ("sltg01id", SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("sltg01id", "control_slicot_functions.oct"); DEFUN_DLD (sltg01id, args, nargout, "Slicot TG01ID Release 5.0") { int nargin = args.length (); Modified: trunk/octave-forge/main/control/src/sltg01jd.cc =================================================================== --- trunk/octave-forge/main/control/src/sltg01jd.cc 2012-02-26 09:58:14 UTC (rev 9693) +++ trunk/octave-forge/main/control/src/sltg01jd.cc 2012-02-26 10:04:51 UTC (rev 9694) @@ -48,7 +48,7 @@ int& INFO); } -// PKG_ADD: autoload ("sltg01jd", SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("sltg01jd", "control_slicot_functions.oct"); DEFUN_DLD (sltg01jd, args, nargout, "-*- texinfo -*-\n\ Slicot TG01JD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/sltg04bx.cc =================================================================== --- trunk/octave-forge/main/control/src/sltg04bx.cc 2012-02-26 09:58:14 UTC (rev 9693) +++ trunk/octave-forge/main/control/src/sltg04bx.cc 2012-02-26 10:04:51 UTC (rev 9694) @@ -46,7 +46,7 @@ int* IWORK); } -// PKG_ADD: autoload ("sltg04bx", SLICOTCONTROL".oct"); +// PKG_ADD: autoload ("sltg04bx", "control_slicot_functions.oct"); DEFUN_DLD (sltg04bx, args, nargout, "-*- texinfo -*-\n\ Slicot TG04BX Release 5.0\n\ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2012-02-26 20:07:15
|
Revision: 9700 http://octave.svn.sourceforge.net/octave/?rev=9700&view=rev Author: paramaniac Date: 2012-02-26 20:07:08 +0000 (Sun, 26 Feb 2012) Log Message: ----------- control: add header file for common.cc Modified Paths: -------------- trunk/octave-forge/main/control/src/Makefile trunk/octave-forge/main/control/src/common.cc trunk/octave-forge/main/control/src/control_slicot_functions.cc Added Paths: ----------- trunk/octave-forge/main/control/src/common.h Modified: trunk/octave-forge/main/control/src/Makefile =================================================================== --- trunk/octave-forge/main/control/src/Makefile 2012-02-26 13:44:01 UTC (rev 9699) +++ trunk/octave-forge/main/control/src/Makefile 2012-02-26 20:07:08 UTC (rev 9700) @@ -28,7 +28,7 @@ # slicot functions control_slicot_functions.oct: control_slicot_functions.cc slicotlibrary.a - mkoctfile control_slicot_functions.cc slicotlibrary.a \ + mkoctfile control_slicot_functions.cc common.cc slicotlibrary.a \ ${LAPACK_LIBS} ${BLAS_LIBS} ${FLIBS} # helpers Modified: trunk/octave-forge/main/control/src/common.cc =================================================================== --- trunk/octave-forge/main/control/src/common.cc 2012-02-26 13:44:01 UTC (rev 9699) +++ trunk/octave-forge/main/control/src/common.cc 2012-02-26 20:07:08 UTC (rev 9700) @@ -26,6 +26,8 @@ */ +#include <octave/oct.h> + int max (int a, int b) { if (a > b) Added: trunk/octave-forge/main/control/src/common.h =================================================================== --- trunk/octave-forge/main/control/src/common.h (rev 0) +++ trunk/octave-forge/main/control/src/common.h 2012-02-26 20:07:08 UTC (rev 9700) @@ -0,0 +1,40 @@ +/* + +Copyright (C) 2012 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 LTI Syncope. If not, see <http://www.gnu.org/licenses/>. + +Common code for oct-files. + +Author: Lukas Reichlin <luk...@gm...> +Created: February 2012 +Version: 0.1 + +*/ + +#ifndef COMMON_H +#define COMMON_H + +int max (int a, int b); +int max (int a, int b, int c); +int max (int a, int b, int c, int d); +int max (int a, int b, int c, int d, int e); +int min (int a, int b); +void error_msg (const char name[], int index, int max, const char* msg[]); +void warning_msg (const char name[], int index, int max, const char* msg[]); +void warning_msg (const char name[], int index, int max, const char* msg[], int offset); + +#endif Modified: trunk/octave-forge/main/control/src/control_slicot_functions.cc =================================================================== --- trunk/octave-forge/main/control/src/control_slicot_functions.cc 2012-02-26 13:44:01 UTC (rev 9699) +++ trunk/octave-forge/main/control/src/control_slicot_functions.cc 2012-02-26 20:07:08 UTC (rev 9700) @@ -1,10 +1,5 @@ -/* TODO: * create common.h - * * add common.cc to makefile (control_slicot_functions.oct) - */ +#include "common.h" // common code for all functions of the oct-file -#include <octave/oct.h> -#include "common.cc" // common code for all functions of the oct-file - #include "slab08nd.cc" // transmission zeros of state-space models #include "slab13dd.cc" // L-infinity norm #include "slsb10hd.cc" // H-2 controller synthesis - continuous-time This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2012-02-26 20:15:07
|
Revision: 9701 http://octave.svn.sourceforge.net/octave/?rev=9701&view=rev Author: paramaniac Date: 2012-02-26 20:15:00 +0000 (Sun, 26 Feb 2012) Log Message: ----------- control: add header file common.h to individual .cc files Modified Paths: -------------- trunk/octave-forge/main/control/src/control_slicot_functions.cc trunk/octave-forge/main/control/src/slab01od.cc trunk/octave-forge/main/control/src/slab04md.cc trunk/octave-forge/main/control/src/slab08nd.cc trunk/octave-forge/main/control/src/slab09hd.cc trunk/octave-forge/main/control/src/slab09id.cc trunk/octave-forge/main/control/src/slab09jd.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/slag08bd.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/slsb03od.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/slsb10id.cc trunk/octave-forge/main/control/src/slsb10jd.cc trunk/octave-forge/main/control/src/slsb10kd.cc trunk/octave-forge/main/control/src/slsb10yd.cc trunk/octave-forge/main/control/src/slsb10zd.cc trunk/octave-forge/main/control/src/slsb16ad.cc trunk/octave-forge/main/control/src/slsb16bd.cc trunk/octave-forge/main/control/src/slsb16cd.cc trunk/octave-forge/main/control/src/slsg02ad.cc trunk/octave-forge/main/control/src/slsg03ad.cc trunk/octave-forge/main/control/src/slsg03bd.cc trunk/octave-forge/main/control/src/sltb01id.cc trunk/octave-forge/main/control/src/sltb01pd.cc trunk/octave-forge/main/control/src/sltb01ud.cc trunk/octave-forge/main/control/src/sltb04bd.cc trunk/octave-forge/main/control/src/sltd04ad.cc trunk/octave-forge/main/control/src/sltg01ad.cc trunk/octave-forge/main/control/src/sltg01hd.cc trunk/octave-forge/main/control/src/sltg01id.cc trunk/octave-forge/main/control/src/sltg01jd.cc trunk/octave-forge/main/control/src/sltg04bx.cc Modified: trunk/octave-forge/main/control/src/control_slicot_functions.cc =================================================================== --- trunk/octave-forge/main/control/src/control_slicot_functions.cc 2012-02-26 20:07:08 UTC (rev 9700) +++ trunk/octave-forge/main/control/src/control_slicot_functions.cc 2012-02-26 20:15:00 UTC (rev 9701) @@ -1,5 +1,3 @@ -#include "common.h" // common code for all functions of the oct-file - #include "slab08nd.cc" // transmission zeros of state-space models #include "slab13dd.cc" // L-infinity norm #include "slsb10hd.cc" // H-2 controller synthesis - continuous-time Modified: trunk/octave-forge/main/control/src/slab01od.cc =================================================================== --- trunk/octave-forge/main/control/src/slab01od.cc 2012-02-26 20:07:08 UTC (rev 9700) +++ trunk/octave-forge/main/control/src/slab01od.cc 2012-02-26 20:15:00 UTC (rev 9701) @@ -29,7 +29,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -//#include "common.cc" +#include "common.h" extern "C" { Modified: trunk/octave-forge/main/control/src/slab04md.cc =================================================================== --- trunk/octave-forge/main/control/src/slab04md.cc 2012-02-26 20:07:08 UTC (rev 9700) +++ trunk/octave-forge/main/control/src/slab04md.cc 2012-02-26 20:15:00 UTC (rev 9701) @@ -30,7 +30,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -//#include "common.cc" +#include "common.h" extern "C" { Modified: trunk/octave-forge/main/control/src/slab08nd.cc =================================================================== --- trunk/octave-forge/main/control/src/slab08nd.cc 2012-02-26 20:07:08 UTC (rev 9700) +++ trunk/octave-forge/main/control/src/slab08nd.cc 2012-02-26 20:15:00 UTC (rev 9701) @@ -29,7 +29,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -//#include "common.cc" +#include "common.h" #include <complex> #include <xpow.h> Modified: trunk/octave-forge/main/control/src/slab09hd.cc =================================================================== --- trunk/octave-forge/main/control/src/slab09hd.cc 2012-02-26 20:07:08 UTC (rev 9700) +++ trunk/octave-forge/main/control/src/slab09hd.cc 2012-02-26 20:15:00 UTC (rev 9701) @@ -29,7 +29,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -//#include "common.cc" +#include "common.h" extern "C" { Modified: trunk/octave-forge/main/control/src/slab09id.cc =================================================================== --- trunk/octave-forge/main/control/src/slab09id.cc 2012-02-26 20:07:08 UTC (rev 9700) +++ trunk/octave-forge/main/control/src/slab09id.cc 2012-02-26 20:15:00 UTC (rev 9701) @@ -30,7 +30,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -//#include "common.cc" +#include "common.h" extern "C" { Modified: trunk/octave-forge/main/control/src/slab09jd.cc =================================================================== --- trunk/octave-forge/main/control/src/slab09jd.cc 2012-02-26 20:07:08 UTC (rev 9700) +++ trunk/octave-forge/main/control/src/slab09jd.cc 2012-02-26 20:15:00 UTC (rev 9701) @@ -29,7 +29,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -//#include "common.cc" +#include "common.h" extern "C" { Modified: trunk/octave-forge/main/control/src/slab13ad.cc =================================================================== --- trunk/octave-forge/main/control/src/slab13ad.cc 2012-02-26 20:07:08 UTC (rev 9700) +++ trunk/octave-forge/main/control/src/slab13ad.cc 2012-02-26 20:15:00 UTC (rev 9701) @@ -29,7 +29,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -//#include "common.cc" +#include "common.h" extern "C" { Modified: trunk/octave-forge/main/control/src/slab13bd.cc =================================================================== --- trunk/octave-forge/main/control/src/slab13bd.cc 2012-02-26 20:07:08 UTC (rev 9700) +++ trunk/octave-forge/main/control/src/slab13bd.cc 2012-02-26 20:15:00 UTC (rev 9701) @@ -29,7 +29,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -//#include "common.cc" +#include "common.h" extern "C" { Modified: trunk/octave-forge/main/control/src/slab13dd.cc =================================================================== --- trunk/octave-forge/main/control/src/slab13dd.cc 2012-02-26 20:07:08 UTC (rev 9700) +++ trunk/octave-forge/main/control/src/slab13dd.cc 2012-02-26 20:15:00 UTC (rev 9701) @@ -30,7 +30,7 @@ #include <octave/oct.h> #include <f77-fcn.h> #include <complex> -//#include "common.cc" +#include "common.h" extern "C" { Modified: trunk/octave-forge/main/control/src/slag08bd.cc =================================================================== --- trunk/octave-forge/main/control/src/slag08bd.cc 2012-02-26 20:07:08 UTC (rev 9700) +++ trunk/octave-forge/main/control/src/slag08bd.cc 2012-02-26 20:15:00 UTC (rev 9701) @@ -29,7 +29,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -//#include "common.cc" +#include "common.h" #include <complex> #include <xpow.h> Modified: trunk/octave-forge/main/control/src/slsb01bd.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb01bd.cc 2012-02-26 20:07:08 UTC (rev 9700) +++ trunk/octave-forge/main/control/src/slsb01bd.cc 2012-02-26 20:15:00 UTC (rev 9701) @@ -29,7 +29,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -//#include "common.cc" +#include "common.h" extern "C" { Modified: trunk/octave-forge/main/control/src/slsb02od.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb02od.cc 2012-02-26 20:07:08 UTC (rev 9700) +++ trunk/octave-forge/main/control/src/slsb02od.cc 2012-02-26 20:15:00 UTC (rev 9701) @@ -29,7 +29,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -//#include "common.cc" +#include "common.h" #include <complex> extern "C" Modified: trunk/octave-forge/main/control/src/slsb03md.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb03md.cc 2012-02-26 20:07:08 UTC (rev 9700) +++ trunk/octave-forge/main/control/src/slsb03md.cc 2012-02-26 20:15:00 UTC (rev 9701) @@ -29,7 +29,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -//#include "common.cc" +#include "common.h" extern "C" { Modified: trunk/octave-forge/main/control/src/slsb03od.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb03od.cc 2012-02-26 20:07:08 UTC (rev 9700) +++ trunk/octave-forge/main/control/src/slsb03od.cc 2012-02-26 20:15:00 UTC (rev 9701) @@ -29,7 +29,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -//#include "common.cc" +#include "common.h" extern "C" { Modified: trunk/octave-forge/main/control/src/slsb04md.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb04md.cc 2012-02-26 20:07:08 UTC (rev 9700) +++ trunk/octave-forge/main/control/src/slsb04md.cc 2012-02-26 20:15:00 UTC (rev 9701) @@ -29,7 +29,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -//#include "common.cc" +#include "common.h" extern "C" { Modified: trunk/octave-forge/main/control/src/slsb04qd.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb04qd.cc 2012-02-26 20:07:08 UTC (rev 9700) +++ trunk/octave-forge/main/control/src/slsb04qd.cc 2012-02-26 20:15:00 UTC (rev 9701) @@ -29,7 +29,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -//#include "common.cc" +#include "common.h" extern "C" { Modified: trunk/octave-forge/main/control/src/slsb10dd.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb10dd.cc 2012-02-26 20:07:08 UTC (rev 9700) +++ trunk/octave-forge/main/control/src/slsb10dd.cc 2012-02-26 20:15:00 UTC (rev 9701) @@ -29,7 +29,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -//#include "common.cc" +#include "common.h" extern "C" { Modified: trunk/octave-forge/main/control/src/slsb10ed.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb10ed.cc 2012-02-26 20:07:08 UTC (rev 9700) +++ trunk/octave-forge/main/control/src/slsb10ed.cc 2012-02-26 20:15:00 UTC (rev 9701) @@ -29,7 +29,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -//#include "common.cc" +#include "common.h" extern "C" { Modified: trunk/octave-forge/main/control/src/slsb10fd.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb10fd.cc 2012-02-26 20:07:08 UTC (rev 9700) +++ trunk/octave-forge/main/control/src/slsb10fd.cc 2012-02-26 20:15:00 UTC (rev 9701) @@ -29,7 +29,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -//#include "common.cc" +#include "common.h" extern "C" { Modified: trunk/octave-forge/main/control/src/slsb10hd.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb10hd.cc 2012-02-26 20:07:08 UTC (rev 9700) +++ trunk/octave-forge/main/control/src/slsb10hd.cc 2012-02-26 20:15:00 UTC (rev 9701) @@ -29,7 +29,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -//#include "common.cc" +#include "common.h" extern "C" { Modified: trunk/octave-forge/main/control/src/slsb10id.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb10id.cc 2012-02-26 20:07:08 UTC (rev 9700) +++ trunk/octave-forge/main/control/src/slsb10id.cc 2012-02-26 20:15:00 UTC (rev 9701) @@ -29,7 +29,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -//#include "common.cc" +#include "common.h" extern "C" { Modified: trunk/octave-forge/main/control/src/slsb10jd.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb10jd.cc 2012-02-26 20:07:08 UTC (rev 9700) +++ trunk/octave-forge/main/control/src/slsb10jd.cc 2012-02-26 20:15:00 UTC (rev 9701) @@ -29,7 +29,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -//#include "common.cc" +#include "common.h" extern "C" { Modified: trunk/octave-forge/main/control/src/slsb10kd.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb10kd.cc 2012-02-26 20:07:08 UTC (rev 9700) +++ trunk/octave-forge/main/control/src/slsb10kd.cc 2012-02-26 20:15:00 UTC (rev 9701) @@ -29,7 +29,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -//#include "common.cc" +#include "common.h" extern "C" { Modified: trunk/octave-forge/main/control/src/slsb10yd.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb10yd.cc 2012-02-26 20:07:08 UTC (rev 9700) +++ trunk/octave-forge/main/control/src/slsb10yd.cc 2012-02-26 20:15:00 UTC (rev 9701) @@ -30,7 +30,7 @@ #include <octave/oct.h> #include <f77-fcn.h> #include <complex> -//#include "common.cc" +#include "common.h" extern "C" { Modified: trunk/octave-forge/main/control/src/slsb10zd.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb10zd.cc 2012-02-26 20:07:08 UTC (rev 9700) +++ trunk/octave-forge/main/control/src/slsb10zd.cc 2012-02-26 20:15:00 UTC (rev 9701) @@ -29,7 +29,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -//#include "common.cc" +#include "common.h" extern "C" { Modified: trunk/octave-forge/main/control/src/slsb16ad.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb16ad.cc 2012-02-26 20:07:08 UTC (rev 9700) +++ trunk/octave-forge/main/control/src/slsb16ad.cc 2012-02-26 20:15:00 UTC (rev 9701) @@ -30,7 +30,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -//#include "common.cc" +#include "common.h" extern "C" { Modified: trunk/octave-forge/main/control/src/slsb16bd.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb16bd.cc 2012-02-26 20:07:08 UTC (rev 9700) +++ trunk/octave-forge/main/control/src/slsb16bd.cc 2012-02-26 20:15:00 UTC (rev 9701) @@ -29,7 +29,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -//#include "common.cc" +#include "common.h" extern "C" { Modified: trunk/octave-forge/main/control/src/slsb16cd.cc =================================================================== --- trunk/octave-forge/main/control/src/slsb16cd.cc 2012-02-26 20:07:08 UTC (rev 9700) +++ trunk/octave-forge/main/control/src/slsb16cd.cc 2012-02-26 20:15:00 UTC (rev 9701) @@ -29,7 +29,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -//#include "common.cc" +#include "common.h" extern "C" { Modified: trunk/octave-forge/main/control/src/slsg02ad.cc =================================================================== --- trunk/octave-forge/main/control/src/slsg02ad.cc 2012-02-26 20:07:08 UTC (rev 9700) +++ trunk/octave-forge/main/control/src/slsg02ad.cc 2012-02-26 20:15:00 UTC (rev 9701) @@ -29,7 +29,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -//#include "common.cc" +#include "common.h" #include <complex> extern "C" Modified: trunk/octave-forge/main/control/src/slsg03ad.cc =================================================================== --- trunk/octave-forge/main/control/src/slsg03ad.cc 2012-02-26 20:07:08 UTC (rev 9700) +++ trunk/octave-forge/main/control/src/slsg03ad.cc 2012-02-26 20:15:00 UTC (rev 9701) @@ -29,7 +29,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -//#include "common.cc" +#include "common.h" extern "C" { Modified: trunk/octave-forge/main/control/src/slsg03bd.cc =================================================================== --- trunk/octave-forge/main/control/src/slsg03bd.cc 2012-02-26 20:07:08 UTC (rev 9700) +++ trunk/octave-forge/main/control/src/slsg03bd.cc 2012-02-26 20:15:00 UTC (rev 9701) @@ -29,7 +29,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -//#include "common.cc" +#include "common.h" extern "C" { Modified: trunk/octave-forge/main/control/src/sltb01id.cc =================================================================== --- trunk/octave-forge/main/control/src/sltb01id.cc 2012-02-26 20:07:08 UTC (rev 9700) +++ trunk/octave-forge/main/control/src/sltb01id.cc 2012-02-26 20:15:00 UTC (rev 9701) @@ -29,7 +29,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -//#include "common.cc" +#include "common.h" extern "C" { Modified: trunk/octave-forge/main/control/src/sltb01pd.cc =================================================================== --- trunk/octave-forge/main/control/src/sltb01pd.cc 2012-02-26 20:07:08 UTC (rev 9700) +++ trunk/octave-forge/main/control/src/sltb01pd.cc 2012-02-26 20:15:00 UTC (rev 9701) @@ -29,7 +29,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -//#include "common.cc" +#include "common.h" extern "C" { Modified: trunk/octave-forge/main/control/src/sltb01ud.cc =================================================================== --- trunk/octave-forge/main/control/src/sltb01ud.cc 2012-02-26 20:07:08 UTC (rev 9700) +++ trunk/octave-forge/main/control/src/sltb01ud.cc 2012-02-26 20:15:00 UTC (rev 9701) @@ -29,7 +29,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -//#include "common.cc" +#include "common.h" extern "C" { Modified: trunk/octave-forge/main/control/src/sltb04bd.cc =================================================================== --- trunk/octave-forge/main/control/src/sltb04bd.cc 2012-02-26 20:07:08 UTC (rev 9700) +++ trunk/octave-forge/main/control/src/sltb04bd.cc 2012-02-26 20:15:00 UTC (rev 9701) @@ -30,7 +30,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -//#include "common.cc" +#include "common.h" extern "C" { Modified: trunk/octave-forge/main/control/src/sltd04ad.cc =================================================================== --- trunk/octave-forge/main/control/src/sltd04ad.cc 2012-02-26 20:07:08 UTC (rev 9700) +++ trunk/octave-forge/main/control/src/sltd04ad.cc 2012-02-26 20:15:00 UTC (rev 9701) @@ -32,7 +32,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -//#include "common.cc" +#include "common.h" extern "C" { Modified: trunk/octave-forge/main/control/src/sltg01ad.cc =================================================================== --- trunk/octave-forge/main/control/src/sltg01ad.cc 2012-02-26 20:07:08 UTC (rev 9700) +++ trunk/octave-forge/main/control/src/sltg01ad.cc 2012-02-26 20:15:00 UTC (rev 9701) @@ -29,7 +29,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -//#include "common.cc" +#include "common.h" extern "C" { Modified: trunk/octave-forge/main/control/src/sltg01hd.cc =================================================================== --- trunk/octave-forge/main/control/src/sltg01hd.cc 2012-02-26 20:07:08 UTC (rev 9700) +++ trunk/octave-forge/main/control/src/sltg01hd.cc 2012-02-26 20:15:00 UTC (rev 9701) @@ -29,7 +29,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -//#include "common.cc" +#include "common.h" extern "C" { Modified: trunk/octave-forge/main/control/src/sltg01id.cc =================================================================== --- trunk/octave-forge/main/control/src/sltg01id.cc 2012-02-26 20:07:08 UTC (rev 9700) +++ trunk/octave-forge/main/control/src/sltg01id.cc 2012-02-26 20:15:00 UTC (rev 9701) @@ -29,7 +29,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -//#include "common.cc" +#include "common.h" extern "C" { Modified: trunk/octave-forge/main/control/src/sltg01jd.cc =================================================================== --- trunk/octave-forge/main/control/src/sltg01jd.cc 2012-02-26 20:07:08 UTC (rev 9700) +++ trunk/octave-forge/main/control/src/sltg01jd.cc 2012-02-26 20:15:00 UTC (rev 9701) @@ -29,7 +29,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -//#include "common.cc" +#include "common.h" extern "C" { Modified: trunk/octave-forge/main/control/src/sltg04bx.cc =================================================================== --- trunk/octave-forge/main/control/src/sltg04bx.cc 2012-02-26 20:07:08 UTC (rev 9700) +++ trunk/octave-forge/main/control/src/sltg04bx.cc 2012-02-26 20:15:00 UTC (rev 9701) @@ -27,7 +27,7 @@ #include <octave/oct.h> #include <f77-fcn.h> -//#include "common.cc" +#include "common.h" #include <complex> #include <xpow.h> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2012-04-23 15:58:25
|
Revision: 10312 http://octave.svn.sourceforge.net/octave/?rev=10312&view=rev Author: paramaniac Date: 2012-04-23 15:58:14 +0000 (Mon, 23 Apr 2012) Log Message: ----------- control: include reference lapack for debugging Modified Paths: -------------- trunk/octave-forge/main/control/src/Makefile Added Paths: ----------- trunk/octave-forge/main/control/src/lapack-3.4.1.tgz Modified: trunk/octave-forge/main/control/src/Makefile =================================================================== --- trunk/octave-forge/main/control/src/Makefile 2012-04-23 01:04:13 UTC (rev 10311) +++ trunk/octave-forge/main/control/src/Makefile 2012-04-23 15:58:14 UTC (rev 10312) @@ -1,5 +1,5 @@ -LAPACK_LIBS := $(shell mkoctfile -p LAPACK_LIBS) -BLAS_LIBS := $(shell mkoctfile -p BLAS_LIBS) +# LAPACK_LIBS := $(shell mkoctfile -p LAPACK_LIBS) +# BLAS_LIBS := $(shell mkoctfile -p BLAS_LIBS) FLIBS := $(shell mkoctfile -p FLIBS) all: control_slicot_functions.oct \ @@ -24,10 +24,19 @@ ar -rc slicotlibrary.a *.o rm -rf *.o *.f slicot +lapacklibrary.a: lapack-3.4.1.tgz + tar -xzf lapack-3.4.1.tgz + mv lapack-3.4.1/BLAS/SRC/*.f . + mv lapack-3.4.1/INSTALL/*.f . + mv lapack-3.4.1/SRC/*.f . + mkoctfile -c *.f + ar -rc lapacklibrary.a *.o + rm -rf *.o *.f lapack-3.4.1 + # slicot functions -control_slicot_functions.oct: control_slicot_functions.cc slicotlibrary.a - mkoctfile control_slicot_functions.cc common.cc slicotlibrary.a \ - ${LAPACK_LIBS} ${BLAS_LIBS} ${FLIBS} +control_slicot_functions.oct: control_slicot_functions.cc slicotlibrary.a lapacklibrary.a + mkoctfile control_slicot_functions.cc common.cc slicotlibrary.a lapacklibrary.a \ + ${FLIBS} # helpers is_real_scalar.oct: is_real_scalar.cc @@ -43,7 +52,7 @@ mkoctfile is_real_square_matrix.cc clean: - rm -rf *.o core octave-core *.oct *~ *.f slicot + rm -rf *.o core octave-core *.oct *~ *.f slicot lapack-3.4.1 realclean: clean rm -rf *.a \ No newline at end of file Added: trunk/octave-forge/main/control/src/lapack-3.4.1.tgz =================================================================== (Binary files differ) Property changes on: trunk/octave-forge/main/control/src/lapack-3.4.1.tgz ___________________________________________________________________ Added: svn:mime-type + application/octet-stream This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2012-08-14 20:50:49
|
Revision: 10873 http://octave.svn.sourceforge.net/octave/?rev=10873&view=rev Author: paramaniac Date: 2012-08-14 20:50:42 +0000 (Tue, 14 Aug 2012) Log Message: ----------- control: fix oct-filename Modified Paths: -------------- trunk/octave-forge/main/control/src/slib01ad.cc trunk/octave-forge/main/control/src/slib01cd.cc trunk/octave-forge/main/control/src/slident.cc Modified: trunk/octave-forge/main/control/src/slib01ad.cc =================================================================== --- trunk/octave-forge/main/control/src/slib01ad.cc 2012-08-14 20:33:19 UTC (rev 10872) +++ trunk/octave-forge/main/control/src/slib01ad.cc 2012-08-14 20:50:42 UTC (rev 10873) @@ -50,7 +50,7 @@ int& IWARN, int& INFO); } -// PKG_ADD: autoload ("slib01ad", "devel_slicot_functions.oct"); +// PKG_ADD: autoload ("slib01ad", "control_slicot_functions.oct"); DEFUN_DLD (slib01ad, args, nargout, "-*- texinfo -*-\n\ Slicot IB01AD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slib01cd.cc =================================================================== --- trunk/octave-forge/main/control/src/slib01cd.cc 2012-08-14 20:33:19 UTC (rev 10872) +++ trunk/octave-forge/main/control/src/slib01cd.cc 2012-08-14 20:50:42 UTC (rev 10873) @@ -52,7 +52,7 @@ int& IWARN, int& INFO); } -// PKG_ADD: autoload ("slib01cd", "devel_slicot_functions.oct"); +// PKG_ADD: autoload ("slib01cd", "control_slicot_functions.oct"); DEFUN_DLD (slib01cd, args, nargout, "-*- texinfo -*-\n\ Slicot IB01CD Release 5.0\n\ Modified: trunk/octave-forge/main/control/src/slident.cc =================================================================== --- trunk/octave-forge/main/control/src/slident.cc 2012-08-14 20:33:19 UTC (rev 10872) +++ trunk/octave-forge/main/control/src/slident.cc 2012-08-14 20:50:42 UTC (rev 10873) @@ -86,7 +86,7 @@ int& IWARN, int& INFO); } -// PKG_ADD: autoload ("slident", "devel_slicot_functions.oct"); +// PKG_ADD: autoload ("slident", "control_slicot_functions.oct"); DEFUN_DLD (slident, args, nargout, "-*- texinfo -*-\n\ Slicot IB01AD Release 5.0\n\ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2012-09-09 19:09:57
|
Revision: 10988 http://octave.svn.sourceforge.net/octave/?rev=10988&view=rev Author: paramaniac Date: 2012-09-09 19:09:48 +0000 (Sun, 09 Sep 2012) Log Message: ----------- control: add underscores to C++ filenames Modified Paths: -------------- trunk/octave-forge/main/control/src/__control_slicot_functions__.cc Added Paths: ----------- trunk/octave-forge/main/control/src/sl_ab01od.cc trunk/octave-forge/main/control/src/sl_ab04md.cc trunk/octave-forge/main/control/src/sl_ab08nd.cc trunk/octave-forge/main/control/src/sl_ab09hd.cc trunk/octave-forge/main/control/src/sl_ab09id.cc trunk/octave-forge/main/control/src/sl_ab09jd.cc trunk/octave-forge/main/control/src/sl_ab13ad.cc trunk/octave-forge/main/control/src/sl_ab13bd.cc trunk/octave-forge/main/control/src/sl_ab13dd.cc trunk/octave-forge/main/control/src/sl_ag08bd.cc trunk/octave-forge/main/control/src/sl_ib01ad.cc trunk/octave-forge/main/control/src/sl_ib01cd.cc trunk/octave-forge/main/control/src/sl_ident.cc trunk/octave-forge/main/control/src/sl_sb01bd.cc trunk/octave-forge/main/control/src/sl_sb02od.cc trunk/octave-forge/main/control/src/sl_sb03md.cc trunk/octave-forge/main/control/src/sl_sb03od.cc trunk/octave-forge/main/control/src/sl_sb04md.cc trunk/octave-forge/main/control/src/sl_sb04qd.cc trunk/octave-forge/main/control/src/sl_sb10dd.cc trunk/octave-forge/main/control/src/sl_sb10ed.cc trunk/octave-forge/main/control/src/sl_sb10fd.cc trunk/octave-forge/main/control/src/sl_sb10hd.cc trunk/octave-forge/main/control/src/sl_sb10id.cc trunk/octave-forge/main/control/src/sl_sb10jd.cc trunk/octave-forge/main/control/src/sl_sb10kd.cc trunk/octave-forge/main/control/src/sl_sb10yd.cc trunk/octave-forge/main/control/src/sl_sb10zd.cc trunk/octave-forge/main/control/src/sl_sb16ad.cc trunk/octave-forge/main/control/src/sl_sb16bd.cc trunk/octave-forge/main/control/src/sl_sb16cd.cc trunk/octave-forge/main/control/src/sl_sg02ad.cc trunk/octave-forge/main/control/src/sl_sg03ad.cc trunk/octave-forge/main/control/src/sl_sg03bd.cc trunk/octave-forge/main/control/src/sl_tb01id.cc trunk/octave-forge/main/control/src/sl_tb01pd.cc trunk/octave-forge/main/control/src/sl_tb01ud.cc trunk/octave-forge/main/control/src/sl_tb04bd.cc trunk/octave-forge/main/control/src/sl_td04ad.cc trunk/octave-forge/main/control/src/sl_tg01ad.cc trunk/octave-forge/main/control/src/sl_tg01hd.cc trunk/octave-forge/main/control/src/sl_tg01id.cc trunk/octave-forge/main/control/src/sl_tg01jd.cc trunk/octave-forge/main/control/src/sl_tg04bx.cc Removed Paths: ------------- trunk/octave-forge/main/control/src/slab01od.cc trunk/octave-forge/main/control/src/slab04md.cc trunk/octave-forge/main/control/src/slab08nd.cc trunk/octave-forge/main/control/src/slab09hd.cc trunk/octave-forge/main/control/src/slab09id.cc trunk/octave-forge/main/control/src/slab09jd.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/slag08bd.cc trunk/octave-forge/main/control/src/slib01ad.cc trunk/octave-forge/main/control/src/slib01cd.cc trunk/octave-forge/main/control/src/slident.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/slsb03od.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/slsb10id.cc trunk/octave-forge/main/control/src/slsb10jd.cc trunk/octave-forge/main/control/src/slsb10kd.cc trunk/octave-forge/main/control/src/slsb10yd.cc trunk/octave-forge/main/control/src/slsb10zd.cc trunk/octave-forge/main/control/src/slsb16ad.cc trunk/octave-forge/main/control/src/slsb16bd.cc trunk/octave-forge/main/control/src/slsb16cd.cc trunk/octave-forge/main/control/src/slsg02ad.cc trunk/octave-forge/main/control/src/slsg03ad.cc trunk/octave-forge/main/control/src/slsg03bd.cc trunk/octave-forge/main/control/src/sltb01id.cc trunk/octave-forge/main/control/src/sltb01pd.cc trunk/octave-forge/main/control/src/sltb01ud.cc trunk/octave-forge/main/control/src/sltb04bd.cc trunk/octave-forge/main/control/src/sltd04ad.cc trunk/octave-forge/main/control/src/sltg01ad.cc trunk/octave-forge/main/control/src/sltg01hd.cc trunk/octave-forge/main/control/src/sltg01id.cc trunk/octave-forge/main/control/src/sltg01jd.cc trunk/octave-forge/main/control/src/sltg04bx.cc Modified: trunk/octave-forge/main/control/src/__control_slicot_functions__.cc =================================================================== --- trunk/octave-forge/main/control/src/__control_slicot_functions__.cc 2012-09-08 20:02:40 UTC (rev 10987) +++ trunk/octave-forge/main/control/src/__control_slicot_functions__.cc 2012-09-09 19:09:48 UTC (rev 10988) @@ -1,47 +1,47 @@ -#include "slab08nd.cc" // transmission zeros of state-space models -#include "slab13dd.cc" // L-infinity norm -#include "slsb10hd.cc" // H-2 controller synthesis - continuous-time -#include "slsb10ed.cc" // H-2 controller synthesis - discrete-time -#include "slab13bd.cc" // H-2 norm -#include "slsb01bd.cc" // Pole assignment -#include "slsb10fd.cc" // H-infinity controller synthesis - continuous-time -#include "slsb10dd.cc" // H-infinity controller synthesis - discrete-time -#include "slsb03md.cc" // Lyapunov equations -#include "slsb04md.cc" // Sylvester equations - continuous-time -#include "slsb04qd.cc" // Sylvester equations - discrete-time -#include "slsg03ad.cc" // generalized Lyapunov equations -#include "slsb02od.cc" // algebraic Riccati equations -#include "slab13ad.cc" // Hankel singular values -#include "slab01od.cc" // staircase form using orthogonal transformations -#include "sltb01pd.cc" // minimal realization of state-space models -#include "slsb03od.cc" // Cholesky factor of Lyapunov equations -#include "slsg03bd.cc" // Cholesky factor of generalized Lyapunov equations -#include "slag08bd.cc" // transmission zeros of descriptor state-space models -#include "sltg01jd.cc" // minimal realization of descriptor state-space models -#include "sltg01hd.cc" // controllability staircase form of descriptor state-space models -#include "sltg01id.cc" // observability staircase form of descriptor state-space models -#include "slsg02ad.cc" // solution of algebraic Riccati equations for descriptor systems -#include "sltg04bx.cc" // gain of descriptor state-space models -#include "sltb01id.cc" // scaling of state-space models -#include "sltg01ad.cc" // scaling of descriptor state-space models -#include "slsb10id.cc" // H-infinity loop shaping - continuous-time -#include "slsb10kd.cc" // H-infinity loop shaping - discrete-time - strictly proper case -#include "slsb10zd.cc" // H-infinity loop shaping - discrete-time - proper case -#include "sltb04bd.cc" // State-space to transfer function conversion -#include "slab04md.cc" // bilinear transformation -#include "slsb10jd.cc" // descriptor to regular state-space conversion -#include "sltd04ad.cc" // transfer function to state-space conversion -#include "sltb01ud.cc" // controllable block Hessenberg realization -#include "slab09hd.cc" // balanced stochastic truncation model reduction -#include "slab09id.cc" // balanced truncation & singular perturbation approximation model reduction -#include "slab09jd.cc" // hankel-norm approximation model reduction -#include "slsb16ad.cc" // balanced truncation & singular perturbation approximation controller reduction -#include "slsb16bd.cc" // coprime factorization state-feedback controller reduction -#include "slsb16cd.cc" // frequency-weighted coprime factorization state-feedback controller reduction -#include "slsb10yd.cc" // fit state-space model to frequency response data -#include "slident.cc" // system identification -#include "slib01cd.cc" // compute initial state vector -#include "slib01ad.cc" // compute singular values +#include "sl_ab08nd.cc" // transmission zeros of state-space models +#include "sl_ab13dd.cc" // L-infinity norm +#include "sl_sb10hd.cc" // H-2 controller synthesis - continuous-time +#include "sl_sb10ed.cc" // H-2 controller synthesis - discrete-time +#include "sl_ab13bd.cc" // H-2 norm +#include "sl_sb01bd.cc" // Pole assignment +#include "sl_sb10fd.cc" // H-infinity controller synthesis - continuous-time +#include "sl_sb10dd.cc" // H-infinity controller synthesis - discrete-time +#include "sl_sb03md.cc" // Lyapunov equations +#include "sl_sb04md.cc" // Sylvester equations - continuous-time +#include "sl_sb04qd.cc" // Sylvester equations - discrete-time +#include "sl_sg03ad.cc" // generalized Lyapunov equations +#include "sl_sb02od.cc" // algebraic Riccati equations +#include "sl_ab13ad.cc" // Hankel singular values +#include "sl_ab01od.cc" // staircase form using orthogonal transformations +#include "sl_tb01pd.cc" // minimal realization of state-space models +#include "sl_sb03od.cc" // Cholesky factor of Lyapunov equations +#include "sl_sg03bd.cc" // Cholesky factor of generalized Lyapunov equations +#include "sl_ag08bd.cc" // transmission zeros of descriptor state-space models +#include "sl_tg01jd.cc" // minimal realization of descriptor state-space models +#include "sl_tg01hd.cc" // controllability staircase form of descriptor state-space models +#include "sl_tg01id.cc" // observability staircase form of descriptor state-space models +#include "sl_sg02ad.cc" // solution of algebraic Riccati equations for descriptor systems +#include "sl_tg04bx.cc" // gain of descriptor state-space models +#include "sl_tb01id.cc" // scaling of state-space models +#include "sl_tg01ad.cc" // scaling of descriptor state-space models +#include "sl_sb10id.cc" // H-infinity loop shaping - continuous-time +#include "sl_sb10kd.cc" // H-infinity loop shaping - discrete-time - strictly proper case +#include "sl_sb10zd.cc" // H-infinity loop shaping - discrete-time - proper case +#include "sl_tb04bd.cc" // State-space to transfer function conversion +#include "sl_ab04md.cc" // bilinear transformation +#include "sl_sb10jd.cc" // descriptor to regular state-space conversion +#include "sl_td04ad.cc" // transfer function to state-space conversion +#include "sl_tb01ud.cc" // controllable block Hessenberg realization +#include "sl_ab09hd.cc" // balanced stochastic truncation model reduction +#include "sl_ab09id.cc" // balanced truncation & singular perturbation approximation model reduction +#include "sl_ab09jd.cc" // hankel-norm approximation model reduction +#include "sl_sb16ad.cc" // balanced truncation & singular perturbation approximation controller reduction +#include "sl_sb16bd.cc" // coprime factorization state-feedback controller reduction +#include "sl_sb16cd.cc" // frequency-weighted coprime factorization state-feedback controller reduction +#include "sl_sb10yd.cc" // fit state-space model to frequency response data +#include "sl_ident.cc" // system identification +#include "sl_ib01cd.cc" // compute initial state vector +#include "sl_ib01ad.cc" // compute singular values // stub function to avoid gen_doc_cache warning upon package installation Copied: trunk/octave-forge/main/control/src/sl_ab01od.cc (from rev 10987, trunk/octave-forge/main/control/src/slab01od.cc) =================================================================== --- trunk/octave-forge/main/control/src/sl_ab01od.cc (rev 0) +++ trunk/octave-forge/main/control/src/sl_ab01od.cc 2012-09-09 19:09:48 UTC (rev 10988) @@ -0,0 +1,139 @@ +/* + +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 LTI Syncope. If not, see <http://www.gnu.org/licenses/>. + +Staircase controllability form. +Uses SLICOT AB01OD by courtesy of NICONET e.V. +<http://www.slicot.org> + +Author: Lukas Reichlin <luk...@gm...> +Created: August 2010 +Version: 0.1 + +*/ + +#include <octave/oct.h> +#include <f77-fcn.h> +#include "common.h" + +extern "C" +{ + int F77_FUNC (ab01od, AB01OD) + (char& STAGES, + char& JOBU, char& JOBV, + int& N, int& M, + double* A, int& LDA, + double* B, int& LDB, + double* U, int& LDU, + double* V, int& LDV, + int& NCONT, int& INDCON, + int* KSTAIR, + double& TOL, + int* IWORK, + double* DWORK, int& LDWORK, + int& INFO); +} + +// PKG_ADD: autoload ("__sl_ab01od__", "__control_slicot_functions__.oct"); +DEFUN_DLD (__sl_ab01od__, args, nargout, + "-*- texinfo -*-\n\ +Slicot AB01OD Release 5.0\n\ +No argument checking.\n\ +For internal use only.") +{ + int nargin = args.length (); + octave_value_list retval; + + if (nargin != 3) + { + print_usage (); + } + else + { + // arguments in + char stages = 'F'; + char jobu = 'I'; + char jobv = 'N'; // not referenced because stages = 'F' + + Matrix a = args(0).matrix_value (); + Matrix b = args(1).matrix_value (); + double tol = args(2).double_value (); + + int n = a.rows (); // n: number of states + int m = b.columns (); // m: number of inputs + + int lda = max (1, n); + int ldb = max (1, n); + int ldu = max (1, n); + int ldv = 1; + + // arguments out + Matrix u (ldu, n); + double* v = 0; // not referenced because stages = 'F' + + int ncont; + int indcon; + + OCTAVE_LOCAL_BUFFER (int, kstair, n); + + // workspace + int ldwork = max (1, n + max (n, 3*m)); + + OCTAVE_LOCAL_BUFFER (int, iwork, m); + OCTAVE_LOCAL_BUFFER (double, dwork, ldwork); + + // error indicators + int info; + + + // SLICOT routine AB01OD + F77_XFCN (ab01od, AB01OD, + (stages, + jobu, jobv, + n, m, + a.fortran_vec (), lda, + b.fortran_vec (), ldb, + u.fortran_vec (), ldu, + v, ldv, + ncont, indcon, + kstair, + tol, + iwork, + dwork, ldwork, + info)); + + if (f77_exception_encountered) + error ("__sl_ab01od__: exception in SLICOT subroutine AB01OD"); + + if (info != 0) + error ("__sl_ab01od__: AB01OD returned info = %d", info); + + // resize + a.resize (n, n); + b.resize (n, m); + u.resize (n, n); + + // return values + retval(0) = a; + retval(1) = b; + retval(2) = u; + retval(3) = octave_value (ncont); + } + + return retval; +} Copied: trunk/octave-forge/main/control/src/sl_ab04md.cc (from rev 10987, trunk/octave-forge/main/control/src/slab04md.cc) =================================================================== --- trunk/octave-forge/main/control/src/sl_ab04md.cc (rev 0) +++ trunk/octave-forge/main/control/src/sl_ab04md.cc 2012-09-09 19:09:48 UTC (rev 10988) @@ -0,0 +1,129 @@ +/* + +Copyright (C) 2011 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 LTI Syncope. If not, see <http://www.gnu.org/licenses/>. + +Discrete-time <--> continuous-time systems conversion +by a bilinear transformation. +Uses SLICOT AB04MD by courtesy of NICONET e.V. +<http://www.slicot.org> + +Author: Lukas Reichlin <luk...@gm...> +Created: September 2011 +Version: 0.1 + +*/ + +#include <octave/oct.h> +#include <f77-fcn.h> +#include "common.h" + +extern "C" +{ + int F77_FUNC (ab04md, AB04MD) + (char& TYPE, + int& N, int& M, int& P, + double& ALPHA, double& BETA, + double* A, int& LDA, + double* B, int& LDB, + double* C, int& LDC, + double* D, int& LDD, + int* IWORK, + double* DWORK, int& LDWORK, + int& INFO); +} + +// PKG_ADD: autoload ("__sl_ab04md__", "__control_slicot_functions__.oct"); +DEFUN_DLD (__sl_ab04md__, args, nargout, + "-*- texinfo -*-\n\ +Slicot AB04MD Release 5.0\n\ +No argument checking.\n\ +For internal use only.") +{ + int nargin = args.length (); + octave_value_list retval; + + if (nargin != 7) + { + print_usage (); + } + else + { + // arguments in + char type; + + 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 alpha = args(4).double_value (); + double beta = args(5).double_value (); + int discrete = args(6).int_value (); + + if (discrete == 0) + type = 'C'; + else + type = 'D'; + + int n = a.rows (); // n: number of states + 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 ldd = max (1, p); + + // workspace + int ldwork = max (1, n); + + OCTAVE_LOCAL_BUFFER (int, iwork, n); + OCTAVE_LOCAL_BUFFER (double, dwork, ldwork); + + // error indicator + int info; + + + // SLICOT routine AB04MD + F77_XFCN (ab04md, AB04MD, + (type, + n, m, p, + alpha, beta, + a.fortran_vec (), lda, + b.fortran_vec (), ldb, + c.fortran_vec (), ldc, + d.fortran_vec (), ldd, + iwork, + dwork, ldwork, + info)); + + if (f77_exception_encountered) + error ("__sl_ab04md__: exception in SLICOT subroutine AB04MD"); + + if (info != 0) + error ("__sl_ab04md__: AB04MD returned info = %d", info); + + // return values + retval(0) = a; + retval(1) = b; + retval(2) = c; + retval(3) = d; + } + + return retval; +} Copied: trunk/octave-forge/main/control/src/sl_ab08nd.cc (from rev 10987, trunk/octave-forge/main/control/src/slab08nd.cc) =================================================================== --- trunk/octave-forge/main/control/src/sl_ab08nd.cc (rev 0) +++ trunk/octave-forge/main/control/src/sl_ab08nd.cc 2012-09-09 19:09:48 UTC (rev 10988) @@ -0,0 +1,225 @@ +/* + +Copyright (C) 2009, 2010, 2011 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 LTI Syncope. If not, see <http://www.gnu.org/licenses/>. + +Transmission zeros of state-space models. +Uses SLICOT AB08ND by courtesy of NICONET e.V. +<http://www.slicot.org> + +Author: Lukas Reichlin <luk...@gm...> +Created: November 2009 +Version: 0.5 + +*/ + +#include <octave/oct.h> +#include <f77-fcn.h> +#include "common.h" +#include <complex> +#include <xpow.h> + +extern "C" +{ + int F77_FUNC (ab08nd, AB08ND) + (char& EQUIL, + int& N, int& M, int& P, + const double* A, int& LDA, + const double* B, int& LDB, + const double* C, int& LDC, + const double* D, int& LDD, + int& NU, int& RANK, int& DINFZ, + int& NKROR, int& NKROL, int* INFZ, + int* KRONR, int* KRONL, + double* AF, int& LDAF, + double* BF, int& LDBF, + double& TOL, + int* IWORK, double* DWORK, int& LDWORK, + int& INFO); + + int F77_FUNC (dggev, DGGEV) + (char& JOBVL, char& JOBVR, + int& N, + double* AF, int& LDAF, + double* BF, int& LDBF, + double* ALPHAR, double* ALPHAI, + double* BETA, + double* VL, int& LDVL, + double* VR, int& LDVR, + double* WORK, int& LWORK, + int& INFO); +} + +// PKG_ADD: autoload ("__sl_ab08nd__", "__control_slicot_functions__.oct"); +DEFUN_DLD (__sl_ab08nd__, args, nargout, + "-*- texinfo -*-\n\ +Slicot AB08ND Release 5.0\n\ +No argument checking.\n\ +For internal use only.") +{ + int nargin = args.length (); + octave_value_list retval; + + if (nargin != 5) + { + print_usage (); + } + else + { + // arguments in + char equil; + + const Matrix a = args(0).matrix_value (); + const Matrix b = args(1).matrix_value (); + const Matrix c = args(2).matrix_value (); + const Matrix d = args(3).matrix_value (); + const int scaled = args(4).int_value (); + + if (scaled == 0) + equil = 'S'; + else + equil = 'N'; + + int n = a.rows (); // n: number of states + int m = b.columns (); // m: number of inputs + int p = c.rows (); // p: number of outputs + + int lda = max (1, a.rows ()); + int ldb = max (1, b.rows ()); + int ldc = max (1, c.rows ()); + int ldd = max (1, d.rows ()); + + // arguments out + int nu; + int rank; + int dinfz; + int nkror; + int nkrol; + + int ldaf = max (1, n + m); + int ldbf = max (1, n + p); + + OCTAVE_LOCAL_BUFFER (int, infz, n); + OCTAVE_LOCAL_BUFFER (int, kronr, 1 + max (n, m)); + OCTAVE_LOCAL_BUFFER (int, kronl, 1 + max (n, p)); + + OCTAVE_LOCAL_BUFFER (double, af, ldaf * (n + min (p, m))); + OCTAVE_LOCAL_BUFFER (double, bf, ldbf * (n + m)); + + // workspace + int s = max (m, p); + int ldwork = max (s, n) + max (3*s-1, n+s); + + OCTAVE_LOCAL_BUFFER (int, iwork, s); + OCTAVE_LOCAL_BUFFER (double, dwork, ldwork); + + // error indicator + int info; + + // tolerance + double tol = 0; // AB08ND uses DLAMCH for default tolerance + + // SLICOT routine AB08ND + F77_XFCN (ab08nd, AB08ND, + (equil, + n, m, p, + a.fortran_vec (), lda, + b.fortran_vec (), ldb, + c.fortran_vec (), ldc, + d.fortran_vec (), ldd, + nu, rank, dinfz, + nkror, nkrol, infz, + kronr, kronl, + af, ldaf, + bf, ldbf, + tol, + iwork, dwork, ldwork, + info)); + + if (f77_exception_encountered) + error ("ss: zero: __sl_ab08nd__: exception in SLICOT subroutine AB08ND"); + + if (info != 0) + error ("ss: zero: __sl_ab08nd__: AB08ND returned info = %d", info); + + + // DGGEV Part + char jobvl = 'N'; + char jobvr = 'N'; + + double* vl = 0; // not referenced because jobvl = 'N' + int ldvl = 1; + double* vr = 0; // not referenced because jobvr = 'N' + int ldvr = 1; + + int lwork = max (1, 8*nu); + OCTAVE_LOCAL_BUFFER (double, work, lwork); + + ColumnVector alphar (nu); + ColumnVector alphai (nu); + ColumnVector beta (nu); + + int info2; + + F77_XFCN (dggev, DGGEV, + (jobvl, jobvr, + nu, + af, ldaf, + bf, ldbf, + alphar.fortran_vec (), alphai.fortran_vec (), + beta.fortran_vec (), + vl, ldvl, + vr, ldvr, + work, lwork, + info2)); + + if (f77_exception_encountered) + error ("ss: zero: __sl_ab08nd__: exception in LAPACK subroutine DGGEV"); + + if (info2 != 0) + error ("ss: zero: __sl_ab08nd__: DGGEV returned info = %d", info2); + + // calculate gain + octave_value gain = Matrix (0, 0);; + + if (m == 1 && p == 1) + { + if (nu < n) + gain = c * xpow (a, double (n-1-nu)) * b; + else + gain = d; + } + + // assemble complex vector - adapted from DEFUN complex in data.cc + ColumnVector zeror (nu); + ColumnVector zeroi (nu); + + zeror = quotient (alphar, beta); + zeroi = quotient (alphai, beta); + + ComplexColumnVector zero (nu, Complex ()); + + for (octave_idx_type i = 0; i < nu; i++) + zero.xelem (i) = Complex (zeror(i), zeroi(i)); + + // return values + retval(0) = zero; + retval(1) = gain; + } + + return retval; +} Copied: trunk/octave-forge/main/control/src/sl_ab09hd.cc (from rev 10987, trunk/octave-forge/main/control/src/slab09hd.cc) =================================================================== --- trunk/octave-forge/main/control/src/sl_ab09hd.cc (rev 0) +++ trunk/octave-forge/main/control/src/sl_ab09hd.cc 2012-09-09 19:09:48 UTC (rev 10988) @@ -0,0 +1,242 @@ +/* + +Copyright (C) 2011 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 LTI Syncope. If not, see <http://www.gnu.org/licenses/>. + +Model reduction based on balanced stochastic truncation method. +Uses SLICOT AB09HD by courtesy of NICONET e.V. +<http://www.slicot.org> + +Author: Lukas Reichlin <luk...@gm...> +Created: October 2011 +Version: 0.1 + +*/ + +#include <octave/oct.h> +#include <f77-fcn.h> +#include "common.h" + +extern "C" +{ + int F77_FUNC (ab09hd, AB09HD) + (char& DICO, char& JOB, char& EQUIL, char& ORDSEL, + int& N, int& M, int& P, + int& NR, + double& ALPHA, double& BETA, + double* A, int& LDA, + double* B, int& LDB, + double* C, int& LDC, + double* D, int& LDD, + int& NS, + double* HSV, + double& TOL1, double& TOL2, + int* IWORK, + double* DWORK, int& LDWORK, + bool* BWORK, + int& IWARN, int& INFO); +} + +// PKG_ADD: autoload ("__sl_ab09hd__", "__control_slicot_functions__.oct"); +DEFUN_DLD (__sl_ab09hd__, args, nargout, + "-*- texinfo -*-\n\ +Slicot AB09HD Release 5.0\n\ +No argument checking.\n\ +For internal use only.") +{ + int nargin = args.length (); + octave_value_list retval; + + if (nargin != 13) + { + print_usage (); + } + else + { + // arguments in + char dico; + char job; + char equil; + char ordsel; + + Matrix a = args(0).matrix_value (); + Matrix b = args(1).matrix_value (); + Matrix c = args(2).matrix_value (); + Matrix d = args(3).matrix_value (); + + const int idico = args(4).int_value (); + const int iequil = args(5).int_value (); + const int ijob = args(6).int_value (); + + int nr = args(7).int_value (); + const int iordsel = args(8).int_value (); + + double alpha = args(9).double_value (); + double beta = args(10).double_value (); + double tol1 = args(11).double_value (); + double tol2 = args(12).double_value (); + + switch (ijob) + { + case 0: + job = 'B'; + break; + case 1: + job = 'F'; + break; + case 2: + job = 'S'; + break; + case 3: + job = 'P'; + break; + default: + error ("__sl_ab09hd__: argument job invalid"); + } + + if (idico == 0) + dico = 'C'; + else + dico = 'D'; + + if (iequil == 0) + equil = 'S'; + else + equil = 'N'; + + if (iordsel == 0) + ordsel = 'F'; + else + ordsel = 'A'; + + int n = a.rows (); // n: number of states + 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 ldd = max (1, p); + + // arguments out + int ns; + ColumnVector hsv (n); + + // workspace + int liwork = max (1, 2*n); + int mb; + + if (beta == 0) + mb = m; + else + mb = m + p; + + int ldwork = 2*n*n + mb*(n+p) + + max (2, n*(max (n,mb,p)+5), 2*n*p + max (p*(mb+2), 10*n*(n+1))); + + OCTAVE_LOCAL_BUFFER (int, iwork, liwork); + OCTAVE_LOCAL_BUFFER (double, dwork, ldwork); + OCTAVE_LOCAL_BUFFER (bool, bwork, 2*n); + + // error indicators + int iwarn = 0; + int info = 0; + + + // SLICOT routine AB09HD + F77_XFCN (ab09hd, AB09HD, + (dico, job, equil, ordsel, + n, m, p, + nr, + alpha, beta, + a.fortran_vec (), lda, + b.fortran_vec (), ldb, + c.fortran_vec (), ldc, + d.fortran_vec (), ldd, + ns, + hsv.fortran_vec (), + tol1, tol2, + iwork, + dwork, ldwork, + bwork, + iwarn, info)); + + if (f77_exception_encountered) + error ("bstmodred: exception in SLICOT subroutine AB09HD"); + + + static const char* err_msg[] = { + "0: OK", + "1: the computation of the ordered real Schur form of A " + "failed", + "2: the reduction of the Hamiltonian matrix to real " + "Schur form failed", + "3: the reordering of the real Schur form of the " + "Hamiltonian matrix failed", + "4: the Hamiltonian matrix has less than N stable " + "eigenvalues", + "5: the coefficient matrix U11 in the linear system " + "X*U11 = U21 to determine X is singular to working " + "precision", + "6: BETA = 0 and D has not a maximal row rank", + "7: the computation of Hankel singular values failed", + "8: the separation of the ALPHA-stable/unstable diagonal " + "blocks failed because of very close eigenvalues", + "9: the resulting order of reduced stable part is less " + "than the number of unstable zeros of the stable " + "part"}; + + static const char* warn_msg[] = { + "0: OK", + "1: with ORDSEL = 'F', the selected order NR is greater " + "than NSMIN, the sum of the order of the " + "ALPHA-unstable part and the order of a minimal " + "realization of the ALPHA-stable part of the given " + "system; in this case, the resulting NR is set equal " + "to NSMIN.", + "2: with ORDSEL = 'F', the selected order NR corresponds " + "to repeated singular values for the ALPHA-stable " + "part, which are neither all included nor all " + "excluded from the reduced model; in this case, the " + "resulting NR is automatically decreased to exclude " + "all repeated singular values.", + "3: with ORDSEL = 'F', the selected order NR is less " + "than the order of the ALPHA-unstable part of the " + "given system; in this case NR is set equal to the " + "order of the ALPHA-unstable part."}; + + error_msg ("bstmodred", info, 9, err_msg); + warning_msg ("bstmodred", iwarn, 3, warn_msg); + + // resize + a.resize (nr, nr); + b.resize (nr, m); + c.resize (p, nr); + hsv.resize (ns); + + // return values + retval(0) = a; + retval(1) = b; + retval(2) = c; + retval(3) = d; + retval(4) = octave_value (nr); + retval(5) = hsv; + retval(6) = octave_value (ns); + } + + return retval; +} Copied: trunk/octave-forge/main/control/src/sl_ab09id.cc (from rev 10987, trunk/octave-forge/main/control/src/slab09id.cc) =================================================================== --- trunk/octave-forge/main/control/src/sl_ab09id.cc (rev 0) +++ trunk/octave-forge/main/control/src/sl_ab09id.cc 2012-09-09 19:09:48 UTC (rev 10988) @@ -0,0 +1,396 @@ +/* + +Copyright (C) 2011 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 LTI Syncope. If not, see <http://www.gnu.org/licenses/>. + +Model reduction based on Balance & Truncate (B&T) or +Singular Perturbation Approximation (SPA) method. +Uses SLICOT AB09ID by courtesy of NICONET e.V. +<http://www.slicot.org> + +Author: Lukas Reichlin <luk...@gm...> +Created: October 2011 +Version: 0.1 + +*/ + +#include <octave/oct.h> +#include <f77-fcn.h> +#include "common.h" + +extern "C" +{ + int F77_FUNC (ab09id, AB09ID) + (char& DICO, char& JOBC, char& JOBO, char& JOB, + char& WEIGHT, char& EQUIL, char& ORDSEL, + int& N, int& M, int& P, + int& NV, int& PV, int& NW, int& MW, + int& NR, + double& ALPHA, double& ALPHAC, double& ALPHAO, + double* A, int& LDA, + double* B, int& LDB, + double* C, int& LDC, + double* D, int& LDD, + double* AV, int& LDAV, + double* BV, int& LDBV, + double* CV, int& LDCV, + double* DV, int& LDDV, + double* AW, int& LDAW, + double* BW, int& LDBW, + double* CW, int& LDCW, + double* DW, int& LDDW, + int& NS, + double* HSV, + double& TOL1, double& TOL2, + int* IWORK, + double* DWORK, int& LDWORK, + int& IWARN, int& INFO); +} + +// PKG_ADD: autoload ("__sl_ab09id__", "__control_slicot_functions__.oct"); +DEFUN_DLD (__sl_ab09id__, args, nargout, + "-*- texinfo -*-\n\ +Slicot AB09ID Release 5.0\n\ +No argument checking.\n\ +For internal use only.") +{ + int nargin = args.length (); + octave_value_list retval; + + if (nargin != 25) + { + print_usage (); + } + else + { + // arguments in + char dico; + char jobc; + char jobo; + char job; + char weight; + char equil; + char ordsel; + + Matrix a = args(0).matrix_value (); + Matrix b = args(1).matrix_value (); + Matrix c = args(2).matrix_value (); + Matrix d = args(3).matrix_value (); + + const int idico = args(4).int_value (); + const int iequil = args(5).int_value (); + int nr = args(6).int_value (); + const int iordsel = args(7).int_value (); + double alpha = args(8).double_value (); + const int ijob = args(9).int_value (); + + Matrix av = args(10).matrix_value (); + Matrix bv = args(11).matrix_value (); + Matrix cv = args(12).matrix_value (); + Matrix dv = args(13).matrix_value (); + + Matrix aw = args(14).matrix_value (); + Matrix bw = args(15).matrix_value (); + Matrix cw = args(16).matrix_value (); + Matrix dw = args(17).matrix_value (); + + const int iweight = args(18).int_value (); + const int ijobc = args(19).int_value (); + double alphac = args(20).double_value (); + const int ijobo = args(21).int_value (); + double alphao = args(22).double_value (); + + double tol1 = args(23).double_value (); + double tol2 = args(24).double_value (); + + if (idico == 0) + dico = 'C'; + else + dico = 'D'; + + if (iequil == 0) + equil = 'S'; + else + equil = 'N'; + + if (iordsel == 0) + ordsel = 'F'; + else + ordsel = 'A'; + + if (ijobc == 0) + jobc = 'S'; + else + jobc = 'E'; + + if (ijobo == 0) + jobo = 'S'; + else + jobo = 'E'; + + switch (ijob) + { + case 0: + job = 'B'; + break; + case 1: + job = 'F'; + break; + case 2: + job = 'S'; + break; + case 3: + job = 'P'; + break; + default: + error ("__sl_ab09id__: argument job invalid"); + } + + switch (iweight) + { + case 0: + weight = 'N'; + break; + case 1: + weight = 'L'; + break; + case 2: + weight = 'R'; + break; + case 3: + weight = 'B'; + break; + default: + error ("__sl_ab09id__: argument weight invalid"); + } + + int n = a.rows (); // n: number of states + int m = b.columns (); // m: number of inputs + int p = c.rows (); // p: number of outputs + + int nv = av.rows (); + int pv = cv.rows (); + int nw = aw.rows (); + int mw = bw.columns (); + + int lda = max (1, n); + int ldb = max (1, n); + int ldc = max (1, p); + int ldd = max (1, p); + + int ldav = max (1, nv); + int ldbv = max (1, nv); + int ldcv = max (1, pv); + int lddv = max (1, pv); + + int ldaw = max (1, nw); + int ldbw = max (1, nw); + int ldcw = max (1, m); + int lddw = max (1, m); + + // arguments out + int ns; + ColumnVector hsv (n); + + // workspace + int liwork; + int liwrk1; + int liwrk2; + int liwrk3; + + switch (job) + { + case 'B': + liwrk1 = 0; + break; + case 'F': + liwrk1 = n; + break; + default: + liwrk1 = 2*n; + } + + if (nv == 0 || weight == 'R' || weight == 'N') + liwrk2 = 0; + else + liwrk2 = nv + max (p, pv); + + if (nw == 0 || weight == 'L' || weight == 'N') + liwrk3 = 0; + else + liwrk3 = nw + max (m, mw); + + liwork = max (3, liwrk1, liwrk2, liwrk3); + + int ldwork; + int lminl; + int lrcf; + int lminr; + int llcf; + int lleft; + int lright; + + if (nw == 0 || weight == 'L' || weight == 'N') + { + lrcf = 0; + lminr = 0; + } + else + { + 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); + } + + 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 + 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); + + // error indicators + int iwarn = 0; + int info = 0; + + + // SLICOT routine AB09ID + F77_XFCN (ab09id, AB09ID, + (dico, jobc, jobo, job, + weight, equil, ordsel, + n, m, p, + nv, pv, nw, mw, + nr, + alpha, alphac, alphao, + a.fortran_vec (), lda, + b.fortran_vec (), ldb, + c.fortran_vec (), ldc, + d.fortran_vec (), ldd, + av.fortran_vec (), ldav, + bv.fortran_vec (), ldbv, + cv.fortran_vec (), ldcv, + dv.fortran_vec (), lddv, + aw.fortran_vec (), ldaw, + bw.fortran_vec (), ldbw, + cw.fortran_vec (), ldcw, + dw.fortran_vec (), lddw, + ns, + hsv.fortran_vec (), + tol1, tol2, + iwork, + dwork, ldwork, + iwarn, info)); + + if (f77_exception_encountered) + error ("modred: exception in SLICOT subroutine AB09ID"); + + + static const char* err_msg[] = { + "0: OK", + "1: the computation of the ordered real Schur form of A " + "failed", + "2: the separation of the ALPHA-stable/unstable " + "diagonal blocks failed because of very close " + "eigenvalues", + "3: the reduction to a real Schur form of the state " + "matrix of a minimal realization of V failed", + "4: a failure was detected during the ordering of the " + "real Schur form of the state matrix of a minimal " + "realization of V or in the iterative process to " + "compute a left coprime factorization with inner " + "denominator", + "5: if DICO = 'C' and the matrix AV has an observable " + "eigenvalue on the imaginary axis, or DICO = 'D' and " + "AV has an observable eigenvalue on the unit circle", + "6: the reduction to a real Schur form of the state " + "matrix of a minimal realization of W failed", + "7: a failure was detected during the ordering of the " + "real Schur form of the state matrix of a minimal " + "realization of W or in the iterative process to " + "compute a right coprime factorization with inner " + "denominator", + "8: if DICO = 'C' and the matrix AW has a controllable " + "eigenvalue on the imaginary axis, or DICO = 'D' and " + "AW has a controllable eigenvalue on the unit circle", + "9: the computation of eigenvalues failed", + "10: the computation of Hankel singular values failed"}; + + static const char* warn_msg[] = { + "0: OK", + "1: with ORDSEL = 'F', the selected order NR is greater " + "than NSMIN, the sum of the order of the " + "ALPHA-unstable part and the order of a minimal " + "realization of the ALPHA-stable part of the given " + "system; in this case, the resulting NR is set equal " + "to NSMIN.", + "2: with ORDSEL = 'F', the selected order NR corresponds " + "to repeated singular values for the ALPHA-stable " + "part, which are neither all included nor all " + "excluded from the reduced model; in this case, the " + "resulting NR is automatically decreased to exclude " + "all repeated singular values.", + "3: with ORDSEL = 'F', the selected order NR is less " + "than the order of the ALPHA-unstable part of the " + "given system; in this case NR is set equal to the " + "order of the ALPHA-unstable part.", +/* 10+%d: %d */ "violations of the numerical stability condition " + "occured during the assignment of eigenvalues in the " + "SLICOT Library routines SB08CD and/or SB08DD."}; + + + error_msg ("modred", info, 10, err_msg); + warning_msg ("modred", iwarn, 3, warn_msg, 10); + + // resize + a.resize (nr, nr); + b.resize (nr, m); + c.resize (p, nr); + hsv.resize (ns); + + // return values + retval(0) = a; + retval(1) = b; + retval(2) = c; + retval(3) = d; + retval(4) = octave_value (nr); + retval(5) = hsv; + retval(6) = octave_value (ns); + } + + return retval; +} Copied: trunk/octave-forge/main/control/src/sl_ab09jd.cc (from rev 10987, trunk/octave-forge/main/control/src/slab09jd.cc) =================================================================== --- trunk/octave-forge/main/control/src/sl_ab09jd.cc (rev 0) +++ trunk/octave-forge/main/control/src/sl_ab09jd.cc 2012-09-09 19:09:48 UTC (rev 10988) @@ -0,0 +1,404 @@ +/* + +Copyright (C) 2011 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 LTI Syncope. If not, see <http://www.gnu.org/licenses/>. + +Model reduction based on Hankel-norm approximation method. +Uses SLICOT AB09JD by courtesy of NICONET e.V. +<http://www.slicot.org> + +Author: Lukas Reichlin <luk...@gm...> +Created: July 2011 +Version: 0.1 + +*/ + +#include <octave/oct.h> +#include <f77-fcn.h> +#include "common.h" + +extern "C" +{ + int F77_FUNC (ab09jd, AB09JD) + (char& JOBV, char& JOBW, char& JOBINV, + char& DICO, char& EQUIL, char& ORDSEL, + int& N, int& NV, int& NW, int& M, int& P, + int& NR, + double& ALPHA, + double* A, int& LDA, + double* B, int& LDB, + double* C, int& LDC, + double* D, int& LDD, + double* AV, int& LDAV, + double* BV, int& LDBV, + double* CV, int& LDCV, + double* DV, int& LDDV, + double* AW, int& LDAW, + double* BW, int& LDBW, + double* CW, int& LDCW, + double* DW, int& LDDW, + int& NS, + double* HSV, + double& TOL1, double& TOL2, + int* IWORK, + double* DWORK, int& LDWORK, + int& IWARN, int& INFO); +} + +// PKG_ADD: autoload ("__sl_ab09jd__", "__control_slicot_functions__.oct"); +DEFUN_DLD (__sl_ab09jd__, args, nargout, + "-*- texinfo -*-\n\ +Slicot AB09JD Release 5.0\n\ +No argument checking.\n\ +For internal use only.") +{ + int nargin = args.length (); + octave_value_list retval; + + if (nargin != 22) + { + print_usage (); + } + else + { + // arguments in + char jobv; + char jobw; + char jobinv; + char dico; + char equil; + char ordsel; + + Matrix a = args(0).matrix_value (); + Matrix b = args(1).matrix_value (); + Matrix c = args(2).matrix_value (); + Matrix d = args(3).matrix_value (); + + const int idico = args(4).int_value (); + const int iequil = args(5).int_value (); + int nr = args(6).int_value (); + const int iordsel = args(7).int_value (); + double alpha = args(8).double_value (); + + const int ijobv = args(9).int_value (); + Matrix av = args(10).matrix_value (); + Matrix bv = args(11).matrix_value (); + Matrix cv = args(12).matrix_value (); + Matrix dv = args(13).matrix_value (); + + const int ijobw = args(14).int_value (); + Matrix aw = args(15).matrix_value (); + Matrix bw = args(16).matrix_value (); + Matrix cw = args(17).matrix_value (); + Matrix dw = args(18).matrix_value (); + + const int ijobinv = args(19).int_value (); + double tol1 = args(20).double_value (); + double tol2 = args(21).double_value (); + + switch (ijobv) + { + case 0: + jobv = 'N'; + break; + case 1: + jobv = 'V'; + break; + case 2: + jobv = 'I'; + break; + case 3: + jobv = 'C'; + break; + case 4: + jobv = 'R'; + break; + default: + error ("__sl_ab09jd__: argument jobv invalid"); + } + + switch (ijobw) + { + case 0: + jobw = 'N'; + break; + case 1: + jobw = 'W'; + break; + case 2: + jobw = 'I'; + break; + case 3: + jobw = 'C'; + break; + case 4: + jobw = 'R'; + break; + default: + error ("__sl_ab09jd__: argument jobw invalid"); + } + + switch (ijobinv) + { + case 0: + jobinv = 'N'; + break; + case 1: + jobinv = 'I'; + break; + case 2: + jobinv = 'A'; + break; + default: + error ("__sl_ab09jd__: argument jobinv invalid"); + } + + if (idico == 0) + dico = 'C'; + else + dico = 'D'; + + if (iequil == 0) + equil = 'S'; + else + equil = 'N'; + + if (iordsel == 0) + ordsel = 'F'; + else + ordsel = 'A'; + + int n = a.rows (); // n: number of states + int nv = av.rows (); + int nw = aw.rows (); + 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 ldd = max (1, p); + + int ldav = max (1, nv); + int ldbv = max (1, nv); + int ldcv = max (1, p); + int lddv = max (1, p); + + int ldaw = max (1, nw); + int ldbw = max (1, nw); + int ldcw = max (1, m); + int lddw = max (1, m); + + // arguments out + int ns; + ColumnVector hsv (n); + + // workspace + int liwork; + int tmpc; + int tmpd; + + 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') + { + ldw1 = 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)); + } + + if (jobw == 'N') + { + ldw2 = 0; + } + 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); + + OCTAVE_LOCAL_BUFFER (int, iwork, liwork); + OCTAVE_LOCAL_BUFFER (double, dwork, ldwork); + + // error indicators + int iwarn = 0; + int info = 0; + + + // SLICOT routine AB09JD + F77_XFCN (ab09jd, AB09JD, + (jobv, jobw, jobinv, + dico, equil, ordsel, + n, nv, nw, m, p, + nr, + alpha, + a.fortran_vec (), lda, + b.fortran_vec (), ldb, + c.fortran_vec (), ldc, + d.fortran_vec (), ldd, + av.fortran_vec (), ldav, + bv.fortran_vec (), ldbv, + cv.fortran_vec (), ldcv, + dv.fortran_vec (), lddv, + aw.fortran_vec (), ldaw, + bw.fortran_vec (), ldbw, + cw.fortran_vec (), ldcw, + dw.fortran_vec (), lddw, + ns, + hsv.fortran_vec (), + tol1, tol2, + iwork, + dwork, ldwork, + iwarn, info)); + + if (f77_exception_encountered) + error ("hnamodred: exception in SLICOT subroutine AB09JD"); + + + static const char* err_msg[] = { + "0: OK", + "1: the computation of the ordered real Schur form of A " + "failed", + + "2: the separation of the ALPHA-stable/unstable " + "diagonal blocks failed because of very close eigenvalues", + + "3: the reduction of AV to a real Schur form failed", + + "4: the reduction of AW to a real Schur form failed", + + "5: the reduction to generalized Schur form of the " + "descriptor pair corresponding to the inverse of V " + "failed", + + "6: the reduction to generalized Schur form of the " + "descriptor pair corresponding to the inverse of W " + "failed", + + "7: the computation of Hankel singular values failed", + + "8: the computation of stable projection in the " + "Hankel-norm approximation algorithm failed", + + "9: the order of computed stable projection in the " + "Hankel-norm approximation algorithm differs " + "from the order of Hankel-norm approximation", + + "10: the reduction of AV-BV*inv(DV)*CV to a " + "real Schur form failed", + + "11: the reduction of AW-BW*inv(DW)*CW to a " + "real Schur form failed", + + "12: the solution of the Sylvester equation failed " + "because the poles of V (if JOBV = 'V') or of " + "conj(V) (if JOBV = 'C') are not distinct from " + "the poles of G1 (see METHOD)", + + "13: the solution of the Sylvester equation failed " + "because the poles of W (if JOBW = 'W') or of " + "conj(W) (if JOBW = 'C') are not distinct from " + "the poles of G1 (see METHOD)", + + "14: the solution of the Sylvester equation failed " + "because the zeros of V (if JOBV = 'I') or of " + "conj(V) (if JOBV = 'R') are not distinct from " + "the poles of G1sr (see METHOD)", + + "15: the solution of the Sylvester equation failed " + "because the zeros of W (if JOBW = 'I') or of " + "conj(W) (if JOBW = 'R') are not distinct from " + "the poles of G1sr (see METHOD)", + + "16: the solution of the generalized Sylvester system " + "failed because the zeros of V (if JOBV = 'I') or " + "of conj(V) (if JOBV = 'R') are not distinct from " + "the poles of G1sr (see METHOD)", + + "17: the solution of the generalized Sylvester system " + "failed becau... [truncated message content] |