LOGICAL FUNCTION ACCURA ( ITYPE, IVEL, TOL, D, DM ) C C$ Abstract C Check if accuracy of approximation is better or equal C to the given tolerance C C$ Declarations C IMPLICIT NONE INCLUDE 'ckparam.inc' INTEGER ITYPE ( * ) INTEGER IVEL DOUBLE PRECISION TOL ( * ) DOUBLE PRECISION D ( QAVSIZ, * ) DOUBLE PRECISION DM ( QAVSIZ, * ) C$ Detailed_Input C C ITYPE array of criterias for each parameter: C ITYPE = 1 mean root deviations C ITYPE = 2 module of maximum deviation C TOL vector of tolerance (for each component) C D array with mean root deviations C DM array with modules of maximum deviations C IVEL flag if andular velocities are included C (IVEL = 1) or not (IVEL = 0) C C$ Detailed_Output C C ACCURA .TRUE. IF D(I) OR DM(I) LESS OR EQUAL TO TOL(I) C FOR ALL I C C$ Local Parameters C C Parameters from 'ckparam.inc' C C CK4MXD Max degree of Chebyshev polynomials. C C QSIZ count of the quaternion components. C C QAVSIZ count of the quaternion and angular rate C components together. C C C Local parameters. C C NCOEFF Max number of coefficients in each polynomial. C C INTEGER NCOEFF PARAMETER ( NCOEFF = CK4MXD + 1 ) C C Local variables. C DOUBLE PRECISION DEV ( QAVSIZ ) INTEGER NPAR INTEGER I LOGICAL RETURN IF ( RETURN () ) THEN RETURN ELSE CALL CHKIN ( 'ACCURA' ) END IF ACCURA = .TRUE. C C Determine number of parameters (QAVSIZ if angular velocities are C included or QSIZ if not included) C IF ( IVEL .EQ. 1 ) THEN NPAR = QAVSIZ ELSE NPAR = QSIZ END IF C C Selection of deviations by taking into account type of the C criterion for each parameter C DO I = 1, NPAR IF ( ITYPE( I ) .EQ. 1 ) THEN DEV( I ) = D( I, NCOEFF ) ELSE IF ( ITYPE( I ) .EQ. 2 ) THEN DEV(I) = DM(I, NCOEFF ) END IF END IF END DO DO I = 1, NPAR IF ( DEV( I ) .GT. TOL( I ) ) THEN ACCURA = .FALSE. CALL CHKOUT ( 'ACCURA' ) RETURN END IF END DO CALL CHKOUT ( 'ACCURA' ) RETURN END