*-- Author : S.Burke DOUBLE PRECISION FUNCTION FKCHXY(XY,CXY,SVEC,CVEC,IERR) *-----------------------------------------Updates 27/07/93------- **: FKCHXY 30907 SB. Function now (correctly) double precision. ********************************************************************** * * * Calculate (filtered/smoothed) chi-squared for an x-y measurement * * * * ERROR CONDITIONS; * * IERR = 0 ; normal termination * * -> IERR = 112 ; CRES not positive definite * * * * -> Fatal error * * * ********************************************************************** IMPLICIT DOUBLE PRECISION (A-H,O-Z) PARAMETER (IUTIL=1,IROUT=10) *KEEP,FKECODE. PARAMETER (IWARN=0,IFATAL=1,IFPRO=2,IFFLT=3,IFSMO=4,IFPRS=5, & IFPAS=6,IFPAF=7) PARAMETER (IINF1=1,IINF2=2,IINF3=3,IINV=4,IDONE=5) PARAMETER (IICV=6,IMCV=7,IOCV=11,IRCV=12,IOVCV=13, & ITHGP2=16,ITHG1=17) PARAMETER (IFREE=20,IFREE1=30,IFREE2=40,IFREE3=50) *KEND. DIMENSION XY(2),CXY(2,2),SVEC(5),CVEC(5,5) ********************************************************************** IERR=0 * Calculate the residuals and covariance ... R1 = XY(1) - SVEC(1) R2 = XY(2) - SVEC(2) C11 = CXY(1,1) - CVEC(1,1) C21 = CXY(2,1) - CVEC(2,1) C22 = CXY(2,2) - CVEC(2,2) * ... and the chi-squared DET = C11*C22 - C21*C21 IF (C11.LE.0.D0 .OR. DET.LE.0.D0) THEN FKCHXY = 0.D0 CALL FKERR(IUTIL,IROUT,IFATAL,IRCV,IERR) RETURN ENDIF FKCHXY = (R1*(C22*R1 - 2*C21*R2) + C11*R2*R2)/DET RETURN END *