*DECK DPCHQ1 SUBROUTINE DPCHQ1 (LUN, KPRINT, IPASS) C***BEGIN PROLOGUE DPCHQ1 C***PURPOSE Test the PCHIP evaluators DCHFDV, DCHFEV, DPCHFD, DPCHFE. C***LIBRARY SLATEC (PCHIP) C***TYPE DOUBLE PRECISION (PCHQK1-S, DPCHQ1-D) C***KEYWORDS PCHIP EVALUATOR QUICK CHECK C***AUTHOR Fritsch, F. N., (LLNL) C***DESCRIPTION C C DPCHIP QUICK CHECK NUMBER 1 C C TESTS THE EVALUATORS: DCHFDV, DCHFEV, DPCHFD, DPCHFE. C *Usage: C C INTEGER LUN, KPRINT, IPASS C C CALL DPCHQ1 (LUN, KPRINT, IPASS) C C *Arguments: C C LUN :IN is the unit number to which output is to be written. C C KPRINT:IN controls the amount of output, as specified in the C SLATEC Guidelines. C C IPASS:OUT will contain a pass/fail flag. IPASS=1 is good. C IPASS=0 indicates one or more tests failed. C C *Description: C C This routine carries out three tests of the PCH evaluators: C DEVCHK tests the single-cubic evaluators. C DEVPCK tests the full PCH evaluators. C DEVERK exercises the error returns in all evaluators. C C***ROUTINES CALLED DEVCHK, DEVERK, DEVPCK C***REVISION HISTORY (YYMMDD) C 820601 DATE WRITTEN C 890306 Changed IPASS to the more accurate name IFAIL. (FNF) C 890307 Removed conditional on call to DEVERK. C 890706 Cosmetic changes to prologue. (WRB) C 891004 Correction in prologue. (WRB) C 891214 Prologue converted to Version 4.0 format. (BAB) C 900309 Added DEVERK to list of routines called. (FNF) C 900314 Improved some output formats. C 900315 Revised prologue and improved some output formats. (FNF) C 900316 Additional minor cosmetic changes. (FNF) C 900321 Removed IFAIL from call sequence for SLATEC standards and C made miscellaneous cosmetic changes. (FNF) C 930317 Improved output formats. (FNF) C***END PROLOGUE DPCHQ1 C C Declare arguments. C INTEGER LUN, KPRINT, IPASS C C DECLARE LOCAL VARIABLES. C INTEGER I1, I2, I3, I4, I5, I6, I7, I8, I9, IFAIL, NPTS DOUBLE PRECISION WORK (4000) LOGICAL FAIL C C***FIRST EXECUTABLE STATEMENT DPCHQ1 IF (KPRINT .GE. 2) WRITE (LUN, 1000) KPRINT C C TEST DCHFDV AND DCHFEV. C IFAIL = 0 NPTS = 1000 I1 = 1 + NPTS I2 = I1 + NPTS I3 = I2 + NPTS CALL DEVCHK (LUN, KPRINT, NPTS, WORK(1), WORK(I1), WORK(I2), * WORK(I3), FAIL) IF (FAIL) IFAIL = IFAIL + 1 C C TEST DPCHFD AND DPCHFE. C I1 = 1 + 10 I2 = I1 + 10 I3 = I2 + 100 I4 = I3 + 100 I5 = I4 + 100 I6 = I5 + 51 I7 = I6 + 51 I8 = I7 + 51 I9 = I8 + 51 CALL DEVPCK (LUN, KPRINT, WORK(1), WORK(I1), WORK(I2), WORK(I3), * WORK(I4), WORK(I5), WORK(I6), WORK(I7), WORK(I8), * WORK(I9), FAIL) IF (FAIL) IFAIL = IFAIL + 2 C C TEST ERROR RETURNS. C CALL DEVERK (LUN, KPRINT, FAIL) IF (FAIL) IFAIL = IFAIL + 4 C C PRINT SUMMARY AND TERMINATE. C At this point, IFAIL has the following value: C IFAIL = 0 IF ALL TESTS PASSED. C IFAIL BETWEEN 1 AND 7 IS THE SUM OF: C IFAIL=1 IF SINGLE CUBIC TEST FAILED. (SEE DEVCHK OUTPUT.) C IFAIL=2 IF DPCHFD/DPCHFE TEST FAILED. (SEE DEVPCK OUTPUT.) C IFAIL=4 IF ERROR RETURN TEST FAILED. (SEE DEVERK OUTPUT.) C IF ((KPRINT.GE.2).AND.(IFAIL.NE.0)) WRITE (LUN, 3001) IFAIL C IF (IFAIL.EQ.0) THEN IPASS = 1 IF (KPRINT.GE.2) WRITE(LUN,99998) ELSE IPASS = 0 IF (KPRINT.GE.1) WRITE(LUN,99999) ENDIF C RETURN C C FORMATS. C 1000 FORMAT ('1'/' ------------ DPCHIP QUICK CHECK OUTPUT', * ' ------------' //20X,'( KPRINT =',I2,' )') 3001 FORMAT (/' *** TROUBLE ***',I5,' EVALUATION TESTS FAILED.') 99998 FORMAT (/' ------------ DPCHIP PASSED ALL EVALUATION TESTS', * ' ------------') 99999 FORMAT (/' ************ DPCHIP FAILED SOME EVALUATION TESTS', * ' ************') C------------- LAST LINE OF DPCHQ1 FOLLOWS ----------------------------- END