C ALGORITHM 675, COLLECTED ALGORITHMS FROM ACM. C THIS WORK PUBLISHED IN TRANSACTIONS ON MATHEMATICAL SOFTWARE, C VOL. 15, NO. 3, PP. 243-256. C C This is the driver for SUBROUTINE SRCF. C The routine is in TOMS.FOR and uses the file SRCF.IN as C input file from which N, P, A, B, C, R and Q are read. C Output is sent to file SRCF.OUT . C INTEGER I, ISTEP, J, N, M, P, LDS, LDA, LDB, LDQ, LDC, LDR, LDK, * LDW DOUBLE PRECISION A(10,10), B(10,5), C(7,10), R(7,7), Q(5,5), * WRK(22,22), S(10,10), K(10,7), * SSP(10,10) DOUBLE PRECISION DDOT, TOL LOGICAL MULTBQ, WITHK C WITHK = .TRUE. MULTBQ = .TRUE. LDS = 10 LDA = 10 LDB = 10 LDQ = 5 LDC = 7 LDR = 7 LDK = 10 LDW = 22 TOL = 1.D-15 C C READ N, P, A, B, C, Q and R from the file SRCF.IN C The matrices A, B, C, Q and R are to be read columnwise. C The input dimension M is specified by the loop index. C C REWIND 1 DO 750 M = 2, 3 READ (1,51) N, P 51 FORMAT(2I5) 53 FORMAT(1H ,'*** N =', I3, ' M =', I3,' P = ', I3) IF (M .EQ. 2) THEN WRITE(2,940) ELSE WRITE(2,941) END IF DO 50 J = 1, N DO 50 I = 1, N READ(1,52) A(I,J) 50 CONTINUE 52 FORMAT(D25.15) DO 60 J = 1, M DO 60 I = 1, N READ(1,52) B(I,J) 60 CONTINUE DO 68 J = 1, N DO 68 I = 1, P READ(1,52) C(I,J) 68 CONTINUE DO 76 J = 1, P DO 76 I = 1, P READ(1,52) R(I,J) 76 CONTINUE DO 84 J = 1, M DO 84 I = 1, M READ(1,52) Q(I,J) 84 CONTINUE C C Initialize the S matrix to be the null matrix. C DO 350 J = 1, N DO 350 I = 1, N S(I,J) = 0.0D0 350 CONTINUE WRITE(2,950) WRITE(2,53) N, M, P CALL PRMT(A,LDA,N,N,'A matrix',2,4) CALL PRMT(B,LDB,N,M,'B matrix',2,4) CALL PRMT(S,LDS,N,N,'S matrix',2,4) CALL PRMT(C,LDC,P,N,'C matrix',2,4) CALL PRMT(R,LDR,P,P,'R matrix',2,4) CALL PRMT(Q,LDQ,M,M,'Q matrix',2,4) C C Now perform three steps of the Kalman filter recursion C (in square root covariance form) with MULTBQ = .TRUE. C WRITE(2,951) DO 500 ISTEP = 1, 3 WRITE(2,935)ISTEP CALL SRCF(S, LDS, A, LDA, B, LDB, Q, LDQ, C, LDC, R, LDR, * N, M, P, K, LDK, WRK, LDW, MULTBQ, WITHK, TOL) CALL PRMT(S,LDS,N,N,'S matrix',2,4) CALL PRMT(K,LDK,N,P,'K matrix',2,4) DO 450 J = 1, N DO 450 I = 1, N SSP(I,J) = DDOT(N, S(I,1), LDS, S(J,1), LDS) 450 CONTINUE CALL PRMT(SSP,LDS,N,N,'SS'' m. ',2,4) 500 CONTINUE WRITE(2,952) C C Initialize the S matrix to be the null matrix. C DO 550 J = 1, N DO 550 I = 1, N S(I,J) = 0.0D0 550 CONTINUE C C Now perform three steps of the Kalman filter recursion C (in square root covariance form) with MULTBQ = .FALSE. C MULTBQ = .FALSE. DO 700 ISTEP = 1, 3 WRITE(2,935)ISTEP CALL SRCF(S, LDS, A, LDA, B, LDB, Q, LDQ, C, LDC, R, LDR, * N, M, P, K, LDK, WRK, LDW, MULTBQ, WITHK, TOL) CALL PRMT(S,LDS,N,N,'S matrix',2,4) CALL PRMT(K,LDK,N,P,'K matrix',2,4) DO 650 J = 1, N DO 650 I = 1, N SSP(I,J) = DDOT(N, S(I,1), LDS, S(J,1), LDS) 650 CONTINUE CALL PRMT(SSP,LDS,N,N,'SS'' m. ',2,4) 700 CONTINUE IF (M .EQ. 2) THEN WRITE(2,945) ELSE WRITE(2,946) END IF 750 CONTINUE 935 FORMAT(' *** ISTEP =', I3) 940 FORMAT( * ' *** First example : Square root covariance filter with dense'/ * ' *** A, B, C and lower triangular Q, R.') 941 FORMAT( * '1*** Second example : Square root covariance filter with dense'/ * ' *** A, B, C and lower triangular Q, R.') 945 FORMAT( * '1*** In both these tests we start with S=0 and perform three'/ * ' *** iterations of the filter.'/ * ' *** The ranks of S in these three steps must be equal to '/ * ' *** M(=2), 2M(=4) and 3M(=6).'/ * ' *** K must be 0 in the first step and nonzero afterwards.'/ * ' *** The results for MULTBQ = .TRUE. and .FALSE. must be equal'/ * ' *** since we chose Q=I.'/ * ' *** The SS'' matrices are meant for comparison with SRCFOB.') 946 FORMAT( * '1*** In both these tests we start with S=0 and perform three'/ * ' *** iterations of the filter.'/ * ' *** The ranks of S in these three steps must be equal to '/ * ' *** M(=3), 2M(=6) and min(N,3M)(=6).'/ * ' *** K must be 0 in the first step and nonzero afterwards.'/ * ' *** The results for MULTBQ = .TRUE. and .FALSE. must be equal'/ * ' *** since we chose Q=I.'/ * ' *** The SS'' matrices are meant for comparison with SRCFOB.') 950 FORMAT(// ' *** Input SRCF' //) 951 FORMAT(// ' *** Output SRCF for MULTBQ=.TRUE.' //) 952 FORMAT(// ' *** Output SRCF for MULTBQ=.FALSE.' //) C C *** Last line of SRCF/MAIN ****************************************** C END C C This is the driver for SUBROUTINE SRIF. C The routine is in TOMS.FOR and uses the file SRIF.IN as C input file from which N, M, Ainv, C, AinvB, Qinv, Rinv, Z, X C and Y are read. Output is sent to file SRIF.OUT . C INTEGER I, ISTEP, J, N, M, P, LDS, LDA, LDB, LDQ, LDC, LDR, LDW, * NMP DOUBLE PRECISION AINV(10,10), C(5,10), RINV(5,5), QINV(7,7) DOUBLE PRECISION WRK(22,22), SINV(10,10), Y(5) DOUBLE PRECISION SPS(10,10), Z(7), X(10) DOUBLE PRECISION AINVB(10,7), RINVY(5) DOUBLE PRECISION DDOT, TOL LOGICAL MULTAB, MULTRC, WITHX C WITHX = .TRUE. MULTAB = .TRUE. MULTRC = .FALSE. LDS = 10 LDA = 10 LDB = 10 LDQ = 7 LDC = 5 LDR = 5 LDW = 22 TOL = 1.D-15 C C READ N, M, Ainv, C, AinvB, Qinv, Rinv, Z, X and Y from the file C SRIF.IN. The matrices Ainv, C, AinvB, Qinv and Rinv are to be C read columnwise. C The input dimension P is specified by the loop index. C REWIND 1 DO 750 P = 2, 3 READ (1,51) N, M NMP = N + M + P IF (LDW .LT. NMP) WRITE(6,901) 51 FORMAT(2I5) 53 FORMAT(1H ,'*** N =', I3,' M =', I3,' P = ', I3) IF (P .EQ. 2) THEN WRITE(2,940) ELSE WRITE(2,941) END IF DO 50 J = 1, N DO 50 I = 1, N READ(1,52) AINV(J,I) 50 CONTINUE 52 FORMAT(D25.15) DO 60 J = 1, P DO 60 I = 1, N READ(1,52) C(J,I) 60 CONTINUE DO 68 I = 1, M DO 68 J = 1, N READ(1,52) AINVB(J,I) 68 CONTINUE DO 76 J = 1, M DO 76 I = 1, M READ(1,52) QINV(J,I) 76 CONTINUE DO 81 J = 1, P DO 81 I = 1, P READ(1,52) RINV(J,I) 81 CONTINUE DO 86 J = 1, M READ(1,52) Z(J) 86 CONTINUE DO 88 J = 1, N READ(1,52) X(J) 88 CONTINUE DO 90 J = 1, P READ(1,52) Y(J) 90 CONTINUE C C Initialize the SINV matrix to be the unit matrix. C DO 100 J = 1, N DO 100 I = 1, N SINV(I,J) = 0.0D0 100 CONTINUE DO 110 I = 1, N SINV(I,I) = 1.0D0 110 CONTINUE WRITE(2,950) WRITE(2,53) N, M, P CALL PRMT(AINV,LDA,N,N,'Ainv ',2,4) CALL PRMT(AINVB,LDA,N,M,'AinvB ',2,4) CALL PRMT(C,LDC,P,N,'C matrix',2,4) CALL PRMT(SINV,LDS,N,N,'Sinv ',2,4) CALL PRMT(QINV,LDQ,M,M,'Qinv ',2,4) CALL PRMT(RINV,LDR,P,P,'Rinv ',2,4) CALL PRMT(Z,LDQ,M,1,'Z vector',2,4) CALL PRMT(X,LDA,N,1,'X vector',2,4) CALL PRMT(Y,LDC,P,1,'Y vector',2,4) C C Calculation of RINV x Y. C DO 260 I = 1, P RINVY(I) = DDOT(P, RINV(I,1), LDR, Y, 1) 260 CONTINUE C C Now perform four steps of the Kalman filter recursion C (in square root covariance form). C WRITE(2,951) DO 500 ISTEP = 1, 4 WRITE(2,935)ISTEP CALL SRIF(SINV, LDS, AINV, LDA, AINVB, LDB, RINV, LDR, C, * LDC, QINV, LDQ, X, RINVY, Z, N, M, P, WRK, LDW, * MULTAB, MULTRC, WITHX, TOL) CALL PRMT(SINV,LDS,N,N,'Sinv ',2,4) CALL PRMT(X,LDA,N,1,'X vector',2,4) DO 450 J = 1, N DO 450 I = 1, N SPS(I,J) = DDOT(N, SINV(1,I), 1, SINV(1,J), 1) 450 CONTINUE CALL PRMT(SPS,LDS,N,N,'Sin''Sin',2,4) 500 CONTINUE IF (P .EQ. 2) THEN WRITE(2,945) ELSE WRITE(2,946) END IF 750 CONTINUE C 900 FORMAT(' ', 8(D12.6,1X), D12.6) 901 FORMAT(' *********** Dimensions of WRK are less than N+M+P ') 935 FORMAT(' *** ISTEP =', I3) 940 FORMAT( * '1*** First example : Square root information filter with'/ * ' *** dense A, B, C and upper triangular Q, R. ***') 941 FORMAT( * '1*** Second example : Square root information filter with'/ * ' *** dense A, B, C and upper triangular Q, R. ***') 945 FORMAT( * '1*** In both these tests we start with Sinv=I and perform'/ * ' *** four iterations of the filter.'/ * ' *** The Sinv''Sinv matrices and X vectors are meant for '/ * ' *** comparison with SRIFCO.') 946 FORMAT( * '1*** In both these tests we start with Sinv=I and perform'/ * ' *** four iterations of the filter.'/ * ' *** The Sinv''Sinv matrices and X vectors are meant for '/ * ' *** comparison with SRIFCO.') 950 FORMAT(// ' *** Input SRIF' //) 951 FORMAT(// ' *** Output SRIF' //) C C *** Last line of the program SRIF *********************************** C END C C This is the driver for SUBROUTINE OBHESS. C The routine is in TOMS.FOR and uses the file OBHESS.IN as C input file from which N, UPPER, TOL, A and B are read. C Output is sent to file OBHESS.OUT . C C .. Local Scalars .. DOUBLE PRECISION SCALE,SUMSQ,TOL INTEGER I,J,LDA,LDB,LDU,M,N LOGICAL UPPER,WITHU C .. C .. Local Arrays .. DOUBLE PRECISION A(10,10),A0(10,10),B(5,10),B0(5,10),U(10,10), * WORK(10) C .. C .. External Subroutines .. EXTERNAL DCOPY,DGEMV,OBHESS,F06FBF,F06FJF C .. C .. Intrinsic Functions .. INTRINSIC DSQRT C .. WITHU = .TRUE. LDA = 10 LDB = 5 LDU = 10 C C READ N, UPPER, TOL, A and B from file OBHESS.IN C The matrices A and B are to be read column by column. C The input dimension M is specified by the loop index. C REWIND 1 READ (1,FMT='()') DO 700 M = 2,3 READ (1,FMT=15) N,UPPER,TOL 15 FORMAT (I5,L5,D11.1) 17 FORMAT (1H ,'*** N =',I3,' M =',I3,' UPPER = ',L3,' TOL =', * D8.1) IF (M.EQ.2) THEN WRITE (2,FMT=940) ELSE WRITE (2,FMT=941) END IF C C The matrices A and B are read, and also stored in A0 and B0 for C later use. C READ (1,FMT=52) ((A(I,J),I=1, N),J=1, N) DO 51 J = 1,N CALL DCOPY(N,A(1,J),1,A0(1,J),1) 51 CONTINUE 52 FORMAT (D25.15) READ (1,FMT=52) ((B(I,J),I=1, M),J=1, N) DO 61 J = 1,N CALL DCOPY(M,B(1,J),1,B0(1,J),1) 61 CONTINUE C C The matrix U is initialized as the identity matrix. C DO 100 J = 1,N DO 90 I = 1,N U(I,J) = 0.D0 90 CONTINUE U(J,J) = 1.D0 100 CONTINUE WRITE (2,FMT=950) WRITE (2,FMT=17) N,M,UPPER,TOL CALL PRMT(A0,LDA,N,N,'A0 matr. ',2,4) CALL PRMT(B0,LDB,M,N,'B0 matr. ',2,4) C C Calling the controller Hessenberg form routine. C CALL OBHESS(A,LDA,N,B,LDB,M,U,LDU,WITHU,UPPER) C C The transformed matrices A and B, and the transformation matrix U C are output. C WRITE (2,FMT=951) CALL PRMT(A,LDA,N,N,'A matrix',2,4) CALL PRMT(B,LDB,M,N,'B matrix',2,4) CALL PRMT(U,LDU,N,N,'U matrix',2,4) C C Checking the Frobenius norm of (UxA0-AxU),(UxB0-B) and (UxU'-I) C without altering A,B,U,A0,B0. C SCALE = 1.D0 SUMSQ = 0.D0 DO 400 I = 1,N CALL DGEMV('N',N,N,1.D0,A,LDA,U(1,I),1,0.D0,WORK,1) CALL DGEMV('N',N,N,1.D0,U,LDU,A0(1,I),1,-1.D0,WORK,1) CALL F06FJF(N,WORK,1,SCALE,SUMSQ) 400 CONTINUE SUMSQ = SCALE*DSQRT(SUMSQ) WRITE (2,FMT=980) SUMSQ SCALE = 1.D0 SUMSQ = 0.D0 DO 500 I = 1,M CALL DCOPY(N,B0(I,1),LDB,WORK,1) CALL DGEMV('T',N,N,1.D0,U,LDU,B(I,1),LDB,-1.D0,WORK,1) CALL F06FJF(N,WORK,1,SCALE,SUMSQ) 500 CONTINUE SUMSQ = SCALE*DSQRT(SUMSQ) WRITE (2,FMT=981) SUMSQ SCALE = 1.D0 SUMSQ = 0.D0 DO 600 I = 1,N CALL F06FBF(N,0.D0,WORK,1) WORK(I) = 1.D0 CALL DGEMV('T',N,N,1.D0,U,LDU,U(1,I),1,-1.D0,WORK,1) CALL F06FJF(N,WORK,1,SCALE,SUMSQ) 600 CONTINUE SUMSQ = SCALE*DSQRT(SUMSQ) WRITE (2,FMT=982) SUMSQ IF (M.EQ.2) THEN WRITE (2,FMT=945) ELSE WRITE (2,FMT=946) END IF 700 CONTINUE 940 FORMAT (/ ' *** First example : upper Hessenberg form' /) 941 FORMAT (/ '1*** Second example : lower Hessenberg form' /) 945 FORMAT ( * '1*** This first example is a well-conditioned one.'/ * ' *** The above norm tests should be close to the machine '/ * ' *** precision and A, B, U should be close to those obtained'/ * ' *** on any other machine.') 946 FORMAT ( * '1*** This second example is an ill-conditioned one.'/ * ' *** Therefore A, B and U can differ a lot from those obtained'/ * ' *** on another machine, but the above norm tests should yet'/ * ' *** be close to the machine precision (because of backward'/ * ' *** stability).') 950 FORMAT (// ' *** Input Data *************' //) 951 FORMAT (// ' *** Output Data ************' //) 980 FORMAT ( * ' *** Testing norm U*A0-A*U =',D12.6,/ * ' *** which should be of the order of the machine precision'/ * ' *** norm(A)') 981 FORMAT ( * ' *** Testing norm U*B0-B =',D12.6,/ * ' *** which should be of the order of the machine precision'/ * ' *** norm(B)') 982 FORMAT ( * ' *** Testing norm U*UP-I =',D12.6,/ * ' *** which should be of the order of the machine precision') C C *** Last line of the program OBHESS ********************************* C END C C This is the driver for SUBROUTINE COHESS. C The routine is in TOMS.FOR and uses the file COHESS.IN as C input file from which N, UPPER, TOL, A and B are read. C Output is sent to file COHESS.OUT . C C .. Local Scalars .. DOUBLE PRECISION SCALE,SUMSQ,TOL INTEGER I,J,LDA,LDB,LDU,M,N LOGICAL UPPER,WITHU C .. C .. Local Arrays .. DOUBLE PRECISION A(10,10),A0(10,10),B(10,5),B0(10,5),U(10,10), * WORK(10) C .. C .. External Subroutines .. EXTERNAL COHESS,DCOPY,DGEMV,F06FBF,F06FJF C .. C .. Intrinsic Functions .. INTRINSIC DSQRT C .. WITHU = .TRUE. LDA = 10 LDB = 10 LDU = 10 C C READ N, UPPER, TOL, A and B from file COHESS.IN C The matrices A and B are to be read column by column. C The input dimension M is specified by the loop index. C REWIND 1 READ (1,FMT='()') DO 700 M = 2,3 READ (1,FMT=15) N,UPPER,TOL 15 FORMAT (I5,L5,D11.1) 17 FORMAT (1H ,'*** N =',I3,' M =',I3,' UPPER = ',L3,' TOL =', * D8.1) IF (M.EQ.2) THEN WRITE (2,FMT=940) ELSE WRITE (2,FMT=941) END IF C C The matrices A and B are read, and also stored in A0 and B0 for C later use. C READ (1,FMT=52) ((A(I,J),I=1, N),J=1, N) DO 51 J = 1,N CALL DCOPY(N,A(1,J),1,A0(1,J),1) 51 CONTINUE 52 FORMAT (D25.15) READ (1,FMT=52) ((B(I,J),I=1, N),J=1, M) DO 61 J = 1,M CALL DCOPY(N,B(1,J),1,B0(1,J),1) 61 CONTINUE C C The matrix U is initialized as the identity matrix. C DO 100 J = 1,N DO 90 I = 1,N U(I,J) = 0.D0 90 CONTINUE U(J,J) = 1.D0 100 CONTINUE WRITE (2,FMT=950) WRITE (2,FMT=17) N,M,UPPER,TOL CALL PRMT(A0,LDA,N,N,'A0 matr. ',2,4) CALL PRMT(B0,LDB,N,M,'B0 matr. ',2,4) C C Calling the controller Hessenberg form routine. C CALL COHESS(A,LDA,N,B,LDB,M,U,LDU,WITHU,UPPER) C C The transformed matrices A and B, and the transformation matrix U C are output. C WRITE (2,FMT=951) CALL PRMT(A,LDA,N,N,'A matrix',2,4) CALL PRMT(B,LDB,N,M,'B matrix',2,4) CALL PRMT(U,LDU,N,N,'U matrix',2,4) C C Checking the Frobenius norm of (UxA0-AxU),(UxB0-B) and (UxU'-I) C without altering A,B,U,A0,B0. C SCALE = 1.D0 SUMSQ = 0.D0 DO 400 I = 1,N CALL DGEMV('N',N,N,1.D0,A,LDA,U(1,I),1,0.D0,WORK,1) CALL DGEMV('N',N,N,1.D0,U,LDU,A0(1,I),1,-1.D0,WORK,1) CALL F06FJF(N,WORK,1,SCALE,SUMSQ) 400 CONTINUE SUMSQ = SCALE*DSQRT(SUMSQ) WRITE (2,FMT=980) SUMSQ SCALE = 1.D0 SUMSQ = 0.D0 DO 500 I = 1,M CALL DCOPY(N,B(1,I),1,WORK,1) CALL DGEMV('N',N,N,1.D0,U,LDU,B0(1,I),1,-1.D0,WORK,1) CALL F06FJF(N,WORK,1,SCALE,SUMSQ) 500 CONTINUE SUMSQ = SCALE*DSQRT(SUMSQ) WRITE (2,FMT=981) SUMSQ SCALE = 1.D0 SUMSQ = 0.D0 DO 600 I = 1,N CALL F06FBF(N,0.D0,WORK,1) WORK(I) = 1.D0 CALL DGEMV('T',N,N,1.D0,U,LDU,U(1,I),1,-1.D0,WORK,1) CALL F06FJF(N,WORK,1,SCALE,SUMSQ) 600 CONTINUE SUMSQ = SCALE*DSQRT(SUMSQ) WRITE (2,FMT=982) SUMSQ IF (M.EQ.2) THEN WRITE (2,FMT=945) ELSE WRITE (2,FMT=946) END IF 700 CONTINUE 940 FORMAT (' *** First example : upper Hessenberg form') 941 FORMAT ('1*** Second example : lower Hessenberg form') 945 FORMAT ( * '1*** This first example is a well-conditioned one.'/ * ' *** The above norm tests should be close to the machine'/ * ' *** precision and A, B, U should be close to those obtained'/ * ' *** on any other machine.') 946 FORMAT ( * '1*** This second example is an ill-conditioned one.'/ * ' *** Therefore A, B and U can differ a lot from those obtained'/ * ' *** on another machine, but the above norm tests should yet'/ * ' *** be close to the machine precision (because of backward'/ * ' *** stability).') 950 FORMAT (// ' *** Input Data *************' //) 951 FORMAT (// ' *** Output Data ************' //) 980 FORMAT ( * ' *** Testing norm U*A0-A*U =',D12.6,/ * ' *** which should be of the order of the machine precision'/ * ' *** norm(A)') 981 FORMAT ( * ' *** Testing norm U*B0-B =',D12.6,/ * ' *** which should be of the order of the machine precision'/ * ' *** norm(B)') 982 FORMAT ( * ' *** Testing norm U*UP-I =',D12.6,/ * ' *** which should be of the order of the machine precision') C C *** Last line of the program COHESS ********************************* END C C This is the driver for SUBROUTINE SRCFOB. C The routine is in TOMS.FOR and uses the file SRCFOB.IN as C input file from which N, P, A, B, C, R and Q are read. C Output is sent to file SRCFOB.OUT . C INTEGER I, ISTEP, J, N, M, P, LDS, LDA, LDB, LDQ, LDC, LDR, LDK, * LDW, LDU DOUBLE PRECISION A(10,10), B(10,5), C(7,10), Q(5,5), R(7,7), * WRK(22,22), S(10,10), UB(10,5), * K(10,7), U(10,10), SSP(10,10), * UPSSP(10,10), UPSSPU(10,10) DOUBLE PRECISION DDOT, TOL LOGICAL WITHU, UPPER, MULTBQ, WITHK C WITHK = .TRUE. UPPER = .FALSE. WITHU = .TRUE. MULTBQ = .TRUE. LDS = 10 LDA = 10 LDB = 10 LDC = 7 LDQ = 5 LDR = 7 LDK = 10 LDW = 22 LDU = 10 TOL = 1.D-15 C C READ N, P, A, B, C, Q and R from the file SRCFOB.IN . C The matrices A, B, C, Q and R are to be read columnwise. C The input dimension M is specified by the loop index. C C REWIND 1 DO 750 M = 2, 3 READ (1,51) N, P 51 FORMAT(2I5) 53 FORMAT(1H ,'*** N =', I3,' M =', I3,' P = ', I3) IF (M .EQ. 2) THEN WRITE(2,940) ELSE WRITE(2,941) END IF DO 50 J = 1, N DO 50 I = 1, N READ(1,52) A(I,J) 50 CONTINUE 52 FORMAT(D25.15) DO 60 J = 1, M DO 60 I = 1, N READ(1,52) B(I,J) 60 CONTINUE DO 68 J = 1, N DO 68 I = 1, P READ(1,52) C(I,J) 68 CONTINUE DO 76 J = 1, P DO 76 I = 1, P READ(1,52) R(I,J) 76 CONTINUE DO 84 J = 1, M DO 84 I = 1, M READ(1,52) Q(I,J) 84 CONTINUE DO 90 J = 1, N DO 90 I = 1, N U(I,J) = 0.0D0 90 CONTINUE DO 100 I = 1, N U(I,I) = 1.0D0 100 CONTINUE WRITE(2,950) WRITE(2,947) WRITE(2,53) N, M, P WRITE(2,944) CALL PRMT(A,LDA,N,N,'A matrix',2,4) CALL PRMT(B,LDB,N,M,'B matrix',2,4) CALL PRMT(C,LDC,P,N,'C matrix',2,4) C C Transform (A,B,C) to lower observer Hessenberg form. C CALL OBHESS(A, LDA, N, C, LDC, P, U, LDU, WITHU, UPPER) DO 140 J = 1, M DO 140 I = 1, N UB(I,J) = DDOT(N, U(I,1), LDU, B(1,J), 1) 140 CONTINUE WRITE(2,948) CALL PRMT(A,LDA,N,N,'Au matr.',2,4) CALL PRMT(B,LDB,N,M,'Bu matr.',2,4) CALL PRMT(C,LDC,P,N,'Cu matr.',2,4) CALL PRMT(U,LDU,N,N,'U matr. ',2,4) WRITE(2,949) CALL PRMT(R,LDR,P,P,'R matr. ',2,4) CALL PRMT(Q,LDQ,M,M,'Q matr. ',2,4) C C Now perform three steps of the Kalman filter recursion C (in square root covariance form) with MULTBQ = .TRUE. C WRITE(2,951) C C Initialize the S matrix to be the null matrix. C DO 350 J = 1, N DO 350 I = 1, N S(I,J) = 0.0D0 350 CONTINUE DO 500 ISTEP = 1, 3 WRITE(2,935)ISTEP CALL SRCFOB(S, LDS, A, LDA, UB, LDU, Q, LDQ, C, LDC, R, * LDR, N, M, P, K, LDK, WRK, LDW, MULTBQ, * WITHK, TOL) CALL PRMT(S,LDS,N,N,'Su matr.',2,4) CALL PRMT(K,LDK,N,P,'Ku matr.',2,4) DO 450 J = 1, N DO 450 I = 1, N SSP(I,J) = DDOT(N, S(I,1), LDS, S(J,1), LDS) 450 CONTINUE DO 460 J = 1, N DO 460 I = 1, N UPSSP(I,J) = DDOT(N, U(1,I), 1, SSP(1,J), 1) 460 CONTINUE DO 470 J = 1, N DO 470 I = 1, N UPSSPU(I,J) = DDOT(N, UPSSP(I,1), LDU, U(1,J), 1) 470 CONTINUE CALL PRMT(UPSSPU,LDU,N,N,'U''SuSu''U',2,4) 500 CONTINUE WRITE(2,952) C C Initialize the S matrix to be the null matrix. C DO 550 J = 1, N DO 550 I = 1, N S(I,J) = 0.0D0 550 CONTINUE C C Now perform three steps of the Kalman filter recursion C (in square root covariance form) with MULTBQ = .FALSE. C MULTBQ = .FALSE. DO 700 ISTEP = 1, 3 WRITE(2,935)ISTEP CALL SRCFOB(S, LDS, A, LDA, UB, LDU, Q, LDQ, C, LDC, R, * LDR, N, M, P, K, LDK, WRK, LDW, MULTBQ, * WITHK, TOL) CALL PRMT(S,LDS,N,N,'Su matr.',2,4) CALL PRMT(K,LDK,N,P,'Ku matr.',2,4) DO 650 J = 1, N DO 650 I = 1, N SSP(I,J) = DDOT(N, S(I,1), LDS, S(J,1), LDS) 650 CONTINUE DO 660 J = 1, N DO 660 I = 1, N UPSSP(I,J) = DDOT(N, U(1,I), 1, SSP(1,J), 1) 660 CONTINUE DO 670 J = 1, N DO 670 I = 1, N UPSSPU(I,J) = DDOT(N, UPSSP(I,1), LDU, U(1,J), 1) 670 CONTINUE CALL PRMT(UPSSPU,LDU,N,N,'U''SuSu''U',2,4) 700 CONTINUE IF (M .EQ. 2) THEN WRITE(2,945) ELSE WRITE(2,946) END IF 750 CONTINUE 935 FORMAT(' *** ISTEP =', I3) 940 FORMAT( * '1*** First example : Square root covariance filter with '/ * ' *** A, B, C in (lower) observer Hessenberg form and'/ * ' *** lower triangular Q, R.') 941 FORMAT( * '1*** Second example : Square root covariance filter with'/ * ' *** A, B, C in (lower) observer Hessenberg form and'/ * ' *** lower triangular Q, R.') 944 FORMAT(// ' *** UPPER = .FALSE.' //) 945 FORMAT( * '1*** In both these tests we start with Su=0 and perform three'/ * ' *** iterations of the filter.'/ * ' *** The ranks of Su in these three steps must be equal to '/ * ' *** M(=2), 2M(=4) and 3M(=6).'/ * ' *** K must be 0 in the first step and nonzero afterwards.'/ * ' *** The results for MULTBQ = .TRUE. and .FALSE. must be equal'/ * ' *** since we chose Q=I.'/ * ' *** The U''SuSu''U matrices are meant for comparison with '/ * ' *** SRCF.') 946 FORMAT( * '1*** In both these tests we start with Su=0 and perform three'/ * ' *** iterations of the filter.'/ * ' *** The ranks of Su in these three steps must be equal to '/ * ' *** M(=3), 2M(=6) and min(N,3M)(=6).'/ * ' *** K must be 0 in the first step and nonzero afterwards.'/ * ' *** The results for MULTBQ = .TRUE. and .FALSE. must be equal'/ * ' *** since we chose Q=I.'/ * ' *** The U''SuSu''U matrices are meant for comparison with '/ * ' *** SRCF.') 947 FORMAT(// ' *** Input OBHESS' //) 948 FORMAT(// ' *** Output OBHESS' //) 949 FORMAT(// ' *** Additional input to SRCFOB' //) 950 FORMAT(// ' *** Input SRCFOB' //) 951 FORMAT(// ' *** Output SRCFOB for MULTBQ=.TRUE.' //) 952 FORMAT(// ' *** Output SRCFOB for MULTBQ=.FALSE.' //) C C *** Last line of the program SRCFOB ********************************* C END C C This is the driver for SUBROUTINE SRIFCO. C The routine is in TOMS.FOR and uses the file SRIFCO.IN as C input file from which N, M, Ainv, C, AinvB, Qinv, Rinv, Z, X, C and Y are read. Output is sent to file SRIFCO.OUT . C INTEGER I, ISTEP, J, N, M, P, LDS, LDA, LDB, LDC, LDR, LDQ, LDW, * LDU, NMP DOUBLE PRECISION AINV(10,10), AINVB(10,7), C(5,10), RINV(5,5), * AINVU(10,10), AINVBU(10,7), CU(5,10), * WRK(22,22), SINV(10,10), QINV(7,7), Y(5), * SPS(10,10), Z(7), X(10), XU(10), * RINVY(5), U(10,10), * SINVU(10,10) DOUBLE PRECISION DDOT, TOL LOGICAL MULTRC, WITHU, UPPER, WITHX C WITHX = .TRUE. UPPER = .TRUE. MULTRC = .FALSE. WITHU = .TRUE. LDS = 10 LDA = 10 LDB = 10 LDQ = 7 LDC = 5 LDR = 5 LDW = 22 LDU = 10 TOL = 1.D-15 C C READ N, M, Ainv, C, AinvB, Qinv, Rinv, Z, X, and Y from the file C SRIFCO.IN. C The matrices Ainv, C, AinvB, Qinv and Rinv are to be read column- C wise. C The input dimension P is specified by the loop index. C C REWIND 1 DO 750 P = 2, 3 READ (1,51) N, M NMP = N + M + P IF (LDW .LT. NMP) WRITE(6,901) 51 FORMAT(2I5) 53 FORMAT(1H , '*** N =', I3, ' M =', I3, ' P = ', I3) IF (P .EQ. 2) THEN WRITE(2,940) ELSE WRITE(2,941) END IF DO 50 J = 1, N DO 50 I =1, N READ(1,52) AINV(J,I) 50 CONTINUE 52 FORMAT(D25.15) DO 60 J = 1, P DO 60 I = 1, N READ(1,52) C(J,I) 60 CONTINUE DO 68 I = 1, M DO 68 J = 1, N READ(1,52) AINVB(J,I) 68 CONTINUE DO 76 J = 1, M DO 76 I = 1, M READ(1,52) QINV(J,I) 76 CONTINUE DO 81 J = 1, P DO 81 I = 1, P READ(1,52) RINV(J,I) 81 CONTINUE DO 86 J = 1, M READ(1,52) Z(J) 86 CONTINUE DO 88 J = 1, N READ(1,52) X(J) 88 CONTINUE DO 90 J = 1, P READ(1,52) Y(J) 90 CONTINUE C C Initialize the U matrix to be the unity matrix. C DO 100 J = 1, N DO 100 I = 1, N U(I,J) = 0.0D0 100 CONTINUE DO 110 I = 1, N U(I,I) = 1.0D0 110 CONTINUE C WRITE(2,950) WRITE(2,947) WRITE(2,53) N, M, P WRITE(2,944) CALL PRMT(AINV,LDA,N,N,'Ainv ',2,4) CALL PRMT(AINVB,LDA,N,M,'AinvB ',2,4) CALL PRMT(C,LDC,P,N,'C matrix',2,4) C C Transform (A,B,C) to upper Hessenberg form. C CALL COHESS(AINV, LDA, N, AINVB, LDB, M, U, LDU, WITHU, UPPER) DO 150 I = 1, P CALL DGEMV('N', N, N, 1.0D0, U, LDU, C(I,1), LDC, 0.0D0, * CU(I,1), LDC) 150 CONTINUE WRITE(2,948) CALL PRMT(AINV,LDA,N,N,'Ainvu ',2,4) CALL PRMT(AINVB,LDA,N,M,'AinvBu ',2,4) CALL PRMT(CU,LDC,P,N,'Cu matr.',2,4) C C Initialize the SINVu matrix to be the unity matrix. C DO 200 J = 1, N DO 190 I = 1, N SINVU(I,J) = 0.0D0 190 CONTINUE SINVU(J,J) = 1.0D0 200 CONTINUE C CALL PRMT(SINVU,LDS,N,N,'Sinvu ',2,4) WRITE(2,949) CALL PRMT(QINV,LDQ,M,M,'QINV ',2,4) CALL PRMT(RINV,LDR,P,P,'RINV ',2,4) CALL PRMT(Z,LDQ,M,1,'Z vector',2,4) CALL DGEMV('N', N, N, 1.0D0, U, LDU, X, 1, 0.0D0, XU, 1) CALL PRMT(XU,LDA,N,1,'XU vect.',2,4) CALL PRMT(Y,LDC,P,1,'Y vector',2,4) C C Calculation of RINV x Y. C DO 270 I = 1, P RINVY(I) = DDOT(P, RINV(I,1), LDR, Y, 1) 270 CONTINUE C C Now perform four steps of the Kalman filter recursion C (in square root covariance form). C WRITE(2,951) DO 500 ISTEP = 1, 4 WRITE(2,935)ISTEP CALL SRIFCO(SINVU, LDS, AINV, LDA, AINVB, LDB, RINV, LDR, * CU, LDC, QINV, LDQ, XU, RINVY, Z, N, M, P, * WRK, LDW, MULTRC, WITHX, TOL) CALL PRMT(SINVU,LDS,N,N,'Sinvu ',2,4) DO 440 I = 1, N CALL DGEMV('N', N, N, 1.0D0, SINVU, LDS, U(1,I), 1, * 0.0D0, SINV(1,I), 1) 440 CONTINUE DO 460 J = 1, N DO 450 I = 1, N SPS(I,J) = DDOT(N, SINV(1,I), 1, SINV(1,J), 1) 450 CONTINUE 460 CONTINUE CALL DGEMV('T', N, N, 1.0D0, U, LDU, XU, 1, 0.0D0, X, 1) CALL PRMT(X,LDA,N,1,'X vector',2,4) CALL PRMT(SPS,LDS,N,N,'Sin''Sin',2,4) 500 CONTINUE IF (P .EQ. 2) THEN WRITE(2,945) ELSE WRITE(2,946) END IF 750 CONTINUE 900 FORMAT(' ', 8(D12.6,1X), D12.6) 901 FORMAT(' *********** Dimensions of WRK are less than N+M+P ') 935 FORMAT(' *** ISTEP =', I3) 940 FORMAT( * '1*** First example : Square root information filter with'/ * ' *** A, B, C in (upper) controller Hessenberg form'/ * ' *** and upper triangular Q, R.') 941 FORMAT( * '1*** Second example : Square root information filter with'/ * ' *** A, B, C in (upper) controller Hessenberg form'/ * ' *** and upper triangular Q, R.') 944 FORMAT(// ' *** UPPER = .TRUE.' //) 945 FORMAT( * '1*** In both these tests we start with Sinvu=I and perform'/ * ' *** four iterations of the filter.'/ * ' *** The Sinv''Sinv matrices and X vectors are meant for '/ * ' *** comparison with SRIF.') 946 FORMAT( * '1*** In both these tests we start with Sinvu=I and perform'/ * ' *** four iterations of the filter.'/ * ' *** The Sinv''Sinv matrices and X vectors are meant for '/ * ' *** comparison with SRIF.') 947 FORMAT(// ' *** Input COHESS' //) 948 FORMAT(// ' *** Output COHESS' //) 949 FORMAT(// ' *** Additional input to SRIFCO' //) 950 FORMAT(// ' *** Input SRIFCO' //) 951 FORMAT(// ' *** Output SRIFCO MULTRC=.TRUE.' //) 952 FORMAT(// ' *** Output SRIFCO MULTRC=.FALSE.' //) C C *** Last line of the program SRIFCO ********************************* C END SUBROUTINE SRCF(S, LDS, A, LDA, B, LDB, Q, LDQ, C, LDC, R, LDR, * N, M, P, K, LDK, WRK, LDW, MULTBQ, WITHK, TOL) C C PURPOSE: C C The algorithm calculates a combined measurement and time update C of one iteration of the Kalman filter. This update is given for C the square root covariance filter, using dense matrices. C C CONTRIBUTORS: C C M. Vanbegin, P. Van Dooren (PRLB) C M. Verhaegen (NASA Ames) C C REVISIONS: C C 1988, Sept. 9. C C Specification of parameters. C C .. Scalar Arguments .. C INTEGER LDS, LDA, LDB, LDQ, LDC, LDR, N, M, P, LDK, LDW DOUBLE PRECISION TOL LOGICAL MULTBQ, WITHK C C .. Array Arguments .. C DOUBLE PRECISION S(LDS,*), A(LDA,*), B(LDB,*), Q(LDQ,*), C(LDC,*), * R(LDR,*), K(LDK,*), WRK(LDW,*) C C EXTERNAL SUBROUTINES: C C DTRCO from LINPACK C DGEMV, DTRSV from EXTENDED-BLAS, C F06FBF, F06FUF, F06FSF from NAG-BLAS. C DCOPY from BLAS. C C Local variables. C INTEGER I, I1, J, P1, PN, PNM, PI, PI1, PJ DOUBLE PRECISION DZ1, RCOND C C Construction of the pre-array WRK. C P1 = P + 1 PN = P + N PNM = PN + M DO 20 J = 1, PNM CALL F06FBF(PN, 0.0D+0, WRK(1,J), 1) 20 CONTINUE C C First part - Storing lower triangular factor R in the (1,1) block C of WRK. C DO 40 I = 1, P CALL DCOPY(P-I+1, R(I,I), 1, WRK(I,I), 1) 40 CONTINUE C C Second part - Storing B x Q in the (2,3) block of WRK. C IF (MULTBQ) THEN DO 60 I = 1, M CALL DCOPY(N, B(1,I), 1, WRK(P1,P+N+I), 1) 60 CONTINUE ELSE DO 80 I = 1, M CALL DGEMV('N', N, M-I+1, 1.D0, B(1,I), LDB, Q(I,I), 1, * 0.0D0, WRK(P1,P+N+I), 1) 80 CONTINUE END IF C C Third part - Storing C x S in the (1,2) block of WRK. C DO 100 I = 1, N CALL DGEMV('N', P, N-I+1, 1.D0, C(1,I), LDC, S(I,I), 1, 0.D0, * WRK(1,P+I), 1) 100 CONTINUE C C Fourth part - Storing A x S in the (2,2) block of WRK. C DO 120 I = 1, N CALL DGEMV('N', N, N-I+1, 1.D0, A(1,I), LDA, S(I,I), 1, 0.D0, * WRK(P1,P+I), 1) 120 CONTINUE C C Triangularization (2 steps). C C Step 1: eliminate the (1,2) block of WRK. C DO 160 I = 1, P CALL F06FSF(N, WRK(I,I), WRK(I,P1), LDW, TOL, DZ1) I1 = I + 1 DO 140 J = I1, PN CALL F06FUF(N, WRK(I,P1), LDW, DZ1, WRK(J,I), WRK(J,P1), * LDW) 140 CONTINUE CALL DTRCO(WRK, LDW, P, RCOND, WRK(1,PNM), 0) IF (RCOND .LT. TOL) WITHK = .FALSE. 160 CONTINUE C C Step 2: triangularize the remaining (2,2) and (2,3) blocks of WRK. C DO 200 I = 1, N PI = P + I PI1 = PI + 1 CALL F06FSF(N+M-I, WRK(PI,PI), WRK(PI,PI1), LDW, TOL, DZ1) IF (PI1 .LE. PN) THEN DO 180 J = PI1, PN CALL F06FUF(N+M-I, WRK(PI,PI1), LDW, DZ1, WRK(J,PI), * WRK(J,PI1), LDW) 180 CONTINUE END IF 200 CONTINUE C C Output K and S. C IF (WITHK) THEN DO 220 J = 1, N CALL DCOPY(P, WRK(P+J,1), LDW, K(J,1), LDK) CALL DTRSV('L', 'T', 'N', P, WRK, LDW, K(J,1), LDK) 220 CONTINUE END IF DO 240 J = 1, N PJ = P + J CALL DCOPY(N-J+1, WRK(PJ,PJ), 1, S(J,J), 1) 240 CONTINUE RETURN C C *** Last line of the SRCF subroutine ******************************** C END SUBROUTINE SRIF(T, LDT, AINV, LDA, B, LDB, RINV, LDR, C, LDC, * QINV, LDQ, X, RINVY, W, N, M, P, WRK, LDW, * MULTAB, MULTRC, WITHX, TOL) C C PURPOSE: C C The algorithm calculates a combined measurement and time update C of one iteration of the Kalman filter. This update is given for C the square root information filter, using dense matrices. C C CONTRIBUTORS: C C M. Vanbegin, P. Van Dooren (PRLB) C M. Verhaegen (NASA Ames) C C REVISIONS: C C 1988, Sept. 9. C C Specification of parameters. C C .. Scalar Arguments .. C INTEGER LDT, LDA, LDB, LDR, LDC, LDQ, N, M, P, LDW DOUBLE PRECISION TOL LOGICAL MULTAB, MULTRC, WITHX C C .. Array Arguments .. C DOUBLE PRECISION T(LDT,*), AINV(LDA,*), B(LDB,*), RINV(LDR,*), * C(LDC,*), QINV(LDQ,*), X(*), RINVY(*), W(*), * WRK(LDW,*) C C EXTERNAL SUBROUTINES: C C DTRCO from LINPACK C DGEMV, DTRMV, DTRSV from Extended-BLAS, C F06FBF, F06FSF, F06FUF from NAG-BLAS, C DCOPY from BLAS C C Local variables. C INTEGER I, I1, J, J1, MN1, MNP DOUBLE PRECISION DZ1, RCOND C C Construction of the pre-array WRK. C MN1 = M + N + 1 MNP = M + N + P DO 20 J = 1, MN1 CALL F06FBF(MNP, 0.0D+0, WRK(1,J), 1) 20 CONTINUE C C First part - Storing QINV in the (1,1) block of WRK. C C DO 40 J = 1, M CALL DCOPY(J, QINV(1,J), 1, WRK(1,J), 1) 40 CONTINUE C C Second part - Storing the process noise mean value in the (1,3) C block of WRK. C CALL DCOPY(M, W, 1, WRK(1,M+N+1), 1) CALL DTRMV('U', 'N', 'N', M, QINV, LDQ, WRK(1,M+N+1), 1) C C Third part - Storing T x AINV and T x AINV x B in the C (2,1) and (2,2) blocks of WRK. C DO 80 I = 1, N CALL DCOPY(N, AINV(1,I), 1, WRK(M+1,M+I), 1) CALL DTRMV('U', 'N', 'N', N, T, LDT, WRK(M+1,M+I), 1) 80 CONTINUE IF (MULTAB) THEN DO 100 I = 1, M CALL DCOPY(N, B(1,I), 1, WRK(M+1,I), 1) CALL DTRMV('U', 'N', 'N', N, T, LDT, WRK(M+1,I), 1) 100 CONTINUE ELSE DO 120 I = 1, M CALL DGEMV('N', N, N, 1.0D0, WRK(M+1,M+1), LDW, B(1,I), 1, * 0.0D0, WRK(M+1,I), 1) 120 CONTINUE END IF C C Fourth part - Storing T x X in the (2,3) block of WRK. C CALL DCOPY(N, X, 1, WRK(M+1,M+N+1), 1) CALL DTRMV('U', 'N', 'N', N, T, LDT, WRK(M+1,M+N+1), 1) C C Fifth part - Storing RINV x C in the (3,2) block of WRK. C IF (MULTRC) THEN DO 160 J = 1, N CALL DCOPY(P, C(1,J), 1, WRK(M+N+1,M+J), 1) 160 CONTINUE ELSE DO 180 I = 1, N CALL DCOPY(P, C(1,I), 1, WRK(M+N+1,M+I), 1) CALL DTRMV('U', 'N', 'N', P, RINV, LDR, WRK(M+N+1,M+I), 1) 180 CONTINUE END IF C C Sixth part - Storing the measurement in the (3,3) block of WRK. C CALL DCOPY(P, RINVY, 1, WRK(M+N+1,M+N+1), 1) C C Triangularization (2 steps). C C Step 1: eliminate the (2,1) block of WRK. C DO 220 I = 1, M I1 = I + 1 CALL F06FSF(N, WRK(I,I), WRK(M+1,I), 1, TOL, DZ1) DO 200 J = I1, MN1 CALL F06FUF(N, WRK(M+1,I), 1, DZ1, WRK(I,J), WRK(M+1,J), 1) 200 CONTINUE 220 CONTINUE C C Step 2: triangularize the remaining (2,2) and (3,2) blocks of WRK. C DO 260 I = 1, N CALL F06FSF(N+P-I, WRK(M+I,M+I), WRK(M+I+1,M+I), 1, TOL, DZ1) J1 = N - I + 1 DO 240 J = 1, J1 CALL F06FUF(N+P-I, WRK(M+I+1,M+I), 1, DZ1, WRK(M+I,M+I+J), * WRK(M+I+1,M+I+J), 1) 240 CONTINUE CALL DTRCO(WRK(M+1,M+1), LDW, N, RCOND, WRK(M+1,1), 1) IF (RCOND .LT. TOL) WITHX = .FALSE. 260 CONTINUE C C Output T and X. C DO 280 J = 1, N CALL DCOPY(J, WRK(M+1,M+J), 1, T(1,J), 1) 280 CONTINUE C IF (WITHX) THEN CALL DCOPY(N, WRK(M+1,M+N+1), 1, X, 1) CALL DTRSV('U', 'N', 'N', N, T, LDT, X, 1) END IF C RETURN C C *** Last line of the SRIF subroutine ******************************** C END SUBROUTINE OBHESS(A, LDA, N, C, LDC, P, U, LDU, WITHU, UPPER) C C PURPOSE: C C OBHESS computes a unitary state space transformation U reducing C the pair (A,C) to upper or lower observer Hessenberg form. C C CONTRIBUTORS: C C M. Vanbegin, P. Van Dooren (PRLB) C M. Verhaegen (NASA Ames) C C REVISIONS: C C 1988, Sept. 9. C C Specification of parameters. C C .. Scalar Arguments .. C INTEGER LDA, N, LDC, P, LDU LOGICAL WITHU, UPPER C C .. Array Arguments .. C DOUBLE PRECISION A(LDA,*), C(LDC,*), U(LDU,*) C C EXTERNAL SUBROUTINES: C C F06FSF, F06FUF from NAG-BLAS, C C Local variables. C INTEGER P1, N1, NJ, JJ, II, J, PAR1, PAR2, PAR3, * PAR4, PAR5, PAR6 DOUBLE PRECISION TL, DZ C TL = 0.0D0 P1 = P + 1 N1 = N - 1 C C Perform transformations involving both C and A. C DO 120 J = 1, MIN(P,N1) NJ = N - J IF (UPPER) THEN PAR1 = P - J + 1 PAR2 = NJ + 1 PAR3 = 1 PAR4 = P - J PAR5 = NJ ELSE PAR1 = J PAR2 = J PAR3 = J + 1 PAR4 = P PAR5 = N END IF CALL F06FSF(NJ, C(PAR1,PAR2), C(PAR1,PAR3), LDC, TL, DZ) C C Update A. C DO 20 JJ = 1, N CALL F06FUF(NJ, C(PAR1,PAR3), LDC, DZ, A(PAR2,JJ), * A(PAR3,JJ), 1) 20 CONTINUE DO 40 II = 1, N CALL F06FUF(NJ, C(PAR1,PAR3), LDC,DZ, A(II,PAR2), * A(II,PAR3), LDA) 40 CONTINUE C IF (WITHU) THEN C C Update U. C DO 60 JJ = 1, N CALL F06FUF(NJ, C(PAR1,PAR3), LDC, DZ, U(PAR2, JJ), * U(PAR3,JJ), 1) 60 CONTINUE END IF IF (J .NE. P) THEN C C Update C. C DO 80 JJ = PAR3, PAR4 CALL F06FUF(NJ, C(PAR1,PAR3), LDC, DZ, C(JJ,PAR2), * C(JJ,PAR3), LDC) 80 CONTINUE END IF DO 100 II = PAR3, PAR5 C(PAR1,II) = 0.0D0 100 CONTINUE 120 CONTINUE IF (P1 .LE. N1) THEN DO 240 J = P1, N1 C C Perform next transformations only involving A. C NJ = N - J IF (UPPER) THEN PAR1 = N + P1 - J PAR2 = NJ + 1 PAR3 = 1 PAR4 = NJ PAR5 = 1 PAR6 = N + P - J ELSE PAR1 = J - P PAR2 = J PAR3 = J + 1 PAR4 = N PAR5 = J - P + 1 PAR6 = N END IF IF (NJ .GT. 0) THEN CALL F06FSF(NJ, A(PAR1,PAR2), A(PAR1,PAR3), LDA, TL, DZ) C C Update A. C DO 160 JJ = 1, N CALL F06FUF(NJ, A(PAR1,PAR3), LDA, DZ, A(PAR2,JJ), * A(PAR3,JJ), 1) 160 CONTINUE DO 180 II = PAR5, PAR6 CALL F06FUF(NJ, A(PAR1,PAR3), LDA, DZ, A(II,PAR2), * A(II,PAR3), LDA) 180 CONTINUE C IF (WITHU) THEN C C Update U. C DO 200 JJ = 1, N CALL F06FUF(NJ, A(PAR1,PAR3), LDA, DZ, U(PAR2,JJ), * U(PAR3,JJ), 1) 200 CONTINUE END IF DO 220 II = PAR3, PAR4 A(PAR1,II) = 0.0D0 220 CONTINUE END IF 240 CONTINUE END IF RETURN C C *** Last line of the OBHESS subroutine ****************************** C END SUBROUTINE COHESS(A, LDA, N, B, LDB, M, U, LDU, WITHU, UPPER) C C PURPOSE: C C COHESS computes a unitary state space transformation U reducing C the pair (A,B) to upper or lower controller Hessenberg form. C C CONTRIBUTORS: C C M. Vanbegin, P. Van Dooren (PRLB) C M. Verhaegen (NASA Ames) C C REVISIONS: C C 1988, Sept. 9. C C Specification of parameters. C C .. Scalar Arguments .. C INTEGER LDA, N, LDB, M, LDU LOGICAL WITHU, UPPER C C .. Array Arguments .. C DOUBLE PRECISION A(LDA,*), B(LDB,*), U(LDU,*) C C EXTERNAL ROUTINES: C C F06FSF, F06FUF from NAG-BLAS, C C Local variables. C INTEGER M1, N1, NJ, JJ, II, J, PAR1, PAR2, PAR3, PAR4, * PAR5, PAR6 DOUBLE PRECISION TL, DZ C TL = 0.0D0 M1 = M + 1 N1 = N - 1 C C Perform transformations involving both B and A. C DO 120 J = 1, MIN(M,N1) NJ = N - J IF (UPPER) THEN PAR1 = J PAR2 = J PAR3 = J + 1 PAR4 = M PAR5 = N ELSE PAR1 = M - J + 1 PAR2 = NJ + 1 PAR3 = 1 PAR4 = M - J PAR5 = NJ END IF CALL F06FSF(NJ, B(PAR2,PAR1), B(PAR3,PAR1), 1, TL, DZ) C C Update A C DO 20 JJ = 1, N CALL F06FUF(NJ, B(PAR3,PAR1), 1, DZ, A(PAR2,JJ), * A(PAR3,JJ), 1) 20 CONTINUE DO 40 II = 1, N CALL F06FUF(NJ, B(PAR3,PAR1), 1, DZ, A(II,PAR2), * A(II,PAR3), LDA) 40 CONTINUE IF (WITHU) THEN C C Update U C DO 60 JJ = 1, N CALL F06FUF(NJ, B(PAR3,PAR1), 1, DZ, U(PAR2,JJ), * U(PAR3,JJ), 1) 60 CONTINUE END IF IF (J .NE. M) THEN C C Update B C DO 80 JJ = PAR3, PAR4 CALL F06FUF(NJ, B(PAR3,PAR1), 1, DZ, B(PAR2,JJ), * B(PAR3,JJ), 1) 80 CONTINUE END IF DO 100 II = PAR3, PAR5 B(II,PAR1) = 0.0D0 100 CONTINUE 120 CONTINUE IF (M1 .LE. N1) THEN DO 240 J = M1, N1 C C Perform next transformations only involving A. C NJ = N - J IF (UPPER) THEN PAR1 = J - M PAR2 = J PAR3 = J + 1 PAR4 = N PAR5 = J - M + 1 PAR6 = N ELSE PAR1 = N + M1 - J PAR2 = NJ + 1 PAR3 = 1 PAR4 = NJ PAR5 = 1 PAR6 = N + M - J END IF CALL F06FSF(NJ, A(PAR2,PAR1), A(PAR3,PAR1), 1, TL, DZ) C C Update A C DO 160 JJ = PAR5, PAR6 CALL F06FUF(NJ, A(PAR3,PAR1), 1, DZ, A(PAR2,JJ), * A(PAR3,JJ), 1) 160 CONTINUE DO 180 II = 1, N CALL F06FUF(NJ, A(PAR3,PAR1), 1, DZ, A(II,PAR2), * A(II,PAR3), LDA) 180 CONTINUE IF (WITHU) THEN C C Update U C DO 200 JJ = 1, N CALL F06FUF(NJ, A(PAR3,PAR1), 1, DZ, U(PAR2,JJ), * U(PAR3,JJ), 1) 200 CONTINUE END IF DO 220 II = PAR3, PAR4 A(II,PAR1) = 0.0D0 220 CONTINUE 240 CONTINUE END IF RETURN C C *** Last line of the COHESS subroutine ****************************** C END SUBROUTINE SRCFOB(S, LDS, A, LDA, B, LDB, Q, LDQ, C, LDC, R, LDR, * N, M, P, K, LDK, WRK, LDW, MULTBQ, WITHK, TOL) C C PURPOSE: C C The algorithm calculates a combined measurement and time update C of one iteration of the time-invariant Kalman filter. This update C is given for the square root covariance filter, using the C condensed observer-Hessenberg form. C C CONTRIBUTORS: C C M. Vanbegin, P. Van Dooren (PRLB) C M. Verhaegen (NASA Ames) C C REVISIONS: C C 1988, Sept. 9. C C Specification of parameters. C C .. Scalar arguments .. C INTEGER LDS, LDA, LDB, LDQ, LDC, LDR, N, M, P, LDK, LDW DOUBLE PRECISION TOL LOGICAL MULTBQ, WITHK C C .. Array Arguments .. C DOUBLE PRECISION S(LDS,*), A(LDA,*), B(LDB,*), Q(LDQ,*), C(LDC,*), * R(LDR,*), K(LDK,*), WRK(LDW,*) C C EXTERNAL SUBROUTINES: C C DTRCO from LINPACK C DGEMV, DTRSV from Extended-BLAS, C F06FBF, F06FSF, F06FUF from NAG-BLAS, C DAXPY, DCOPY from BLAS. C C Local variables. C INTEGER I, I1, IN, IND, IPM, J, MINPN, MINMP, P1, PM1, PNM, PN, * PI, PI1, PJ, NAXPY DOUBLE PRECISION DZ1, RCOND C C Construction of the pre-array WRK. C MINPN = MIN(P,N) P1 = P + 1 PM1 = P1 + M PN = P + N PNM = PN + M DO 20 J = 1, PNM CALL F06FBF(PN, 0.0D+0, WRK(1,J), 1) 20 CONTINUE C C First part - Storing lower triangular factor R in the (1,1) block C of WRK. C DO 40 I = 1, P CALL DCOPY(P-I+1, R(I,I), 1, WRK(I,I), 1) 40 CONTINUE C C Second part - Storing B x Q in the (2,2) block of WRK. C IF (MULTBQ) THEN DO 60 I = 1, M CALL DCOPY(N, B(1,I), 1, WRK(P1,P+I), 1) 60 CONTINUE ELSE DO 80 I = 1, M CALL DGEMV('N', N, M-I+1, 1.0D0, B(1,I), LDB, Q(I,I), 1, * 0.0D0, WRK(P1,P+I), 1) 80 CONTINUE END IF C C Third part - Storing C x S in the (1,3) block of WRK. C DO 120 I = 1, MINPN IPM = I + P + M NAXPY = P - I + 1 DO 100 J = I, MINPN CALL DAXPY(NAXPY, S(J,I), C(J,J), 1, WRK(J,IPM), 1) NAXPY = NAXPY - 1 100 CONTINUE 120 CONTINUE C C Fourth part - Storing A x S in the (2,3) block of WRK. C DO 160 I = 1, N IPM = I + P + M NAXPY = N IND = 1 DO 140 J = I, N IF (J .GT. P1) THEN IND = IND + 1 NAXPY = NAXPY - 1 END IF CALL DAXPY(NAXPY, S(J,I), A(IND,J), 1, WRK(IND+P,IPM), 1) 140 CONTINUE 160 CONTINUE C C Triangularization (2 steps). C C Step 1: eliminate the (1,3) block WRK. C DO 200 I = 1, P IN = MIN(I,N) CALL F06FSF(IN, WRK(I,I), WRK(I,PM1), LDW, TOL, DZ1) I1 = I + 1 DO 180 J = I1, PN CALL F06FUF(IN, WRK(I,PM1), LDW, DZ1, WRK(J,I), WRK(J,PM1), * LDW) 180 CONTINUE CALL DTRCO(WRK, LDW, P, RCOND, WRK(1,PNM), 0) IF (RCOND .LT. TOL) WITHK = .FALSE. 200 CONTINUE C C Step 2: triangularize the remaining (2,2) and (2,3) blocks of WRK. C DO 240 I = 1, N MINMP = MIN(M+P,M+N-I) PI = P + I PI1 = PI + 1 CALL F06FSF(MINMP, WRK(PI,PI), WRK(PI,PI1), LDW, TOL, DZ1) IF (PI1 .LE. PN) THEN DO 220 J = PI1, PN CALL F06FUF(MINMP, WRK(PI,PI1), LDW, DZ1, WRK(J,PI), * WRK(J,PI1), LDW) 220 CONTINUE END IF 240 CONTINUE C C Output K and S. C IF (WITHK) THEN DO 260 J = 1, N CALL DCOPY(P, WRK(P+J,1), LDW, K(J,1), LDK) CALL DTRSV('L', 'T', 'N', P, WRK, LDW, K(J,1), LDK) 260 CONTINUE END IF DO 280 J = 1, N PJ = P + J CALL DCOPY(N-J+1, WRK(PJ,PJ), 1, S(J,J), 1) 280 CONTINUE RETURN C C *** Last line of the SRCFOB subroutine ****************************** C END SUBROUTINE SRIFCO(T, LDT, AINV, LDA, AINVB, LDB, RINV, LDR, C, * LDC, QINV, LDQ, X, RINVY, W, N, M, P, WRK, * LDW, MULTRC, WITHX, TOL) C C PURPOSE: C C The algorithm calculates a combined measurement and time update C of one iteration of the time-invariant Kalman filter. This update C is given for the square root information filter, using the C condensed controller-Hessenberg form. C C CONTRIBUTORS: C C M. Vanbegin, P. Van Dooren (PRLB) C M. Verhaegen (NASA Ames) C C REVISIONS: C C 1988, Sept. 9. C C Specification of parameters. C C .. Scalar Arguments .. C INTEGER LDT, LDA, LDB, LDR, LDC, LDQ, N, M, P, LDW DOUBLE PRECISION TOL LOGICAL MULTRC,WITHX C C .. Array Arguments .. C DOUBLE PRECISION T(LDT,*), AINV(LDA,*), AINVB(LDB,*), * RINV(LDR,*), C(LDC,*), QINV(LDQ,*), X(*), * RINVY(*), W(*), WRK(LDW,*) C C EXTERNAL SUBROUTINES: C C DTRCO from LINPACK C DTRMV, DTRSV from Extended-BLAS, C F06FBF, F06FSF, F06FUF from NAG-BLAS, C DAXPY, DCOPY from BLAS. C C Local variables. C INTEGER I, I1, IN, J, MI, MI1, MINMP, MN1, MP1, MNP DOUBLE PRECISION DZ1, RCOND C C Construction of the pre-array WRK. C MN1 = M + N + 1 MP1 = M + P + 1 MNP = M + N + P DO 20 J = 1, MN1 CALL F06FBF(MNP, 0.0D+0, WRK(1,J), 1) 20 CONTINUE C C First part - Storing QINV in the (1,1) block of WRK. C DO 40 J = 1, M CALL DCOPY(J, QINV(1,J), 1, WRK(1,J), 1) 40 CONTINUE C C Second part - Storing the process noise mean value C in the (1,3) block of WRK. C CALL DCOPY(M, W, 1, WRK(1,M+N+1), 1) CALL DTRMV('U', 'N', 'N', M, QINV, LDQ, WRK(1,M+N+1), 1) C C Third part - Storing RINV x C in the (2,2) block of WRK. C IF (MULTRC) THEN DO 80 J = 1, N CALL DCOPY(P, C(1,J), 1, WRK(M+1,M+J), 1) 80 CONTINUE ELSE DO 100 I = 1, N CALL DCOPY(P, C(1,I), 1, WRK(M+1,M+I), 1) CALL DTRMV('U', 'N', 'N', P, RINV, LDR, WRK(M+1,M+I), 1) 100 CONTINUE END IF C C Fourth part - Storing the measurement in the (2,3) block of WRK. C CALL DCOPY(P, RINVY, 1, WRK(M+1,M+N+1), 1) C C Fifth part - Storing T x A and T x A x B in the (3,1) and C (3,2) blocks of WRK. * DO 140 I = 1, M DO 120 J = 1, MIN(I,N) CALL DAXPY(J, AINVB(J,I), T(1,J), 1, WRK(MP1,I), 1) 120 CONTINUE 140 CONTINUE DO 180 I = 1, N DO 160 J = 1, MIN(M+I,N) CALL DAXPY(J, AINV(J,I), T(1,J), 1, WRK(MP1,M+I), 1) 160 CONTINUE 180 CONTINUE C C Sixth part - Storing T x X in the (3,3) block of WRK. C CALL DCOPY(N, X, 1, WRK(MP1,M+N+1), 1) CALL DTRMV('U', 'N', 'N', N, T, LDT, WRK(MP1,M+N+1), 1) C C Triangularization (2 steps). C C Step 1: eliminate the (3,1) block of WRK. C DO 240 I = 1, M I1 = I + 1 IN = MIN(I,N) CALL F06FSF(IN, WRK(I,I), WRK(MP1,I), 1, TOL, DZ1) DO 220 J = I1, MN1 CALL F06FUF(IN, WRK(MP1,I), 1, DZ1, WRK(I,J), WRK(MP1,J), 1) 220 CONTINUE 240 CONTINUE C C Step 2: triangularize the remaining (2,2) and (3,2) blocks of WRK. C DO 280 I = 1, N MINMP = MIN(M+P,P+N-I) MI = M + I MI1 = MI + 1 CALL F06FSF(MINMP, WRK(MI,MI), WRK(MI1,MI), 1, TOL, DZ1) DO 260 J = MI1, MN1 CALL F06FUF(MINMP, WRK(MI1,MI), 1, DZ1, WRK(MI,J), * WRK(MI1,J), 1) 260 CONTINUE CALL DTRCO(WRK(M+1,M+1), LDW, N, RCOND, WRK(M+1,1), 1) IF (RCOND .LT. TOL) WITHX = .FALSE. 280 CONTINUE C C Output T and X. C DO 300 J = 1, N CALL DCOPY(J, WRK(M+1,M+J), 1, T(1,J), 1) 300 CONTINUE C IF (WITHX) THEN CALL DCOPY(N, WRK(M+1,M+N+1), 1, X, 1) CALL DTRSV('U', 'N', 'N', N, T, LDT, X, 1) END IF C RETURN C C *** Last line of the SRIFCO subroutine ****************************** C END ************************************************************************ * SUBROUTINE F06PAF( TRANS, M, N, ALPHA, A, LDA, X, INCX, $ BETA, Y, INCY ) * .. Entry Points .. ENTRY DGEMV ( TRANS, M, N, ALPHA, A, LDA, X, INCX, $ BETA, Y, INCY ) * .. Scalar Arguments .. DOUBLE PRECISION ALPHA, BETA INTEGER INCX, INCY, LDA, M, N CHARACTER*1 TRANS * .. Array Arguments .. DOUBLE PRECISION A( LDA, * ), X( * ), Y( * ) * .. * * Purpose * ======= * * F06PAF performs one of the matrix-vector operations * * y := alpha*A*x + beta*y, or y := alpha*A'*x + beta*y, * * where alpha and beta are scalars, x and y are vectors and A is an * m by n matrix. * * Parameters * ========== * * TRANS - CHARACTER*1. * On entry, TRANS specifies the operation to be performed as * follows: * * TRANS = 'N' or 'n' y := alpha*A*x + beta*y. * * TRANS = 'T' or 't' y := alpha*A'*x + beta*y. * * TRANS = 'C' or 'c' y := alpha*A'*x + beta*y *. * Unchanged on exit. * * M - INTEGER. * On entry, M specifies the number of rows of the matrix A. * M must be at least zero. * Unchanged on exit. * * N - INTEGER. * On entry, N specifies the number of columns of the matrix A. * N must be at least zero. * Unchanged on exit. * * ALPHA - DOUBLE PRECISION. * On entry, ALPHA specifies the scalar alpha. * Unchanged on exit. * * A - DOUBLE PRECISION array of DIMENSION ( LDA, n ). * Before entry, the leading m by n part of the array A must * contain the matrix of coefficients. * Unchanged on exit. * * LDA - INTEGER. * On entry, LDA specifies the leading dimension of A as * declared in the calling (sub) program. LDA must be at least * m. * Unchanged on exit. * * X - DOUBLE PRECISION array of DIMENSION at least * ( 1 + ( n - 1 )*abs( INCX ) ) when TRANS = 'N' or 'n' * and at least * ( 1 + ( m - 1 )*abs( INCX ) ) otherwise. * Before entry, the incremented array X must contain the * vector x. * Unchanged on exit. * * INCX - INTEGER. * On entry, INCX specifies the increment for the elements of * X. * Unchanged on exit. * * BETA - DOUBLE PRECISION. * On entry, BETA specifies the scalar beta. When BETA is * supplied as zero then Y need not be set on input. * Unchanged on exit. * * Y - DOUBLE PRECISION array of DIMENSION at least * ( 1 + ( m - 1 )*abs( INCY ) ) when TRANS = 'N' or 'n' * and at least * ( 1 + ( n - 1 )*abs( INCY ) ) otherwise. * Before entry with BETA non-zero, the incremented array Y * must contain the vector y. On exit, Y is overwritten by the * updated vector y. * * INCY - INTEGER. * On entry, INCY specifies the increment for the elements of * Y. * Unchanged on exit. * * * Note that TRANS, M, N and LDA must be such that the value of the * LOGICAL variable OK in the following statement is true. * * OK = ( ( TRANS.EQ.'N' ).OR.( TRANS.EQ.'n' ).OR. * $ ( TRANS.EQ.'T' ).OR.( TRANS.EQ.'t' ).OR. * $ ( TRANS.EQ.'C' ).OR.( TRANS.EQ.'c' ) ) * $ .AND. * $ ( M.GE.0 ) * $ .AND. * $ ( N.GE.0 ) * $ .AND. * $ ( LDA.GE.M ) * * * * Level 2 Blas routine. * * -- Written on 30-August-1985. * Sven Hammarling, Nag Central Office. * * * .. Parameters .. DOUBLE PRECISION ONE , ZERO PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 ) * .. Local Scalars .. DOUBLE PRECISION TEMP INTEGER I, IX, IY, J, JX, JY, KX, KY, LENX, LENY * .. * .. Executable Statements .. * * Quick return if possible. * IF( ( M.EQ.0 ).OR. $ ( N.EQ.0 ).OR. $ ( ( ALPHA.EQ.ZERO ).AND.( BETA.EQ.ONE ) ) ) $ RETURN * * Set LENX and LENY, the lengths of the vectors x and y. * IF( ( TRANS.EQ.'N' ).OR.( TRANS.EQ.'n' ) )THEN LENX = N LENY = M ELSE LENX = M LENY = N END IF * * Start the operations. In this version the elements of A are * accessed sequentially with one pass through A. * * First form y := beta*y and set up the start points in X and Y if * the increments are not both unity. * IF( ( INCX.EQ.1 ).AND.( INCY.EQ.1 ) )THEN IF( BETA.NE.ONE )THEN IF( BETA.EQ.ZERO )THEN DO 10, I = 1, LENY Y( I ) = ZERO 10 CONTINUE ELSE DO 20, I = 1, LENY Y( I ) = BETA*Y( I ) 20 CONTINUE END IF END IF ELSE IF( INCX.GT.0 )THEN KX = 1 ELSE KX = 1 - ( LENX - 1 )*INCX END IF IF( INCY.GT.0 )THEN KY = 1 ELSE KY = 1 - ( LENY - 1 )*INCY END IF IF( BETA.NE.ONE )THEN IY = KY IF( BETA.EQ.ZERO )THEN DO 30, I = 1, LENY Y( IY ) = ZERO IY = IY + INCY 30 CONTINUE ELSE DO 40, I = 1, LENY Y( IY ) = BETA*Y( IY ) IY = IY + INCY 40 CONTINUE END IF END IF END IF IF( ALPHA.EQ.ZERO ) $ RETURN IF( ( TRANS.EQ.'N' ).OR.( TRANS.EQ.'n' ) )THEN * * Form y := alpha*A*x + y. * IF( ( INCX.EQ.1 ).AND.( INCY.EQ.1 ) )THEN DO 60, J = 1, N IF( X( J ).NE.ZERO )THEN TEMP = ALPHA*X( J ) DO 50, I = 1, M Y( I ) = Y( I ) + TEMP*A( I, J ) 50 CONTINUE END IF 60 CONTINUE ELSE JX = KX DO 80, J = 1, N IF( X( JX ).NE.ZERO )THEN TEMP = ALPHA*X( JX ) IY = KY DO 70, I = 1, M Y( IY ) = Y( IY ) + TEMP*A( I, J ) IY = IY + INCY 70 CONTINUE END IF JX = JX + INCX 80 CONTINUE END IF ELSE * * Form y := alpha*A'*x + y. * IF( ( INCX.EQ.1 ).AND.( INCY.EQ.1 ) )THEN DO 100, J = 1, N TEMP = ZERO DO 90, I = 1, M TEMP = TEMP + A( I, J )*X( I ) 90 CONTINUE Y( J ) = Y( J ) + ALPHA*TEMP 100 CONTINUE ELSE JY = KY DO 120, J = 1, N TEMP = ZERO IX = KX DO 110, I = 1, M TEMP = TEMP + A( I, J )*X( IX ) IX = IX + INCX 110 CONTINUE Y( JY ) = Y( JY ) + ALPHA*TEMP JY = JY + INCY 120 CONTINUE END IF END IF * RETURN * * End of F06PAF. ( DGEMV ) * END * ************************************************************************ * SUBROUTINE F06PFF( UPLO, TRANS, DIAG, N, A, LDA, X, INCX ) * .. Entry Points .. ENTRY DTRMV ( UPLO, TRANS, DIAG, N, A, LDA, X, INCX ) * .. Scalar Arguments .. INTEGER INCX, LDA, N CHARACTER*1 DIAG, TRANS, UPLO * .. Array Arguments .. DOUBLE PRECISION A( LDA, * ), X( * ) * .. * * Purpose * ======= * * F06PFF performs one of the matrix-vector operations * * x := A*x, or x := A'*x, * * where x is n element vector and A is an n by n unit, or non-unit, * upper or lower triangular matrix. * * Parameters * ========== * * UPLO - CHARACTER*1. * On entry, UPLO specifies whether the matrix is an upper or * lower triangular matrix as follows: * * UPLO = 'U' or 'u' A is an upper triangular matrix. * * UPLO = 'L' or 'l' A is a lower triangular matrix. * * Unchanged on exit. * * TRANS - CHARACTER*1. * On entry, TRANS specifies the operation to be performed as * follows: * * TRANS = 'N' or 'n' x := A*x. * * TRANS = 'T' or 't' x := A'*x. * * TRANS = 'C' or 'c' x := A'*x. * * Unchanged on exit. * * DIAG - CHARACTER*1. * On entry, DIAG specifies whether or not A is unit * triangular as follows: * * DIAG = 'U' or 'u' A is assumed to be unit triangular. * * DIAG = 'N' or 'n' A is not assumed to be unit * triangular. * * Unchanged on exit. * * N - INTEGER. * On entry, N specifies the order of the matrix A. * N must be at least zero. * Unchanged on exit. * * A - DOUBLE PRECISION array of DIMENSION ( LDA, n ). * Before entry with UPLO = 'U' or 'u', the leading n by n * upper triangular part of the array A must contain the upper * triangular matrix and the strictly lower triangular part of * A is not referenced. * Before entry with UPLO = 'L' or 'l', the leading n by n * lower triangular part of the array A must contain the lower * triangular matrix and the strictly upper triangular part of * A is not referenced. * Note that when DIAG = 'U' or 'u', the diagonal elements of * A are not referenced either, but are assumed to be unity. * Unchanged on exit. * * LDA - INTEGER. * On entry, LDA specifies the first dimension of A as declared * in the calling (sub) program. LDA must be at least n. * Unchanged on exit. * * X - DOUBLE PRECISION array of dimension at least * ( 1 + ( n - 1 )*abs( INCX ) ). * Before entry, the incremented array X must contain the n * element vector x. On exit, X is overwritten with the * tranformed vector x. * * INCX - INTEGER. * On entry, INCX specifies the increment for the elements of * X. * Unchanged on exit. * * * Note that UPLO, TRANS, DIAG, N and LDA must be such that the value of * the LOGICAL variable OK in the following statement is true. * * OK = ( ( UPLO.EQ.'U' ).OR.( UPLO.EQ.'u' ).OR. * $ ( UPLO.EQ.'L' ).OR.( UPLO.EQ.'l' ) ) * $ .AND. * $ ( ( TRANS.EQ.'N' ).OR.( TRANS.EQ.'n' ).OR. * $ ( TRANS.EQ.'T' ).OR.( TRANS.EQ.'t' ).OR. * $ ( TRANS.EQ.'C' ).OR.( TRANS.EQ.'c' ) ) * $ .AND. * $ ( ( DIAG.EQ.'U' ).OR.( DIAG.EQ.'u' ).OR. * $ ( DIAG.EQ.'N' ).OR.( DIAG.EQ.'n' ) ) * $ .AND. * $ ( N.GE.0 ) * $ .AND. * $ ( LDA.GE.N ) * * * * Level 2 Blas routine. * * -- Written on 30-September-1985. * Sven Hammarling, Nag Central Office. * * * .. Parameters .. DOUBLE PRECISION ZERO PARAMETER ( ZERO = 0.0D+0 ) * .. Local Scalars .. INTEGER I, IX, J, JX, KX LOGICAL NOUNIT * .. * .. Executable Statements .. * * Quick return if possible. * IF( N.EQ.0 ) $ RETURN NOUNIT = ( DIAG.EQ.'N' ).OR.( DIAG.EQ.'n' ) * * Set up the start point in X if the increment is not unity. This * will be ( N - 1 )*INCX too small for descending loops. * IF( INCX.LE.0 )THEN KX = 1 - ( N - 1 )*INCX ELSE IF( INCX.NE.1 )THEN KX = 1 END IF * * Start the operations. In this version the elements of A are * accessed sequentially with one pass through A. * IF( ( TRANS.EQ.'N' ).OR.( TRANS.EQ.'n' ) )THEN * * Form x := A*x. * IF( ( UPLO.EQ.'U' ).OR.( UPLO.EQ.'u' ) )THEN IF( INCX.EQ.1 )THEN DO 20, J = 1, N IF( X( J ).NE.ZERO )THEN DO 10, I = 1, J - 1 X( I ) = X( I ) + X( J )*A( I, J ) 10 CONTINUE IF( NOUNIT ) $ X( J ) = X( J )*A( J, J ) END IF 20 CONTINUE ELSE JX = KX DO 40, J = 1, N IF( X( JX ).NE.ZERO )THEN IX = KX DO 30, I = 1, J - 1 X( IX ) = X( IX ) + X( JX )*A( I, J ) IX = IX + INCX 30 CONTINUE IF( NOUNIT ) $ X( JX ) = X( JX )*A( J, J ) END IF JX = JX + INCX 40 CONTINUE END IF ELSE IF( INCX.EQ.1 )THEN DO 60, J = N, 1, -1 IF( X( J ).NE.ZERO )THEN DO 50, I = N, J + 1, -1 X( I ) = X( I ) + X( J )*A( I, J ) 50 CONTINUE IF( NOUNIT ) $ X( J ) = X( J )*A( J, J ) END IF 60 CONTINUE ELSE KX = KX + ( N - 1 )*INCX JX = KX DO 80, J = N, 1, -1 IF( X( JX ).NE.ZERO )THEN IX = KX DO 70, I = N, J + 1, -1 X( IX ) = X( IX ) + X( JX )*A( I, J ) IX = IX - INCX 70 CONTINUE IF( NOUNIT ) $ X( JX ) = X( JX )*A( J, J ) END IF JX = JX - INCX 80 CONTINUE END IF END IF ELSE * * Form x := A'*x. * IF( ( UPLO.EQ.'U' ).OR.( UPLO.EQ.'u' ) )THEN IF( INCX.EQ.1 )THEN DO 100, J = N, 1, -1 IF( NOUNIT ) $ X( J ) = X( J )*A( J, J ) DO 90, I = J - 1, 1, -1 X( J ) = X( J ) + A( I, J )*X( I ) 90 CONTINUE 100 CONTINUE ELSE JX = KX + ( N - 1 )*INCX DO 120, J = N, 1, -1 IX = JX IF( NOUNIT ) $ X( JX ) = X( JX )*A( J, J ) DO 110, I = J - 1, 1, -1 IX = IX - INCX X( JX ) = X( JX ) + A( I, J )*X( IX ) 110 CONTINUE JX = JX - INCX 120 CONTINUE END IF ELSE IF( INCX.EQ.1 )THEN DO 140, J = 1, N IF( NOUNIT ) $ X( J ) = X( J )*A( J, J ) DO 130, I = J + 1, N X( J ) = X( J ) + A( I, J )*X( I ) 130 CONTINUE 140 CONTINUE ELSE JX = KX DO 160, J = 1, N IX = JX IF( NOUNIT ) $ X( JX ) = X( JX )*A( J, J ) DO 150, I = J + 1, N IX = IX + INCX X( JX ) = X( JX ) + A( I, J )*X( IX ) 150 CONTINUE JX = JX + INCX 160 CONTINUE END IF END IF END IF * RETURN * * End of F06PFF. ( DTRMV ) * END * ************************************************************************ * SUBROUTINE F06PJF( UPLO, TRANS, DIAG, N, A, LDA, X, INCX ) * .. Entry Points .. ENTRY DTRSV ( UPLO, TRANS, DIAG, N, A, LDA, X, INCX ) * .. Scalar Arguments .. INTEGER INCX, LDA, N CHARACTER*1 DIAG, TRANS, UPLO * .. Array Arguments .. DOUBLE PRECISION A( LDA, * ), X( * ) * .. * * Purpose * ======= * * F06PJF solves one of the systems of equations * * A*x = b, or A'*x = b, * * where b and x are n element vectors and A is an n by n unit, or * non-unit, upper or lower triangular matrix. * * No test for singularity or near-singularity is included in this * routine. Such tests must be performed before calling this routine. * * Parameters * ========== * * UPLO - CHARACTER*1. * On entry, UPLO specifies whether the matrix is an upper or * lower triangular matrix as follows: * * UPLO = 'U' or 'u' A is an upper triangular matrix. * * UPLO = 'L' or 'l' A is a lower triangular matrix. * * Unchanged on exit. * * TRANS - CHARACTER*1. * On entry, TRANS specifies the equations to be solved as * follows: * * TRANS = 'N' or 'n' A*x = b. * * TRANS = 'T' or 't' A'*x = b. * * TRANS = 'C' or 'c' A'*x = b. * * Unchanged on exit. * * DIAG - CHARACTER*1. * On entry, DIAG specifies whether or not A is unit * triangular as follows: * * DIAG = 'U' or 'u' A is assumed to be unit triangular. * * DIAG = 'N' or 'n' A is not assumed to be unit * triangular. * * Unchanged on exit. * * N - INTEGER. * On entry, N specifies the order of the matrix A. * N must be at least zero. * Unchanged on exit. * * A - DOUBLE PRECISION array of DIMENSION ( LDA, n ). * Before entry with UPLO = 'U' or 'u', the leading n by n * upper triangular part of the array A must contain the upper * triangular matrix and the strictly lower triangular part of * A is not referenced. * Before entry with UPLO = 'L' or 'l', the leading n by n * lower triangular part of the array A must contain the lower * triangular matrix and the strictly upper triangular part of * A is not referenced. * Note that when DIAG = 'U' or 'u', the diagonal elements of * A are not referenced either, but are assumed to be unity. * Unchanged on exit. * * LDA - INTEGER. * On entry, LDA specifies the first dimension of A as declared * in the calling (sub) program. LDA must be at least n. * Unchanged on exit. * * X - DOUBLE PRECISION array of dimension at least * ( 1 + ( n - 1 )*abs( INCX ) ). * Before entry, the incremented array X must contain the n * element right-hand side vector b. On exit, X is overwritten * with the solution vector x. * * INCX - INTEGER. * On entry, INCX specifies the increment for the elements of * X. * Unchanged on exit. * * * Note that UPLO, TRANS, DIAG, N and LDA must be such that the value of * the LOGICAL variable OK in the following statement is true. * * OK = ( ( UPLO.EQ.'U' ).OR.( UPLO.EQ.'u' ).OR. * $ ( UPLO.EQ.'L' ).OR.( UPLO.EQ.'l' ) ) * $ .AND. * $ ( ( TRANS.EQ.'N' ).OR.( TRANS.EQ.'n' ).OR. * $ ( TRANS.EQ.'T' ).OR.( TRANS.EQ.'t' ).OR. * $ ( TRANS.EQ.'C' ).OR.( TRANS.EQ.'c' ) ) * $ .AND. * $ ( ( DIAG.EQ.'U' ).OR.( DIAG.EQ.'u' ).OR. * $ ( DIAG.EQ.'N' ).OR.( DIAG.EQ.'n' ) ) * $ .AND. * $ ( N.GE.0 ) * $ .AND. * $ ( LDA.GE.N ) * * * * Level 2 Blas routine. * * -- Written on 30-September-1985. * Sven Hammarling, Nag Central Office. * * * .. Parameters .. DOUBLE PRECISION ZERO PARAMETER ( ZERO = 0.0D+0 ) * .. Local Scalars .. INTEGER I, IX, J, JX, KX LOGICAL NOUNIT * .. * .. Executable Statements .. * * Quick return if possible. * IF( N.EQ.0 ) $ RETURN NOUNIT = ( DIAG.EQ.'N' ).OR.( DIAG.EQ.'n' ) * * Set up the start point in X if the increment is not unity. This * will be ( N - 1 )*INCX too small for descending loops. * IF( INCX.LE.0 )THEN KX = 1 - ( N - 1 )*INCX ELSE IF( INCX.NE.1 )THEN KX = 1 END IF * * Start the operations. In this version the elements of A are * accessed sequentially with one pass through A. * IF( ( TRANS.EQ.'N' ).OR.( TRANS.EQ.'n' ) )THEN * * Form x := inv( A )*x. * IF( ( UPLO.EQ.'U' ).OR.( UPLO.EQ.'u' ) )THEN IF( INCX.EQ.1 )THEN DO 20, J = N, 1, -1 IF( X( J ).NE.ZERO )THEN IF( NOUNIT ) $ X( J ) = X( J )/A( J, J ) DO 10, I = J - 1, 1, -1 X( I ) = X( I ) - X( J )*A( I, J ) 10 CONTINUE END IF 20 CONTINUE ELSE JX = KX + ( N - 1 )*INCX DO 40, J = N, 1, -1 IF( X( JX ).NE.ZERO )THEN IF( NOUNIT ) $ X( JX ) = X( JX )/A( J, J ) IX = JX DO 30, I = J - 1, 1, -1 IX = IX - INCX X( IX ) = X( IX ) - X( JX )*A( I, J ) 30 CONTINUE END IF JX = JX - INCX 40 CONTINUE END IF ELSE IF( INCX.EQ.1 )THEN DO 60, J = 1, N IF( X( J ).NE.ZERO )THEN IF( NOUNIT ) $ X( J ) = X( J )/A( J, J ) DO 50, I = J + 1, N X( I ) = X( I ) - X( J )*A( I, J ) 50 CONTINUE END IF 60 CONTINUE ELSE JX = KX DO 80, J = 1, N IF( X( JX ).NE.ZERO )THEN IF( NOUNIT ) $ X( JX ) = X( JX )/A( J, J ) IX = JX DO 70, I = J + 1, N IX = IX + INCX X( IX ) = X( IX ) - X( JX )*A( I, J ) 70 CONTINUE END IF JX = JX + INCX 80 CONTINUE END IF END IF ELSE * * Form x := inv( A' )*x. * IF( ( UPLO.EQ.'U' ).OR.( UPLO.EQ.'u' ) )THEN IF( INCX.EQ.1 )THEN DO 100, J = 1, N DO 90, I = 1, J - 1 X( J ) = X( J ) - A( I, J )*X( I ) 90 CONTINUE IF( NOUNIT ) $ X( J ) = X( J )/A( J, J ) 100 CONTINUE ELSE JX = KX DO 120, J = 1, N IX = KX DO 110, I = 1, J - 1 X( JX ) = X( JX ) - A( I, J )*X( IX ) IX = IX + INCX 110 CONTINUE IF( NOUNIT ) $ X( JX ) = X( JX )/A( J, J ) JX = JX + INCX 120 CONTINUE END IF ELSE IF( INCX.EQ.1 )THEN DO 140, J = N, 1, -1 DO 130, I = N, J + 1, -1 X( J ) = X( J ) - A( I, J )*X( I ) 130 CONTINUE IF( NOUNIT ) $ X( J ) = X( J )/A( J, J ) 140 CONTINUE ELSE KX = KX + ( N - 1 )*INCX JX = KX DO 160, J = N, 1, -1 IX = KX DO 150, I = N, J + 1, -1 X( JX ) = X( JX ) - A( I, J )*X( IX ) IX = IX - INCX 150 CONTINUE IF( NOUNIT ) $ X( JX ) = X( JX )/A( J, J ) JX = JX - INCX 160 CONTINUE END IF END IF END IF * RETURN * * End of F06PJF. ( DTRSV ) * END * ************************************************************************ * SUBROUTINE F06FBF( N, CONST, X, INCX ) * .. Scalar Arguments .. DOUBLE PRECISION CONST INTEGER INCX, N * .. Array Arguments .. DOUBLE PRECISION X( * ) * .. * * F06FBF performs the operation * * x = const*e, e' = ( 1 1 ... 1 ). * * * Nag Fortran 77 O( n ) basic linear algebra routine. * * -- Written on 22-September-1983. * Sven Hammarling, Nag Central Office. * * * .. Parameters .. DOUBLE PRECISION ZERO PARAMETER ( ZERO = 0.0D+0 ) * .. Local Scalars .. INTEGER IX * .. * .. Executable Statements .. IF( N.GT.0 )THEN IF( CONST.NE.ZERO )THEN DO 10, IX = 1, 1 + ( N - 1 )*INCX, INCX X( IX ) = CONST 10 CONTINUE ELSE DO 20, IX = 1, 1 + ( N - 1 )*INCX, INCX X( IX ) = ZERO 20 CONTINUE END IF END IF * RETURN * * End of F06FBF. ( SLOAD ) * END * ************************************************************************ * SUBROUTINE F06FUF( N, Z, INCZ, Z1, ALPHA, X, INCX ) * .. Scalar Arguments .. DOUBLE PRECISION ALPHA, Z1 INTEGER INCX, INCZ, N * .. Array Arguments .. DOUBLE PRECISION X( * ), Z( * ) * .. * * F06FUF performs a Householder reflection given by * * ( alpha ) = P*( alpha ) , * ( x ) ( x ) * * where the orthogonal matrix p is given in the form * * P = I - ( 1/z( 1 ) )*z*z'. * * z( 1 ) must be supplied in Z1 and the remaining n elements in Z. * If Z1 is zero then P is assumed to be the unit matrix and the * transformation is skipped, otherwise Z1 must be in the range * ( 1.0, 2.0 ). Z1 and Z will usually be supplied by routine F06FSF. * * * Nag Fortran 77 O( n ) basic linear algebra routine. * * -- Written on 2-November-1982. * Sven Hammarling, Nag Central Office. * * * .. Parameters .. DOUBLE PRECISION ZERO PARAMETER ( ZERO = 0.0D+0 ) * .. Local Scalars .. DOUBLE PRECISION BETA * .. External Functions .. DOUBLE PRECISION DDOT EXTERNAL DDOT * .. External Subroutines .. EXTERNAL DAXPY * .. * .. Executable Statements .. IF( Z1.NE.ZERO )THEN BETA = ALPHA*Z1 + DDOT( N, Z, INCZ, X, INCX ) ALPHA = ALPHA - BETA CALL DAXPY( N, -BETA/Z1, Z, INCZ, X, INCX ) END IF * RETURN * * End of F06FUF. ( SREF ) * END * ************************************************************************ * SUBROUTINE F06FSF( N, ALPHA, X, INCX, TOL, Z1 ) * .. Scalar Arguments .. DOUBLE PRECISION ALPHA, TOL, Z1 INTEGER INCX, N * .. Array Arguments .. DOUBLE PRECISION X( * ) * .. * * F06FSF generates details of a Householder reflection, P, such that * * P*( alpha ) = ( beta ), P'*P = I. * ( X ) ( 0 ) * * P is given in the form * * P = I - ( 1/z( 1 ) )*z*z', * * where z is an ( n + 1 ) element vector. * * z( 1 ) is returned in Z1. If the elements of x are all zero, or if * the elements of x are all less than tol*abs( alpha ) in absolute * value, then Z1 is returned as zero and P can be taken to be the * unit matrix. Otherwise Z1 always lies in the range ( 1.0, 2.0 ). * * If TOL is not in the range ( 0.0, 1.0 ) then the value 0.0 is used in * place of TOL. * * The remaining elements of z are overwritten on X and beta is * overwritten on ALPHA. * * * Nag Fortran 77 O( n ) basic linear algebra routine. * * -- Written on 2-November-1982. * Sven Hammarling, Nag Central Office. * * * .. Parameters .. DOUBLE PRECISION ONE , ZERO PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 ) * .. Local Scalars .. DOUBLE PRECISION BETA, SCALE, SSQ, TL * .. Local Arrays .. DOUBLE PRECISION WORK( 1 ) * .. External Functions .. DOUBLE PRECISION F06BMF EXTERNAL F06BMF * .. External Subroutines .. EXTERNAL F06FJF, DSCAL * .. Intrinsic Functions .. INTRINSIC ABS, SIGN * .. * .. Executable Statements .. IF( N.LT.1 )THEN Z1 = ZERO ELSE IF( ( TOL.LE.ZERO ).OR.( TOL.GT.ONE ) )THEN TL = ZERO ELSE TL = ABS( ALPHA )*TOL END IF SSQ = ONE SCALE = ZERO CALL F06FJF( N, X, INCX, SCALE, SSQ ) IF( ( SCALE.EQ.ZERO ).OR.( SCALE.LT.TL ) )THEN Z1 = ZERO ELSE IF( ALPHA.NE.ZERO )THEN WORK( 1 ) = ALPHA CALL F06FJF( 1, WORK( 1 ), 1, SCALE, SSQ ) BETA = -SIGN( F06BMF( SCALE, SSQ ), ALPHA ) Z1 = ( BETA - ALPHA )/BETA ELSE BETA = -F06BMF( SCALE, SSQ ) Z1 = ONE END IF CALL DSCAL( N, -ONE/BETA, X, INCX ) ALPHA = BETA END IF END IF * RETURN * * End of F06FSF. ( SREFG ) * END * ************************************************************************ * SUBROUTINE F06FJF( N, X, INCX, SCALE, SUMSQ ) * .. Scalar Arguments .. DOUBLE PRECISION SCALE, SUMSQ INTEGER INCX, N * .. Array Arguments .. DOUBLE PRECISION X( * ) * .. * * F06FJF returns the values scl and smsq such that * * ( scl**2 )*smsq = x( 1 )**2 +...+ x( n )**2 + ( scale**2 )*sumsq, * * where y( i ) = X( 1 + ( i - 1 )*INCX ). The value of sumsq is assumed * to be at least unity and the value of smsq will then satisfy * * 1.0 .le. smsq .le. ( sumsq + n ) . * * scale is assumed to be non-negative and scl returns the value * * scl = max( scale, abs( x( i ) ) ) . * * scale and sumsq must be supplied in SCALE and SUMSQ respectively. * scl and smsq are overwritten on SCALE and SUMSQ respectively. * * The routine makes only one pass through the vector X. * * * Nag Fortran 77 O( n ) basic linear algebra routine. * * -- Written on 22-October-1982. * Sven Hammarling, Nag Central Office. * * * .. Parameters .. DOUBLE PRECISION ZERO PARAMETER ( ZERO = 0.0D+0 ) * .. Local Scalars .. DOUBLE PRECISION ABSXI INTEGER IX * .. Intrinsic Functions .. INTRINSIC ABS * .. * .. Executable Statements .. IF( N.GT.0 )THEN DO 10, IX = 1, 1 + ( N - 1 )*INCX, INCX IF( X( IX ).NE.ZERO )THEN ABSXI = ABS( X( IX ) ) IF( SCALE.LT.ABSXI )THEN SUMSQ = 1 + SUMSQ*( SCALE/ABSXI )**2 SCALE = ABSXI ELSE SUMSQ = SUMSQ + ( ABSXI/SCALE )**2 END IF END IF 10 CONTINUE END IF RETURN * * End of F06FJF. ( SSSQ ) * END * ************************************************************************ * DOUBLE PRECISION FUNCTION F06BMF( SCALE, SSQ ) * .. Scalar Arguments .. DOUBLE PRECISION SCALE, SSQ * .. * * F06BMF returns the value norm given by * * norm = scale*sqrt( ssq ) * * via the function name. * * * Nag Fortran 77 O( 1 ) basic linear algebra routine. * * -- Written on 22-October-1982. * Sven Hammarling, Nag Central Office. * Modified by M. Vanbegin and P. Van Dooren, PRLB * * .. Intrinsic Functions .. INTRINSIC SQRT * .. * .. Executable Statements .. * F06BMF = SCALE*SQRT( SSQ ) RETURN * * End of F06BMF. ( SNORM ) * END * ************************************************************************ SUBROUTINE PRMT(A, LDA, M, N, TEXT, KW, L) C C LIBRARY INDEX: C C 1.4. General input/output routines. C C PURPOSE: C C This routine prints out the M by N matrix A row by row. C The elements of A are printed out with FORMAT(D15.7). C The routine first prints the contents of TEXT as a title C and next the elements of the matrix A in the following way. C - if N <= L, the M x L block is printed. C - if N = k L + p, k > 0, then k M x L blocks of C consecutive columns of A are printed one after the other C followed by the M x p block of the p last columns of A. C Row numbers are printed on the left of each row and a column C number on top of each column. C If M <= 0 or N <= 0 or L <= 0 then the subroutine call is C an empty statement. C The routine uses 2 + (k + 1) x (m + 1) lines and 5 + c x 15 C positions on each line where c is the actual number of columns, C (i.e., c = L or c = p). C C CONTRIBUTOR: C C H. Willemsen, Eindhoven University of Technology. C C REVISIONS: C C 1987, November 23. C C .. Scalar arguments .. C INTEGER KW, L, M, LDA, N CHARACTER*8 TEXT C C .. Array arguments .. C DOUBLE PRECISION A(LDA,N) C C Local variables: C INTEGER I, J, J1, J2, JJ, N1 * WRITE (KW, FMT=999) TEXT, M, N IF (M.LE.0 .OR. N.LE.0 .OR. L.LE.0) RETURN IF (L.GE.9) L = 8 N1 = (N - 1)/L J1 = 1 J2 = L DO 20 J = 1, N1 WRITE (KW, FMT=996) (JJ, JJ=J1,J2) DO 10 I = 1, M WRITE (KW, FMT=998) I, (A(I,JJ), JJ=J1,J2) 10 CONTINUE WRITE (KW, FMT=997) J1 = J1 + L J2 = J2 + L 20 CONTINUE WRITE (KW, FMT=996) (J, J=J1,N) DO 30 I = 1, M WRITE (KW, FMT=998) I, (A(I,JJ), JJ=J1,N) 30 CONTINUE WRITE (KW, FMT=997) * 996 FORMAT (5X, 8(6X, I2, 7X)) 997 FORMAT (1H ) 998 FORMAT (X, I2, 2X, 8D15.7) 999 FORMAT (1X, A8, 2H (, I2, 1HX, I2, 1H), /) * RETURN C *** Last line of PRMT ***************************************** END 6 2 2.113248654641211D-01 7.560438541695476D-01 2.211346291005611D-04 3.303270917385817D-01 6.653811042197049D-01 6.283917883411050D-01 8.497452358715236D-01 6.857310198247433D-01 8.782164813019335D-01 6.837403681129217D-02 5.608486062847078D-01 6.623569373041391D-01 7.263506767340004D-01 1.985143842175603D-01 5.442573162727058D-01 2.320747897028923D-01 2.312237196601927D-01 2.164632631465793D-01 8.833887814544141D-01 6.525134947150946D-01 3.076090742833912D-01 9.329616213217378D-01 2.146007861010730D-01 3.126419968903065D-01 3.616361008025706D-01 2.922266637906432D-01 5.664248815737665D-01 4.826471973210573D-01 3.321718913502991D-01 5.935094701126218D-01 5.015341597609222D-01 4.368587583303452D-01 2.693124809302390D-01 6.325744865462184D-01 4.051954015158117D-01 9.184707831591368D-01 4.373343335464597D-02 4.818508932366967D-01 2.639556000940502D-01 4.148103706538677D-01 2.806498021818697D-01 1.280058464035392D-01 7.783128595910966D-01 2.119030449539423D-01 1.121354666538537D-01 6.856895955279469D-01 1.531216683797538D-01 6.970850601792336D-01 5.618660743348300D-01 5.896177329123020D-01 6.853979662992060D-01 8.906224733218551D-01 5.042212805710733D-01 3.493615407496691D-01 3.873778772540390D-01 9.222898678854108D-01 9.488184261135757D-01 3.435337245464325D-01 3.760118731297553D-01 7.340940563008189D-01 8.813347620889544D-02 4.498763345181942D-01 0.000000000000000D+00 7.227253080345690D-01 0.100000000000000D+01 0.000000000000000D+00 0.000000000000000D+00 0.100000000000000D+01 6 2 2.113248654641211D-01 7.560438541695476D-01 2.211346291005611D-04 3.303270917385817D-01 6.653811042197049D-01 6.283917883411050D-01 8.497452358715236D-01 6.857310198247433D-01 8.782164813019335D-01 6.837403681129217D-02 5.608486062847078D-01 6.623569373041391D-01 7.263506767340004D-01 1.985143842175603D-01 5.442573162727058D-01 2.320747897028923D-01 2.312237196601927D-01 2.164632631465793D-01 8.833887814544141D-01 6.525134947150946D-01 3.076090742833912D-01 9.329616213217378D-01 2.146007861010730D-01 3.126419968903065D-01 3.616361008025706D-01 2.922266637906432D-01 5.664248815737665D-01 4.826471973210573D-01 3.321718913502991D-01 5.935094701126218D-01 5.015341597609222D-01 4.368587583303452D-01 2.693124809302390D-01 6.325744865462184D-01 4.051954015158117D-01 9.184707831591368D-01 4.373343335464597D-02 4.818508932366967D-01 2.639556000940502D-01 4.148103706538677D-01 2.806498021818697D-01 1.280058464035392D-01 7.783128595910966D-01 2.119030449539423D-01 1.121354666538537D-01 6.856895955279469D-01 1.531216683797538D-01 6.970850601792336D-01 8.415518426336355D-01 4.062024755403405D-01 4.094825475476685D-01 8.784125801175835D-01 1.138359685428445D-01 1.998337740078575D-01 5.618660743348300D-01 5.896177329123020D-01 6.853979662992060D-01 8.906224733218551D-01 5.042212805710733D-01 3.493615407496691D-01 3.873778772540390D-01 9.222898678854108D-01 9.488184261135757D-01 3.435337245464325D-01 3.760118731297553D-01 7.340940563008189D-01 8.813347620889544D-02 4.498763345181942D-01 0.000000000000000D+00 7.227253080345690D-01 0.100000000000000D+01 0.000000000000000D+00 0.000000000000000D+00 0.000000000000000D+00 0.100000000000000D+01 0.000000000000000D+00 0.000000000000000D+00 0.000000000000000D+00 0.100000000000000D+01 6 2 2.113248654641211D-01 7.560438541695476D-01 2.211346291005611D-04 3.303270917385817D-01 6.653811042197049D-01 6.283917883411050D-01 8.497452358715236D-01 6.857310198247433D-01 8.782164813019335D-01 6.837403681129217D-02 5.608486062847078D-01 6.623569373041391D-01 7.263506767340004D-01 1.985143842175603D-01 5.442573162727058D-01 2.320747897028923D-01 2.312237196601927D-01 2.164632631465793D-01 8.833887814544141D-01 6.525134947150946D-01 3.076090742833912D-01 9.329616213217378D-01 2.146007861010730D-01 3.126419968903065D-01 3.616361008025706D-01 2.922266637906432D-01 5.664248815737665D-01 4.826471973210573D-01 3.321718913502991D-01 5.935094701126218D-01 5.015341597609222D-01 4.368587583303452D-01 2.693124809302390D-01 6.325744865462184D-01 4.051954015158117D-01 9.184707831591368D-01 4.373343335464597D-02 4.818508932366967D-01 2.639556000940502D-01 4.148103706538677D-01 2.806498021818697D-01 1.280058464035392D-01 7.783128595910966D-01 2.119030449539423D-01 1.121354666538537D-01 6.856895955279469D-01 1.531216683797538D-01 6.970850601792336D-01 -8.805478919554635D-01 -6.075186830105965D-01 1.325720297292248D+00 1.038692635378422D+00 2.103992672620125D+00 -8.531300887844145D-01 5.207520803914895D-01 1.168888377692620D+00 -1.693905277102395D-01 -2.305788643040025D-01 -1.115920973086452D+00 6.597088570821635D-01 8.813347620889544D-02 4.498763345181942D-01 0.000000000000000D+00 7.227253080345690D-01 0.100000000000000D+01 0.000000000000000D+00 0.000000000000000D+00 0.100000000000000D+01 1.964506227523088D-03 5.075221331790090D-01 4.076042952947319D-01 8.408046141266823D-01 5.017265700735152D-01 9.128780765458941D-01 2.129064607433975D-01 5.591450631618500D-01 4.304965981282294D-01 2.280548494309187D-02 6 2 2.113248654641211D-01 7.560438541695476D-01 2.211346291005611D-04 3.303270917385817D-01 6.653811042197049D-01 6.283917883411050D-01 8.497452358715236D-01 6.857310198247433D-01 8.782164813019335D-01 6.837403681129217D-02 5.608486062847078D-01 6.623569373041391D-01 7.263506767340004D-01 1.985143842175603D-01 5.442573162727058D-01 2.320747897028923D-01 2.312237196601927D-01 2.164632631465793D-01 8.833887814544141D-01 6.525134947150946D-01 3.076090742833912D-01 9.329616213217378D-01 2.146007861010730D-01 3.126419968903065D-01 3.616361008025706D-01 2.922266637906432D-01 5.664248815737665D-01 4.826471973210573D-01 3.321718913502991D-01 5.935094701126218D-01 5.015341597609222D-01 4.368587583303452D-01 2.693124809302390D-01 6.325744865462184D-01 4.051954015158117D-01 9.184707831591368D-01 4.373343335464597D-02 4.818508932366967D-01 2.639556000940502D-01 4.148103706538677D-01 2.806498021818697D-01 1.280058464035392D-01 7.783128595910966D-01 2.119030449539423D-01 1.121354666538537D-01 6.856895955279469D-01 1.531216683797538D-01 6.970850601792336D-01 8.415518426336355D-01 4.062024755403405D-01 4.094825475476685D-01 8.784125801175835D-01 1.138359685428445D-01 1.998337740078575D-01 -8.805478919554635D-01 -6.075186830105965D-01 1.325720297292248D+00 1.038692635378422D+00 2.103992672620125D+00 -8.531300887844145D-01 5.207520803914895D-01 1.168888377692620D+00 -1.693905277102395D-01 -2.305788643040025D-01 -1.115920973086452D+00 6.597088570821635D-01 8.813347620889544D-02 4.498763345181942D-01 0.000000000000000D+00 7.227253080345690D-01 0.100000000000000D+01 0.000000000000000D+00 0.000000000000000D+00 0.000000000000000D+00 0.100000000000000D+01 0.000000000000000D+00 0.000000000000000D+00 0.000000000000000D+00 0.100000000000000D+01 1.964506227523088D-03 5.075221331790090D-01 2.129064607433975D-01 4.076042952947319D-01 8.408046141266823D-01 5.017265700735152D-01 9.128780765458941D-01 2.129064607433975D-01 5.591450631618500D-01 4.304965981282294D-01 2.280548494309187D-02 OBHESS EXAMPLE PROGRAM DATA 8T 1.0D-15 2.113248654641211D-01 8.782164813019335D-01 2.312237196601927D-01 3.616361008025706D-01 2.693124809302390D-01 2.806498021818697D-01 8.415518426336348D-01 6.853979662992060D-01 7.560438541695476D-01 6.837403681129217D-02 2.164632631465793D-01 2.922266637906432D-01 6.325744865462184D-01 1.280058464035392D-01 4.062024755403399D-01 8.906224733218551D-01 2.211346291005611D-04 5.608486062847078D-01 8.833887814544141D-01 5.664248815737665D-01 4.051954015158117D-01 7.783128595910966D-01 4.094825475476682D-01 5.042212805710733D-01 3.303270917385817D-01 6.623569373041391D-01 6.525134947150946D-01 4.826471973210573D-01 9.184707831591368D-01 2.119030449539423D-01 8.784125801175833D-01 3.493615407496691D-01 6.653811042197049D-01 7.263506767340004D-01 3.076090742833912D-01 3.321718913502991D-01 4.373343335464597D-02 1.121354666538537D-01 1.138359685428441D-01 3.873778772540390D-01 6.283917883411050D-01 1.985143842175603D-01 9.329616213217378D-01 5.935094701126218D-01 4.818508932366967D-01 6.856895955279469D-01 1.998337740078568D-01 9.222898678854108D-01 8.497452358715236D-01 5.442573162727058D-01 2.146007861010730D-01 5.015341597609222D-01 2.639556000940502D-01 1.531216683797538D-01 5.618660743348300D-01 9.488184261135757D-01 6.857310198247433D-01 2.320747897028923D-01 3.126419968903065D-01 4.368587583303452D-01 4.148103706538677D-01 6.970850601792336D-01 5.896177329123020D-01 3.435337245464325D-01 3.760118731297553D-01 2.256303490139544D-01 7.340940563008189D-01 6.274093082174659D-01 2.615761472843587D-01 7.608432597480714D-01 4.993493836373091D-01 4.855662025511265D-02 2.638578419573605D-01 6.723949727602303D-01 5.253563085570931D-01 2.017172696068883D-01 5.376229803077877D-01 3.911573919467628D-01 1.199925504624844D-01 8.300316557288170D-01 8F 1.0D-15 3.873477369643006D-01 8.473940105757670D-01 7.374330730671075D-01 6.409740569970412D-01 4.583488231669927D-01 1.038978189524568D+00 5.348427205477134D-02 1.524700921920506D-01 3.918023379157990D-01 4.636856730190522D-01 2.647071647818556D-01 7.735630119238618D-01 2.002478939608363D-01 6.918568785160096D-01 8.177994426861823D-01 7.537429697267545D-01 8.812842564094304D-01 3.559454639952924D-01 4.988408337442856D-01 4.649063735547850D-02 8.438305715306394D-01 9.853348002367345D-01 9.278762895340861D-01 2.635827600899362D-01 1.060378437483574D-01 3.694990323255710D-01 2.652388247447586D-01 6.780052125077818D-01 1.104380623259103D-01 6.900804114195551D-02 5.622624646905912D-01 5.579221216755258D-01 2.266084190633150D-01 9.836763857441344D-01 5.206147424838721D-01 1.824546671382901D-01 3.204257424852269D-01 6.834312059446180D-01 5.864725866389375D-01 9.494382216677251D-01 5.448077012855513D-01 9.097085100096890D-01 5.406438757387924D-01 4.034297734527995D-01 8.385231536593204D-01 4.518941028099275D-01 8.062577390573723D-01 7.644782499999458D-01 6.020713638094981D-01 3.720862985915115D-01 1.177871164173923D-01 8.210720844341665D-01 8.656381592860002D-01 5.781637675735614D-01 6.401329181587426D-02 -1.447036836758844D-02 7.053984687043776D-01 4.218672409800275D-01 2.220884270405610D-01 5.734829650097926D-01 5.517682022971319D-01 8.057772411090780D-01 5.710291722910763D-01 5.608479154262820D-01 -5.008793719795205D-01 -3.262391614905797D-01 -7.949955591087985D-02 -3.867745174092131D-01 -2.503597628424453D-01 -7.925882510915779D-02 -4.096847568895548D-01 -2.308552695185398D-01 -4.774681983401296D-01 -4.216297723238308D-01 -2.886426466682617D-01 9.378121250460887D-02 -5.412259428752335D-01 -3.257056477688148D-01 -3.932089799905748D-01 -4.651283038611173D-01 -2.651356447271380D-01 -5.072632153761363D-01 -1.880768223157280D-01 -1.016262301425587D-01 -2.690980869737913D-01 -4.747182762211209D-01 -3.350921341087347D-01 2.214139218837250D-01 COHESS EXAMPLE PROGRAM DATA 8T 1.0D-15 2.113248654641211D-01 7.560438541695476D-01 2.211346291005611D-04 3.303270917385817D-01 6.653811042197049D-01 6.283917883411050D-01 8.497452358715236D-01 6.857310198247433D-01 8.782164813019335D-01 6.837403681129217D-02 5.608486062847078D-01 6.623569373041391D-01 7.263506767340004D-01 1.985143842175603D-01 5.442573162727058D-01 2.320747897028923D-01 2.312237196601927D-01 2.164632631465793D-01 8.833887814544141D-01 6.525134947150946D-01 3.076090742833912D-01 9.329616213217378D-01 2.146007861010730D-01 3.126419968903065D-01 3.616361008025706D-01 2.922266637906432D-01 5.664248815737665D-01 4.826471973210573D-01 3.321718913502991D-01 5.935094701126218D-01 5.015341597609222D-01 4.368587583303452D-01 2.693124809302390D-01 6.325744865462184D-01 4.051954015158117D-01 9.184707831591368D-01 4.373343335464597D-02 4.818508932366967D-01 2.639556000940502D-01 4.148103706538677D-01 2.806498021818697D-01 1.280058464035392D-01 7.783128595910966D-01 2.119030449539423D-01 1.121354666538537D-01 6.856895955279469D-01 1.531216683797538D-01 6.970850601792336D-01 8.415518426336348D-01 4.062024755403399D-01 4.094825475476682D-01 8.784125801175833D-01 1.138359685428441D-01 1.998337740078568D-01 5.618660743348300D-01 5.896177329123020D-01 6.853979662992060D-01 8.906224733218551D-01 5.042212805710733D-01 3.493615407496691D-01 3.873778772540390D-01 9.222898678854108D-01 9.488184261135757D-01 3.435337245464325D-01 3.760118731297553D-01 7.340940563008189D-01 2.615761472843587D-01 4.993493836373091D-01 2.638578419573605D-01 5.253563085570931D-01 5.376229803077877D-01 1.199925504624844D-01 2.256303490139544D-01 6.274093082174659D-01 7.608432597480714D-01 4.855662025511265D-02 6.723949727602303D-01 2.017172696068883D-01 3.911573919467628D-01 8.300316557288170D-01 8F 1.0D-15 3.873477369643006D-01 3.918023379157990D-01 8.812842564094304D-01 1.060378437483574D-01 2.266084190633150D-01 5.448077012855513D-01 6.020713638094981D-01 7.053984687043776D-01 8.473940105757670D-01 4.636856730190522D-01 3.559454639952924D-01 3.694990323255710D-01 9.836763857441344D-01 9.097085100096890D-01 3.720862985915115D-01 4.218672409800275D-01 7.374330730671075D-01 2.647071647818556D-01 4.988408337442856D-01 2.652388247447586D-01 5.206147424838721D-01 5.406438757387924D-01 1.177871164173923D-01 2.220884270405610D-01 6.409740569970412D-01 7.735630119238618D-01 4.649063735547850D-02 6.780052125077818D-01 1.824546671382901D-01 4.034297734527995D-01 8.210720844341665D-01 5.734829650097926D-01 4.583488231669927D-01 2.002478939608363D-01 8.438305715306394D-01 1.104380623259103D-01 3.204257424852269D-01 8.385231536593204D-01 8.656381592860002D-01 5.517682022971319D-01 1.038978189524568D+00 6.918568785160096D-01 9.853348002367345D-01 6.900804114195551D-02 6.834312059446180D-01 4.518941028099275D-01 5.781637675735614D-01 8.057772411090780D-01 5.348427205477134D-02 8.177994426861823D-01 9.278762895340861D-01 5.622624646905912D-01 5.864725866389375D-01 8.062577390573723D-01 6.401329181587426D-02 5.710291722910763D-01 1.524700921920506D-01 7.537429697267545D-01 2.635827600899362D-01 5.579221216755258D-01 9.494382216677251D-01 7.644782499999458D-01 -1.447036836758844D-02 5.608479154262820D-01 -5.008793719795205D-01 -3.867745174092131D-01 -4.096847568895548D-01 -4.216297723238308D-01 -5.412259428752335D-01 -4.651283038611173D-01 -1.880768223157280D-01 -4.747182762211209D-01 -3.262391614905797D-01 -2.503597628424453D-01 -2.308552695185398D-01 -2.886426466682617D-01 -3.257056477688148D-01 -2.651356447271380D-01 -1.016262301425587D-01 -3.350921341087347D-01 -7.949955591087985D-02 -7.925882510915779D-02 -4.774681983401296D-01 9.378121250460887D-02 -3.932089799905748D-01 -5.072632153761363D-01 -2.690980869737913D-01 2.214139218837250D-01 6 2 2 2.113248654641211D-01 7.560438541695476D-01 2.211346291005611D-04 3.303270917385817D-01 6.653811042197049D-01 6.283917883411050D-01 8.497452358715236D-01 6.857310198247433D-01 8.782164813019335D-01 6.837403681129217D-02 5.608486062847078D-01 6.623569373041391D-01 7.263506767340004D-01 1.985143842175603D-01 5.442573162727058D-01 2.320747897028923D-01 2.312237196601927D-01 2.164632631465793D-01 8.833887814544141D-01 6.525134947150946D-01 3.076090742833912D-01 9.329616213217378D-01 2.146007861010730D-01 3.126419968903065D-01 3.616361008025706D-01 2.922266637906432D-01 5.664248815737665D-01 4.826471973210573D-01 3.321718913502991D-01 5.935094701126218D-01 5.015341597609222D-01 4.368587583303452D-01 2.693124809302390D-01 6.325744865462184D-01 4.051954015158117D-01 9.184707831591368D-01 4.373343335464597D-02 4.818508932366967D-01 2.639556000940502D-01 4.148103706538677D-01 2.806498021818697D-01 1.280058464035392D-01 7.783128595910966D-01 2.119030449539423D-01 1.121354666538537D-01 6.856895955279469D-01 1.531216683797538D-01 6.970850601792336D-01 5.618660743348300D-01 5.896177329123020D-01 6.853979662992060D-01 8.906224733218551D-01 5.042212805710733D-01 3.493615407496691D-01 3.873778772540390D-01 9.222898678854108D-01 9.488184261135757D-01 3.435337245464325D-01 3.760118731297553D-01 7.340940563008189D-01 8.813347620889544D-02 4.498763345181942D-01 0.000000000000000D+00 7.227253080345690D-01 0.100000000000000D+01 0.000000000000000D+00 0.000000000000000D+00 0.100000000000000D+01 6 2 2.113248654641211D-01 7.560438541695476D-01 2.211346291005611D-04 3.303270917385817D-01 6.653811042197049D-01 6.283917883411050D-01 8.497452358715236D-01 6.857310198247433D-01 8.782164813019335D-01 6.837403681129217D-02 5.608486062847078D-01 6.623569373041391D-01 7.263506767340004D-01 1.985143842175603D-01 5.442573162727058D-01 2.320747897028923D-01 2.312237196601927D-01 2.164632631465793D-01 8.833887814544141D-01 6.525134947150946D-01 3.076090742833912D-01 9.329616213217378D-01 2.146007861010730D-01 3.126419968903065D-01 3.616361008025706D-01 2.922266637906432D-01 5.664248815737665D-01 4.826471973210573D-01 3.321718913502991D-01 5.935094701126218D-01 5.015341597609222D-01 4.368587583303452D-01 2.693124809302390D-01 6.325744865462184D-01 4.051954015158117D-01 9.184707831591368D-01 4.373343335464597D-02 4.818508932366967D-01 2.639556000940502D-01 4.148103706538677D-01 2.806498021818697D-01 1.280058464035392D-01 7.783128595910966D-01 2.119030449539423D-01 1.121354666538537D-01 6.856895955279469D-01 1.531216683797538D-01 6.970850601792336D-01 8.415518426336348D-01 4.062024755403399D-01 4.094825475476682D-01 8.784125801175833D-01 1.138359685428441D-01 1.998337740078568D-01 5.618660743348300D-01 5.896177329123020D-01 6.853979662992060D-01 8.906224733218551D-01 5.042212805710733D-01 3.493615407496691D-01 3.873778772540390D-01 9.222898678854108D-01 9.488184261135757D-01 3.435337245464325D-01 3.760118731297553D-01 7.340940563008189D-01 8.813347620889544D-02 4.498763345181942D-01 0.000000000000000D+00 7.227253080345690D-01 0.100000000000000D+01 0.000000000000000D+00 0.000000000000000D+00 0.000000000000000D+00 0.100000000000000D+01 0.000000000000000D+00 0.000000000000000D+00 0.000000000000000D+00 0.100000000000000D+01 6 2 2.113248654641211D-01 7.560438541695476D-01 2.211346291005611D-04 3.303270917385817D-01 6.653811042197049D-01 6.283917883411050D-01 8.497452358715236D-01 6.857310198247433D-01 8.782164813019335D-01 6.837403681129217D-02 5.608486062847078D-01 6.623569373041391D-01 7.263506767340004D-01 1.985143842175603D-01 5.442573162727058D-01 2.320747897028923D-01 2.312237196601927D-01 2.164632631465793D-01 8.833887814544141D-01 6.525134947150946D-01 3.076090742833912D-01 9.329616213217378D-01 2.146007861010730D-01 3.126419968903065D-01 3.616361008025706D-01 2.922266637906432D-01 5.664248815737665D-01 4.826471973210573D-01 3.321718913502991D-01 5.935094701126218D-01 5.015341597609222D-01 4.368587583303452D-01 2.693124809302390D-01 6.325744865462184D-01 4.051954015158117D-01 9.184707831591368D-01 4.373343335464597D-02 4.818508932366967D-01 2.639556000940502D-01 4.148103706538677D-01 2.806498021818697D-01 1.280058464035392D-01 7.783128595910966D-01 2.119030449539423D-01 1.121354666538537D-01 6.856895955279469D-01 1.531216683797538D-01 6.970850601792336D-01 -8.805478919554635D-01 -6.075186830105965D-01 1.325720297292248D+00 1.038692635378422D+00 2.103992672620125D+00 -8.531300887844145D-01 5.207520803914895D-01 1.168888377692620D+00 -1.693905277102395D-01 -2.305788643040025D-01 -1.115920973086452D+00 6.597088570821635D-01 8.813347620889544D-02 4.498763345181942D-01 0.000000000000000D+00 7.227253080345690D-01 0.100000000000000D+01 0.000000000000000D+00 0.000000000000000D+00 0.100000000000000D+01 1.964506227523088D-03 5.075221331790090D-01 4.076042952947319D-01 8.408046141266823D-01 5.017265700735152D-01 9.128780765458941D-01 2.129064607433975D-01 5.591450631618500D-01 4.304965981282294D-01 2.280548494309187D-02 6 2 2.113248654641211D-01 7.560438541695476D-01 2.211346291005611D-04 3.303270917385817D-01 6.653811042197049D-01 6.283917883411050D-01 8.497452358715236D-01 6.857310198247433D-01 8.782164813019335D-01 6.837403681129217D-02 5.608486062847078D-01 6.623569373041391D-01 7.263506767340004D-01 1.985143842175603D-01 5.442573162727058D-01 2.320747897028923D-01 2.312237196601927D-01 2.164632631465793D-01 8.833887814544141D-01 6.525134947150946D-01 3.076090742833912D-01 9.329616213217378D-01 2.146007861010730D-01 3.126419968903065D-01 3.616361008025706D-01 2.922266637906432D-01 5.664248815737665D-01 4.826471973210573D-01 3.321718913502991D-01 5.935094701126218D-01 5.015341597609222D-01 4.368587583303452D-01 2.693124809302390D-01 6.325744865462184D-01 4.051954015158117D-01 9.184707831591368D-01 4.373343335464597D-02 4.818508932366967D-01 2.639556000940502D-01 4.148103706538677D-01 2.806498021818697D-01 1.280058464035392D-01 7.783128595910966D-01 2.119030449539423D-01 1.121354666538537D-01 6.856895955279469D-01 1.531216683797538D-01 6.970850601792336D-01 8.415518426336355D-01 4.062024755403405D-01 4.094825475476685D-01 8.784125801175835D-01 1.138359685428445D-01 1.998337740078575D-01 -8.805478919554635D-01 -6.075186830105965D-01 1.325720297292248D+00 1.038692635378422D+00 2.103992672620125D+00 -8.531300887844145D-01 5.207520803914895D-01 1.168888377692620D+00 -1.693905277102395D-01 -2.305788643040025D-01 -1.115920973086452D+00 6.597088570821635D-01 8.813347620889544D-02 4.498763345181942D-01 0.000000000000000D+00 7.227253080345690D-01 0.100000000000000D+01 0.000000000000000D+00 0.000000000000000D+00 0.000000000000000D+00 0.100000000000000D+01 0.000000000000000D+00 0.000000000000000D+00 0.000000000000000D+00 0.100000000000000D+01 1.964506227523088D-03 5.075221331790090D-01 2.129064607433975D-01 4.076042952947319D-01 8.408046141266823D-01 5.017265700735152D-01 9.128780765458941D-01 2.129064607433975D-01 5.591450631618500D-01 4.304965981282294D-01 2.280548494309187D-02 *** First example : Square root covariance filter with dense *** A, B, C and lower triangular Q, R. *** Input SRCF *** N = 6 M = 2 P = 2 A matrix ( 6X 6) 1 2 3 4 1 0.2113249D+00 0.8497452D+00 0.7263507D+00 0.8833888D+00 2 0.7560439D+00 0.6857310D+00 0.1985144D+00 0.6525135D+00 3 0.2211346D-03 0.8782165D+00 0.5442573D+00 0.3076091D+00 4 0.3303271D+00 0.6837404D-01 0.2320748D+00 0.9329616D+00 5 0.6653811D+00 0.5608486D+00 0.2312237D+00 0.2146008D+00 6 0.6283918D+00 0.6623569D+00 0.2164633D+00 0.3126420D+00 5 6 1 0.3616361D+00 0.5015342D+00 2 0.2922267D+00 0.4368588D+00 3 0.5664249D+00 0.2693125D+00 4 0.4826472D+00 0.6325745D+00 5 0.3321719D+00 0.4051954D+00 6 0.5935095D+00 0.9184708D+00 B matrix ( 6X 2) 1 2 1 0.4373343D-01 0.7783129D+00 2 0.4818509D+00 0.2119030D+00 3 0.2639556D+00 0.1121355D+00 4 0.4148104D+00 0.6856896D+00 5 0.2806498D+00 0.1531217D+00 6 0.1280058D+00 0.6970851D+00 S matrix ( 6X 6) 1 2 3 4 1 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 2 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 3 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 4 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 5 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 6 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 5 6 1 0.0000000D+00 0.0000000D+00 2 0.0000000D+00 0.0000000D+00 3 0.0000000D+00 0.0000000D+00 4 0.0000000D+00 0.0000000D+00 5 0.0000000D+00 0.0000000D+00 6 0.0000000D+00 0.0000000D+00 C matrix ( 2X 6) 1 2 3 4 1 0.5618661D+00 0.6853980D+00 0.5042213D+00 0.3873779D+00 2 0.5896177D+00 0.8906225D+00 0.3493615D+00 0.9222899D+00 5 6 1 0.9488184D+00 0.3760119D+00 2 0.3435337D+00 0.7340941D+00 R matrix ( 2X 2) 1 2 1 0.8813348D-01 0.0000000D+00 2 0.4498763D+00 0.7227253D+00 Q matrix ( 2X 2) 1 2 1 0.1000000D+01 0.0000000D+00 2 0.0000000D+00 0.1000000D+01 *** Output SRCF for MULTBQ=.TRUE. *** ISTEP = 1 S matrix ( 6X 6) 1 2 3 4 1 -0.7795406D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 2 -0.2386019D+00 -0.4692039D+00 0.0000000D+00 0.0000000D+00 3 -0.1267672D+00 -0.2572489D+00 -0.7208110D-17 0.0000000D+00 4 -0.7078812D+00 -0.3756888D+00 -0.6210064D-17 -0.3548608D-17 5 -0.1686254D+00 -0.2716174D+00 -0.1347688D-16 -0.3339866D-17 6 -0.7031685D+00 -0.8869670D-01 -0.5456637D-17 0.1299417D-16 5 6 1 0.0000000D+00 0.0000000D+00 2 0.0000000D+00 0.0000000D+00 3 0.0000000D+00 0.0000000D+00 4 0.0000000D+00 0.0000000D+00 5 -0.5383138D-34 0.0000000D+00 6 0.3014557D-33 -0.6029114D-33 K matrix ( 6X 2) 1 2 1 0.0000000D+00 0.0000000D+00 2 0.0000000D+00 0.0000000D+00 3 0.0000000D+00 0.0000000D+00 4 0.0000000D+00 0.0000000D+00 5 0.0000000D+00 0.0000000D+00 6 0.0000000D+00 0.0000000D+00 SS' m. ( 6X 6) 1 2 3 4 1 0.6076835D+00 0.1859999D+00 0.9882016D-01 0.5518221D+00 2 0.1859999D+00 0.2770832D+00 0.1509491D+00 0.3451765D+00 3 0.9882016D-01 0.1509491D+00 0.8224692D-01 0.1863816D+00 4 0.5518221D+00 0.3451765D+00 0.1863816D+00 0.6422379D+00 5 0.1314503D+00 0.1676783D+00 0.9124946D-01 0.2214104D+00 6 0.5481484D+00 0.2093942D+00 0.1119558D+00 0.5310821D+00 5 6 1 0.1314503D+00 0.5481484D+00 2 0.1676783D+00 0.2093942D+00 3 0.9124946D-01 0.1119558D+00 4 0.2214104D+00 0.5310821D+00 5 0.1022106D+00 0.1426636D+00 6 0.1426636D+00 0.5023131D+00 *** ISTEP = 2 S matrix ( 6X 6) 1 2 3 4 1 0.7868764D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 2 0.2273402D+00 -0.5459259D+00 0.0000000D+00 0.0000000D+00 3 0.1514945D+00 -0.9733132D-01 -0.3517791D+00 0.0000000D+00 4 0.6892584D+00 -0.4908556D+00 0.1062363D+00 0.4678404D-01 5 0.1596434D+00 -0.3431025D+00 0.4431593D-01 -0.1047820D-01 6 0.6853944D+00 -0.2465013D+00 0.2493496D+00 -0.8488101D-03 5 6 1 0.0000000D+00 0.0000000D+00 2 0.0000000D+00 0.0000000D+00 3 0.0000000D+00 0.0000000D+00 4 0.0000000D+00 0.0000000D+00 5 -0.3841753D-17 0.0000000D+00 6 -0.4091042D-17 0.4623528D-17 K matrix ( 6X 2) 1 2 1 0.1219251D+01 -0.7073020D-01 2 0.1020628D+01 0.3334420D-01 3 0.8427590D+00 -0.1177335D+00 4 0.9118190D+00 0.4698194D-01 5 0.7423412D+00 0.2789512D-01 6 0.1028336D+01 0.4279473D-01 SS' m. ( 6X 6) 1 2 3 4 1 0.6191745D+00 0.1788886D+00 0.1192075D+00 0.5423612D+00 2 0.1788886D+00 0.3497187D+00 0.8757649D-01 0.4246670D+00 3 0.1192075D+00 0.8757649D-01 0.1561725D+00 0.1148228D+00 4 0.5423612D+00 0.4246670D+00 0.1148228D+00 0.7294913D+00 5 0.1256196D+00 0.2236019D+00 0.4199030D-01 0.2826671D+00 6 0.5393206D+00 0.2903891D+00 0.4010983D-01 0.6198606D+00 5 6 1 0.1256196D+00 0.5393206D+00 2 0.2236019D+00 0.2903891D+00 3 0.4199030D-01 0.4010983D-01 4 0.2826671D+00 0.6198606D+00 5 0.1452790D+00 0.2050529D+00 6 0.2050529D+00 0.5927042D+00 *** ISTEP = 3 S matrix ( 6X 6) 1 2 3 4 1 -0.7875798D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 2 -0.2282566D+00 -0.5463528D+00 0.0000000D+00 0.0000000D+00 3 -0.1531191D+00 -0.9665556D-01 0.3602623D+00 0.0000000D+00 4 -0.6918649D+00 -0.4911218D+00 -0.9211386D-01 0.8945543D-01 5 -0.1588470D+00 -0.3430107D+00 -0.5139605D-01 -0.3067111D-01 6 -0.6874011D+00 -0.2457059D+00 -0.2271285D+00 0.1066565D+00 5 6 1 0.0000000D+00 0.0000000D+00 2 0.0000000D+00 0.0000000D+00 3 0.0000000D+00 0.0000000D+00 4 0.0000000D+00 0.0000000D+00 5 0.1631460D-01 0.0000000D+00 6 -0.4378999D-02 -0.7058028D-01 K matrix ( 6X 2) 1 2 1 0.1213994D+01 -0.6668582D-01 2 0.1015168D+01 0.3575130D-01 3 0.8426375D+00 -0.1085532D+00 4 0.9028467D+00 0.5821063D-01 5 0.7414864D+00 0.2391058D-01 6 0.1024749D+01 0.5428391D-01 SS' m. ( 6X 6) 1 2 3 4 1 0.6202819D+00 0.1797702D+00 0.1205935D+00 0.5448988D+00 2 0.1797702D+00 0.3506024D+00 0.8775846D-01 0.4262485D+00 3 0.1205935D+00 0.8775846D-01 0.1625767D+00 0.1202222D+00 4 0.5448988D+00 0.4262485D+00 0.1202222D+00 0.7363649D+00 5 0.1251047D+00 0.2236627D+00 0.3896033D-01 0.2803513D+00 6 0.5413832D+00 0.2911459D+00 0.4717723D-01 0.6267229D+00 5 6 1 0.1251047D+00 0.5413832D+00 2 0.2236627D+00 0.2911459D+00 3 0.3896033D-01 0.4717723D-01 4 0.2803513D+00 0.6267229D+00 5 0.1467371D+00 0.2018021D+00 6 0.2018021D+00 0.6008554D+00 *** Output SRCF for MULTBQ=.FALSE. *** ISTEP = 1 S matrix ( 6X 6) 1 2 3 4 1 -0.7795406D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 2 -0.2386019D+00 -0.4692039D+00 0.0000000D+00 0.0000000D+00 3 -0.1267672D+00 -0.2572489D+00 -0.7208110D-17 0.0000000D+00 4 -0.7078812D+00 -0.3756888D+00 -0.6210064D-17 -0.3548608D-17 5 -0.1686254D+00 -0.2716174D+00 -0.1347688D-16 -0.3339866D-17 6 -0.7031685D+00 -0.8869670D-01 -0.5456637D-17 0.1299417D-16 5 6 1 0.0000000D+00 0.0000000D+00 2 0.0000000D+00 0.0000000D+00 3 0.0000000D+00 0.0000000D+00 4 0.0000000D+00 0.0000000D+00 5 -0.5383138D-34 0.0000000D+00 6 0.3014557D-33 -0.6029114D-33 K matrix ( 6X 2) 1 2 1 0.0000000D+00 0.0000000D+00 2 0.0000000D+00 0.0000000D+00 3 0.0000000D+00 0.0000000D+00 4 0.0000000D+00 0.0000000D+00 5 0.0000000D+00 0.0000000D+00 6 0.0000000D+00 0.0000000D+00 SS' m. ( 6X 6) 1 2 3 4 1 0.6076835D+00 0.1859999D+00 0.9882016D-01 0.5518221D+00 2 0.1859999D+00 0.2770832D+00 0.1509491D+00 0.3451765D+00 3 0.9882016D-01 0.1509491D+00 0.8224692D-01 0.1863816D+00 4 0.5518221D+00 0.3451765D+00 0.1863816D+00 0.6422379D+00 5 0.1314503D+00 0.1676783D+00 0.9124946D-01 0.2214104D+00 6 0.5481484D+00 0.2093942D+00 0.1119558D+00 0.5310821D+00 5 6 1 0.1314503D+00 0.5481484D+00 2 0.1676783D+00 0.2093942D+00 3 0.9124946D-01 0.1119558D+00 4 0.2214104D+00 0.5310821D+00 5 0.1022106D+00 0.1426636D+00 6 0.1426636D+00 0.5023131D+00 *** ISTEP = 2 S matrix ( 6X 6) 1 2 3 4 1 0.7868764D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 2 0.2273402D+00 -0.5459259D+00 0.0000000D+00 0.0000000D+00 3 0.1514945D+00 -0.9733132D-01 -0.3517791D+00 0.0000000D+00 4 0.6892584D+00 -0.4908556D+00 0.1062363D+00 0.4678404D-01 5 0.1596434D+00 -0.3431025D+00 0.4431593D-01 -0.1047820D-01 6 0.6853944D+00 -0.2465013D+00 0.2493496D+00 -0.8488101D-03 5 6 1 0.0000000D+00 0.0000000D+00 2 0.0000000D+00 0.0000000D+00 3 0.0000000D+00 0.0000000D+00 4 0.0000000D+00 0.0000000D+00 5 -0.3841753D-17 0.0000000D+00 6 -0.4091042D-17 0.4623528D-17 K matrix ( 6X 2) 1 2 1 0.1219251D+01 -0.7073020D-01 2 0.1020628D+01 0.3334420D-01 3 0.8427590D+00 -0.1177335D+00 4 0.9118190D+00 0.4698194D-01 5 0.7423412D+00 0.2789512D-01 6 0.1028336D+01 0.4279473D-01 SS' m. ( 6X 6) 1 2 3 4 1 0.6191745D+00 0.1788886D+00 0.1192075D+00 0.5423612D+00 2 0.1788886D+00 0.3497187D+00 0.8757649D-01 0.4246670D+00 3 0.1192075D+00 0.8757649D-01 0.1561725D+00 0.1148228D+00 4 0.5423612D+00 0.4246670D+00 0.1148228D+00 0.7294913D+00 5 0.1256196D+00 0.2236019D+00 0.4199030D-01 0.2826671D+00 6 0.5393206D+00 0.2903891D+00 0.4010983D-01 0.6198606D+00 5 6 1 0.1256196D+00 0.5393206D+00 2 0.2236019D+00 0.2903891D+00 3 0.4199030D-01 0.4010983D-01 4 0.2826671D+00 0.6198606D+00 5 0.1452790D+00 0.2050529D+00 6 0.2050529D+00 0.5927042D+00 *** ISTEP = 3 S matrix ( 6X 6) 1 2 3 4 1 -0.7875798D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 2 -0.2282566D+00 -0.5463528D+00 0.0000000D+00 0.0000000D+00 3 -0.1531191D+00 -0.9665556D-01 0.3602623D+00 0.0000000D+00 4 -0.6918649D+00 -0.4911218D+00 -0.9211386D-01 0.8945543D-01 5 -0.1588470D+00 -0.3430107D+00 -0.5139605D-01 -0.3067111D-01 6 -0.6874011D+00 -0.2457059D+00 -0.2271285D+00 0.1066565D+00 5 6 1 0.0000000D+00 0.0000000D+00 2 0.0000000D+00 0.0000000D+00 3 0.0000000D+00 0.0000000D+00 4 0.0000000D+00 0.0000000D+00 5 0.1631460D-01 0.0000000D+00 6 -0.4378999D-02 -0.7058028D-01 K matrix ( 6X 2) 1 2 1 0.1213994D+01 -0.6668582D-01 2 0.1015168D+01 0.3575130D-01 3 0.8426375D+00 -0.1085532D+00 4 0.9028467D+00 0.5821063D-01 5 0.7414864D+00 0.2391058D-01 6 0.1024749D+01 0.5428391D-01 SS' m. ( 6X 6) 1 2 3 4 1 0.6202819D+00 0.1797702D+00 0.1205935D+00 0.5448988D+00 2 0.1797702D+00 0.3506024D+00 0.8775846D-01 0.4262485D+00 3 0.1205935D+00 0.8775846D-01 0.1625767D+00 0.1202222D+00 4 0.5448988D+00 0.4262485D+00 0.1202222D+00 0.7363649D+00 5 0.1251047D+00 0.2236627D+00 0.3896033D-01 0.2803513D+00 6 0.5413832D+00 0.2911459D+00 0.4717723D-01 0.6267229D+00 5 6 1 0.1251047D+00 0.5413832D+00 2 0.2236627D+00 0.2911459D+00 3 0.3896033D-01 0.4717723D-01 4 0.2803513D+00 0.6267229D+00 5 0.1467371D+00 0.2018021D+00 6 0.2018021D+00 0.6008554D+00 1*** In both these tests we start with S=0 and perform three *** iterations of the filter. *** The ranks of S in these three steps must be equal to *** M(=2), 2M(=4) and 3M(=6). *** K must be 0 in the first step and nonzero afterwards. *** The results for MULTBQ = .TRUE. and .FALSE. must be equal *** since we chose Q=I. *** The SS' matrices are meant for comparison with SRCFOB. 1*** Second example : Square root covariance filter with dense *** A, B, C and lower triangular Q, R. *** Input SRCF *** N = 6 M = 3 P = 2 A matrix ( 6X 6) 1 2 3 4 1 0.2113249D+00 0.8497452D+00 0.7263507D+00 0.8833888D+00 2 0.7560439D+00 0.6857310D+00 0.1985144D+00 0.6525135D+00 3 0.2211346D-03 0.8782165D+00 0.5442573D+00 0.3076091D+00 4 0.3303271D+00 0.6837404D-01 0.2320748D+00 0.9329616D+00 5 0.6653811D+00 0.5608486D+00 0.2312237D+00 0.2146008D+00 6 0.6283918D+00 0.6623569D+00 0.2164633D+00 0.3126420D+00 5 6 1 0.3616361D+00 0.5015342D+00 2 0.2922267D+00 0.4368588D+00 3 0.5664249D+00 0.2693125D+00 4 0.4826472D+00 0.6325745D+00 5 0.3321719D+00 0.4051954D+00 6 0.5935095D+00 0.9184708D+00 B matrix ( 6X 3) 1 2 3 1 0.4373343D-01 0.7783129D+00 0.8415518D+00 2 0.4818509D+00 0.2119030D+00 0.4062025D+00 3 0.2639556D+00 0.1121355D+00 0.4094825D+00 4 0.4148104D+00 0.6856896D+00 0.8784126D+00 5 0.2806498D+00 0.1531217D+00 0.1138360D+00 6 0.1280058D+00 0.6970851D+00 0.1998338D+00 S matrix ( 6X 6) 1 2 3 4 1 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 2 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 3 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 4 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 5 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 6 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 5 6 1 0.0000000D+00 0.0000000D+00 2 0.0000000D+00 0.0000000D+00 3 0.0000000D+00 0.0000000D+00 4 0.0000000D+00 0.0000000D+00 5 0.0000000D+00 0.0000000D+00 6 0.0000000D+00 0.0000000D+00 C matrix ( 2X 6) 1 2 3 4 1 0.5618661D+00 0.6853980D+00 0.5042213D+00 0.3873779D+00 2 0.5896177D+00 0.8906225D+00 0.3493615D+00 0.9222899D+00 5 6 1 0.9488184D+00 0.3760119D+00 2 0.3435337D+00 0.7340941D+00 R matrix ( 2X 2) 1 2 1 0.8813348D-01 0.0000000D+00 2 0.4498763D+00 0.7227253D+00 Q matrix ( 3X 3) 1 2 3 1 0.1000000D+01 0.0000000D+00 0.0000000D+00 2 0.0000000D+00 0.1000000D+01 0.0000000D+00 3 0.0000000D+00 0.0000000D+00 0.1000000D+01 *** Output SRCF for MULTBQ=.TRUE. *** ISTEP = 1 S matrix ( 6X 6) 1 2 3 4 1 -0.1147124D+01 0.0000000D+00 0.0000000D+00 0.0000000D+00 2 -0.4601424D+00 -0.4799506D+00 0.0000000D+00 0.0000000D+00 3 -0.3865502D+00 -0.2904752D+00 -0.1269880D+00 0.0000000D+00 4 -0.1125469D+01 -0.3836103D+00 0.3174747D-02 -0.2312022D-16 5 -0.1981035D+00 -0.2557825D+00 0.1024672D+00 -0.1006863D-16 6 -0.6244478D+00 -0.6734577D-02 0.3902131D+00 -0.2981111D-16 5 6 1 0.0000000D+00 0.0000000D+00 2 0.0000000D+00 0.0000000D+00 3 0.0000000D+00 0.0000000D+00 4 0.0000000D+00 0.0000000D+00 5 -0.1506057D-16 0.0000000D+00 6 -0.3856464D-16 -0.3227013D-17 K matrix ( 6X 2) 1 2 1 0.0000000D+00 0.0000000D+00 2 0.0000000D+00 0.0000000D+00 3 0.0000000D+00 0.0000000D+00 4 0.0000000D+00 0.0000000D+00 5 0.0000000D+00 0.0000000D+00 6 0.0000000D+00 0.0000000D+00 SS' m. ( 6X 6) 1 2 3 4 1 0.1315893D+01 0.5278403D+00 0.4434210D+00 0.1291052D+01 2 0.5278403D+00 0.4420836D+00 0.3172819D+00 0.7019898D+00 3 0.4434210D+00 0.3172819D+00 0.2499229D+00 0.5460763D+00 4 0.1291052D+01 0.7019898D+00 0.5460763D+00 0.1413847D+01 5 0.2272492D+00 0.2139188D+00 0.1378633D+00 0.3214053D+00 6 0.7163189D+00 0.2905672D+00 0.1937843D+00 0.7066186D+00 5 6 1 0.2272492D+00 0.7163189D+00 2 0.2139188D+00 0.2905672D+00 3 0.1378633D+00 0.1937843D+00 4 0.3214053D+00 0.7066186D+00 5 0.1151692D+00 0.1654119D+00 6 0.1654119D+00 0.5422466D+00 *** ISTEP = 2 S matrix ( 6X 6) 1 2 3 4 1 0.1153393D+01 0.0000000D+00 0.0000000D+00 0.0000000D+00 2 0.4553510D+00 -0.5605252D+00 0.0000000D+00 0.0000000D+00 3 0.4005667D+00 -0.1226901D+00 0.3865794D+00 0.0000000D+00 4 0.1109665D+01 -0.4880872D+00 -0.7453123D-01 0.1641879D+00 5 0.1931709D+00 -0.3282473D+00 -0.7733069D-01 0.9275831D-02 6 0.6065784D+00 -0.1487211D+00 -0.3478213D+00 0.1728302D+00 5 6 1 0.0000000D+00 0.0000000D+00 2 0.0000000D+00 0.0000000D+00 3 0.0000000D+00 0.0000000D+00 4 0.0000000D+00 0.0000000D+00 5 0.8810857D-01 0.0000000D+00 6 0.3359240D+00 -0.7290827D-04 K matrix ( 6X 2) 1 2 1 0.1241933D+01 -0.7098306D-01 2 0.1055207D+01 0.3295873D-01 3 0.8288548D+00 -0.1175785D+00 4 0.8985842D+00 0.4712947D-01 5 0.7530441D+00 0.2777581D-01 6 0.9674702D+00 0.4347324D-01 SS' m. ( 6X 6) 1 2 3 4 1 0.1330316D+01 0.5251988D+00 0.4620110D+00 0.1279880D+01 2 0.5251988D+00 0.5215331D+00 0.2511694D+00 0.7788723D+00 3 0.4620110D+00 0.2511694D+00 0.3249502D+00 0.4755661D+00 4 0.1279880D+01 0.7788723D+00 0.4755661D+00 0.1502098D+01 5 0.2228020D+00 0.2719514D+00 0.8775607D-01 0.3818548D+00 6 0.6996234D+00 0.3595680D+00 0.1267612D+00 0.7999878D+00 5 6 1 0.2228020D+00 0.6996234D+00 2 0.2719514D+00 0.3595680D+00 3 0.8775607D-01 0.1267612D+00 4 0.3818548D+00 0.7999878D+00 5 0.1588905D+00 0.2240887D+00 6 0.2240887D+00 0.6537501D+00 *** ISTEP = 3 S matrix ( 6X 6) 1 2 3 4 1 -0.1156046D+01 0.0000000D+00 0.0000000D+00 0.0000000D+00 2 -0.4561407D+00 -0.5614451D+00 0.0000000D+00 0.0000000D+00 3 -0.4005205D+00 -0.1199883D+00 -0.3971595D+00 0.0000000D+00 4 -0.1115942D+01 -0.4848378D+00 0.5700188D-01 -0.1979035D+00 5 -0.1928119D+00 -0.3292330D+00 0.8235161D-01 0.6542748D-03 6 -0.6104152D+00 -0.1440359D+00 0.3138531D+00 -0.2417539D+00 5 6 1 0.0000000D+00 0.0000000D+00 2 0.0000000D+00 0.0000000D+00 3 0.0000000D+00 0.0000000D+00 4 0.0000000D+00 0.0000000D+00 5 -0.9185958D-01 0.0000000D+00 6 -0.3114030D+00 -0.1568331D+00 K matrix ( 6X 2) 1 2 1 0.1226356D+01 -0.6043595D-01 2 0.1048668D+01 0.3563242D-01 3 0.8222839D+00 -0.1070870D+00 4 0.8701889D+00 0.7072797D-01 5 0.7546189D+00 0.2360331D-01 6 0.9484350D+00 0.6437479D-01 SS' m. ( 6X 6) 1 2 3 4 1 0.1336443D+01 0.5273198D+00 0.4630203D+00 0.1290080D+01 2 0.5273198D+00 0.5232849D+00 0.2500605D+00 0.7812362D+00 3 0.4630203D+00 0.2500605D+00 0.3325495D+00 0.4824935D+00 4 0.1290080D+01 0.7812362D+00 0.4824935D+00 0.1522808D+01 5 0.2228995D+00 0.2727956D+00 0.8402249D-01 0.3793561D+00 6 0.7056683D+00 0.3593035D+00 0.1371167D+00 0.8167559D+00 5 6 1 0.2228995D+00 0.7056683D+00 2 0.2727956D+00 0.3593035D+00 3 0.8402249D-01 0.1371167D+00 4 0.3793561D+00 0.8167559D+00 5 0.1607912D+00 0.2194102D+00 6 0.2194102D+00 0.6718702D+00 *** Output SRCF for MULTBQ=.FALSE. *** ISTEP = 1 S matrix ( 6X 6) 1 2 3 4 1 -0.1147124D+01 0.0000000D+00 0.0000000D+00 0.0000000D+00 2 -0.4601424D+00 -0.4799506D+00 0.0000000D+00 0.0000000D+00 3 -0.3865502D+00 -0.2904752D+00 -0.1269880D+00 0.0000000D+00 4 -0.1125469D+01 -0.3836103D+00 0.3174747D-02 -0.2312022D-16 5 -0.1981035D+00 -0.2557825D+00 0.1024672D+00 -0.1006863D-16 6 -0.6244478D+00 -0.6734577D-02 0.3902131D+00 -0.2981111D-16 5 6 1 0.0000000D+00 0.0000000D+00 2 0.0000000D+00 0.0000000D+00 3 0.0000000D+00 0.0000000D+00 4 0.0000000D+00 0.0000000D+00 5 -0.1506057D-16 0.0000000D+00 6 -0.3856464D-16 -0.3227013D-17 K matrix ( 6X 2) 1 2 1 0.0000000D+00 0.0000000D+00 2 0.0000000D+00 0.0000000D+00 3 0.0000000D+00 0.0000000D+00 4 0.0000000D+00 0.0000000D+00 5 0.0000000D+00 0.0000000D+00 6 0.0000000D+00 0.0000000D+00 SS' m. ( 6X 6) 1 2 3 4 1 0.1315893D+01 0.5278403D+00 0.4434210D+00 0.1291052D+01 2 0.5278403D+00 0.4420836D+00 0.3172819D+00 0.7019898D+00 3 0.4434210D+00 0.3172819D+00 0.2499229D+00 0.5460763D+00 4 0.1291052D+01 0.7019898D+00 0.5460763D+00 0.1413847D+01 5 0.2272492D+00 0.2139188D+00 0.1378633D+00 0.3214053D+00 6 0.7163189D+00 0.2905672D+00 0.1937843D+00 0.7066186D+00 5 6 1 0.2272492D+00 0.7163189D+00 2 0.2139188D+00 0.2905672D+00 3 0.1378633D+00 0.1937843D+00 4 0.3214053D+00 0.7066186D+00 5 0.1151692D+00 0.1654119D+00 6 0.1654119D+00 0.5422466D+00 *** ISTEP = 2 S matrix ( 6X 6) 1 2 3 4 1 0.1153393D+01 0.0000000D+00 0.0000000D+00 0.0000000D+00 2 0.4553510D+00 -0.5605252D+00 0.0000000D+00 0.0000000D+00 3 0.4005667D+00 -0.1226901D+00 0.3865794D+00 0.0000000D+00 4 0.1109665D+01 -0.4880872D+00 -0.7453123D-01 0.1641879D+00 5 0.1931709D+00 -0.3282473D+00 -0.7733069D-01 0.9275831D-02 6 0.6065784D+00 -0.1487211D+00 -0.3478213D+00 0.1728302D+00 5 6 1 0.0000000D+00 0.0000000D+00 2 0.0000000D+00 0.0000000D+00 3 0.0000000D+00 0.0000000D+00 4 0.0000000D+00 0.0000000D+00 5 0.8810857D-01 0.0000000D+00 6 0.3359240D+00 -0.7290827D-04 K matrix ( 6X 2) 1 2 1 0.1241933D+01 -0.7098306D-01 2 0.1055207D+01 0.3295873D-01 3 0.8288548D+00 -0.1175785D+00 4 0.8985842D+00 0.4712947D-01 5 0.7530441D+00 0.2777581D-01 6 0.9674702D+00 0.4347324D-01 SS' m. ( 6X 6) 1 2 3 4 1 0.1330316D+01 0.5251988D+00 0.4620110D+00 0.1279880D+01 2 0.5251988D+00 0.5215331D+00 0.2511694D+00 0.7788723D+00 3 0.4620110D+00 0.2511694D+00 0.3249502D+00 0.4755661D+00 4 0.1279880D+01 0.7788723D+00 0.4755661D+00 0.1502098D+01 5 0.2228020D+00 0.2719514D+00 0.8775607D-01 0.3818548D+00 6 0.6996234D+00 0.3595680D+00 0.1267612D+00 0.7999878D+00 5 6 1 0.2228020D+00 0.6996234D+00 2 0.2719514D+00 0.3595680D+00 3 0.8775607D-01 0.1267612D+00 4 0.3818548D+00 0.7999878D+00 5 0.1588905D+00 0.2240887D+00 6 0.2240887D+00 0.6537501D+00 *** ISTEP = 3 S matrix ( 6X 6) 1 2 3 4 1 -0.1156046D+01 0.0000000D+00 0.0000000D+00 0.0000000D+00 2 -0.4561407D+00 -0.5614451D+00 0.0000000D+00 0.0000000D+00 3 -0.4005205D+00 -0.1199883D+00 -0.3971595D+00 0.0000000D+00 4 -0.1115942D+01 -0.4848378D+00 0.5700188D-01 -0.1979035D+00 5 -0.1928119D+00 -0.3292330D+00 0.8235161D-01 0.6542748D-03 6 -0.6104152D+00 -0.1440359D+00 0.3138531D+00 -0.2417539D+00 5 6 1 0.0000000D+00 0.0000000D+00 2 0.0000000D+00 0.0000000D+00 3 0.0000000D+00 0.0000000D+00 4 0.0000000D+00 0.0000000D+00 5 -0.9185958D-01 0.0000000D+00 6 -0.3114030D+00 -0.1568331D+00 K matrix ( 6X 2) 1 2 1 0.1226356D+01 -0.6043595D-01 2 0.1048668D+01 0.3563242D-01 3 0.8222839D+00 -0.1070870D+00 4 0.8701889D+00 0.7072797D-01 5 0.7546189D+00 0.2360331D-01 6 0.9484350D+00 0.6437479D-01 SS' m. ( 6X 6) 1 2 3 4 1 0.1336443D+01 0.5273198D+00 0.4630203D+00 0.1290080D+01 2 0.5273198D+00 0.5232849D+00 0.2500605D+00 0.7812362D+00 3 0.4630203D+00 0.2500605D+00 0.3325495D+00 0.4824935D+00 4 0.1290080D+01 0.7812362D+00 0.4824935D+00 0.1522808D+01 5 0.2228995D+00 0.2727956D+00 0.8402249D-01 0.3793561D+00 6 0.7056683D+00 0.3593035D+00 0.1371167D+00 0.8167559D+00 5 6 1 0.2228995D+00 0.7056683D+00 2 0.2727956D+00 0.3593035D+00 3 0.8402249D-01 0.1371167D+00 4 0.3793561D+00 0.8167559D+00 5 0.1607912D+00 0.2194102D+00 6 0.2194102D+00 0.6718702D+00 1*** In both these tests we start with S=0 and perform three *** iterations of the filter. *** The ranks of S in these three steps must be equal to *** M(=3), 2M(=6) and min(N,3M)(=6). *** K must be 0 in the first step and nonzero afterwards. *** The results for MULTBQ = .TRUE. and .FALSE. must be equal *** since we chose Q=I. *** The SS' matrices are meant for comparison with SRCFOB. 1*** First example : Square root information filter with *** dense A, B, C and upper triangular Q, R. *** *** Input SRIF *** N = 6 M = 2 P = 2 Ainv ( 6X 6) 1 2 3 4 1 0.2113249D+00 0.7560439D+00 0.2211346D-03 0.3303271D+00 2 0.8497452D+00 0.6857310D+00 0.8782165D+00 0.6837404D-01 3 0.7263507D+00 0.1985144D+00 0.5442573D+00 0.2320748D+00 4 0.8833888D+00 0.6525135D+00 0.3076091D+00 0.9329616D+00 5 0.3616361D+00 0.2922267D+00 0.5664249D+00 0.4826472D+00 6 0.5015342D+00 0.4368588D+00 0.2693125D+00 0.6325745D+00 5 6 1 0.6653811D+00 0.6283918D+00 2 0.5608486D+00 0.6623569D+00 3 0.2312237D+00 0.2164633D+00 4 0.2146008D+00 0.3126420D+00 5 0.3321719D+00 0.5935095D+00 6 0.4051954D+00 0.9184708D+00 AinvB ( 6X 2) 1 2 1 -0.8805479D+00 0.5207521D+00 2 -0.6075187D+00 0.1168888D+01 3 0.1325720D+01 -0.1693905D+00 4 0.1038693D+01 -0.2305789D+00 5 0.2103993D+01 -0.1115921D+01 6 -0.8531301D+00 0.6597089D+00 C matrix ( 2X 6) 1 2 3 4 1 0.4373343D-01 0.4818509D+00 0.2639556D+00 0.4148104D+00 2 0.7783129D+00 0.2119030D+00 0.1121355D+00 0.6856896D+00 5 6 1 0.2806498D+00 0.1280058D+00 2 0.1531217D+00 0.6970851D+00 Sinv ( 6X 6) 1 2 3 4 1 0.1000000D+01 0.0000000D+00 0.0000000D+00 0.0000000D+00 2 0.0000000D+00 0.1000000D+01 0.0000000D+00 0.0000000D+00 3 0.0000000D+00 0.0000000D+00 0.1000000D+01 0.0000000D+00 4 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.1000000D+01 5 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 6 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 5 6 1 0.0000000D+00 0.0000000D+00 2 0.0000000D+00 0.0000000D+00 3 0.0000000D+00 0.0000000D+00 4 0.0000000D+00 0.0000000D+00 5 0.1000000D+01 0.0000000D+00 6 0.0000000D+00 0.1000000D+01 Qinv ( 2X 2) 1 2 1 0.8813348D-01 0.4498763D+00 2 0.0000000D+00 0.7227253D+00 Rinv ( 2X 2) 1 2 1 0.1000000D+01 0.0000000D+00 2 0.0000000D+00 0.1000000D+01 Z vector ( 2X 1) 1 1 0.1964506D-02 2 0.5075221D+00 X vector ( 6X 1) 1 1 0.4076043D+00 2 0.8408046D+00 3 0.5017266D+00 4 0.9128781D+00 5 0.2129065D+00 6 0.5591451D+00 Y vector ( 2X 1) 1 1 0.4304966D+00 2 0.2280548D-01 *** Output SRIF *** ISTEP = 1 Sinv ( 6X 6) 1 2 3 4 1 -0.1309385D+01 -0.9011780D+00 -0.5716204D+00 -0.1139520D+01 2 0.0000000D+00 0.8355616D+00 0.2465342D+00 0.4338284D+00 3 0.0000000D+00 0.0000000D+00 -0.5837402D+00 0.3857901D+00 4 0.0000000D+00 0.0000000D+00 0.0000000D+00 -0.5323176D+00 5 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 6 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 5 6 1 -0.6398017D+00 -0.1203367D+01 2 0.6177402D+00 0.4069786D+00 3 -0.1602595D+00 -0.1570353D+00 4 0.3096385D-01 -0.3501873D+00 5 -0.2993971D+00 -0.5734618D+00 6 0.0000000D+00 0.2538284D+00 X vector ( 6X 1) 1 1 -0.1274126D+00 2 0.5536566D+00 3 0.3481973D+00 4 0.5286097D+00 5 -0.9193801D-02 6 -0.3619102D+00 Sin'Sin ( 6X 6) 1 2 3 4 1 0.1714490D+01 0.1179989D+01 0.7484713D+00 0.1492071D+01 2 0.1179989D+01 0.1510285D+01 0.7211262D+00 0.1389401D+01 3 0.7484713D+00 0.7211262D+00 0.7282816D+00 0.5331254D+00 4 0.1492071D+01 0.1389401D+01 0.5331254D+00 0.1918910D+01 5 0.8377470D+00 0.1092735D+01 0.6115677D+00 0.9187512D+00 6 0.1575671D+01 0.1424504D+01 0.8798712D+00 0.1673648D+01 5 6 1 0.8377470D+00 0.1575671D+01 2 0.1092735D+01 0.1424504D+01 3 0.6115677D+00 0.8798712D+00 4 0.9187512D+00 0.1673648D+01 5 0.9072298D+00 0.1207340D+01 6 0.1207340D+01 0.2154303D+01 *** ISTEP = 2 Sinv ( 6X 6) 1 2 3 4 1 0.1675346D+01 0.1430175D+01 0.8236751D+00 0.1550070D+01 2 0.0000000D+00 0.6869953D+00 0.3906490D+00 0.2478286D+00 3 0.0000000D+00 0.0000000D+00 0.2136248D+00 -0.1422752D+00 4 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.3763702D+00 5 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 6 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 5 6 1 0.1055136D+01 0.1712885D+01 2 0.4680036D+00 0.1384571D+00 3 0.1390191D+00 0.2161770D+00 4 -0.4779113D-01 0.1517750D+00 5 0.1737174D+00 0.2538410D+00 6 0.0000000D+00 -0.1248382D+00 X vector ( 6X 1) 1 1 0.5520679D+00 2 -0.1257842D+01 3 0.1402490D+01 4 0.1279330D+01 5 0.1134170D+01 6 -0.2059006D+01 Sin'Sin ( 6X 6) 1 2 3 4 1 0.2806785D+01 0.2396039D+01 0.1379941D+01 0.2596905D+01 2 0.2396039D+01 0.2517363D+01 0.1446374D+01 0.2387129D+01 3 0.1379941D+01 0.1446374D+01 0.8766829D+00 0.1343175D+01 4 0.2596905D+01 0.2387129D+01 0.1343175D+01 0.2626034D+01 5 0.1767717D+01 0.1830545D+01 0.1081612D+01 0.1713753D+01 6 0.2869676D+01 0.2544845D+01 0.1511130D+01 0.2715773D+01 5 6 1 0.1767717D+01 0.2869676D+01 2 0.1830545D+01 0.2544845D+01 3 0.1081612D+01 0.1511130D+01 4 0.1713753D+01 0.2715773D+01 5 0.1384126D+01 0.1939020D+01 6 0.1939020D+01 0.3102934D+01 *** ISTEP = 3 Sinv ( 6X 6) 1 2 3 4 1 -0.1686827D+01 -0.1449843D+01 -0.8614954D+00 -0.1530604D+01 2 0.0000000D+00 0.6800828D+00 0.4027329D+00 0.2562922D+00 3 0.0000000D+00 0.0000000D+00 -0.1563938D+00 0.1791086D+00 4 0.0000000D+00 0.0000000D+00 0.0000000D+00 -0.2884050D+00 5 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 6 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 5 6 1 -0.1100984D+01 -0.1761025D+01 2 0.4727669D+00 0.1612967D+00 3 -0.1239199D+00 -0.1431808D+00 4 0.1919640D-01 -0.1044032D+00 5 -0.9366813D-01 -0.2052520D+00 6 0.0000000D+00 0.5028876D-01 X vector ( 6X 1) 1 1 0.2315943D+01 2 -0.6344640D+01 3 0.3674095D+00 4 0.3464291D+01 5 0.9289437D+01 6 -0.6222618D+01 Sin'Sin ( 6X 6) 1 2 3 4 1 0.2845387D+01 0.2445634D+01 0.1453194D+01 0.2581864D+01 2 0.2445634D+01 0.2564556D+01 0.1522925D+01 0.2393434D+01 3 0.1453194D+01 0.1522925D+01 0.9288272D+00 0.1393814D+01 4 0.2581864D+01 0.2393434D+01 0.1393814D+01 0.2523690D+01 5 0.1857170D+01 0.1917774D+01 0.1158272D+01 0.1778605D+01 6 0.2970545D+01 0.2662904D+01 0.1604467D+01 0.2741235D+01 5 6 1 0.1857170D+01 0.2970545D+01 2 0.1917774D+01 0.2662904D+01 3 0.1158272D+01 0.1604467D+01 4 0.1778605D+01 0.2741235D+01 5 0.1460172D+01 0.2050080D+01 6 0.2050080D+01 0.3203283D+01 *** ISTEP = 4 Sinv ( 6X 6) 1 2 3 4 1 0.1677041D+01 0.1441873D+01 0.8634620D+00 0.1518237D+01 2 0.0000000D+00 0.6777607D+00 0.4023206D+00 0.2557285D+00 3 0.0000000D+00 0.0000000D+00 0.1426564D+00 -0.1525080D+00 4 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.2695154D+00 5 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 6 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 5 6 1 0.1103674D+01 0.1765745D+01 2 0.4705363D+00 0.1575076D+00 3 0.1189427D+00 0.1522564D+00 4 -0.3686556D-01 0.5202285D-01 5 -0.6626387D-01 -0.1388171D+00 6 0.0000000D+00 0.3565161D-01 X vector ( 6X 1) 1 1 0.4516508D+01 2 -0.1027816D+02 3 -0.5650702D+00 4 0.5048174D+01 5 0.1620299D+02 6 -0.1035923D+02 Sin'Sin ( 6X 6) 1 2 3 4 1 0.2812466D+01 0.2418079D+01 0.1448061D+01 0.2546146D+01 2 0.2418079D+01 0.2538357D+01 0.1517679D+01 0.2362428D+01 3 0.1448061D+01 0.1517679D+01 0.9277794D+00 0.1392069D+01 4 0.2546146D+01 0.2362428D+01 0.1392069D+01 0.2466339D+01 5 0.1850907D+01 0.1910269D+01 0.1159255D+01 0.1767893D+01 6 0.2961227D+01 0.2652733D+01 0.1609743D+01 0.2711900D+01 5 6 1 0.1850907D+01 0.2961227D+01 2 0.1910269D+01 0.2652733D+01 3 0.1159255D+01 0.1609743D+01 4 0.1767893D+01 0.2711900D+01 5 0.1459398D+01 0.2048311D+01 6 0.2048311D+01 0.3189095D+01 1*** In both these tests we start with Sinv=I and perform *** four iterations of the filter. *** The Sinv'Sinv matrices and X vectors are meant for *** comparison with SRIFCO. 1*** Second example : Square root information filter with *** dense A, B, C and upper triangular Q, R. *** *** Input SRIF *** N = 6 M = 2 P = 3 Ainv ( 6X 6) 1 2 3 4 1 0.2113249D+00 0.7560439D+00 0.2211346D-03 0.3303271D+00 2 0.8497452D+00 0.6857310D+00 0.8782165D+00 0.6837404D-01 3 0.7263507D+00 0.1985144D+00 0.5442573D+00 0.2320748D+00 4 0.8833888D+00 0.6525135D+00 0.3076091D+00 0.9329616D+00 5 0.3616361D+00 0.2922267D+00 0.5664249D+00 0.4826472D+00 6 0.5015342D+00 0.4368588D+00 0.2693125D+00 0.6325745D+00 5 6 1 0.6653811D+00 0.6283918D+00 2 0.5608486D+00 0.6623569D+00 3 0.2312237D+00 0.2164633D+00 4 0.2146008D+00 0.3126420D+00 5 0.3321719D+00 0.5935095D+00 6 0.4051954D+00 0.9184708D+00 AinvB ( 6X 2) 1 2 1 -0.8805479D+00 0.5207521D+00 2 -0.6075187D+00 0.1168888D+01 3 0.1325720D+01 -0.1693905D+00 4 0.1038693D+01 -0.2305789D+00 5 0.2103993D+01 -0.1115921D+01 6 -0.8531301D+00 0.6597089D+00 C matrix ( 3X 6) 1 2 3 4 1 0.4373343D-01 0.4818509D+00 0.2639556D+00 0.4148104D+00 2 0.7783129D+00 0.2119030D+00 0.1121355D+00 0.6856896D+00 3 0.8415518D+00 0.4062025D+00 0.4094825D+00 0.8784126D+00 5 6 1 0.2806498D+00 0.1280058D+00 2 0.1531217D+00 0.6970851D+00 3 0.1138360D+00 0.1998338D+00 Sinv ( 6X 6) 1 2 3 4 1 0.1000000D+01 0.0000000D+00 0.0000000D+00 0.0000000D+00 2 0.0000000D+00 0.1000000D+01 0.0000000D+00 0.0000000D+00 3 0.0000000D+00 0.0000000D+00 0.1000000D+01 0.0000000D+00 4 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.1000000D+01 5 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 6 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 5 6 1 0.0000000D+00 0.0000000D+00 2 0.0000000D+00 0.0000000D+00 3 0.0000000D+00 0.0000000D+00 4 0.0000000D+00 0.0000000D+00 5 0.1000000D+01 0.0000000D+00 6 0.0000000D+00 0.1000000D+01 Qinv ( 2X 2) 1 2 1 0.8813348D-01 0.4498763D+00 2 0.0000000D+00 0.7227253D+00 Rinv ( 3X 3) 1 2 3 1 0.1000000D+01 0.0000000D+00 0.0000000D+00 2 0.0000000D+00 0.1000000D+01 0.0000000D+00 3 0.0000000D+00 0.0000000D+00 0.1000000D+01 Z vector ( 2X 1) 1 1 0.1964506D-02 2 0.5075221D+00 X vector ( 6X 1) 1 1 0.2129065D+00 2 0.4076043D+00 3 0.8408046D+00 4 0.5017266D+00 5 0.9128781D+00 6 0.2129065D+00 Y vector ( 3X 1) 1 1 0.5591451D+00 2 0.4304966D+00 3 0.2280548D-01 *** Output SRIF *** ISTEP = 1 Sinv ( 6X 6) 1 2 3 4 1 -0.1556502D+01 -0.9777240D+00 -0.7022618D+00 -0.1433535D+01 2 0.0000000D+00 0.8481398D+00 0.2368015D+00 0.4063157D+00 3 0.0000000D+00 0.0000000D+00 -0.5888216D+00 0.3568368D+00 4 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.5857219D+00 5 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 6 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 5 6 1 -0.5997716D+00 -0.1120359D+01 2 0.6515018D+00 0.4837346D+00 3 -0.1404640D+00 -0.1025184D+00 4 -0.9499430D-01 0.1419510D+00 5 -0.3274962D+00 -0.7391188D+00 6 0.0000000D+00 -0.3578763D+00 X vector ( 6X 1) 1 1 -0.2569291D+00 2 -0.7735836D+00 3 0.9761830D-01 4 0.5768679D+00 5 0.1493255D+01 6 -0.1070294D+00 Sin'Sin ( 6X 6) 1 2 3 4 1 0.2422699D+01 0.1521830D+01 0.1093072D+01 0.2231301D+01 2 0.1521830D+01 0.1675285D+01 0.8874590D+00 0.1746214D+01 3 0.1093072D+01 0.8874590D+00 0.8959575D+00 0.8928200D+00 4 0.2231301D+01 0.1746214D+01 0.8928200D+00 0.2690518D+01 5 0.9335458D+00 0.1138976D+01 0.6581816D+00 0.1018746D+01 6 0.1743842D+01 0.1505677D+01 0.9616997D+00 0.1849185D+01 5 6 1 0.9335458D+00 0.1743842D+01 2 0.1138976D+01 0.1505677D+01 3 0.6581816D+00 0.9616997D+00 4 0.1018746D+01 0.1849185D+01 5 0.9201884D+00 0.1230088D+01 6 0.1230088D+01 0.2194236D+01 *** ISTEP = 2 Sinv ( 6X 6) 1 2 3 4 1 0.1892270D+01 0.1497028D+01 0.9019158D+00 0.1796936D+01 2 0.0000000D+00 0.7605080D+00 0.3112295D+00 0.1927141D+00 3 0.0000000D+00 0.0000000D+00 -0.3727009D+00 -0.1274571D-01 4 0.0000000D+00 0.0000000D+00 0.0000000D+00 -0.4404712D+00 5 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 6 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 5 6 1 0.1007581D+01 0.1602841D+01 2 0.5662957D+00 0.2886638D+00 3 -0.8451214D-01 -0.1577847D+00 4 0.1474118D+00 0.1163742D+00 5 0.2461278D+00 0.6079888D+00 6 0.0000000D+00 -0.2875915D+00 X vector ( 6X 1) 1 1 -0.1456113D+01 2 -0.4309217D-01 3 0.5894792D-01 4 0.1416551D+01 5 -0.8426659D+00 6 0.7265106D+00 Sin'Sin ( 6X 6) 1 2 3 4 1 0.3580686D+01 0.2832780D+01 0.1706668D+01 0.3400289D+01 2 0.2832780D+01 0.2819464D+01 0.1586885D+01 0.2836624D+01 3 0.1706668D+01 0.1586885D+01 0.1049222D+01 0.1685414D+01 4 0.3400289D+01 0.2836624D+01 0.1685414D+01 0.3460296D+01 5 0.1906616D+01 0.1939049D+01 0.1116499D+01 0.1855839D+01 6 0.3033008D+01 0.2619028D+01 0.1594275D+01 0.2886584D+01 5 6 1 0.1906616D+01 0.3033008D+01 2 0.1939049D+01 0.2619028D+01 3 0.1116499D+01 0.1594275D+01 4 0.1855839D+01 0.2886584D+01 5 0.1425362D+01 0.1958594D+01 6 0.1958594D+01 0.3143224D+01 *** ISTEP = 3 Sinv ( 6X 6) 1 2 3 4 1 -0.1892777D+01 -0.1498278D+01 -0.9391399D+00 -0.1770376D+01 2 0.0000000D+00 0.7534233D+00 0.3363931D+00 0.1893335D+00 3 0.0000000D+00 0.0000000D+00 -0.3573020D+00 0.1536839D-01 4 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.4089454D+00 5 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 6 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 5 6 1 -0.1040285D+01 -0.1647775D+01 2 0.5753470D+00 0.3207106D+00 3 -0.7365386D-01 -0.1219101D+00 4 -0.1404414D+00 -0.1919790D+00 5 -0.2108559D+00 -0.6019307D+00 6 0.0000000D+00 -0.1576478D+00 X vector ( 6X 1) 1 1 -0.2360051D+01 2 0.5336696D+01 3 -0.2252791D+00 4 0.4210842D+00 5 -0.8901653D+01 6 0.3138066D+01 Sin'Sin ( 6X 6) 1 2 3 4 1 0.3582605D+01 0.2835907D+01 0.1777583D+01 0.3350927D+01 2 0.2835907D+01 0.2812484D+01 0.1660539D+01 0.2795164D+01 3 0.1777583D+01 0.1660539D+01 0.1122809D+01 0.1720830D+01 4 0.3350927D+01 0.2795164D+01 0.1720830D+01 0.3337550D+01 5 0.1969028D+01 0.1992116D+01 0.1196833D+01 0.1892063D+01 6 0.3118870D+01 0.2710456D+01 0.1698934D+01 0.2897519D+01 5 6 1 0.1969028D+01 0.3118870D+01 2 0.1992116D+01 0.2710456D+01 3 0.1196833D+01 0.1698934D+01 4 0.1892063D+01 0.2897519D+01 5 0.1482826D+01 0.2061537D+01 6 0.2061537D+01 0.3256908D+01 *** ISTEP = 4 Sinv ( 6X 6) 1 2 3 4 1 0.1886329D+01 0.1493744D+01 0.9393694D+00 0.1765233D+01 2 0.0000000D+00 0.7516328D+00 0.3332270D+00 0.1910338D+00 3 0.0000000D+00 0.0000000D+00 -0.3555036D+00 0.2734832D-02 4 0.0000000D+00 0.0000000D+00 0.0000000D+00 -0.3898780D+00 5 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 6 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 5 6 1 0.1041975D+01 0.1651591D+01 2 0.5719306D+00 0.3161135D+00 3 -0.7640232D-01 -0.1335814D+00 4 0.1540774D+00 0.2383378D+00 5 0.1990389D+00 0.5734484D+00 6 0.0000000D+00 -0.1522297D+00 X vector ( 6X 1) 1 1 -0.2525420D+01 2 0.9904315D+01 3 0.1568047D+00 4 -0.1263859D+01 5 -0.1548146D+02 6 0.4935227D+01 Sin'Sin ( 6X 6) 1 2 3 4 1 0.3558236D+01 0.2817693D+01 0.1771960D+01 0.3329810D+01 2 0.2817693D+01 0.2796224D+01 0.1653642D+01 0.2780394D+01 3 0.1771960D+01 0.1653642D+01 0.1119838D+01 0.1720891D+01 4 0.3329810D+01 0.2780394D+01 0.1720891D+01 0.3304554D+01 5 0.1965507D+01 0.1986326D+01 0.1196543D+01 0.1888306D+01 6 0.3115443D+01 0.2704655D+01 0.1704280D+01 0.2882543D+01 5 6 1 0.1965507D+01 0.3115443D+01 2 0.1986326D+01 0.2704655D+01 3 0.1196543D+01 0.1704280D+01 4 0.1888306D+01 0.2882543D+01 5 0.1482010D+01 0.2062778D+01 6 0.2062778D+01 0.3254345D+01 1*** In both these tests we start with Sinv=I and perform *** four iterations of the filter. *** The Sinv'Sinv matrices and X vectors are meant for *** comparison with SRIFCO. *** First example : upper Hessenberg form *** Input Data ************* *** N = 8 M = 2 UPPER = T TOL = 0.1D-14 A0 matr. ( 8X 8) 1 2 3 4 1 0.2113249D+00 0.7560439D+00 0.2211346D-03 0.3303271D+00 2 0.8782165D+00 0.6837404D-01 0.5608486D+00 0.6623569D+00 3 0.2312237D+00 0.2164633D+00 0.8833888D+00 0.6525135D+00 4 0.3616361D+00 0.2922267D+00 0.5664249D+00 0.4826472D+00 5 0.2693125D+00 0.6325745D+00 0.4051954D+00 0.9184708D+00 6 0.2806498D+00 0.1280058D+00 0.7783129D+00 0.2119030D+00 7 0.8415518D+00 0.4062025D+00 0.4094825D+00 0.8784126D+00 8 0.6853980D+00 0.8906225D+00 0.5042213D+00 0.3493615D+00 5 6 7 8 1 0.6653811D+00 0.6283918D+00 0.8497452D+00 0.6857310D+00 2 0.7263507D+00 0.1985144D+00 0.5442573D+00 0.2320748D+00 3 0.3076091D+00 0.9329616D+00 0.2146008D+00 0.3126420D+00 4 0.3321719D+00 0.5935095D+00 0.5015342D+00 0.4368588D+00 5 0.4373343D-01 0.4818509D+00 0.2639556D+00 0.4148104D+00 6 0.1121355D+00 0.6856896D+00 0.1531217D+00 0.6970851D+00 7 0.1138360D+00 0.1998338D+00 0.5618661D+00 0.5896177D+00 8 0.3873779D+00 0.9222899D+00 0.9488184D+00 0.3435337D+00 B0 matr. ( 2X 8) 1 2 3 4 1 0.3760119D+00 0.7340941D+00 0.2615761D+00 0.4993494D+00 2 0.2256303D+00 0.6274093D+00 0.7608433D+00 0.4855662D-01 5 6 7 8 1 0.2638578D+00 0.5253563D+00 0.5376230D+00 0.1199926D+00 2 0.6723950D+00 0.2017173D+00 0.3911574D+00 0.8300317D+00 *** Output Data ************ A matrix ( 8X 8) 1 2 3 4 1 -0.1066326D+00 0.1316800D+00 -0.4225355D+00 0.2602046D+00 2 0.4222147D-01 0.4075197D-01 -0.1300144D+00 0.3053751D+00 3 -0.2665044D+00 0.3407614D+00 -0.4747604D+00 -0.1301455D+00 4 0.0000000D+00 0.4550986D+00 0.2153786D+00 0.1687042D-01 5 0.0000000D+00 0.0000000D+00 -0.1547913D+00 -0.2118666D+00 6 0.0000000D+00 0.0000000D+00 0.0000000D+00 -0.6209869D+00 7 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 8 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 5 6 7 8 1 0.5405883D-01 0.3829733D+00 -0.2657399D-01 -0.2721774D+00 2 -0.2719752D+00 0.3012927D+00 0.1240728D-01 -0.1776388D+00 3 -0.2152574D+00 0.5033204D-01 -0.6876272D-01 -0.1065149D+00 4 -0.4249745D-01 -0.1202603D-01 -0.4990164D-01 -0.1514647D+00 5 0.6450252D+00 -0.4609640D+00 0.6618764D+00 0.3834935D+00 6 -0.5963368D+00 0.3255731D-01 0.3797258D+00 0.8405580D+00 7 0.3785231D+00 0.7106583D+00 0.3614025D+00 0.1242073D+01 8 0.0000000D+00 0.1079634D+01 0.1891566D+01 0.2765343D+01 B matrix ( 2X 8) 1 2 3 4 1 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 2 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 5 6 7 8 1 0.0000000D+00 0.0000000D+00 -0.9280606D+00 -0.8864600D+00 2 0.0000000D+00 0.0000000D+00 0.0000000D+00 -0.1536409D+01 U matrix ( 8X 8) 1 2 3 4 1 0.3335950D+00 0.2658968D+00 -0.3390163D+00 0.6761545D-01 2 0.6578012D+00 -0.1698221D-01 0.4123120D-01 -0.6620397D+00 3 0.6097985D-03 0.2776749D+00 0.1776868D+00 0.2204007D+00 4 -0.3343031D+00 -0.1174397D+00 -0.4726773D+00 -0.1590310D+00 5 -0.3857639D+00 0.1508882D+00 0.5015998D+00 -0.2224189D+00 6 -0.3220374D+00 0.6984517D+00 -0.3082140D+00 -0.4181673D+00 7 -0.2648860D+00 -0.4009421D+00 0.1911584D+00 -0.5078696D+00 8 -0.1468556D+00 -0.4083608D+00 -0.4952087D+00 -0.3160396D-01 5 6 7 8 1 0.6365555D-01 0.1801780D+00 -0.7639997D+00 0.2798173D+00 2 -0.2710194D+00 0.1205978D+00 0.1872044D+00 -0.6302186D-01 3 -0.7692868D+00 -0.3789945D+00 0.4056943D-02 0.3275541D+00 4 -0.1991020D+00 0.4653542D+00 0.2963752D+00 0.5307544D+00 5 -0.2599677D+00 0.5479370D+00 -0.3319697D+00 -0.2220910D+00 6 0.1185801D+00 -0.2848421D+00 0.7354156D-01 -0.1949175D+00 7 0.1337122D+00 -0.4406735D+00 -0.3361175D+00 0.3867309D+00 8 -0.4376406D+00 -0.1312914D+00 -0.2545919D+00 -0.5402413D+00 *** Testing norm U*A0-A*U =0.204484D-15 *** which should be of the order of the machine precision *** norm(A) *** Testing norm U*B0-B =0.312732D-16 *** which should be of the order of the machine precision *** norm(B) *** Testing norm U*UP-I =0.940255D-16 *** which should be of the order of the machine precision 1*** This first example is a well-conditioned one. *** The above norm tests should be close to the machine *** precision and A, B, U should be close to those obtained *** on any other machine. 1*** Second example : lower Hessenberg form *** Input Data ************* *** N = 8 M = 3 UPPER = F TOL = 0.1D-14 A0 matr. ( 8X 8) 1 2 3 4 1 0.3873477D+00 0.3918023D+00 0.8812843D+00 0.1060378D+00 2 0.8473940D+00 0.4636857D+00 0.3559455D+00 0.3694990D+00 3 0.7374331D+00 0.2647072D+00 0.4988408D+00 0.2652388D+00 4 0.6409741D+00 0.7735630D+00 0.4649064D-01 0.6780052D+00 5 0.4583488D+00 0.2002479D+00 0.8438306D+00 0.1104381D+00 6 0.1038978D+01 0.6918569D+00 0.9853348D+00 0.6900804D-01 7 0.5348427D-01 0.8177994D+00 0.9278763D+00 0.5622625D+00 8 0.1524701D+00 0.7537430D+00 0.2635828D+00 0.5579221D+00 5 6 7 8 1 0.2266084D+00 0.5448077D+00 0.6020714D+00 0.7053985D+00 2 0.9836764D+00 0.9097085D+00 0.3720863D+00 0.4218672D+00 3 0.5206147D+00 0.5406439D+00 0.1177871D+00 0.2220884D+00 4 0.1824547D+00 0.4034298D+00 0.8210721D+00 0.5734830D+00 5 0.3204257D+00 0.8385232D+00 0.8656382D+00 0.5517682D+00 6 0.6834312D+00 0.4518941D+00 0.5781638D+00 0.8057772D+00 7 0.5864726D+00 0.8062577D+00 0.6401329D-01 0.5710292D+00 8 0.9494382D+00 0.7644782D+00 -0.1447037D-01 0.5608479D+00 B0 matr. ( 3X 8) 1 2 3 4 1 -0.5008794D+00 -0.3867745D+00 -0.4096848D+00 -0.4216298D+00 2 -0.3262392D+00 -0.2503598D+00 -0.2308553D+00 -0.2886426D+00 3 -0.7949956D-01 -0.7925883D-01 -0.4774682D+00 0.9378121D-01 5 6 7 8 1 -0.5412259D+00 -0.4651283D+00 -0.1880768D+00 -0.4747183D+00 2 -0.3257056D+00 -0.2651356D+00 -0.1016262D+00 -0.3350921D+00 3 -0.3932090D+00 -0.5072632D+00 -0.2690981D+00 0.2214139D+00 *** Output Data ************ A matrix ( 8X 8) 1 2 3 4 1 0.4034462D+01 -0.5496913D+00 0.1719497D+00 -0.8122496D+00 2 -0.2977289D+00 0.4007473D+00 -0.2570347D-01 0.2044011D+00 3 0.5083343D+00 0.2864055D+00 0.2294080D+00 0.5126002D-01 4 -0.8287784D+00 0.1869646D+00 0.5808706D+00 -0.5533826D+00 5 0.7146230D+00 0.1241547D-03 0.4931101D-01 -0.1721749D+00 6 0.1171479D+00 0.1402102D+00 -0.1825322D+00 0.2086584D+00 7 0.1029053D+00 -0.6033020D-01 0.2782224D+00 -0.5591695D+00 8 -0.1477774D-01 -0.3893580D+00 0.9691826D-01 0.1154625D+00 5 6 7 8 1 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 2 0.7314053D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 3 0.3585806D+00 0.4321407D+00 0.0000000D+00 0.0000000D+00 4 -0.1406535D+00 -0.3410269D+00 0.4663396D+00 0.0000000D+00 5 0.2241386D+00 -0.7456636D-02 0.5860687D-01 0.1257189D+00 6 -0.6053474D-01 -0.3088876D+00 0.6906574D+00 0.1947131D+00 7 -0.3465267D+00 0.4003948D-01 -0.2039871D+00 0.1220821D-01 8 0.1743335D+00 -0.9037824D-01 -0.7293658D-01 -0.3974386D+00 B matrix ( 3X 8) 1 2 3 4 1 0.1231295D+01 0.0000000D+00 0.0000000D+00 0.0000000D+00 2 0.7750438D+00 0.6343140D-01 0.0000000D+00 0.0000000D+00 3 0.5041883D+00 -0.7270036D+00 0.1179168D-14 0.0000000D+00 5 6 7 8 1 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 2 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 3 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 U matrix ( 8X 8) 1 2 3 4 1 -0.4067906D+00 -0.3141200D+00 -0.3327266D+00 -0.3424278D+00 2 -0.1727633D+00 -0.1088259D+00 0.4260107D+00 -0.3664759D+00 3 0.9821569D-01 0.1747594D+00 -0.2611676D+00 -0.6035494D+00 4 0.2484576D-01 0.3021913D+00 0.2121400D-01 -0.5276975D+00 5 0.4833731D+00 -0.3586663D+00 0.6105964D+00 -0.2339988D+00 6 0.8941257D-01 -0.6807586D+00 -0.3088866D+00 -0.1509972D+00 7 -0.7396980D+00 -0.4293286D-01 0.4130181D+00 -0.1206687D-01 8 -0.7492188D-01 -0.4167831D+00 -0.1806899D-01 0.1673345D+00 5 6 7 8 1 -0.4395582D+00 -0.3777553D+00 -0.1527471D+00 -0.3855438D+00 2 0.2360220D+00 0.4357659D+00 0.2642143D+00 -0.5719375D+00 3 0.3246967D+00 0.2223279D+00 -0.5887776D+00 0.1606727D+00 4 -0.4380017D+00 0.7047588D-01 0.5201828D+00 0.4021765D+00 5 -0.1824962D+00 -0.3224208D+00 -0.2551388D+00 0.8814617D-01 6 0.4178200D+00 -0.5350911D-01 0.3917789D+00 0.2818414D+00 7 0.1925442D+00 -0.1497564D+00 -0.1344767D+00 0.4502108D+00 8 -0.4570089D+00 0.6955337D+00 -0.2300857D+00 0.2163046D+00 *** Testing norm U*A0-A*U =0.181730D-15 *** which should be of the order of the machine precision *** norm(A) *** Testing norm U*B0-B =0.399740D-16 *** which should be of the order of the machine precision *** norm(B) *** Testing norm U*UP-I =0.115364D-15 *** which should be of the order of the machine precision 1*** This second example is an ill-conditioned one. *** Therefore A, B and U can differ a lot from those obtained *** on another machine, but the above norm tests should yet *** be close to the machine precision (because of backward *** stability). *** First example : upper Hessenberg form *** Input Data ************* *** N = 8 M = 2 UPPER = T TOL = 0.1D-14 A0 matr. ( 8X 8) 1 2 3 4 1 0.2113249D+00 0.8782165D+00 0.2312237D+00 0.3616361D+00 2 0.7560439D+00 0.6837404D-01 0.2164633D+00 0.2922267D+00 3 0.2211346D-03 0.5608486D+00 0.8833888D+00 0.5664249D+00 4 0.3303271D+00 0.6623569D+00 0.6525135D+00 0.4826472D+00 5 0.6653811D+00 0.7263507D+00 0.3076091D+00 0.3321719D+00 6 0.6283918D+00 0.1985144D+00 0.9329616D+00 0.5935095D+00 7 0.8497452D+00 0.5442573D+00 0.2146008D+00 0.5015342D+00 8 0.6857310D+00 0.2320748D+00 0.3126420D+00 0.4368588D+00 5 6 7 8 1 0.2693125D+00 0.2806498D+00 0.8415518D+00 0.6853980D+00 2 0.6325745D+00 0.1280058D+00 0.4062025D+00 0.8906225D+00 3 0.4051954D+00 0.7783129D+00 0.4094825D+00 0.5042213D+00 4 0.9184708D+00 0.2119030D+00 0.8784126D+00 0.3493615D+00 5 0.4373343D-01 0.1121355D+00 0.1138360D+00 0.3873779D+00 6 0.4818509D+00 0.6856896D+00 0.1998338D+00 0.9222899D+00 7 0.2639556D+00 0.1531217D+00 0.5618661D+00 0.9488184D+00 8 0.4148104D+00 0.6970851D+00 0.5896177D+00 0.3435337D+00 B0 matr. ( 8X 2) 1 2 1 0.3760119D+00 0.2256303D+00 2 0.7340941D+00 0.6274093D+00 3 0.2615761D+00 0.7608433D+00 4 0.4993494D+00 0.4855662D-01 5 0.2638578D+00 0.6723950D+00 6 0.5253563D+00 0.2017173D+00 7 0.5376230D+00 0.3911574D+00 8 0.1199926D+00 0.8300317D+00 *** Output Data ************ A matrix ( 8X 8) 1 2 3 4 1 0.3073461D+01 0.1597260D+01 0.9935550D+00 0.5449534D+00 2 0.9477666D+00 0.5328502D-01 0.2994773D+00 -0.2491275D+00 3 0.1289013D+01 0.2277233D+00 -0.1592217D+00 -0.2861971D+00 4 0.0000000D+00 -0.3170384D+00 -0.4215699D+00 0.8368042D+00 5 0.0000000D+00 0.0000000D+00 -0.6526426D+00 -0.8269145D-01 6 0.0000000D+00 0.0000000D+00 0.0000000D+00 -0.1472833D+00 7 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 8 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 5 6 7 8 1 -0.1467351D+00 -0.1160526D+00 0.1077854D+00 -0.2103641D+00 2 -0.7645254D-01 -0.2571071D-01 0.1318937D+00 -0.1822896D+00 3 -0.2057470D-01 0.4516401D-02 -0.2256003D+00 0.3922944D+00 4 -0.5005736D-01 -0.2187927D+00 0.3288077D+00 -0.3786623D-01 5 0.1991062D-01 -0.1550908D+00 -0.2915320D+00 0.2469861D+00 6 0.1904332D+00 -0.4778007D+00 0.1327942D+00 -0.4390592D+00 7 -0.4718741D+00 -0.3248509D+00 0.3568817D-01 -0.1357299D+00 8 0.0000000D+00 -0.2570300D+00 -0.4627137D-01 -0.1015688D+00 B matrix ( 8X 2) 1 2 1 -0.1283397D+01 -0.1061219D+01 2 0.0000000D+00 -0.1111021D+01 3 0.0000000D+00 0.0000000D+00 4 0.0000000D+00 0.0000000D+00 5 0.0000000D+00 0.0000000D+00 6 0.0000000D+00 0.0000000D+00 7 0.0000000D+00 0.0000000D+00 8 0.0000000D+00 0.0000000D+00 U matrix ( 8X 8) 1 2 3 4 1 -0.2929817D+00 -0.5719930D+00 -0.2038155D+00 -0.3890841D+00 2 0.7676492D-01 -0.1836104D-01 -0.4901352D+00 0.3279388D+00 3 -0.3966096D+00 0.7145636D+00 -0.1946706D+00 -0.4558610D+00 4 -0.3085818D+00 -0.8686278D-03 0.5556092D+00 -0.1285489D+00 5 -0.3338481D+00 -0.1033058D+00 -0.4631284D+00 -0.1477288D+00 6 0.1744592D-01 0.2832372D+00 0.2012673D+00 0.2281305D+00 7 -0.6480461D+00 0.2453867D-01 -0.5085770D-01 0.6636951D+00 8 0.3521709D+00 0.2653062D+00 -0.3377063D+00 0.4875664D-01 5 6 7 8 1 -0.2055933D+00 -0.4093483D+00 -0.4189062D+00 -0.9349605D-01 2 -0.4088271D+00 0.2094388D+00 0.4805837D-01 -0.6577841D+00 3 0.6067180D-01 -0.1619920D+00 0.1370878D-02 -0.2376330D+00 4 -0.2792192D+00 0.5959267D+00 -0.3400152D+00 -0.1756353D+00 5 -0.2375938D+00 0.4456759D+00 0.2962034D+00 0.5465778D+00 6 -0.7582829D+00 -0.4019507D+00 -0.1087490D-01 0.3004074D+00 7 0.2727204D+00 -0.1154239D+00 -0.2088603D+00 0.7095565D-01 8 0.5592075D-01 0.1835355D+00 -0.7583656D+00 0.2779114D+00 *** Testing norm U*A0-A*U =0.251624D-15 *** which should be of the order of the machine precision *** norm(A) *** Testing norm U*B0-B =0.566962D-16 *** which should be of the order of the machine precision *** norm(B) *** Testing norm U*UP-I =0.108573D-15 *** which should be of the order of the machine precision 1*** This first example is a well-conditioned one. *** The above norm tests should be close to the machine *** precision and A, B, U should be close to those obtained *** on any other machine. 1*** Second example : lower Hessenberg form *** Input Data ************* *** N = 8 M = 3 UPPER = F TOL = 0.1D-14 A0 matr. ( 8X 8) 1 2 3 4 1 0.3873477D+00 0.8473940D+00 0.7374331D+00 0.6409741D+00 2 0.3918023D+00 0.4636857D+00 0.2647072D+00 0.7735630D+00 3 0.8812843D+00 0.3559455D+00 0.4988408D+00 0.4649064D-01 4 0.1060378D+00 0.3694990D+00 0.2652388D+00 0.6780052D+00 5 0.2266084D+00 0.9836764D+00 0.5206147D+00 0.1824547D+00 6 0.5448077D+00 0.9097085D+00 0.5406439D+00 0.4034298D+00 7 0.6020714D+00 0.3720863D+00 0.1177871D+00 0.8210721D+00 8 0.7053985D+00 0.4218672D+00 0.2220884D+00 0.5734830D+00 5 6 7 8 1 0.4583488D+00 0.1038978D+01 0.5348427D-01 0.1524701D+00 2 0.2002479D+00 0.6918569D+00 0.8177994D+00 0.7537430D+00 3 0.8438306D+00 0.9853348D+00 0.9278763D+00 0.2635828D+00 4 0.1104381D+00 0.6900804D-01 0.5622625D+00 0.5579221D+00 5 0.3204257D+00 0.6834312D+00 0.5864726D+00 0.9494382D+00 6 0.8385232D+00 0.4518941D+00 0.8062577D+00 0.7644782D+00 7 0.8656382D+00 0.5781638D+00 0.6401329D-01 -0.1447037D-01 8 0.5517682D+00 0.8057772D+00 0.5710292D+00 0.5608479D+00 B0 matr. ( 8X 3) 1 2 3 1 -0.5008794D+00 -0.3262392D+00 -0.7949956D-01 2 -0.3867745D+00 -0.2503598D+00 -0.7925883D-01 3 -0.4096848D+00 -0.2308553D+00 -0.4774682D+00 4 -0.4216298D+00 -0.2886426D+00 0.9378121D-01 5 -0.5412259D+00 -0.3257056D+00 -0.3932090D+00 6 -0.4651283D+00 -0.2651356D+00 -0.5072632D+00 7 -0.1880768D+00 -0.1016262D+00 -0.2690981D+00 8 -0.4747183D+00 -0.3350921D+00 0.2214139D+00 *** Output Data ************ A matrix ( 8X 8) 1 2 3 4 1 -0.3878784D+00 -0.5913089D-01 -0.1924701D+00 0.1697809D+00 2 0.2059667D-01 -0.4559455D-01 0.6316019D+00 0.1505255D+00 3 0.1127074D+00 -0.9252113D-01 -0.4889181D+00 -0.2166241D+00 4 -0.9210843D-02 -0.2794070D-01 0.2152139D+00 0.1533163D-01 5 -0.2095089D+00 -0.5987008D+00 0.2860237D+00 -0.3431023D+00 6 -0.1240162D-01 -0.2037373D+00 0.9907237D-01 -0.4453803D+00 7 0.2494413D+00 0.4637544D-01 0.2310500D+00 -0.7920494D+00 8 0.3054973D+00 -0.8968967D-01 0.1274212D+00 0.7108702D+00 5 6 7 8 1 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 2 0.2261718D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 3 -0.2876969D+00 -0.4964409D+00 0.0000000D+00 0.0000000D+00 4 -0.3701628D+00 0.2270329D+00 -0.6736611D+00 0.0000000D+00 5 -0.2960558D+00 -0.2426556D+00 -0.9720622D-01 0.8643250D+00 6 -0.5791077D+00 0.1929659D+00 -0.1733950D+00 0.1622291D+00 7 0.2089043D-01 -0.5959984D+00 0.2457527D+01 -0.1724138D+01 8 0.1510422D+00 0.1608398D+00 -0.1976100D+01 0.1977683D+01 B matrix ( 8X 3) 1 2 3 1 0.0000000D+00 0.0000000D+00 0.0000000D+00 2 0.0000000D+00 0.0000000D+00 0.0000000D+00 3 0.0000000D+00 0.0000000D+00 0.0000000D+00 4 0.0000000D+00 0.0000000D+00 0.0000000D+00 5 0.0000000D+00 0.0000000D+00 0.0000000D+00 6 0.1622871D-15 0.0000000D+00 0.0000000D+00 7 0.1011789D+01 0.6730231D+00 0.0000000D+00 8 -0.7016915D+00 -0.3895592D+00 -0.8847260D+00 U matrix ( 8X 8) 1 2 3 4 1 0.5250820D-01 0.5335586D+00 0.4595955D-01 -0.2127771D+00 2 -0.6850818D+00 -0.2543760D+00 0.3399596D+00 0.3472912D-01 3 0.3080434D+00 -0.5491208D+00 -0.4315157D+00 -0.2360687D+00 4 -0.3525289D+00 0.4719685D+00 -0.4204442D+00 -0.2274918D+00 5 0.3357097D+00 -0.3000886D-01 0.4431278D+00 -0.5634715D+00 6 0.2667688D-01 -0.1220868D+00 0.1754470D+00 0.5262863D+00 7 -0.4327255D+00 -0.3201388D+00 -0.3063530D-01 -0.4902299D+00 8 0.8985783D-01 0.8958573D-01 0.5396792D+00 -0.1060003D+00 5 6 7 8 1 0.4158960D+00 -0.6555736D+00 0.1189098D+00 -0.2197406D+00 2 0.2862171D+00 -0.2141755D+00 0.5610616D-01 0.4671593D+00 3 0.4292047D+00 -0.7918714D-01 0.3899397D+00 0.1382066D+00 4 -0.1632578D+00 0.3050322D+00 0.4955571D+00 0.2432462D+00 5 -0.4324927D+00 -0.1542155D+00 0.1550020D+00 0.3710500D+00 6 -0.3134849D+00 -0.2620370D+00 0.6840440D+00 -0.2043815D+00 7 -0.2266926D+00 -0.6207724D-01 0.2505416D-01 -0.6427481D+00 8 0.4444415D+00 0.5733563D+00 0.3041598D+00 -0.2502627D+00 *** Testing norm U*A0-A*U =0.303913D-15 *** which should be of the order of the machine precision *** norm(A) *** Testing norm U*B0-B =0.104837D-15 *** which should be of the order of the machine precision *** norm(B) *** Testing norm U*UP-I =0.210819D-15 *** which should be of the order of the machine precision 1*** This second example is an ill-conditioned one. *** Therefore A, B and U can differ a lot from those obtained *** on another machine, but the above norm tests should yet *** be close to the machine precision (because of backward *** stability). 1*** First example : Square root covariance filter with *** A, B, C in (lower) observer Hessenberg form and *** lower triangular Q, R. *** Input SRCFOB *** Input OBHESS *** N = 6 M = 2 P = 2 *** UPPER = .FALSE. A matrix ( 6X 6) 1 2 3 4 1 0.2113249D+00 0.8497452D+00 0.7263507D+00 0.8833888D+00 2 0.7560439D+00 0.6857310D+00 0.1985144D+00 0.6525135D+00 3 0.2211346D-03 0.8782165D+00 0.5442573D+00 0.3076091D+00 4 0.3303271D+00 0.6837404D-01 0.2320748D+00 0.9329616D+00 5 0.6653811D+00 0.5608486D+00 0.2312237D+00 0.2146008D+00 6 0.6283918D+00 0.6623569D+00 0.2164633D+00 0.3126420D+00 5 6 1 0.3616361D+00 0.5015342D+00 2 0.2922267D+00 0.4368588D+00 3 0.5664249D+00 0.2693125D+00 4 0.4826472D+00 0.6325745D+00 5 0.3321719D+00 0.4051954D+00 6 0.5935095D+00 0.9184708D+00 B matrix ( 6X 2) 1 2 1 0.4373343D-01 0.7783129D+00 2 0.4818509D+00 0.2119030D+00 3 0.2639556D+00 0.1121355D+00 4 0.4148104D+00 0.6856896D+00 5 0.2806498D+00 0.1531217D+00 6 0.1280058D+00 0.6970851D+00 C matrix ( 2X 6) 1 2 3 4 1 0.5618661D+00 0.6853980D+00 0.5042213D+00 0.3873779D+00 2 0.5896177D+00 0.8906225D+00 0.3493615D+00 0.9222899D+00 5 6 1 0.9488184D+00 0.3760119D+00 2 0.3435337D+00 0.7340941D+00 *** Output OBHESS Au matr. ( 6X 6) 1 2 3 4 1 0.2555206D+01 0.1028752D+01 0.1692890D+00 0.0000000D+00 2 0.8254461D+00 0.5689337D+00 -0.2275675D+00 0.5039626D+00 3 0.5521221D+00 0.4692318D-01 0.1783014D+00 -0.4475458D+00 4 0.3535732D+00 -0.5489957D-01 0.1106179D+00 0.2362827D+00 5 -0.9226369D-01 -0.2917360D+00 0.1524245D+00 -0.1157029D-01 6 0.1003704D+00 -0.8503523D-01 -0.2923006D+00 -0.7379939D-01 5 6 1 0.0000000D+00 0.0000000D+00 2 0.0000000D+00 0.0000000D+00 3 0.4314205D+00 0.0000000D+00 4 0.2492206D+00 -0.2010546D+00 5 -0.2519957D+00 -0.4671646D+00 6 0.4474299D+00 0.3381892D+00 Bu matr. ( 6X 2) 1 2 1 0.4373343D-01 0.7783129D+00 2 0.4818509D+00 0.2119030D+00 3 0.2639556D+00 0.1121355D+00 4 0.4148104D+00 0.6856896D+00 5 0.2806498D+00 0.1531217D+00 6 0.1280058D+00 0.6970851D+00 Cu matr. ( 2X 6) 1 2 3 4 1 -0.1493789D+01 0.0000000D+00 0.0000000D+00 0.0000000D+00 2 -0.1390508D+01 -0.9148361D+00 0.0000000D+00 0.0000000D+00 5 6 1 0.0000000D+00 0.0000000D+00 2 0.0000000D+00 0.0000000D+00 U matr. ( 6X 6) 1 2 3 4 1 -0.3761348D+00 -0.4588318D+00 -0.3375452D+00 -0.2593257D+00 2 -0.7279893D-01 -0.2761292D+00 0.1311687D+00 -0.6139846D+00 3 -0.3363314D+00 -0.8806412D-01 -0.4842760D+00 0.6014684D+00 4 -0.4538942D-01 0.7750182D+00 -0.7832899D-01 -0.1614651D+00 5 0.8587101D+00 -0.2248876D+00 -0.3086938D+00 0.7347054D-01 6 0.2570883D-01 0.2329016D+00 -0.7300051D+00 -0.4031625D+00 5 6 1 -0.6351756D+00 -0.2517168D+00 2 0.5899235D+00 -0.4198344D+00 3 0.4091945D+00 -0.3397031D+00 4 -0.1993882D+00 -0.5703723D+00 5 -0.8402300D-01 -0.3229441D+00 6 0.1851660D+00 0.4640712D+00 *** Additional input to SRCFOB R matr. ( 2X 2) 1 2 1 0.8813348D-01 0.0000000D+00 2 0.4498763D+00 0.7227253D+00 Q matr. ( 2X 2) 1 2 1 0.1000000D+01 0.0000000D+00 2 0.0000000D+00 0.1000000D+01 *** Output SRCFOB for MULTBQ=.TRUE. *** ISTEP = 1 Su matr. ( 6X 6) 1 2 3 4 1 0.1089571D+01 0.0000000D+00 0.0000000D+00 0.0000000D+00 2 0.7281569D+00 -0.2311728D+00 0.0000000D+00 0.0000000D+00 3 -0.2636141D-02 -0.1666184D+00 0.0000000D+00 0.0000000D+00 4 0.2459465D+00 -0.3725796D+00 0.0000000D+00 0.0000000D+00 5 -0.2107426D+00 0.3863074D+00 0.0000000D+00 0.0000000D+00 6 0.2928585D-01 0.1462207D+00 0.0000000D+00 0.0000000D+00 5 6 1 0.0000000D+00 0.0000000D+00 2 0.0000000D+00 0.0000000D+00 3 0.0000000D+00 0.0000000D+00 4 0.0000000D+00 0.0000000D+00 5 0.0000000D+00 0.0000000D+00 6 0.0000000D+00 0.0000000D+00 Ku matr. ( 6X 2) 1 2 1 0.0000000D+00 0.0000000D+00 2 0.0000000D+00 0.0000000D+00 3 0.0000000D+00 0.0000000D+00 4 0.0000000D+00 0.0000000D+00 5 0.0000000D+00 0.0000000D+00 6 0.0000000D+00 0.0000000D+00 U'SuSu'U ( 6X 6) 1 2 3 4 1 0.6076835D+00 0.1859999D+00 0.9882016D-01 0.5518221D+00 2 0.1859999D+00 0.2770832D+00 0.1509491D+00 0.3451765D+00 3 0.9882016D-01 0.1509491D+00 0.8224692D-01 0.1863816D+00 4 0.5518221D+00 0.3451765D+00 0.1863816D+00 0.6422379D+00 5 0.1314503D+00 0.1676783D+00 0.9124946D-01 0.2214104D+00 6 0.5481484D+00 0.2093942D+00 0.1119558D+00 0.5310821D+00 5 6 1 0.1314503D+00 0.5481484D+00 2 0.1676783D+00 0.2093942D+00 3 0.9124946D-01 0.1119558D+00 4 0.2214104D+00 0.5310821D+00 5 0.1022106D+00 0.1426636D+00 6 0.1426636D+00 0.5023131D+00 *** ISTEP = 2 Su matr. ( 6X 6) 1 2 3 4 1 0.1137694D+01 0.0000000D+00 0.0000000D+00 0.0000000D+00 2 0.7765132D+00 0.2534073D+00 0.0000000D+00 0.0000000D+00 3 -0.6769487D-01 0.4761430D-01 -0.3163097D+00 0.0000000D+00 4 0.2449570D+00 0.3316677D+00 -0.1730311D+00 -0.2070183D-01 5 -0.1761697D+00 -0.2962042D+00 0.2965832D+00 0.4669850D-02 6 -0.4744392D-01 -0.2449730D+00 -0.2222014D+00 0.7303788D-01 5 6 1 0.0000000D+00 0.0000000D+00 2 0.0000000D+00 0.0000000D+00 3 0.0000000D+00 0.0000000D+00 4 0.0000000D+00 0.0000000D+00 5 0.0000000D+00 0.0000000D+00 6 0.0000000D+00 0.0000000D+00 Ku matr. ( 6X 2) 1 2 1 -0.2178193D+01 0.1037101D-01 2 -0.8136910D+00 -0.4985807D-01 3 -0.4052180D+00 0.1030031D+00 4 -0.2121238D+00 0.7178771D-03 5 0.2298249D+00 -0.4460418D-01 6 -0.9910064D-01 0.9797726D-01 U'SuSu'U ( 6X 6) 1 2 3 4 1 0.6191745D+00 0.1788886D+00 0.1192075D+00 0.5423612D+00 2 0.1788886D+00 0.3497187D+00 0.8757649D-01 0.4246670D+00 3 0.1192075D+00 0.8757649D-01 0.1561725D+00 0.1148228D+00 4 0.5423612D+00 0.4246670D+00 0.1148228D+00 0.7294913D+00 5 0.1256196D+00 0.2236019D+00 0.4199030D-01 0.2826671D+00 6 0.5393206D+00 0.2903891D+00 0.4010983D-01 0.6198606D+00 5 6 1 0.1256196D+00 0.5393206D+00 2 0.2236019D+00 0.2903891D+00 3 0.4199030D-01 0.4010983D-01 4 0.2826671D+00 0.6198606D+00 5 0.1452790D+00 0.2050529D+00 6 0.2050529D+00 0.5927042D+00 *** ISTEP = 3 Su matr. ( 6X 6) 1 2 3 4 1 0.1139678D+01 0.0000000D+00 0.0000000D+00 0.0000000D+00 2 0.7809824D+00 0.2603205D+00 0.0000000D+00 0.0000000D+00 3 -0.6587458D-01 0.5751174D-01 -0.3191852D+00 0.0000000D+00 4 0.2470454D+00 0.3329142D+00 -0.1692704D+00 0.5785183D-01 5 -0.1750882D+00 -0.2802188D+00 0.2810173D+00 -0.1184551D+00 6 -0.4504221D-01 -0.2265318D+00 -0.2330436D+00 -0.1011985D+00 5 6 1 0.0000000D+00 0.0000000D+00 2 0.0000000D+00 0.0000000D+00 3 0.0000000D+00 0.0000000D+00 4 0.0000000D+00 0.0000000D+00 5 0.7575174D-01 0.0000000D+00 6 -0.1291215D-01 -0.3847776D-01 Ku matr. ( 6X 2) 1 2 1 -0.2169897D+01 0.1373540D-02 2 -0.8053058D+00 -0.6368138D-01 3 -0.4074378D+00 0.9820538D-01 4 -0.2124421D+00 -0.5890905D-02 5 0.2271468D+00 -0.4705703D-01 6 -0.9862450D-01 0.9200723D-01 U'SuSu'U ( 6X 6) 1 2 3 4 1 0.6202819D+00 0.1797702D+00 0.1205935D+00 0.5448988D+00 2 0.1797702D+00 0.3506024D+00 0.8775846D-01 0.4262485D+00 3 0.1205935D+00 0.8775846D-01 0.1625767D+00 0.1202222D+00 4 0.5448988D+00 0.4262485D+00 0.1202222D+00 0.7363649D+00 5 0.1251047D+00 0.2236627D+00 0.3896033D-01 0.2803513D+00 6 0.5413832D+00 0.2911459D+00 0.4717723D-01 0.6267229D+00 5 6 1 0.1251047D+00 0.5413832D+00 2 0.2236627D+00 0.2911459D+00 3 0.3896033D-01 0.4717723D-01 4 0.2803513D+00 0.6267229D+00 5 0.1467371D+00 0.2018021D+00 6 0.2018021D+00 0.6008554D+00 *** Output SRCFOB for MULTBQ=.FALSE. *** ISTEP = 1 Su matr. ( 6X 6) 1 2 3 4 1 0.1089571D+01 0.0000000D+00 0.0000000D+00 0.0000000D+00 2 0.7281569D+00 -0.2311728D+00 0.0000000D+00 0.0000000D+00 3 -0.2636141D-02 -0.1666184D+00 0.0000000D+00 0.0000000D+00 4 0.2459465D+00 -0.3725796D+00 0.0000000D+00 0.0000000D+00 5 -0.2107426D+00 0.3863074D+00 0.0000000D+00 0.0000000D+00 6 0.2928585D-01 0.1462207D+00 0.0000000D+00 0.0000000D+00 5 6 1 0.0000000D+00 0.0000000D+00 2 0.0000000D+00 0.0000000D+00 3 0.0000000D+00 0.0000000D+00 4 0.0000000D+00 0.0000000D+00 5 0.0000000D+00 0.0000000D+00 6 0.0000000D+00 0.0000000D+00 Ku matr. ( 6X 2) 1 2 1 0.0000000D+00 0.0000000D+00 2 0.0000000D+00 0.0000000D+00 3 0.0000000D+00 0.0000000D+00 4 0.0000000D+00 0.0000000D+00 5 0.0000000D+00 0.0000000D+00 6 0.0000000D+00 0.0000000D+00 U'SuSu'U ( 6X 6) 1 2 3 4 1 0.6076835D+00 0.1859999D+00 0.9882016D-01 0.5518221D+00 2 0.1859999D+00 0.2770832D+00 0.1509491D+00 0.3451765D+00 3 0.9882016D-01 0.1509491D+00 0.8224692D-01 0.1863816D+00 4 0.5518221D+00 0.3451765D+00 0.1863816D+00 0.6422379D+00 5 0.1314503D+00 0.1676783D+00 0.9124946D-01 0.2214104D+00 6 0.5481484D+00 0.2093942D+00 0.1119558D+00 0.5310821D+00 5 6 1 0.1314503D+00 0.5481484D+00 2 0.1676783D+00 0.2093942D+00 3 0.9124946D-01 0.1119558D+00 4 0.2214104D+00 0.5310821D+00 5 0.1022106D+00 0.1426636D+00 6 0.1426636D+00 0.5023131D+00 *** ISTEP = 2 Su matr. ( 6X 6) 1 2 3 4 1 0.1137694D+01 0.0000000D+00 0.0000000D+00 0.0000000D+00 2 0.7765132D+00 0.2534073D+00 0.0000000D+00 0.0000000D+00 3 -0.6769487D-01 0.4761430D-01 -0.3163097D+00 0.0000000D+00 4 0.2449570D+00 0.3316677D+00 -0.1730311D+00 -0.2070183D-01 5 -0.1761697D+00 -0.2962042D+00 0.2965832D+00 0.4669850D-02 6 -0.4744392D-01 -0.2449730D+00 -0.2222014D+00 0.7303788D-01 5 6 1 0.0000000D+00 0.0000000D+00 2 0.0000000D+00 0.0000000D+00 3 0.0000000D+00 0.0000000D+00 4 0.0000000D+00 0.0000000D+00 5 0.0000000D+00 0.0000000D+00 6 0.0000000D+00 0.0000000D+00 Ku matr. ( 6X 2) 1 2 1 -0.2178193D+01 0.1037101D-01 2 -0.8136910D+00 -0.4985807D-01 3 -0.4052180D+00 0.1030031D+00 4 -0.2121238D+00 0.7178771D-03 5 0.2298249D+00 -0.4460418D-01 6 -0.9910064D-01 0.9797726D-01 U'SuSu'U ( 6X 6) 1 2 3 4 1 0.6191745D+00 0.1788886D+00 0.1192075D+00 0.5423612D+00 2 0.1788886D+00 0.3497187D+00 0.8757649D-01 0.4246670D+00 3 0.1192075D+00 0.8757649D-01 0.1561725D+00 0.1148228D+00 4 0.5423612D+00 0.4246670D+00 0.1148228D+00 0.7294913D+00 5 0.1256196D+00 0.2236019D+00 0.4199030D-01 0.2826671D+00 6 0.5393206D+00 0.2903891D+00 0.4010983D-01 0.6198606D+00 5 6 1 0.1256196D+00 0.5393206D+00 2 0.2236019D+00 0.2903891D+00 3 0.4199030D-01 0.4010983D-01 4 0.2826671D+00 0.6198606D+00 5 0.1452790D+00 0.2050529D+00 6 0.2050529D+00 0.5927042D+00 *** ISTEP = 3 Su matr. ( 6X 6) 1 2 3 4 1 0.1139678D+01 0.0000000D+00 0.0000000D+00 0.0000000D+00 2 0.7809824D+00 0.2603205D+00 0.0000000D+00 0.0000000D+00 3 -0.6587458D-01 0.5751174D-01 -0.3191852D+00 0.0000000D+00 4 0.2470454D+00 0.3329142D+00 -0.1692704D+00 0.5785183D-01 5 -0.1750882D+00 -0.2802188D+00 0.2810173D+00 -0.1184551D+00 6 -0.4504221D-01 -0.2265318D+00 -0.2330436D+00 -0.1011985D+00 5 6 1 0.0000000D+00 0.0000000D+00 2 0.0000000D+00 0.0000000D+00 3 0.0000000D+00 0.0000000D+00 4 0.0000000D+00 0.0000000D+00 5 0.7575174D-01 0.0000000D+00 6 -0.1291215D-01 -0.3847776D-01 Ku matr. ( 6X 2) 1 2 1 -0.2169897D+01 0.1373540D-02 2 -0.8053058D+00 -0.6368138D-01 3 -0.4074378D+00 0.9820538D-01 4 -0.2124421D+00 -0.5890905D-02 5 0.2271468D+00 -0.4705703D-01 6 -0.9862450D-01 0.9200723D-01 U'SuSu'U ( 6X 6) 1 2 3 4 1 0.6202819D+00 0.1797702D+00 0.1205935D+00 0.5448988D+00 2 0.1797702D+00 0.3506024D+00 0.8775846D-01 0.4262485D+00 3 0.1205935D+00 0.8775846D-01 0.1625767D+00 0.1202222D+00 4 0.5448988D+00 0.4262485D+00 0.1202222D+00 0.7363649D+00 5 0.1251047D+00 0.2236627D+00 0.3896033D-01 0.2803513D+00 6 0.5413832D+00 0.2911459D+00 0.4717723D-01 0.6267229D+00 5 6 1 0.1251047D+00 0.5413832D+00 2 0.2236627D+00 0.2911459D+00 3 0.3896033D-01 0.4717723D-01 4 0.2803513D+00 0.6267229D+00 5 0.1467371D+00 0.2018021D+00 6 0.2018021D+00 0.6008554D+00 1*** In both these tests we start with Su=0 and perform three *** iterations of the filter. *** The ranks of Su in these three steps must be equal to *** M(=2), 2M(=4) and 3M(=6). *** K must be 0 in the first step and nonzero afterwards. *** The results for MULTBQ = .TRUE. and .FALSE. must be equal *** since we chose Q=I. *** The U'SuSu'U matrices are meant for comparison with *** SRCF. 1*** Second example : Square root covariance filter with *** A, B, C in (lower) observer Hessenberg form and *** lower triangular Q, R. *** Input SRCFOB *** Input OBHESS *** N = 6 M = 3 P = 2 *** UPPER = .FALSE. A matrix ( 6X 6) 1 2 3 4 1 0.2113249D+00 0.8497452D+00 0.7263507D+00 0.8833888D+00 2 0.7560439D+00 0.6857310D+00 0.1985144D+00 0.6525135D+00 3 0.2211346D-03 0.8782165D+00 0.5442573D+00 0.3076091D+00 4 0.3303271D+00 0.6837404D-01 0.2320748D+00 0.9329616D+00 5 0.6653811D+00 0.5608486D+00 0.2312237D+00 0.2146008D+00 6 0.6283918D+00 0.6623569D+00 0.2164633D+00 0.3126420D+00 5 6 1 0.3616361D+00 0.5015342D+00 2 0.2922267D+00 0.4368588D+00 3 0.5664249D+00 0.2693125D+00 4 0.4826472D+00 0.6325745D+00 5 0.3321719D+00 0.4051954D+00 6 0.5935095D+00 0.9184708D+00 B matrix ( 6X 3) 1 2 3 1 0.4373343D-01 0.7783129D+00 0.8415518D+00 2 0.4818509D+00 0.2119030D+00 0.4062025D+00 3 0.2639556D+00 0.1121355D+00 0.4094825D+00 4 0.4148104D+00 0.6856896D+00 0.8784126D+00 5 0.2806498D+00 0.1531217D+00 0.1138360D+00 6 0.1280058D+00 0.6970851D+00 0.1998338D+00 C matrix ( 2X 6) 1 2 3 4 1 0.5618661D+00 0.6853980D+00 0.5042213D+00 0.3873779D+00 2 0.5896177D+00 0.8906225D+00 0.3493615D+00 0.9222899D+00 5 6 1 0.9488184D+00 0.3760119D+00 2 0.3435337D+00 0.7340941D+00 *** Output OBHESS Au matr. ( 6X 6) 1 2 3 4 1 0.2555206D+01 0.1028752D+01 0.1692890D+00 0.0000000D+00 2 0.8254461D+00 0.5689337D+00 -0.2275675D+00 0.5039626D+00 3 0.5521221D+00 0.4692318D-01 0.1783014D+00 -0.4475458D+00 4 0.3535732D+00 -0.5489957D-01 0.1106179D+00 0.2362827D+00 5 -0.9226369D-01 -0.2917360D+00 0.1524245D+00 -0.1157029D-01 6 0.1003704D+00 -0.8503523D-01 -0.2923006D+00 -0.7379939D-01 5 6 1 0.0000000D+00 0.0000000D+00 2 0.0000000D+00 0.0000000D+00 3 0.4314205D+00 0.0000000D+00 4 0.2492206D+00 -0.2010546D+00 5 -0.2519957D+00 -0.4671646D+00 6 0.4474299D+00 0.3381892D+00 Bu matr. ( 6X 3) 1 2 3 1 0.4373343D-01 0.7783129D+00 0.8415518D+00 2 0.4818509D+00 0.2119030D+00 0.4062025D+00 3 0.2639556D+00 0.1121355D+00 0.4094825D+00 4 0.4148104D+00 0.6856896D+00 0.8784126D+00 5 0.2806498D+00 0.1531217D+00 0.1138360D+00 6 0.1280058D+00 0.6970851D+00 0.1998338D+00 Cu matr. ( 2X 6) 1 2 3 4 1 -0.1493789D+01 0.0000000D+00 0.0000000D+00 0.0000000D+00 2 -0.1390508D+01 -0.9148361D+00 0.0000000D+00 0.0000000D+00 5 6 1 0.0000000D+00 0.0000000D+00 2 0.0000000D+00 0.0000000D+00 U matr. ( 6X 6) 1 2 3 4 1 -0.3761348D+00 -0.4588318D+00 -0.3375452D+00 -0.2593257D+00 2 -0.7279893D-01 -0.2761292D+00 0.1311687D+00 -0.6139846D+00 3 -0.3363314D+00 -0.8806412D-01 -0.4842760D+00 0.6014684D+00 4 -0.4538942D-01 0.7750182D+00 -0.7832899D-01 -0.1614651D+00 5 0.8587101D+00 -0.2248876D+00 -0.3086938D+00 0.7347054D-01 6 0.2570883D-01 0.2329016D+00 -0.7300051D+00 -0.4031625D+00 5 6 1 -0.6351756D+00 -0.2517168D+00 2 0.5899235D+00 -0.4198344D+00 3 0.4091945D+00 -0.3397031D+00 4 -0.1993882D+00 -0.5703723D+00 5 -0.8402300D-01 -0.3229441D+00 6 0.1851660D+00 0.4640712D+00 *** Additional input to SRCFOB R matr. ( 2X 2) 1 2 1 0.8813348D-01 0.0000000D+00 2 0.4498763D+00 0.7227253D+00 Q matr. ( 3X 3) 1 2 3 1 0.1000000D+01 0.0000000D+00 0.0000000D+00 2 0.0000000D+00 0.1000000D+01 0.0000000D+00 3 0.0000000D+00 0.0000000D+00 0.1000000D+01 *** Output SRCFOB for MULTBQ=.TRUE. *** ISTEP = 1 Su matr. ( 6X 6) 1 2 3 4 1 0.1473197D+01 0.0000000D+00 0.0000000D+00 0.0000000D+00 2 0.9933841D+00 0.2313773D+00 0.0000000D+00 0.0000000D+00 3 0.4834992D-02 0.1668591D+00 -0.2217796D-02 0.0000000D+00 4 0.2047631D+00 0.3663481D+00 0.1559494D+00 0.0000000D+00 5 -0.4892480D+00 -0.3954030D+00 0.2080681D+00 0.0000000D+00 6 0.3063678D+00 -0.1337691D+00 -0.2990338D+00 0.0000000D+00 5 6 1 0.0000000D+00 0.0000000D+00 2 0.0000000D+00 0.0000000D+00 3 0.0000000D+00 0.0000000D+00 4 0.0000000D+00 0.0000000D+00 5 0.0000000D+00 0.0000000D+00 6 0.0000000D+00 0.0000000D+00 Ku matr. ( 6X 2) 1 2 1 0.0000000D+00 0.0000000D+00 2 0.0000000D+00 0.0000000D+00 3 0.0000000D+00 0.0000000D+00 4 0.0000000D+00 0.0000000D+00 5 0.0000000D+00 0.0000000D+00 6 0.0000000D+00 0.0000000D+00 U'SuSu'U ( 6X 6) 1 2 3 4 1 0.1315893D+01 0.5278403D+00 0.4434210D+00 0.1291052D+01 2 0.5278403D+00 0.4420836D+00 0.3172819D+00 0.7019898D+00 3 0.4434210D+00 0.3172819D+00 0.2499229D+00 0.5460763D+00 4 0.1291052D+01 0.7019898D+00 0.5460763D+00 0.1413847D+01 5 0.2272492D+00 0.2139188D+00 0.1378633D+00 0.3214053D+00 6 0.7163189D+00 0.2905672D+00 0.1937843D+00 0.7066186D+00 5 6 1 0.2272492D+00 0.7163189D+00 2 0.2139188D+00 0.2905672D+00 3 0.1378633D+00 0.1937843D+00 4 0.3214053D+00 0.7066186D+00 5 0.1151692D+00 0.1654119D+00 6 0.1654119D+00 0.5422466D+00 *** ISTEP = 2 Su matr. ( 6X 6) 1 2 3 4 1 0.1509250D+01 0.0000000D+00 0.0000000D+00 0.0000000D+00 2 0.1028535D+01 0.2648476D+00 0.0000000D+00 0.0000000D+00 3 -0.4479169D-01 0.5438558D-01 0.3209755D+00 0.0000000D+00 4 0.2051662D+00 0.3611828D+00 0.1509357D+00 -0.1667655D+00 5 -0.4592073D+00 -0.2608942D+00 -0.3265998D+00 -0.2396053D+00 6 0.2422058D+00 -0.2359756D+00 0.2792051D+00 0.2933618D+00 5 6 1 0.0000000D+00 0.0000000D+00 2 0.0000000D+00 0.0000000D+00 3 0.0000000D+00 0.0000000D+00 4 0.0000000D+00 0.0000000D+00 5 0.1248865D+00 0.0000000D+00 6 0.1325540D+00 -0.9864988D-04 Ku matr. ( 6X 2) 1 2 1 -0.2185942D+01 0.1045739D-01 2 -0.7867206D+00 -0.5015872D-01 3 -0.3920627D+00 0.1028564D+00 4 -0.1505459D+00 0.3143631D-04 5 0.2636031D+00 -0.4498072D-01 6 -0.1012425D+00 0.9800114D-01 U'SuSu'U ( 6X 6) 1 2 3 4 1 0.1330316D+01 0.5251988D+00 0.4620110D+00 0.1279880D+01 2 0.5251988D+00 0.5215331D+00 0.2511694D+00 0.7788723D+00 3 0.4620110D+00 0.2511694D+00 0.3249502D+00 0.4755661D+00 4 0.1279880D+01 0.7788723D+00 0.4755661D+00 0.1502098D+01 5 0.2228020D+00 0.2719514D+00 0.8775607D-01 0.3818548D+00 6 0.6996234D+00 0.3595680D+00 0.1267612D+00 0.7999878D+00 5 6 1 0.2228020D+00 0.6996234D+00 2 0.2719514D+00 0.3595680D+00 3 0.8775607D-01 0.1267612D+00 4 0.3818548D+00 0.7999878D+00 5 0.1588905D+00 0.2240887D+00 6 0.2240887D+00 0.6537501D+00 *** ISTEP = 3 Su matr. ( 6X 6) 1 2 3 4 1 0.1513045D+01 0.0000000D+00 0.0000000D+00 0.0000000D+00 2 0.1036342D+01 0.2789338D+00 0.0000000D+00 0.0000000D+00 3 -0.4444386D-01 0.6319867D-01 0.3251781D+00 0.0000000D+00 4 0.2097397D+00 0.3699629D+00 0.1503332D+00 -0.1731548D+00 5 -0.4596034D+00 -0.2352881D+00 -0.3086596D+00 -0.1971504D+00 6 0.2439566D+00 -0.2132917D+00 0.2854132D+00 0.3035185D+00 5 6 1 0.0000000D+00 0.0000000D+00 2 0.0000000D+00 0.0000000D+00 3 0.0000000D+00 0.0000000D+00 4 0.0000000D+00 0.0000000D+00 5 -0.2491755D+00 0.0000000D+00 6 -0.6822330D-01 -0.1241220D+00 Ku matr. ( 6X 2) 1 2 1 -0.2163711D+01 -0.7008579D-02 2 -0.7582881D+00 -0.7601443D-01 3 -0.3930339D+00 0.9937889D-01 4 -0.1392636D+00 -0.1409697D-01 5 0.2576544D+00 -0.4442942D-01 6 -0.9546321D-01 0.9064929D-01 U'SuSu'U ( 6X 6) 1 2 3 4 1 0.1336443D+01 0.5273198D+00 0.4630203D+00 0.1290080D+01 2 0.5273198D+00 0.5232849D+00 0.2500605D+00 0.7812362D+00 3 0.4630203D+00 0.2500605D+00 0.3325495D+00 0.4824935D+00 4 0.1290080D+01 0.7812362D+00 0.4824935D+00 0.1522808D+01 5 0.2228995D+00 0.2727956D+00 0.8402249D-01 0.3793561D+00 6 0.7056683D+00 0.3593035D+00 0.1371167D+00 0.8167559D+00 5 6 1 0.2228995D+00 0.7056683D+00 2 0.2727956D+00 0.3593035D+00 3 0.8402249D-01 0.1371167D+00 4 0.3793561D+00 0.8167559D+00 5 0.1607912D+00 0.2194102D+00 6 0.2194102D+00 0.6718702D+00 *** Output SRCFOB for MULTBQ=.FALSE. *** ISTEP = 1 Su matr. ( 6X 6) 1 2 3 4 1 0.1473197D+01 0.0000000D+00 0.0000000D+00 0.0000000D+00 2 0.9933841D+00 0.2313773D+00 0.0000000D+00 0.0000000D+00 3 0.4834992D-02 0.1668591D+00 -0.2217796D-02 0.0000000D+00 4 0.2047631D+00 0.3663481D+00 0.1559494D+00 0.0000000D+00 5 -0.4892480D+00 -0.3954030D+00 0.2080681D+00 0.0000000D+00 6 0.3063678D+00 -0.1337691D+00 -0.2990338D+00 0.0000000D+00 5 6 1 0.0000000D+00 0.0000000D+00 2 0.0000000D+00 0.0000000D+00 3 0.0000000D+00 0.0000000D+00 4 0.0000000D+00 0.0000000D+00 5 0.0000000D+00 0.0000000D+00 6 0.0000000D+00 0.0000000D+00 Ku matr. ( 6X 2) 1 2 1 0.0000000D+00 0.0000000D+00 2 0.0000000D+00 0.0000000D+00 3 0.0000000D+00 0.0000000D+00 4 0.0000000D+00 0.0000000D+00 5 0.0000000D+00 0.0000000D+00 6 0.0000000D+00 0.0000000D+00 U'SuSu'U ( 6X 6) 1 2 3 4 1 0.1315893D+01 0.5278403D+00 0.4434210D+00 0.1291052D+01 2 0.5278403D+00 0.4420836D+00 0.3172819D+00 0.7019898D+00 3 0.4434210D+00 0.3172819D+00 0.2499229D+00 0.5460763D+00 4 0.1291052D+01 0.7019898D+00 0.5460763D+00 0.1413847D+01 5 0.2272492D+00 0.2139188D+00 0.1378633D+00 0.3214053D+00 6 0.7163189D+00 0.2905672D+00 0.1937843D+00 0.7066186D+00 5 6 1 0.2272492D+00 0.7163189D+00 2 0.2139188D+00 0.2905672D+00 3 0.1378633D+00 0.1937843D+00 4 0.3214053D+00 0.7066186D+00 5 0.1151692D+00 0.1654119D+00 6 0.1654119D+00 0.5422466D+00 *** ISTEP = 2 Su matr. ( 6X 6) 1 2 3 4 1 0.1509250D+01 0.0000000D+00 0.0000000D+00 0.0000000D+00 2 0.1028535D+01 0.2648476D+00 0.0000000D+00 0.0000000D+00 3 -0.4479169D-01 0.5438558D-01 0.3209755D+00 0.0000000D+00 4 0.2051662D+00 0.3611828D+00 0.1509357D+00 -0.1667655D+00 5 -0.4592073D+00 -0.2608942D+00 -0.3265998D+00 -0.2396053D+00 6 0.2422058D+00 -0.2359756D+00 0.2792051D+00 0.2933618D+00 5 6 1 0.0000000D+00 0.0000000D+00 2 0.0000000D+00 0.0000000D+00 3 0.0000000D+00 0.0000000D+00 4 0.0000000D+00 0.0000000D+00 5 0.1248865D+00 0.0000000D+00 6 0.1325540D+00 -0.9864988D-04 Ku matr. ( 6X 2) 1 2 1 -0.2185942D+01 0.1045739D-01 2 -0.7867206D+00 -0.5015872D-01 3 -0.3920627D+00 0.1028564D+00 4 -0.1505459D+00 0.3143631D-04 5 0.2636031D+00 -0.4498072D-01 6 -0.1012425D+00 0.9800114D-01 U'SuSu'U ( 6X 6) 1 2 3 4 1 0.1330316D+01 0.5251988D+00 0.4620110D+00 0.1279880D+01 2 0.5251988D+00 0.5215331D+00 0.2511694D+00 0.7788723D+00 3 0.4620110D+00 0.2511694D+00 0.3249502D+00 0.4755661D+00 4 0.1279880D+01 0.7788723D+00 0.4755661D+00 0.1502098D+01 5 0.2228020D+00 0.2719514D+00 0.8775607D-01 0.3818548D+00 6 0.6996234D+00 0.3595680D+00 0.1267612D+00 0.7999878D+00 5 6 1 0.2228020D+00 0.6996234D+00 2 0.2719514D+00 0.3595680D+00 3 0.8775607D-01 0.1267612D+00 4 0.3818548D+00 0.7999878D+00 5 0.1588905D+00 0.2240887D+00 6 0.2240887D+00 0.6537501D+00 *** ISTEP = 3 Su matr. ( 6X 6) 1 2 3 4 1 0.1513045D+01 0.0000000D+00 0.0000000D+00 0.0000000D+00 2 0.1036342D+01 0.2789338D+00 0.0000000D+00 0.0000000D+00 3 -0.4444386D-01 0.6319867D-01 0.3251781D+00 0.0000000D+00 4 0.2097397D+00 0.3699629D+00 0.1503332D+00 -0.1731548D+00 5 -0.4596034D+00 -0.2352881D+00 -0.3086596D+00 -0.1971504D+00 6 0.2439566D+00 -0.2132917D+00 0.2854132D+00 0.3035185D+00 5 6 1 0.0000000D+00 0.0000000D+00 2 0.0000000D+00 0.0000000D+00 3 0.0000000D+00 0.0000000D+00 4 0.0000000D+00 0.0000000D+00 5 -0.2491755D+00 0.0000000D+00 6 -0.6822330D-01 -0.1241220D+00 Ku matr. ( 6X 2) 1 2 1 -0.2163711D+01 -0.7008579D-02 2 -0.7582881D+00 -0.7601443D-01 3 -0.3930339D+00 0.9937889D-01 4 -0.1392636D+00 -0.1409697D-01 5 0.2576544D+00 -0.4442942D-01 6 -0.9546321D-01 0.9064929D-01 U'SuSu'U ( 6X 6) 1 2 3 4 1 0.1336443D+01 0.5273198D+00 0.4630203D+00 0.1290080D+01 2 0.5273198D+00 0.5232849D+00 0.2500605D+00 0.7812362D+00 3 0.4630203D+00 0.2500605D+00 0.3325495D+00 0.4824935D+00 4 0.1290080D+01 0.7812362D+00 0.4824935D+00 0.1522808D+01 5 0.2228995D+00 0.2727956D+00 0.8402249D-01 0.3793561D+00 6 0.7056683D+00 0.3593035D+00 0.1371167D+00 0.8167559D+00 5 6 1 0.2228995D+00 0.7056683D+00 2 0.2727956D+00 0.3593035D+00 3 0.8402249D-01 0.1371167D+00 4 0.3793561D+00 0.8167559D+00 5 0.1607912D+00 0.2194102D+00 6 0.2194102D+00 0.6718702D+00 1*** In both these tests we start with Su=0 and perform three *** iterations of the filter. *** The ranks of Su in these three steps must be equal to *** M(=3), 2M(=6) and min(N,3M)(=6). *** K must be 0 in the first step and nonzero afterwards. *** The results for MULTBQ = .TRUE. and .FALSE. must be equal *** since we chose Q=I. *** The U'SuSu'U matrices are meant for comparison with *** SRCF. 1*** First example : Square root information filter with *** A, B, C in (upper) controller Hessenberg form *** and upper triangular Q, R. *** Input SRIFCO *** Input COHESS *** N = 6 M = 2 P = 2 *** UPPER = .TRUE. Ainv ( 6X 6) 1 2 3 4 1 0.2113249D+00 0.7560439D+00 0.2211346D-03 0.3303271D+00 2 0.8497452D+00 0.6857310D+00 0.8782165D+00 0.6837404D-01 3 0.7263507D+00 0.1985144D+00 0.5442573D+00 0.2320748D+00 4 0.8833888D+00 0.6525135D+00 0.3076091D+00 0.9329616D+00 5 0.3616361D+00 0.2922267D+00 0.5664249D+00 0.4826472D+00 6 0.5015342D+00 0.4368588D+00 0.2693125D+00 0.6325745D+00 5 6 1 0.6653811D+00 0.6283918D+00 2 0.5608486D+00 0.6623569D+00 3 0.2312237D+00 0.2164633D+00 4 0.2146008D+00 0.3126420D+00 5 0.3321719D+00 0.5935095D+00 6 0.4051954D+00 0.9184708D+00 AinvB ( 6X 2) 1 2 1 -0.8805479D+00 0.5207521D+00 2 -0.6075187D+00 0.1168888D+01 3 0.1325720D+01 -0.1693905D+00 4 0.1038693D+01 -0.2305789D+00 5 0.2103993D+01 -0.1115921D+01 6 -0.8531301D+00 0.6597089D+00 C matrix ( 2X 6) 1 2 3 4 1 0.4373343D-01 0.4818509D+00 0.2639556D+00 0.4148104D+00 2 0.7783129D+00 0.2119030D+00 0.1121355D+00 0.6856896D+00 5 6 1 0.2806498D+00 0.1280058D+00 2 0.1531217D+00 0.6970851D+00 *** Output COHESS Ainvu ( 6X 6) 1 2 3 4 1 0.2008873D+00 -0.4245205D+00 -0.2097518D+00 -0.3048541D+00 2 -0.3163469D+00 0.1677275D+01 0.1466019D+01 0.1811058D+00 3 -0.3222207D+00 0.1153122D+01 0.9599862D+00 0.4765324D+00 4 0.0000000D+00 0.6345976D+00 0.4285850D+00 0.7299071D+00 5 0.0000000D+00 0.0000000D+00 -0.1809051D+00 -0.2320514D+00 6 0.0000000D+00 0.0000000D+00 0.0000000D+00 -0.2239701D+00 5 6 1 0.3711037D+00 -0.4634347D+00 2 -0.6791964D+00 0.2697618D+00 3 -0.7025880D-01 -0.5388063D+00 4 0.2432710D+00 0.2488519D+00 5 -0.4329501D-01 0.2608173D-01 6 0.4072138D+00 0.1001569D+00 AinvBu ( 6X 2) 1 2 1 0.3022495D+01 -0.1503209D+01 2 0.0000000D+00 -0.1067802D+01 3 0.0000000D+00 0.0000000D+00 4 0.0000000D+00 0.0000000D+00 5 0.0000000D+00 0.0000000D+00 6 0.0000000D+00 0.0000000D+00 Cu matr. ( 2X 6) 1 2 3 4 1 0.3079669D+00 -0.6366799D+00 -0.1717533D+00 -0.1589127D+00 2 -0.7468438D-01 -0.6111938D+00 -0.7937632D+00 -0.7348406D+00 5 6 1 -0.1254464D+00 0.1699368D-01 2 0.2759580D+00 -0.1321099D+00 Sinvu ( 6X 6) 1 2 3 4 1 0.1000000D+01 0.0000000D+00 0.0000000D+00 0.0000000D+00 2 0.0000000D+00 0.1000000D+01 0.0000000D+00 0.0000000D+00 3 0.0000000D+00 0.0000000D+00 0.1000000D+01 0.0000000D+00 4 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.1000000D+01 5 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 6 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 5 6 1 0.0000000D+00 0.0000000D+00 2 0.0000000D+00 0.0000000D+00 3 0.0000000D+00 0.0000000D+00 4 0.0000000D+00 0.0000000D+00 5 0.1000000D+01 0.0000000D+00 6 0.0000000D+00 0.1000000D+01 *** Additional input to SRIFCO QINV ( 2X 2) 1 2 1 0.8813348D-01 0.4498763D+00 2 0.0000000D+00 0.7227253D+00 RINV ( 2X 2) 1 2 1 0.1000000D+01 0.0000000D+00 2 0.0000000D+00 0.1000000D+01 Z vector ( 2X 1) 1 1 0.1964506D-02 2 0.5075221D+00 XU vect. ( 6X 1) 1 1 0.2364137D+00 2 -0.1298232D+01 3 -0.4510789D+00 4 -0.6043419D+00 5 0.5162359D-01 6 -0.5897994D-01 Y vector ( 2X 1) 1 1 0.4304966D+00 2 0.2280548D-01 *** Output SRIFCO MULTRC=.TRUE. *** ISTEP = 1 Sinvu ( 6X 6) 1 2 3 4 1 -0.4954922D+00 0.1491544D+01 0.9934062D+00 0.3466117D+00 2 0.0000000D+00 0.1195245D+01 0.1244657D+01 0.9813114D+00 3 0.0000000D+00 0.0000000D+00 0.3606548D+00 -0.8937117D-01 4 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.5934144D+00 5 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 6 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 5 6 1 -0.1046015D+00 -0.3082552D+00 2 -0.2715828D+00 0.2137206D+00 3 -0.3232653D+00 -0.3001329D+00 4 0.1722770D+00 -0.1986063D+00 5 -0.5425369D+00 0.2697796D-01 6 0.0000000D+00 -0.3757088D+00 X vector ( 6X 1) 1 1 -0.1274126D+00 2 0.5536566D+00 3 0.3481973D+00 4 0.5286097D+00 5 -0.9193801D-02 6 -0.3619102D+00 Sin'Sin ( 6X 6) 1 2 3 4 1 0.1714490D+01 0.1179989D+01 0.7484713D+00 0.1492071D+01 2 0.1179989D+01 0.1510285D+01 0.7211262D+00 0.1389401D+01 3 0.7484713D+00 0.7211262D+00 0.7282816D+00 0.5331254D+00 4 0.1492071D+01 0.1389401D+01 0.5331254D+00 0.1918910D+01 5 0.8377470D+00 0.1092735D+01 0.6115677D+00 0.9187512D+00 6 0.1575671D+01 0.1424504D+01 0.8798712D+00 0.1673648D+01 5 6 1 0.8377470D+00 0.1575671D+01 2 0.1092735D+01 0.1424504D+01 3 0.6115677D+00 0.8798712D+00 4 0.9187512D+00 0.1673648D+01 5 0.9072298D+00 0.1207340D+01 6 0.1207340D+01 0.2154303D+01 *** ISTEP = 2 Sinvu ( 6X 6) 1 2 3 4 1 -0.5600042D+00 0.2189154D+01 0.1616731D+01 0.7341513D+00 2 0.0000000D+00 0.1268891D+01 0.1396050D+01 0.9516494D+00 3 0.0000000D+00 0.0000000D+00 -0.2730230D+00 0.5158834D-01 4 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.3847519D+00 5 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 6 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 5 6 1 -0.1987942D+00 -0.1150981D+00 2 -0.3759302D+00 0.1400333D+00 3 0.2030325D+00 0.2147795D+00 4 -0.2120656D-01 -0.3697130D-01 5 0.1968868D+00 0.7024610D-01 6 0.0000000D+00 0.1365539D+00 X vector ( 6X 1) 1 1 0.5520679D+00 2 -0.1257842D+01 3 0.1402490D+01 4 0.1279330D+01 5 0.1134170D+01 6 -0.2059006D+01 Sin'Sin ( 6X 6) 1 2 3 4 1 0.2806785D+01 0.2396039D+01 0.1379941D+01 0.2596905D+01 2 0.2396039D+01 0.2517363D+01 0.1446374D+01 0.2387129D+01 3 0.1379941D+01 0.1446374D+01 0.8766829D+00 0.1343175D+01 4 0.2596905D+01 0.2387129D+01 0.1343175D+01 0.2626034D+01 5 0.1767717D+01 0.1830545D+01 0.1081612D+01 0.1713753D+01 6 0.2869676D+01 0.2544845D+01 0.1511130D+01 0.2715773D+01 5 6 1 0.1767717D+01 0.2869676D+01 2 0.1830545D+01 0.2544845D+01 3 0.1081612D+01 0.1511130D+01 4 0.1713753D+01 0.2715773D+01 5 0.1384126D+01 0.1939020D+01 6 0.1939020D+01 0.3102934D+01 *** ISTEP = 3 Sinvu ( 6X 6) 1 2 3 4 1 -0.5727249D+00 0.2252770D+01 0.1678496D+01 0.7472376D+00 2 0.0000000D+00 0.1223992D+01 0.1402922D+01 0.9061091D+00 3 0.0000000D+00 0.0000000D+00 -0.1691888D+00 0.1156678D+00 4 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.3032936D+00 5 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 6 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 5 6 1 -0.2228587D+00 -0.1224291D+00 2 -0.4055155D+00 0.9745773D-01 3 0.1890428D+00 0.1886359D+00 4 -0.2190216D-01 -0.2409197D-01 5 0.8434041D-01 -0.3608466D-01 6 0.0000000D+00 0.8033827D-01 X vector ( 6X 1) 1 1 0.2315943D+01 2 -0.6344640D+01 3 0.3674095D+00 4 0.3464291D+01 5 0.9289437D+01 6 -0.6222618D+01 Sin'Sin ( 6X 6) 1 2 3 4 1 0.2845387D+01 0.2445634D+01 0.1453194D+01 0.2581864D+01 2 0.2445634D+01 0.2564556D+01 0.1522925D+01 0.2393434D+01 3 0.1453194D+01 0.1522925D+01 0.9288272D+00 0.1393814D+01 4 0.2581864D+01 0.2393434D+01 0.1393814D+01 0.2523690D+01 5 0.1857170D+01 0.1917774D+01 0.1158272D+01 0.1778605D+01 6 0.2970545D+01 0.2662904D+01 0.1604467D+01 0.2741235D+01 5 6 1 0.1857170D+01 0.2970545D+01 2 0.1917774D+01 0.2662904D+01 3 0.1158272D+01 0.1604467D+01 4 0.1778605D+01 0.2741235D+01 5 0.1460172D+01 0.2050080D+01 6 0.2050080D+01 0.3203283D+01 *** ISTEP = 4 Sinvu ( 6X 6) 1 2 3 4 1 -0.5728085D+00 0.2248477D+01 0.1676872D+01 0.7430241D+00 2 0.0000000D+00 0.1211081D+01 0.1398611D+01 0.8950997D+00 3 0.0000000D+00 0.0000000D+00 -0.1533516D+00 0.1371711D+00 4 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.2578394D+00 5 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 6 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 5 6 1 -0.2255999D+00 -0.1242387D+00 2 -0.4131405D+00 0.8473244D-01 3 0.1745024D+00 0.1684401D+00 4 -0.3799774D-01 0.1555136D-02 5 0.6998405D-01 -0.2422438D-01 6 0.0000000D+00 0.5378133D-01 X vector ( 6X 1) 1 1 0.4516508D+01 2 -0.1027816D+02 3 -0.5650702D+00 4 0.5048174D+01 5 0.1620299D+02 6 -0.1035923D+02 Sin'Sin ( 6X 6) 1 2 3 4 1 0.2812466D+01 0.2418079D+01 0.1448061D+01 0.2546146D+01 2 0.2418079D+01 0.2538357D+01 0.1517679D+01 0.2362428D+01 3 0.1448061D+01 0.1517679D+01 0.9277794D+00 0.1392069D+01 4 0.2546146D+01 0.2362428D+01 0.1392069D+01 0.2466339D+01 5 0.1850907D+01 0.1910269D+01 0.1159255D+01 0.1767893D+01 6 0.2961227D+01 0.2652733D+01 0.1609743D+01 0.2711900D+01 5 6 1 0.1850907D+01 0.2961227D+01 2 0.1910269D+01 0.2652733D+01 3 0.1159255D+01 0.1609743D+01 4 0.1767893D+01 0.2711900D+01 5 0.1459398D+01 0.2048311D+01 6 0.2048311D+01 0.3189095D+01 1*** In both these tests we start with Sinvu=I and perform *** four iterations of the filter. *** The Sinv'Sinv matrices and X vectors are meant for *** comparison with SRIF. 1*** Second example : Square root information filter with *** A, B, C in (upper) controller Hessenberg form *** and upper triangular Q, R. *** Input SRIFCO *** Input COHESS *** N = 6 M = 2 P = 3 *** UPPER = .TRUE. Ainv ( 6X 6) 1 2 3 4 1 0.2113249D+00 0.7560439D+00 0.2211346D-03 0.3303271D+00 2 0.8497452D+00 0.6857310D+00 0.8782165D+00 0.6837404D-01 3 0.7263507D+00 0.1985144D+00 0.5442573D+00 0.2320748D+00 4 0.8833888D+00 0.6525135D+00 0.3076091D+00 0.9329616D+00 5 0.3616361D+00 0.2922267D+00 0.5664249D+00 0.4826472D+00 6 0.5015342D+00 0.4368588D+00 0.2693125D+00 0.6325745D+00 5 6 1 0.6653811D+00 0.6283918D+00 2 0.5608486D+00 0.6623569D+00 3 0.2312237D+00 0.2164633D+00 4 0.2146008D+00 0.3126420D+00 5 0.3321719D+00 0.5935095D+00 6 0.4051954D+00 0.9184708D+00 AinvB ( 6X 2) 1 2 1 -0.8805479D+00 0.5207521D+00 2 -0.6075187D+00 0.1168888D+01 3 0.1325720D+01 -0.1693905D+00 4 0.1038693D+01 -0.2305789D+00 5 0.2103993D+01 -0.1115921D+01 6 -0.8531301D+00 0.6597089D+00 C matrix ( 3X 6) 1 2 3 4 1 0.4373343D-01 0.4818509D+00 0.2639556D+00 0.4148104D+00 2 0.7783129D+00 0.2119030D+00 0.1121355D+00 0.6856896D+00 3 0.8415518D+00 0.4062025D+00 0.4094825D+00 0.8784126D+00 5 6 1 0.2806498D+00 0.1280058D+00 2 0.1531217D+00 0.6970851D+00 3 0.1138360D+00 0.1998338D+00 *** Output COHESS Ainvu ( 6X 6) 1 2 3 4 1 0.2008873D+00 -0.4245205D+00 -0.2097518D+00 -0.3048541D+00 2 -0.3163469D+00 0.1677275D+01 0.1466019D+01 0.1811058D+00 3 -0.3222207D+00 0.1153122D+01 0.9599862D+00 0.4765324D+00 4 0.0000000D+00 0.6345976D+00 0.4285850D+00 0.7299071D+00 5 0.0000000D+00 0.0000000D+00 -0.1809051D+00 -0.2320514D+00 6 0.0000000D+00 0.0000000D+00 0.0000000D+00 -0.2239701D+00 5 6 1 0.3711037D+00 -0.4634347D+00 2 -0.6791964D+00 0.2697618D+00 3 -0.7025880D-01 -0.5388063D+00 4 0.2432710D+00 0.2488519D+00 5 -0.4329501D-01 0.2608173D-01 6 0.4072138D+00 0.1001569D+00 AinvBu ( 6X 2) 1 2 1 0.3022495D+01 -0.1503209D+01 2 0.0000000D+00 -0.1067802D+01 3 0.0000000D+00 0.0000000D+00 4 0.0000000D+00 0.0000000D+00 5 0.0000000D+00 0.0000000D+00 6 0.0000000D+00 0.0000000D+00 Cu matr. ( 3X 6) 1 2 3 4 1 0.3079669D+00 -0.6366799D+00 -0.1717533D+00 -0.1589127D+00 2 -0.7468438D-01 -0.6111938D+00 -0.7937632D+00 -0.7348406D+00 3 0.1774969D+00 -0.8547973D+00 -0.5709496D+00 -0.6186294D+00 5 6 1 -0.1254464D+00 0.1699368D-01 2 0.2759580D+00 -0.1321099D+00 3 0.1794903D+00 -0.6019142D+00 Sinvu ( 6X 6) 1 2 3 4 1 0.1000000D+01 0.0000000D+00 0.0000000D+00 0.0000000D+00 2 0.0000000D+00 0.1000000D+01 0.0000000D+00 0.0000000D+00 3 0.0000000D+00 0.0000000D+00 0.1000000D+01 0.0000000D+00 4 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.1000000D+01 5 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 6 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 5 6 1 0.0000000D+00 0.0000000D+00 2 0.0000000D+00 0.0000000D+00 3 0.0000000D+00 0.0000000D+00 4 0.0000000D+00 0.0000000D+00 5 0.1000000D+01 0.0000000D+00 6 0.0000000D+00 0.1000000D+01 *** Additional input to SRIFCO QINV ( 2X 2) 1 2 1 0.8813348D-01 0.4498763D+00 2 0.0000000D+00 0.7227253D+00 RINV ( 3X 3) 1 2 3 1 0.1000000D+01 0.0000000D+00 0.0000000D+00 2 0.0000000D+00 0.1000000D+01 0.0000000D+00 3 0.0000000D+00 0.0000000D+00 0.1000000D+01 Z vector ( 2X 1) 1 1 0.1964506D-02 2 0.5075221D+00 XU vect. ( 6X 1) 1 1 0.9726275D+00 2 -0.8550479D+00 3 -0.5702739D+00 4 -0.2509331D-01 5 0.2138843D+00 6 0.1132806D-01 Y vector ( 3X 1) 1 1 0.5591451D+00 2 0.4304966D+00 3 0.2280548D-01 *** Output SRIFCO MULTRC=.TRUE. *** ISTEP = 1 Sinvu ( 6X 6) 1 2 3 4 1 -0.5263247D+00 0.1692439D+01 0.1127758D+01 0.5349325D+00 2 0.0000000D+00 0.1232738D+01 0.1256361D+01 0.1065398D+01 3 0.0000000D+00 0.0000000D+00 -0.3765657D+00 0.1463274D+00 4 0.0000000D+00 0.0000000D+00 0.0000000D+00 -0.6191167D+00 5 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 6 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 5 6 1 -0.1590049D+00 -0.8720884D-01 2 -0.2960462D+00 0.3713540D+00 3 0.2914402D+00 0.4594150D+00 4 -0.1213648D+00 0.5169148D-01 5 0.5769305D+00 -0.2031667D+00 6 0.0000000D+00 0.6114634D+00 X vector ( 6X 1) 1 1 -0.2569291D+00 2 -0.7735836D+00 3 0.9761830D-01 4 0.5768679D+00 5 0.1493255D+01 6 -0.1070294D+00 Sin'Sin ( 6X 6) 1 2 3 4 1 0.2422699D+01 0.1521830D+01 0.1093072D+01 0.2231301D+01 2 0.1521830D+01 0.1675285D+01 0.8874590D+00 0.1746214D+01 3 0.1093072D+01 0.8874590D+00 0.8959575D+00 0.8928200D+00 4 0.2231301D+01 0.1746214D+01 0.8928200D+00 0.2690518D+01 5 0.9335458D+00 0.1138976D+01 0.6581816D+00 0.1018746D+01 6 0.1743842D+01 0.1505677D+01 0.9616997D+00 0.1849185D+01 5 6 1 0.9335458D+00 0.1743842D+01 2 0.1138976D+01 0.1505677D+01 3 0.6581816D+00 0.9616997D+00 4 0.1018746D+01 0.1849185D+01 5 0.9201884D+00 0.1230088D+01 6 0.1230088D+01 0.2194236D+01 *** ISTEP = 2 Sinvu ( 6X 6) 1 2 3 4 1 -0.5881623D+00 0.2358934D+01 0.1725129D+01 0.8909403D+00 2 0.0000000D+00 0.1297859D+01 0.1404894D+01 0.9850048D+00 3 0.0000000D+00 0.0000000D+00 -0.2998004D+00 0.1218702D+00 4 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.4590046D+00 5 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 6 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 5 6 1 -0.2307777D+00 0.8009653D-01 2 -0.3336009D+00 0.2367807D+00 3 0.2189869D+00 0.4366601D+00 4 -0.1678586D+00 0.1696023D+00 5 0.3465299D+00 -0.1896643D-01 6 0.0000000D+00 0.4593957D+00 X vector ( 6X 1) 1 1 -0.1456113D+01 2 -0.4309217D-01 3 0.5894792D-01 4 0.1416551D+01 5 -0.8426659D+00 6 0.7265106D+00 Sin'Sin ( 6X 6) 1 2 3 4 1 0.3580686D+01 0.2832780D+01 0.1706668D+01 0.3400289D+01 2 0.2832780D+01 0.2819464D+01 0.1586885D+01 0.2836624D+01 3 0.1706668D+01 0.1586885D+01 0.1049222D+01 0.1685414D+01 4 0.3400289D+01 0.2836624D+01 0.1685414D+01 0.3460296D+01 5 0.1906616D+01 0.1939049D+01 0.1116499D+01 0.1855839D+01 6 0.3033008D+01 0.2619028D+01 0.1594275D+01 0.2886584D+01 5 6 1 0.1906616D+01 0.3033008D+01 2 0.1939049D+01 0.2619028D+01 3 0.1116499D+01 0.1594275D+01 4 0.1855839D+01 0.2886584D+01 5 0.1425362D+01 0.1958594D+01 6 0.1958594D+01 0.3143224D+01 *** ISTEP = 3 Sinvu ( 6X 6) 1 2 3 4 1 -0.6001270D+00 0.2404979D+01 0.1770721D+01 0.8902379D+00 2 0.0000000D+00 0.1250899D+01 0.1406348D+01 0.9464549D+00 3 0.0000000D+00 0.0000000D+00 -0.2239961D+00 0.1785637D+00 4 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.4119673D+00 5 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 6 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 5 6 1 -0.2683656D+00 0.6074122D-01 2 -0.3617494D+00 0.1976607D+00 3 0.2270893D+00 0.5170292D+00 4 -0.1581758D+00 0.1487360D+00 5 0.3033280D+00 -0.1437781D+00 6 0.0000000D+00 0.3296338D+00 X vector ( 6X 1) 1 1 -0.2360051D+01 2 0.5336696D+01 3 -0.2252791D+00 4 0.4210842D+00 5 -0.8901653D+01 6 0.3138066D+01 Sin'Sin ( 6X 6) 1 2 3 4 1 0.3582605D+01 0.2835907D+01 0.1777583D+01 0.3350927D+01 2 0.2835907D+01 0.2812484D+01 0.1660539D+01 0.2795164D+01 3 0.1777583D+01 0.1660539D+01 0.1122809D+01 0.1720830D+01 4 0.3350927D+01 0.2795164D+01 0.1720830D+01 0.3337550D+01 5 0.1969028D+01 0.1992116D+01 0.1196833D+01 0.1892063D+01 6 0.3118870D+01 0.2710456D+01 0.1698934D+01 0.2897519D+01 5 6 1 0.1969028D+01 0.3118870D+01 2 0.1992116D+01 0.2710456D+01 3 0.1196833D+01 0.1698934D+01 4 0.1892063D+01 0.2897519D+01 5 0.1482826D+01 0.2061537D+01 6 0.2061537D+01 0.3256908D+01 *** ISTEP = 4 Sinvu ( 6X 6) 1 2 3 4 1 -0.6000943D+00 0.2402587D+01 0.1770673D+01 0.8908128D+00 2 0.0000000D+00 0.1242993D+01 0.1402091D+01 0.9396790D+00 3 0.0000000D+00 0.0000000D+00 -0.2222093D+00 0.1837065D+00 4 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.3882191D+00 5 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 6 0.0000000D+00 0.0000000D+00 0.0000000D+00 0.0000000D+00 5 6 1 -0.2706509D+00 0.5917622D-01 2 -0.3631891D+00 0.1897784D+00 3 0.2324745D+00 0.5126829D+00 4 -0.1797033D+00 0.1682731D+00 5 0.2886708D+00 -0.1336111D+00 6 0.0000000D+00 0.3205551D+00 X vector ( 6X 1) 1 1 -0.2525420D+01 2 0.9904315D+01 3 0.1568047D+00 4 -0.1263859D+01 5 -0.1548146D+02 6 0.4935227D+01 Sin'Sin ( 6X 6) 1 2 3 4 1 0.3558236D+01 0.2817693D+01 0.1771960D+01 0.3329810D+01 2 0.2817693D+01 0.2796224D+01 0.1653642D+01 0.2780394D+01 3 0.1771960D+01 0.1653642D+01 0.1119838D+01 0.1720891D+01 4 0.3329810D+01 0.2780394D+01 0.1720891D+01 0.3304554D+01 5 0.1965507D+01 0.1986326D+01 0.1196543D+01 0.1888306D+01 6 0.3115443D+01 0.2704655D+01 0.1704280D+01 0.2882543D+01 5 6 1 0.1965507D+01 0.3115443D+01 2 0.1986326D+01 0.2704655D+01 3 0.1196543D+01 0.1704280D+01 4 0.1888306D+01 0.2882543D+01 5 0.1482010D+01 0.2062778D+01 6 0.2062778D+01 0.3254345D+01 1*** In both these tests we start with Sinvu=I and perform *** four iterations of the filter. *** The Sinv'Sinv matrices and X vectors are meant for *** comparison with SRIF.