* G02BTF Example Program Text * Mark 14 Release. NAG Copyright 1989. * .. Parameters .. INTEGER NIN, NOUT PARAMETER (NIN=5,NOUT=6) INTEGER INCX, MMAX, MP PARAMETER (INCX=1,MMAX=18,MP=(MMAX*(MMAX+1))/2) DOUBLE PRECISION ONE PARAMETER (ONE=1.0D0) * .. Local Scalars .. DOUBLE PRECISION ALPHA, SW, WT INTEGER I, IFAIL, J, M, MM, N, NPRINT CHARACTER MEAN * .. Local Arrays .. DOUBLE PRECISION C(MP), V(MP), X(MMAX*INCX), XBAR(MMAX) * .. External Subroutines .. EXTERNAL F06FDF, G02BTF, X04CCF * .. Intrinsic Functions .. INTRINSIC MOD * .. Executable Statements .. WRITE (NOUT,*) 'G02BTF Example Program Results' * Skip heading in data file READ (NIN,*) READ (NIN,*,END=40) MEAN, M, N, NPRINT SW = 0.0D0 IF (M.LT.MMAX) THEN DO 20 I = 1, N READ (NIN,*) WT, (X(J),J=1,M) IFAIL = 1 * * Calculate the sums of squares and cross-products matrix CALL G02BTF(MEAN,M,WT,X,INCX,SW,XBAR,C,IFAIL) IF (IFAIL.EQ.0) THEN * IF (MOD(I,NPRINT).EQ.0 .OR. I.EQ.N) THEN WRITE (NOUT,*) WRITE (NOUT,*) + '---------------------------------------------' WRITE (NOUT,99999) 'Observation: ', I, + ' Weight = ', WT WRITE (NOUT,*) + '---------------------------------------------' WRITE (NOUT,*) WRITE (NOUT,*) 'Means' WRITE (NOUT,99998) (XBAR(J),J=1,M) WRITE (NOUT,*) * Print the sums of squares and cross products matrix CALL X04CCF('Upper','Non-unit',M,C, + 'Sums of squares and cross-products', + IFAIL) IF (SW.GT.ONE) THEN * Calculate the variance matrix ALPHA = ONE/(SW-ONE) MM = (M*(M+1))/2 CALL F06FDF(MM,ALPHA,C,1,V,1) * Print the variance matrix WRITE (NOUT,*) CALL X04CCF('Upper','Non-unit',M,V, + 'Variance matrix',IFAIL) END IF END IF ELSE WRITE (NOUT,*) WRITE (NOUT,99997) ' ** G02BTF returned with IFAIL = ', + IFAIL GO TO 40 END IF 20 CONTINUE ELSE WRITE (NOUT,99997) 'M is too large. M =', M END IF 40 CONTINUE * 99999 FORMAT (1X,A,I4,A,F13.4) 99998 FORMAT (1X,4F14.4) 99997 FORMAT (1X,A,I5) END