1      SUBROUTINE H15(X,N,C,NCUT,AH15,XSC,WS,WS2,MAXNXT,ISUBRO,IBUGA3)
2C
3C     THIS SUBROUTINE IS ADAPTED FROM:
4C
5C         ANALYTICAL METHODS COMMITTEE, "ROBUST STATISTICS--HOW
6C         NOT TO REJECT OUTLIERS: PART 1. BASIC CONCEPTS",
7C         ANALYST, DECEMBER 1989, VOL. 1.
8C
9C         THE BASIC CODE IS FROM THIS ARTICLE AND WAS WRITTEN
10C         BY B. D. RIPLEY.  IT WAS MODIFED SOMEWHAT FOR ADAPTION
11C         INTO DATAPLOT BY ALAN HECKERT JULY 2009.
12C
13C     IT COMPUTES THE H15 ROBUST ESTIMATES OF LOCATION AND SCALE.
14C     NOTE THAT BY PASSING VALUES OF C OTHER THAN 1.5, IT CAN
15C     ALSO BE USED TO COMPUTE H10 (C = 1), H12 (C = 1.2),
16C     H17 (C = 1.7), AND H20 (C = 2.0).
17C
18      REAL    X(*)
19      REAL    WS(*)
20      REAL    WS2(*)
21      REAL    XSC
22      REAL    A
23      REAL    BETA
24      REAL    C
25      REAL    C1
26      REAL    XS
27      REAL    XS0
28      REAL    XC
29      REAL    AN
30      DOUBLE PRECISION    SUM
31      DOUBLE PRECISION    SUM2
32C
33      INTEGER N
34      INTEGER MAXNXT
35      INTEGER I
36C
37      CHARACTER*4 IERROR
38      CHARACTER*4 IBUGA3
39      CHARACTER*4 ISUBRO
40      CHARACTER*4 IWRITE
41C
42      INCLUDE 'DPCOP2.INC'
43C
44      IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'H15 ')THEN
45        WRITE(ICOUT,999)
46  999   FORMAT(1X)
47        CALL DPWRST('XXX','BUG ')
48        WRITE(ICOUT,51)
49   51   FORMAT('***** AT THE BEGINNING OF H15--')
50        CALL DPWRST('XXX','BUG ')
51        WRITE(ICOUT,52)IBUGA3,C,N
52   52   FORMAT('IBUGA3,C = ',A4,2X,G15.7,2X,I8)
53        CALL DPWRST('XXX','BUG ')
54        DO55I=1,N
55          WRITE(ICOUT,56)I,X(I)
56   56     FORMAT('I,X(I) = ',I8,G15.7)
57          CALL DPWRST('XXX','BUG ')
58   55   CONTINUE
59      ENDIF
60C
61      IF(C.EQ.1.0)THEN
62        BETA=0.516
63      ELSEIF(C.EQ.1.1)THEN
64        BETA=0.578
65      ELSEIF(C.EQ.1.2)THEN
66        BETA=0.635
67      ELSEIF(C.EQ.1.3)THEN
68        BETA=0.688
69      ELSEIF(C.EQ.1.4)THEN
70        BETA=0.736
71      ELSEIF(C.EQ.1.5)THEN
72        BETA=0.778
73      ELSEIF(C.EQ.1.6)THEN
74        BETA=0.816
75      ELSEIF(C.EQ.1.7)THEN
76        BETA=0.849
77      ELSEIF(C.EQ.1.8)THEN
78        BETA=0.877
79      ELSEIF(C.EQ.1.9)THEN
80        BETA=0.900
81      ELSEIF(C.EQ.2.0)THEN
82        BETA=0.921
83      ELSE
84        BETA=0.778
85      ENDIF
86C
87      C1 = C
88      AN=REAL(N)
89      IF(NCUT.GT.0 .AND. N.LE.NCUT)THEN
90        C1 = C * SQRT(1.0 - 1.0/AN)
91      ENDIF
92C
93      IWRITE='OFF'
94      IERROR='NO'
95      CALL MEDIAN(X,N,IWRITE,WS,MAXNXT,XM,IBUGA3,IERROR)
96      CALL MAD(X,N,IWRITE,WS,WS2,MAXNXT,XS,IBUGA3,IERROR)
97      XS=XS/0.6745
98C
99      ITER = 0
100   10 CONTINUE
101      ITER = ITER + 1
102C
103      IF(ITER.GT.100)THEN
104        WRITE(ICOUT,11)
105   11   FORMAT('***** WARNING FROM H15--')
106        CALL DPWRST('XXX','BUG ')
107        WRITE(ICOUT,13)
108   13   FORMAT('      100 ITERATIONS WITHOUT CONVERGENCE.')
109        CALL DPWRST('XXX','BUG ')
110        GOTO900
111      ENDIF
112C
113      IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'H15 ')THEN
114        WRITE(ICOUT,112)ITER,XM,XS
115  112   FORMAT('FROM H15: ITER,XM,XS = ',I8,2G15.7)
116        CALL DPWRST('XXX','BUG ')
117      ENDIF
118C
119      XM0 = XM
120      XS0 = XS
121      SUM = 0.0D0
122      SUM2 = 0.0D0
123      XC = C1*XS
124C
125      DO 200  I = 1, N
126        A = MIN(XM+XC, MAX(XM-XC, X(I)))
127        SUM = SUM + DBLE(A)
128        SUM2 = SUM2 + DBLE((A-XM)*(A-XM))
129C
130        IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'H15 ')THEN
131          WRITE(ICOUT,205)I,X(I),A,SUM,SUM2
132  205     FORMAT('I,X(I),A,SUM,SUM2 = ',I8,4G15.7)
133          CALL DPWRST('XXX','BUG ')
134        ENDIF
135C
136  200 CONTINUE
137C
138      IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'H15 ')THEN
139        WRITE(ICOUT,212)SUM,SUM2
140  212   FORMAT('FROM H15: SUM,SUM2 = ',2G15.7)
141        CALL DPWRST('XXX','BUG ')
142      ENDIF
143C
144      XM = REAL(SUM/DBLE(N))
145      XS = REAL(SQRT(SUM2/DBLE(BETA*(AN-1.0))))
146      IF ((ABS(XM-XM0) .GT. 1.0E-4*XS0)  .OR.
147     &    ABS(XS/XS0 - 1.0) .GT. 1.0E-4)  GOTO 10
148C
149  900 CONTINUE
150      AH15 = XM
151      XSC = XS
152C
153      IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'H15 ')THEN
154        WRITE(ICOUT,9010)
155 9010   FORMAT('AT THE END OF H15')
156        CALL DPWRST('XXX','BUG ')
157        WRITE(ICOUT,9012)XM,XM0,XS,XS0,AH15,XSC
158 9012   FORMAT('XM,XM0,XS,XS0,AH15,XSC=',6G15.7)
159        CALL DPWRST('XXX','BUG ')
160      ENDIF
161C
162      RETURN
163      END
164      SUBROUTINE HAMDIS(X,Y,N,IWRITE,STATVA,IBUGA3,ISUBRO,IERROR)
165C
166C     PURPOSE--THIS SUBROUTINE COMPUTES THE HAMMING DISTANCE BETWEEN THE
167C              TWO SETS OF DATA IN THE INPUT VECTORS X AND Y.  THE
168C              SAMPLE HAMMING DISTANCE IS THE NUMBER OF ELEMENTS THAT
169C              ARE NOT THE SAME IN X AND Y.
170C
171C     INPUT  ARGUMENTS--X      = THE SINGLE PRECISION VECTOR OF
172C                                (UNSORTED) OBSERVATIONS WHICH
173C                                CONSTITUTE THE FIRST SET OF DATA.
174C                     --Y      = THE SINGLE PRECISION VECTOR OF
175C                                (UNSORTED) OBSERVATIONS WHICH
176C                                CONSTITUTE THE SECOND SET OF DATA.
177C                     --N      = THE INTEGER NUMBER OF OBSERVATIONS
178C                                IN THE VECTORS X AND Y.
179C     OUTPUT ARGUMENTS--STATVA = THE SINGLE PRECISION VALUE OF THE
180C                                COMPUTED SAMPLE HAMMING DISTANCE
181C                                BETWEEN THE TWO SETS OF DATA IN THE
182C                                INPUT VECTORS X AND Y.  THIS SINGLE
183C                                PRECISION VALUE WILL BE BETWEEN 0.0
184C                                AND 1.0 (INCLUSIVELY).
185C     OUTPUT--THE COMPUTED SINGLE PRECISION VALUE OF THE
186C             SAMPLE HANNING DISTANCE BETWEEN THE 2 SETS
187C             OF DATA IN THE INPUT VECTORS X AND Y.
188C     RESTRICTIONS--THERE IS NO RESTRICTION ON THE MAXIMUM VALUE
189C                   OF N FOR THIS SUBROUTINE.
190C     OTHER DATAPAC   SUBROUTINES NEEDED--NONE.
191C     FORTRAN LIBRARY SUBROUTINES NEEDED--ABS.
192C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
193C     LANGUAGE--ANSI FORTRAN (1977)
194C     REFERENCES--XXX
195C     WRITTEN BY--ALAN HECKERT
196C                 STATISTICAL ENGINEERING DIVISION
197C                 INFORMATION TECHNOLOGY LABORATORY
198C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGYS
199C                 GAITHERSBURG, MD 20899
200C                 PHONE--301-975-2899
201C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
202C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGYS.
203C     LANGUAGE--ANSI FORTRAN (1977)
204C     VERSION NUMBER--2018/08
205C     ORIGINAL VERSION--AUGUST    2018.
206C
207C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
208C
209      CHARACTER*4 IWRITE
210      CHARACTER*4 IBUGA3
211      CHARACTER*4 ISUBRO
212      CHARACTER*4 IERROR
213C
214      CHARACTER*4 ISUBN1
215      CHARACTER*4 ISUBN2
216C
217C---------------------------------------------------------------------
218C
219      DIMENSION X(*)
220      DIMENSION Y(*)
221C
222C-----COMMON----------------------------------------------------------
223C
224      INCLUDE 'DPCOP2.INC'
225C
226C-----START POINT-----------------------------------------------------
227C
228      ISUBN1='HAMD'
229      ISUBN2='IS  '
230      IERROR='NO'
231      STATVA=CPUMIN
232C
233      IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'SDIS')THEN
234        WRITE(ICOUT,999)
235  999   FORMAT(1X)
236        CALL DPWRST('XXX','BUG ')
237        WRITE(ICOUT,51)
238   51   FORMAT('***** AT THE BEGINNING OF MANDIS--')
239        CALL DPWRST('XXX','BUG ')
240        WRITE(ICOUT,52)IBUGA3,ISUBRO,N
241   52   FORMAT('IBUGA3,ISUBRO,N = ',2(A4,2X),I8)
242        CALL DPWRST('XXX','BUG ')
243        DO55I=1,N
244          WRITE(ICOUT,56)I,X(I),Y(I)
245   56     FORMAT('I,X(I),Y(I) = ',I8,2G15.7)
246          CALL DPWRST('XXX','BUG ')
247   55   CONTINUE
248      ENDIF
249C
250C               ********************************************
251C               **  STEP 1--                              **
252C               **  CHECK THE INPUT ARGUMENTS FOR ERRORS  **
253C               ********************************************
254C
255      AN=N
256C
257      IF(N.LT.1)THEN
258        WRITE(ICOUT,999)
259        CALL DPWRST('XXX','BUG ')
260        WRITE(ICOUT,111)
261  111   FORMAT('***** ERROR IN HAMMING DISTANCE--')
262        CALL DPWRST('XXX','BUG ')
263        WRITE(ICOUT,112)
264  112   FORMAT('      THE NUMBER OF OBSERVATIONS FOR THE RESPONSE')
265        CALL DPWRST('XXX','BUG ')
266        WRITE(ICOUT,113)
267  113   FORMAT('      VARIABLES IS LESS THAN 1.')
268        CALL DPWRST('XXX','BUG ')
269        WRITE(ICOUT,117)N
270  117   FORMAT('      THE NUMBER OF OBSERVATIONS HERE = ',I8,'.')
271        CALL DPWRST('XXX','BUG ')
272        IERROR='YES'
273        GOTO9000
274      ENDIF
275C
276C               ************************************************
277C               **  STEP 2--                                  **
278C               **  COMPUTE THE MANHATTAN DISTANCE.           **
279C               ************************************************
280C
281      STATVA=0.0
282      DO200I=1,N
283        IF(X(I).NE.Y(I))STATVA=STATVA+1
284  200 CONTINUE
285C
286C               *******************************
287C               **  STEP 3--                 **
288C               **  WRITE OUT A LINE         **
289C               **  OF SUMMARY INFORMATION.  **
290C               *******************************
291C
292      IF(IFEEDB.EQ.'ON' .AND. IWRITE.EQ.'ON')THEN
293        WRITE(ICOUT,999)
294        CALL DPWRST('XXX','BUG ')
295        WRITE(ICOUT,811)N,INT(STATVA+0.1)
296  811   FORMAT('THE HAMMING DISTANCE OF THE ',I8,
297     1           ' OBSERVATIONS = ',I8)
298        CALL DPWRST('XXX','BUG ')
299      ENDIF
300C
301C               *****************
302C               **  STEP 90--  **
303C               **  EXIT.      **
304C               *****************
305C
306 9000 CONTINUE
307      IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'MDIS')THEN
308        WRITE(ICOUT,999)
309        CALL DPWRST('XXX','BUG ')
310        WRITE(ICOUT,9011)
311 9011   FORMAT('***** AT THE END       OF HAMDIS--')
312        CALL DPWRST('XXX','BUG ')
313        WRITE(ICOUT,9012)IERROR,STATVA
314 9012   FORMAT('IERROR,STATVA = ',A4,2X,G15.7)
315        CALL DPWRST('XXX','BUG ')
316      ENDIF
317C
318      RETURN
319      END
320      SUBROUTINE HARMEA(X,N,IWRITE,XHARM,IBUGA3,IERROR)
321C
322C     PURPOSE--THIS SUBROUTINE COMPUTES THE
323C              SAMPLE HARMONIC MEAN, XHARM,
324C              OF THE DATA IN THE INPUT VECTOR X.
325C              THE SAMPLE XHARM = SUM(N/(1/X))
326C     INPUT  ARGUMENTS--X      = THE SINGLE PRECISION VECTOR OF
327C                                (UNSORTED OR SORTED) OBSERVATIONS.
328C                     --N      = THE INTEGER NUMBER OF OBSERVATIONS
329C                                IN THE VECTOR X.
330C     OUTPUT ARGUMENTS--XHARM  = THE SINGLE PRECISION VALUE OF THE
331C                                COMPUTED SAMPLE HARMONIC MEAN.
332C     OUTPUT--THE COMPUTED SINGLE PRECISION VALUE OF THE
333C             SAMPLE HARMONIC MEAN
334C     RESTRICTIONS--THERE IS NO RESTRICTION ON THE MAXIMUM VALUE
335C                   OF N FOR THIS SUBROUTINE.
336C     OTHER DATAPAC   SUBROUTINES NEEDED--NONE.
337C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE
338C     MODE OF INTERNAL OPERATIONS--DOUBLE PRECISION.
339C     LANGUAGE--ANSI FORTRAN (1977)
340C     WRITTEN BY--JAMES J. FILLIBEN
341C                 STATISTICAL ENGINEERING DIVISION
342C                 INFORMATION TECHNOLOGY LABORATORY
343C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
344C                 GAITHERSBURG, MD 20899-8980
345C                 PHONE--301-975-2855
346C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
347C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
348C     LANGUAGE--ANSI FORTRAN (1966)
349C               EXCEPTION--HOLLERITH STRINGS IN FORMAT STATEMENTS
350C                          DENOTED BY QUOTES RATHER THAN NH.
351C     VERSION NUMBER--99.3
352C     ORIGINAL VERSION--MARCH     1999.
353C
354C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
355C
356      CHARACTER*4 IWRITE
357      CHARACTER*4 IBUGA3
358      CHARACTER*4 IERROR
359C
360      CHARACTER*4 ISUBN1
361      CHARACTER*4 ISUBN2
362C
363C---------------------------------------------------------------------
364C
365      DOUBLE PRECISION DN
366      DOUBLE PRECISION DX
367      DOUBLE PRECISION DSUM
368C
369      DIMENSION X(*)
370C
371C-----COMMON----------------------------------------------------------
372C
373      INCLUDE 'DPCOP2.INC'
374C
375C-----START POINT-----------------------------------------------------
376C
377      ISUBN1='GEOM'
378      ISUBN2='EA  '
379      IERROR='NO'
380C
381      IF(IBUGA3.EQ.'OFF')GOTO90
382      WRITE(ICOUT,999)
383  999 FORMAT(1X)
384      CALL DPWRST('XXX','BUG ')
385      WRITE(ICOUT,51)
386   51 FORMAT('***** AT THE BEGINNING OF HARMEA--')
387      CALL DPWRST('XXX','BUG ')
388      WRITE(ICOUT,52)IBUGA3
389   52 FORMAT('IBUGA3 = ',A4)
390      CALL DPWRST('XXX','BUG ')
391      WRITE(ICOUT,53)N
392   53 FORMAT('N = ',I8)
393      CALL DPWRST('XXX','BUG ')
394      DO55I=1,N
395      WRITE(ICOUT,56)I,X(I)
396   56 FORMAT('I,X(I) = ',I8,E15.7)
397      CALL DPWRST('XXX','BUG ')
398   55 CONTINUE
399   90 CONTINUE
400C
401C               ******************************
402C               **  COMPUTE HARMONIC MEAN  **
403C               ******************************
404C
405C               ********************************************
406C               **  STEP 1--                              **
407C               **  CHECK THE INPUT ARGUMENTS FOR ERRORS  **
408C               ********************************************
409C
410      AN=N
411C
412      IF(N.GE.1)GOTO119
413      IERROR='YES'
414      WRITE(ICOUT,999)
415      CALL DPWRST('XXX','BUG ')
416      WRITE(ICOUT,111)
417  111 FORMAT('***** ERROR IN HARMEA--')
418      CALL DPWRST('XXX','BUG ')
419      WRITE(ICOUT,112)
420  112 FORMAT('      THE INPUT NUMBER OF OBSERVATIONS')
421      CALL DPWRST('XXX','BUG ')
422      WRITE(ICOUT,113)
423  113 FORMAT('      IN THE VARIABLE FOR WHICH')
424      CALL DPWRST('XXX','BUG ')
425      WRITE(ICOUT,114)
426  114 FORMAT('      THE HARMEA IS TO BE COMPUTED')
427      CALL DPWRST('XXX','BUG ')
428      WRITE(ICOUT,115)
429  115 FORMAT('      MUST BE 1 OR LARGER.')
430      CALL DPWRST('XXX','BUG ')
431      WRITE(ICOUT,116)
432  116 FORMAT('      SUCH WAS NOT THE CASE HERE.')
433      CALL DPWRST('XXX','BUG ')
434      WRITE(ICOUT,117)N
435  117 FORMAT('      THE INPUT NUMBER OF OBSERVATIONS HERE = ',I8,
436     1'.')
437      CALL DPWRST('XXX','BUG ')
438      GOTO9000
439  119 CONTINUE
440C
441      IF(N.EQ.1)GOTO120
442      GOTO129
443  120 CONTINUE
444      XHARM=X(1)
445      GOTO9000
446  129 CONTINUE
447C
448C               ***********************************
449C               **  STEP 2--                     **
450C               **  COMPUTE THE HARMONIC MEAN.   **
451C               ***********************************
452C
453      DN=N
454      DSUM=0.0D0
455      DO200I=1,N
456        DX=DBLE(X(I))
457        IF(DX.NE.0.0D0)DSUM=DSUM+1.0D0/DX
458  200 CONTINUE
459      DSUM=DN/DSUM
460      XHARM=REAL(DSUM)
461C
462C               *******************************
463C               **  STEP 3--                 **
464C               **  WRITE OUT A LINE         **
465C               **  OF SUMMARY INFORMATION.  **
466C               *******************************
467C
468      IF(IFEEDB.EQ.'OFF')GOTO890
469      IF(IWRITE.EQ.'OFF')GOTO890
470      WRITE(ICOUT,999)
471      CALL DPWRST('XXX','BUG ')
472      WRITE(ICOUT,811)N,XHARM
473  811 FORMAT('THE HARMONIC MEAN OF THE ',I8,' OBSERVATIONS = ',E15.7)
474      CALL DPWRST('XXX','BUG ')
475  890 CONTINUE
476C
477C               *****************
478C               **  STEP 90--  **
479C               **  EXIT.      **
480C               *****************
481C
482 9000 CONTINUE
483      IF(IBUGA3.EQ.'OFF')GOTO9090
484      WRITE(ICOUT,999)
485      CALL DPWRST('XXX','BUG ')
486      WRITE(ICOUT,9011)
487 9011 FORMAT('***** AT THE END       OF HARMEA--')
488      CALL DPWRST('XXX','BUG ')
489      WRITE(ICOUT,9012)IBUGA3,IERROR
490 9012 FORMAT('IBUGA3,IERROR = ',A4,2X,A4)
491      CALL DPWRST('XXX','BUG ')
492      WRITE(ICOUT,9013)N
493 9013 FORMAT('N = ',I8)
494      CALL DPWRST('XXX','BUG ')
495      WRITE(ICOUT,9015)XHARM
496 9015 FORMAT('XHARM = ',E15.7)
497      CALL DPWRST('XXX','BUG ')
498 9090 CONTINUE
499C
500      RETURN
501      END
502      SUBROUTINE HAZARD(X,TAG,NX,IWRITE,Y,XTEMP,MAXNXT,IBUGA3,IERROR)
503C
504C     PURPOSE--COMPUTE HAZARD OF AN ARRAY
505C              THE TAG VARIABLE IDENTIFIES CENSORED DATA
506C              (1 = FAILURE TIME, 0 = CENSORED)
507C     NOTE--IT IS PERMISSIBLE TO HAVE THE OUTPUT VECTOR Y(.)
508C           BEING IDENTICAL TO THE INPUT VECTOR X(.).
509C     WRITTEN BY--ALAN HECKERT
510C                 STATISTICAL ENGINEERING DIVISION
511C                 INFORMATION TECHNOLOGY LABORATORY
512C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
513C                 GAITHERSBURG, MD 20899-8980
514C                 PHONE--301-975-2899
515C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
516C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
517C     LANGUAGE--ANSI FORTRAN (1977)
518C     VERSION NUMBER--98/5
519C     ORIGINAL VERSION--MAY       1998.
520C     UPDATED         --JANUARY   2007.  CALL LIST TO RANK
521C
522C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
523C
524      CHARACTER*4 IWRITE
525      CHARACTER*4 IBUGA3
526      CHARACTER*4 IERROR
527C
528      CHARACTER*4 ISUBN1
529      CHARACTER*4 ISUBN2
530C
531C---------------------------------------------------------------------
532C
533      DIMENSION X(*)
534      DIMENSION Y(*)
535      DIMENSION TAG(*)
536      DIMENSION XTEMP(*)
537C
538C-----COMMON----------------------------------------------------------
539C
540      INCLUDE 'DPCOP2.INC'
541C
542C-----START POINT-----------------------------------------------------
543C
544      ISUBN1='HAZA'
545      ISUBN2='RD  '
546      IERROR='NO'
547C
548      IF(IBUGA3.EQ.'ON')THEN
549        WRITE(ICOUT,999)
550  999   FORMAT(1X)
551        CALL DPWRST('XXX','BUG ')
552        WRITE(ICOUT,51)
553   51   FORMAT('***** AT THE BEGINNING OF HAZARD--')
554        CALL DPWRST('XXX','BUG ')
555        WRITE(ICOUT,52)IBUGA3,NX
556   52   FORMAT('IBUGA3,NX = ',A4,2X,I8)
557        CALL DPWRST('XXX','BUG ')
558        DO55I=1,NX
559          WRITE(ICOUT,56)I,X(I),TAG(I)
560   56     FORMAT('I,X(I), TAG(I) = ',I8,2G15.7)
561          CALL DPWRST('XXX','BUG ')
562   55   CONTINUE
563      ENDIF
564C
565C               **************************************
566C               **  COMPUTE CUMULATIVE HAZARD       **
567C               **************************************
568C
569      CALL SORTC(X,TAG,NX,Y,TAG)
570      CALL RANK(Y,NX,IWRITE,Y,XTEMP,MAXNXT,IBUGA3,IERROR)
571      IF(IERROR.EQ.'YES')GOTO9000
572      AFACT=REAL(NX+1)
573      DO100I=1,NX
574        IF(ABS(TAG(I)).GE.0.5)THEN
575          Y(I)=100.0/(AFACT - Y(I))
576        ELSE
577          Y(I)=0.0
578        ENDIF
579  100 CONTINUE
580C
581C               *****************
582C               **  STEP 90--  **
583C               **  EXIT.      **
584C               *****************
585C
586 9000 CONTINUE
587C
588      IF(IBUGA3.EQ.'ON')THEN
589        WRITE(ICOUT,999)
590        CALL DPWRST('XXX','BUG ')
591        WRITE(ICOUT,9011)
592 9011   FORMAT('***** AT THE END       OF HAZARD--')
593        CALL DPWRST('XXX','BUG ')
594        WRITE(ICOUT,9012)IERROR
595 9012   FORMAT('IERROR = ',A4)
596        CALL DPWRST('XXX','BUG ')
597        DO9015I=1,NX
598          WRITE(ICOUT,9016)I,X(I),Y(I)
599 9016     FORMAT('I,X(I),Y(I) = ',I8,2E15.7)
600          CALL DPWRST('XXX','BUG ')
601 9015   CONTINUE
602      ENDIF
603C
604      RETURN
605      END
606      SUBROUTINE HBOCDF(X,ALPHA,XI,CDF)
607C
608C     PURPOSE--THIS SUBROUTINE COMPUTES THE CUMULATIVE DISTRIBUTION
609C              FUNCTION VALUE FOR THE HYPERBOLIC
610C              DISTRIBUTION WITH SHAPE PARAMETERS ALPHA AND XI.
611C              THE CUMULATIVE DISTRIBUTION IS COMPUTED BY
612C              NUMERICALLY INTEGRATING THE PDF FUNCTION.
613C     INPUT  ARGUMENTS--X       = THE DOUBLE PRECISION VALUE AT
614C                                 WHICH THE CUMULATIVE DISTRIBUTION
615C                                 FUNCTION IS TO BE EVALUATED.
616C                     --ALPHA   = THE FIRST SHAPE PARAMETER
617C                     --XI      = THE SECOND SHAPE PARAMETER
618C     OUTPUT ARGUMENTS--CDF     = THE DOUBLE PRECISION CUMULATIVE
619C                                 DISTRIBUTION FUNCTION VALUE.
620C     OUTPUT--THE DOUBLE PRECISION CUMULATIVE DISTRIBUTION
621C             FUNCTION VALUE FOR THE HYPERBOLIC
622C             DISTRIBUTION WITH SHAPE PARAMETERS ALPHA AND XI.
623C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
624C     RESTRICTIONS--NONE.
625C     OTHER DATAPAC   SUBROUTINES NEEDED--DQAGI.
626C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE.
627C     MODE OF INTERNAL OPERATIONS--DOUBLE PRECISION.
628C     LANGUAGE--ANSI FORTRAN (1977)
629C     REFERENCES--JOHNSON, KOTZ, AND BALAKRISNAN, "CONTINUOUS
630C                 UNIVARIATE DISTRIBUTIONS--VOLUME I", SECOND EDITION,
631C                 WILEY, 1994, PP. 60.
632C     WRITTEN BY--JAMES J. FILLIBEN
633C                 STATISTICAL ENGINEERING DIVISION
634C                 INFORMATION TECHNOLOGY LABORATORY
635C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
636C                 GAITHERSBURG, MD 20899-8980
637C                 PHONE--301-975-2855
638C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
639C           OF THE NATION INSTITUTE OF STANDARDS AND TECHNOLOGY.
640C     LANGUAGE--ANSI FORTRAN (1977)
641C     VERSION NUMBER--2004.9
642C     ORIGINAL VERSION--SEPTEMBER 2004.
643C
644C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
645C
646C---------------------------------------------------------------------
647C
648      INTEGER LIMIT
649      INTEGER LENW
650      PARAMETER(LIMIT=100)
651      PARAMETER(LENW=4*LIMIT)
652      INTEGER INF
653      INTEGER NEVAL
654      INTEGER IER
655      INTEGER LAST
656      INTEGER IWORK(LIMIT)
657      DOUBLE PRECISION ALPHA
658      DOUBLE PRECISION XI
659      DOUBLE PRECISION EPSABS
660      DOUBLE PRECISION EPSREL
661      DOUBLE PRECISION DCDF
662      DOUBLE PRECISION CDF
663      DOUBLE PRECISION X
664      DOUBLE PRECISION DX
665      DOUBLE PRECISION ABSERR
666      DOUBLE PRECISION WORK(LENW)
667C
668      DOUBLE PRECISION HBOFUN
669      EXTERNAL HBOFUN
670C
671      DOUBLE PRECISION DALPHA
672      DOUBLE PRECISION DXI
673      COMMON/HBOCOM/DALPHA,DXI
674C
675C-----COMMON----------------------------------------------------------
676C
677      INCLUDE 'DPCOP2.INC'
678C
679C-----DATA STATEMENTS-------------------------------------------------
680C
681C-----START POINT-----------------------------------------------------
682C
683C               ********************************************
684C               **  STEP 1--                              **
685C               **  CHECK THE INPUT ARGUMENTS FOR ERRORS  **
686C               ********************************************
687C
688      IF(ALPHA.LE.0.0D0)THEN
689        WRITE(ICOUT,5)
690        CALL DPWRST('XXX','WRIT')
691        WRITE(ICOUT,48)ALPHA
692        CALL DPWRST('XXX','WRIT')
693        CDF=0.0D0
694        GOTO9000
695      ENDIF
696    5 FORMAT('***** ERROR: VALUE OF FIRST SHAPE PARAMETER (ALPHA)',
697     1       ' IN HBOCDF ROUTINE IS NON-POSITIVE.')
698      IF(XI.LE.0.0D0)THEN
699        WRITE(ICOUT,8)
700        CALL DPWRST('XXX','WRIT')
701        WRITE(ICOUT,48)XI
702        CALL DPWRST('XXX','WRIT')
703        CDF=0.0D0
704        GOTO9000
705      ENDIF
706    8 FORMAT('***** ERROR: VALUE OF SECOND SHAPE PARAMETER (XI)',
707     1       ' IN HBOCDF ROUTINE IS NON-POSITIVE.')
708   48 FORMAT('      VALUE OF ARGUMENT IS: ',G15.7)
709C
710C               ************************************
711C               **  STEP 1--                      **
712C               **  COMPUTE THE DENSITY FUNCTION  **
713C               ************************************
714C
715      DX=X
716      INF=-1
717      EPSABS=0.0D0
718      EPSREL=1.0D-7
719      IER=0
720      DCDF=0.0D0
721      IFLAG=0
722      IF(DX.LT.0.0D0)THEN
723        IFLAG=1
724        INF=1
725      ENDIF
726C
727      DATEMP=0.0D0
728      DXI=XI
729C
730      CALL DQAGI(HBOFUN,DX,INF,EPSABS,EPSREL,DCDF,ABSERR,NEVAL,
731     1          IER,LIMIT,LENW,LAST,IWORK,WORK)
732C
733      IF(IFLAG.EQ.1)THEN
734        CDF=1.0D0 - DCDF
735      ELSE
736        CDF=DCDF
737      ENDIF
738C
739      IF(IER.EQ.1)THEN
740        WRITE(ICOUT,999)
741  999   FORMAT(1X)
742        CALL DPWRST('XXX','BUG ')
743        WRITE(ICOUT,111)
744  111   FORMAT('***** ERROR FROM HBOCDF--')
745        CALL DPWRST('XXX','BUG ')
746        WRITE(ICOUT,113)
747  113   FORMAT('      MAXIMUM NUMBER OF SUBDIVISIONS EXCEEDED.')
748        CALL DPWRST('XXX','BUG ')
749      ELSEIF(IER.EQ.2)THEN
750        WRITE(ICOUT,999)
751        CALL DPWRST('XXX','BUG ')
752        WRITE(ICOUT,121)
753  121   FORMAT('***** ERROR FROM HBOCDF--')
754        CALL DPWRST('XXX','BUG ')
755        WRITE(ICOUT,123)
756  123   FORMAT('      ROUNDOFF ERROR PREVENTS REQUESTED TOLERANCE ',
757     1         'FROM BEING ACHIEVED.')
758        CALL DPWRST('XXX','BUG ')
759      ELSEIF(IER.EQ.3)THEN
760        WRITE(ICOUT,999)
761        CALL DPWRST('XXX','BUG ')
762        WRITE(ICOUT,131)
763  131   FORMAT('***** ERROR FROM HBOCDF--')
764        CALL DPWRST('XXX','BUG ')
765        WRITE(ICOUT,133)
766  133   FORMAT('      BAD INTEGRAND BEHAVIOUR DETECTED.')
767        CALL DPWRST('XXX','BUG ')
768      ELSEIF(IER.EQ.4)THEN
769        WRITE(ICOUT,999)
770        CALL DPWRST('XXX','BUG ')
771        WRITE(ICOUT,141)
772  141   FORMAT('***** ERROR FROM HBOCDF--')
773        CALL DPWRST('XXX','BUG ')
774        WRITE(ICOUT,143)
775  143   FORMAT('      INTEGRATION DID NOT CONVERGE.')
776        CALL DPWRST('XXX','BUG ')
777      ELSEIF(IER.EQ.5)THEN
778        WRITE(ICOUT,999)
779        CALL DPWRST('XXX','BUG ')
780        WRITE(ICOUT,151)
781  151   FORMAT('***** ERROR FROM HBOCDF--')
782        CALL DPWRST('XXX','BUG ')
783        WRITE(ICOUT,153)
784  153   FORMAT('      THE INTEGRATION IS PROBABLY DIVERGENT.')
785        CALL DPWRST('XXX','BUG ')
786      ELSEIF(IER.EQ.6)THEN
787        WRITE(ICOUT,999)
788        CALL DPWRST('XXX','BUG ')
789        WRITE(ICOUT,161)
790  161   FORMAT('***** ERROR FROM HBOCDF--')
791        CALL DPWRST('XXX','BUG ')
792        WRITE(ICOUT,163)
793  163   FORMAT('      INVALID INPUT TO THE INTEGRATION ROUTINE.')
794        CALL DPWRST('XXX','BUG ')
795      ENDIF
796C
797 9000 CONTINUE
798      RETURN
799      END
800      DOUBLE PRECISION FUNCTION HBOFUN(DX)
801C
802C     PURPOSE--THIS SUBROUTINE COMPUTES THE PROBABILITY DENSITY
803C              FUNCTION VALUE FOR THE HYPERBOLIC
804C              DISTRIBUTION WITH SHAPE PARAMETERS ALPHA AND XI.
805C              THIS DISTRIBUTION IS DEFINED FOR ALL REAL X
806C              AND HAS THE PROBABILITY DENSITY FUNCTION
807C
808C                 f(X;ALPHA,XI) = (1/{2*SQRT(1+ALPHA**2)*K(1)(XI)})*
809C                     EXP{-XI*[SQRT(1+ALPHA**2)*SQRT(1+X**2)-ALPHA*X]}
810C                     XI > 0
811C              WHERE
812C                 K(N,X) IS THE MODIFIED BESSEL FUNCTION OF THE
813C                        SECOND KIND AND ORDER N.
814C
815C              THE HBOPDF ROUTINE IS CALLED TO COMPUTE THE
816C              PROBABILITY DENSITY.  DEFINE AS FUNCTION TO BE USED FOR
817C              INTEGRATION CODE CALLED BY HBOCDF.  THIS ROUTINE USES
818C              DOUBLE PRECISION ARITHMETIC.
819C     INPUT  ARGUMENTS--DX      = THE DOUBLE PRECISION VALUE AT
820C                                 WHICH THE PROBABILITY DENSITY
821C                                 FUNCTION IS TO BE EVALUATED.
822C     OUTPUT ARGUMENTS--HBOFUN  = THE DOUBLE PRECISION PROBABILITY
823C                                 DENSITY FUNCTION VALUE.
824C     OUTPUT--THE DOUBLE PRECISION PROBABILITY DENSITY
825C             FUNCTION VALUE PDF FOR THE HYPERBOLIC
826C             DISTRIBUTION WITH SHAPE PARAMETERS ALPHA AND XI.
827C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
828C     RESTRICTIONS--NONE.
829C     OTHER DATAPAC   SUBROUTINES NEEDED--HBOPDF.
830C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE.
831C     MODE OF INTERNAL OPERATIONS--DOUBLE PRECISION.
832C     LANGUAGE--ANSI FORTRAN (1977)
833C     REFERENCES--JOHNSON, KOTZ, AND BALAKRISNAN, "CONTINUOUS
834C                 UNIVARIATE DISTRIBUTIONS--VOLUME I", SECOND EDITION,
835C                 WILEY, 1994, PP. 60.
836C     WRITTEN BY--JAMES J. FILLIBEN
837C                 STATISTICAL ENGINEERING DIVISION
838C                 INFORMATION TECHNOLOGY LABORATORY
839C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
840C                 GAITHERSBURG, MD 20899-8980
841C                 PHONE--301-975-2855
842C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
843C           OF THE NATION INSTITUTE OF STANDARDS AND TECHNOLOGY.
844C     LANGUAGE--ANSI FORTRAN (1977)
845C     VERSION NUMBER--2004.9
846C     ORIGINAL VERSION--SEPTEMBER 2004.
847C
848C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
849C
850C---------------------------------------------------------------------
851C
852      DOUBLE PRECISION DTERM
853C
854      DOUBLE PRECISION DX
855      DOUBLE PRECISION DALPHA
856      DOUBLE PRECISION DXI
857      COMMON/HBOCOM/DALPHA,DXI
858C
859C-----COMMON----------------------------------------------------------
860C
861      INCLUDE 'DPCOP2.INC'
862C
863C-----DATA STATEMENTS-------------------------------------------------
864C
865C-----START POINT-----------------------------------------------------
866C
867C               ************************************
868C               **  STEP 1--                      **
869C               **  COMPUTE THE DENSITY FUNCTION  **
870C               ************************************
871C
872      CALL HBOPDF(DX,DALPHA,DXI,DTERM)
873      HBOFUN=DTERM
874C
875      RETURN
876      END
877      SUBROUTINE HBOPDF(X,ALPHA,XI,PDF)
878C
879C     PURPOSE--THIS SUBROUTINE COMPUTES THE PROBABILITY DENSITY
880C              FUNCTION VALUE FOR THE HYPERBOLIC DISTRIBUTION WITH
881C              SHAPE PARAMETERS ALPHA AND XI.  THIS DISTRIBUTION IS
882C              DEFINED FOR ALL REAL X AND HAS THE PROBABILITY DENSITY
883C              FUNCTION
884C
885C                 f(X;ALPHA,XI) = (1/{2*SQRT(1+ALPHA**2)*K(1)(XI)})*
886C                     EXP{-XI*[SQRT(1+ALPHA**2)*SQRT(1+X**2)-ALPHA*X]}
887C                     XI > 0
888C              WHERE
889C                 K(N,X) IS THE MODIFIED BESSEL FUNCTION OF THE
890C                        SECOND KIND AND ORDER N.
891C
892C     NOTE--ARGUMENTS TO THIS ROUTINE ARE IN DOUBLE PRECISION.
893C     INPUT  ARGUMENTS--X       = THE DOUBLE PRECISION VALUE AT
894C                                 WHICH THE PROBABILITY DENSITY
895C                                 FUNCTION IS TO BE EVALUATED.
896C                     --ALPHA   = THE FIRST SHAPE PARAMETER
897C                     --XI      = THE SECOND SHAPE PARAMETER,
898C                                 XI SHOULD BE POSITIVE.
899C     OUTPUT ARGUMENTS--PDF     = THE DOUBLE PRECISION PROBABILITY
900C                                 DENSITY FUNCTION VALUE.
901C     OUTPUT--THE DOUBLE PRECISION PROBABILITY DENSITY FUNCTION
902C             VALUE PDF FOR THE HYPERBOLIC DISTRIBUTION
903C             WITH SHAPE PARAMETERS ALPHA AND XI.
904C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
905C     RESTRICTIONS--NONE.
906C     OTHER DATAPAC   SUBROUTINES NEEDED--DBESK.
907C     FORTRAN LIBRARY SUBROUTINES NEEDED--DEXP, DLOG.
908C     MODE OF INTERNAL OPERATIONS--DOUBLE PRECISION.
909C     LANGUAGE--ANSI FORTRAN (1977)
910C     REFERENCES--JOHNSON, KOTZ, AND BALAKRISNAN, "CONTINUOUS
911C                 UNIVARIATE DISTRIBUTIONS--VOLUME I", SECOND EDITION,
912C                 WILEY, 1994, PP. 60.
913C     WRITTEN BY--JAMES J. FILLIBEN
914C                 STATISTICAL ENGINEERING DIVISION
915C                 INFORMATION TECHNOLOGY LABORATORY
916C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
917C                 GAITHERSBURG, MD 20899-8980
918C                 PHONE--301-975-2855
919C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
920C           OF THE NATION INSTITUTE OF STANDARDS AND TECHNOLOGY.
921C     LANGUAGE--ANSI FORTRAN (1977)
922C     VERSION NUMBER--2004.9
923C     ORIGINAL VERSION--SEPTEMBER 2004.
924C
925C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
926C
927C---------------------------------------------------------------------
928C
929      DOUBLE PRECISION X
930      DOUBLE PRECISION ALPHA
931      DOUBLE PRECISION XI
932      DOUBLE PRECISION PDF
933      DOUBLE PRECISION DTERM1
934      DOUBLE PRECISION DTERM2
935      DOUBLE PRECISION DTERM3
936      DOUBLE PRECISION DBESK1
937      EXTERNAL DBESK1
938C
939C-----COMMON----------------------------------------------------------
940C
941      INCLUDE 'DPCOP2.INC'
942C
943C-----START POINT-----------------------------------------------------
944C
945C               ********************************************
946C               **  STEP 1--                              **
947C               **  CHECK THE INPUT ARGUMENTS FOR ERRORS  **
948C               ********************************************
949C
950      IF(ALPHA.LE.0.0D0)THEN
951        WRITE(ICOUT,5)
952        CALL DPWRST('XXX','WRIT')
953        WRITE(ICOUT,48)ALPHA
954        CALL DPWRST('XXX','WRIT')
955        PDF=0.0D0
956        GOTO9000
957      ENDIF
958    5 FORMAT('***** ERROR: VALUE OF FIRST SHAPE PARAMETER (ALPHA)',
959     1       ' IN HBOPDF ROUTINE IS NON-POSITIVE.')
960      IF(XI.LE.0.0D0)THEN
961        WRITE(ICOUT,8)
962        CALL DPWRST('XXX','WRIT')
963        WRITE(ICOUT,48)XI
964        CALL DPWRST('XXX','WRIT')
965        PDF=0.0D0
966        GOTO9000
967      ENDIF
968    8 FORMAT('***** ERROR: VALUE OF SECOND SHAPE PARAMETER (XI)',
969     1       ' IN HBOPDF ROUTINE IS NON-POSITIVE.')
970   48 FORMAT('      VALUE OF ARGUMENT IS: ',G15.7)
971C
972C               *****************************************
973C               **  STEP 2--                           **
974C               **  COMPUTE THE DENSITY FUNCTION.  FOR **
975C               **  BETTER NUMERICAL STABILITY,        **
976C               **  COMPUTE LOGARIGHMS.                **
977C               *****************************************
978C
979C
980      DTERM1=DLOG(2.0D0) + 0.5D0*DLOG(1.0D0+ALPHA**2) +
981     1       DLOG(DBESK1(XI))
982      DTERM2=-XI*(DSQRT((1.0D0+ALPHA**2)*(1.0D0+X**2)) - ALPHA*X)
983      DTERM3=-DTERM1 + DTERM2
984      PDF=DEXP(DTERM3)
985C
986 9000 CONTINUE
987      RETURN
988      END
989      SUBROUTINE HCONS(Y,X,XIDTEM,TEMP,TEMP2,N,IWRITE,YOUT,NUMSET,
990     1ISUBRO,IBUGA3,IERROR)
991C
992C     PURPOSE--THIS SUBROUTINE COMPUTES THE H CONSISTENCY STATISTIC
993C              OF THE DATA IN THE INPUT VECTOR Y WITH LAB ID
994C              VECTOR X.  THE H CONSISTENCY STATISTIC IS DEFINED AS:
995C
996C                 H(i) = D(i)/s(xbar(i))
997C
998C              WITH
999C
1000C                 xbar(i)     = MEAN OF GROUP I
1001C                 s(xbar(i))  = STANDARD DEVIATION OF THE GROUP
1002C                               MEANS
1003C                 D(i)        = xbar(i) - xbar
1004C                 xbar        = OVERALL MEAN
1005C
1006C     INPUT  ARGUMENTS--Y      = THE SINGLE PRECISION VECTOR OF
1007C                                (UNSORTED OR SORTED) OBSERVATIONS.
1008C                     --X      = THE SINGLE PRECISION VECTOR OF
1009C                                GROUP ID's.
1010C                     --N      = THE INTEGER NUMBER OF OBSERVATIONS
1011C                                IN THE VECTOR Y.
1012C     OUTPUT ARGUMENTS--YOUT   = THE SINGLE PRECISION VECTOR OF THE
1013C                                COMPUTED SAMPLE H CONSISTENCY
1014C                                STATISTIC.
1015C                     --NUMSET = THE INTEGER VALUE CONTAINING THE
1016C                                NUMBER OF GROUPS.
1017C     OUTPUT--THE COMPUTED SINGLE PRECISION VECTOR OF THE
1018C             SAMPLE H CONSISTENCY STATISTIC.
1019C     RESTRICTIONS--THERE IS NO RESTRICTION ON THE MAXIMUM VALUE
1020C                   OF N FOR THIS SUBROUTINE.
1021C     OTHER DATAPAC   SUBROUTINES NEEDED--SORT, DISTIN, SD.
1022C     FORTRAN LIBRARY SUBROUTINES NEEDED--SQRT.
1023C     MODE OF INTERNAL OPERATIONS--DOUBLE PRECISION.
1024C     LANGUAGE--ANSI FORTRAN (1977)
1025C     REFERENCES--"Standard Practice for Conducting an
1026C                 Interlaboratory Study to Determine the Precision
1027C                 of a Test Method", ASTM International,
1028C                 100 Barr Harbor Drive, PO BOX C700,
1029C                 West Conshohoceken, PA 19428-2959, USA.
1030C                 This document is in support of
1031C                 ASTM Standard E 691 - 99.
1032C     WRITTEN BY--ALAN HECKERT
1033C                 STATISTICAL ENGINEERING DIVISION
1034C                 INFORMATION TECHNOLOGY LABORATORY
1035C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
1036C                 GAITHERSBURG, MD 20899-8980
1037C                 PHONE--301-975-2899
1038C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
1039C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
1040C     LANGUAGE--ANSI FORTRAN (1977)
1041C     VERSION NUMBER--2005.2
1042C     ORIGINAL VERSION--FEBRUARY  2005.
1043C
1044C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
1045C
1046      CHARACTER*4 IWRITE
1047      CHARACTER*4 IBUGA3
1048      CHARACTER*4 ISUBRO
1049      CHARACTER*4 IERROR
1050C
1051      CHARACTER*4 ISUBN1
1052      CHARACTER*4 ISUBN2
1053C
1054C---------------------------------------------------------------------
1055C
1056      DIMENSION Y(*)
1057      DIMENSION X(*)
1058      DIMENSION YOUT(*)
1059      DIMENSION XIDTEM(*)
1060      DIMENSION TEMP(*)
1061      DIMENSION TEMP2(*)
1062C
1063C-----COMMON----------------------------------------------------------
1064C
1065      INCLUDE 'DPCOP2.INC'
1066C
1067C-----START POINT-----------------------------------------------------
1068C
1069      ISUBN1='HCON'
1070      ISUBN2='S   '
1071      IERROR='NO'
1072C
1073      IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'CONS')THEN
1074        WRITE(ICOUT,999)
1075  999   FORMAT(1X)
1076        CALL DPWRST('XXX','BUG ')
1077        WRITE(ICOUT,51)
1078   51   FORMAT('***** AT THE BEGINNING OF HCONS--')
1079        CALL DPWRST('XXX','BUG ')
1080        WRITE(ICOUT,52)IBUGA3,ISUBRO,N
1081   52   FORMAT('IBUGA3,ISUBRO,N = ',A4,1X,A4,1X,I8)
1082        CALL DPWRST('XXX','BUG ')
1083        DO55I=1,N
1084          WRITE(ICOUT,56)I,Y(I),X(I)
1085   56     FORMAT('I,Y(I),X(I) = ',I8,2G15.7)
1086          CALL DPWRST('XXX','BUG ')
1087   55   CONTINUE
1088      ENDIF
1089C
1090C               ********************************************
1091C               **  STEP 1--                              **
1092C               **  CHECK THE INPUT ARGUMENTS FOR ERRORS  **
1093C               ********************************************
1094C
1095      AN=N
1096C
1097      IF(N.LE.1)THEN
1098        IERROR='YES'
1099        WRITE(ICOUT,999)
1100        CALL DPWRST('XXX','BUG ')
1101        WRITE(ICOUT,111)
1102  111   FORMAT('***** ERROR IN COMPUTING H CONSISTENCY STATISTIC--')
1103        CALL DPWRST('XXX','BUG ')
1104        WRITE(ICOUT,112)
1105  112   FORMAT('      THE INPUT NUMBER OF OBSERVATIONS IN THE')
1106        CALL DPWRST('XXX','BUG ')
1107        WRITE(ICOUT,114)
1108  114   FORMAT('      VARIABLES FOR WHICH THE H CONSISTENCY ',
1109     1         'STATISTIC')
1110        CALL DPWRST('XXX','BUG ')
1111        WRITE(ICOUT,115)
1112  115   FORMAT('      IS TO BE COMPUTED MUST BE 2 OR LARGER.')
1113        CALL DPWRST('XXX','BUG ')
1114        WRITE(ICOUT,116)
1115  116   FORMAT('      SUCH WAS NOT THE CASE HERE.')
1116        CALL DPWRST('XXX','BUG ')
1117        WRITE(ICOUT,117)N
1118  117   FORMAT('      THE INPUT NUMBER OF OBSERVATIONS = ',I8,'.')
1119        CALL DPWRST('XXX','BUG ')
1120        IERROR='YES'
1121        GOTO9000
1122      ENDIF
1123C
1124C               ****************************************************
1125C               **  STEP 2--                                      **
1126C               **  COMPUTE THE H CONSISTENCY STATISTIC           **
1127C               ****************************************************
1128C
1129      IWRITE='OFF'
1130      CALL DISTIN(X,N,IWRITE,XIDTEM,NUMSET,IBUGA3,IERROR)
1131      CALL SORT(XIDTEM,NUMSET,XIDTEM)
1132      CALL MEAN(Y,N,IWRITE,XBAR,IBUGA3,IERROR)
1133C
1134      IF(NUMSET.LT.1)THEN
1135        WRITE(ICOUT,999)
1136        CALL DPWRST('XXX','BUG ')
1137        WRITE(ICOUT,111)
1138        CALL DPWRST('XXX','BUG ')
1139        WRITE(ICOUT,192)
1140  192   FORMAT('      NUMBER OF LABS    NUMSET < 1')
1141        CALL DPWRST('XXX','BUG ')
1142        IERROR='YES'
1143        GOTO9000
1144      ENDIF
1145C
1146      AN=N
1147      ANUMSE=NUMSET
1148C
1149      J=0
1150      DO1110ISET1=1,NUMSET
1151        K=0
1152        DO1130I=1,N
1153          IF(XIDTEM(ISET1).EQ.X(I))THEN
1154            K=K+1
1155            TEMP(K)=Y(I)
1156          ENDIF
1157 1130   CONTINUE
1158        NTEMP=K
1159        CALL MEAN(TEMP,NTEMP,IWRITE,XBARI,IBUGA3,IERROR)
1160        TEMP2(ISET1)=XBARI
1161        YOUT(ISET1)=XBARI - XBAR
1162        IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'CONS')THEN
1163          WRITE(ICOUT,1131)ISET1,XBARI
1164 1131     FORMAT('ISET1,XBARI = ',I8,G15.7)
1165          CALL DPWRST('XXX','BUG ')
1166        ENDIF
1167 1110 CONTINUE
1168C
1169      CALL SD(TEMP2,NUMSET,IWRITE,SDBARI,IBUGA3,IERROR)
1170      DO1150I=1,NUMSET
1171        YOUT(I)=YOUT(I)/SDBARI
1172 1150 CONTINUE
1173C
1174C               *****************
1175C               **  STEP 90--  **
1176C               **  EXIT.      **
1177C               *****************
1178C
1179 9000 CONTINUE
1180      IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'CONS')THEN
1181        WRITE(ICOUT,999)
1182        CALL DPWRST('XXX','BUG ')
1183        WRITE(ICOUT,9011)
1184 9011   FORMAT('***** AT THE END       OF HCONS--')
1185        CALL DPWRST('XXX','BUG ')
1186        WRITE(ICOUT,9012)IBUGA3,ISUBRO,IERROR
1187 9012   FORMAT('IBUGA3,ISUBRO,IERROR = ',A4,2X,A4,2X,A4)
1188        CALL DPWRST('XXX','BUG ')
1189        WRITE(ICOUT,9013)N,NUMSET,XBAR
1190 9013   FORMAT('N,NUMSET,XBAR = ',I8,1X,I8,1X,G15.7)
1191        CALL DPWRST('XXX','BUG ')
1192        WRITE(ICOUT,9015)SDBARI
1193 9015   FORMAT('SDBARI = ',E15.7)
1194        CALL DPWRST('XXX','BUG ')
1195        DO9018I=1,NUMSET
1196          WRITE(ICOUT,9019)I,TEMP2(I),YOUT(I)
1197 9019     FORMAT('I,TEMP2(I),YOUT(I) = ',I8,2G15.7)
1198          CALL DPWRST('XXX','BUG ')
1199 9018   CONTINUE
1200      ENDIF
1201C
1202      RETURN
1203      END
1204      SUBROUTINE HCONS2(Y,X1,X2,XIDTEM,XIDTE2,TEMP,TEMP2,N,IWRITE,
1205     1YOUT,TAG,TAG2,NOUT,
1206     1ISUBRO,IBUGA3,IERROR)
1207C
1208C     PURPOSE--THIS SUBROUTINE COMPUTES THE H CONSISTENCY STATISTIC
1209C              OF THE DATA IN THE INPUT VECTOR Y WITH LAB ID
1210C              VECTOR X.  THE H CONSISTENCY STATISTIC IS DEFINED AS:
1211C
1212C                 H(i) = D(i)/s(xbar(i))
1213C
1214C              WITH
1215C
1216C                 xbar(i)     = MEAN OF GROUP I
1217C                 s(xbar(i))  = STANDARD DEVIATION OF THE GROUP
1218C                               MEANS
1219C                 D(i)        = xbar(i) - xbar
1220C                 xbar        = OVERALL MEAN
1221C
1222C              THE DISTINCTION BETWEEN HCONS AND HCONS2 IS THAT
1223C              HCONS IS USED TO COMPUTE THE H CONSISTENCY STATISTIC
1224C              FOR A SINGLE MATERIAL WHILE HCONS2 COMPUTES THE
1225C              H CONSISTENCY STATISTIC FOR MULTIPLE MATERIALS.
1226C
1227C     INPUT  ARGUMENTS--Y      = THE SINGLE PRECISION VECTOR OF
1228C                                (UNSORTED OR SORTED) OBSERVATIONS.
1229C                     --X1     = THE SINGLE PRECISION VECTOR OF
1230C                                GROUP ID's.
1231C                     --X2     = THE SINGLE PRECISION VECTOR OF
1232C                                MATERIAL ID's.
1233C                     --N      = THE INTEGER NUMBER OF OBSERVATIONS
1234C                                IN THE VECTOR Y.
1235C     OUTPUT ARGUMENTS--YOUT   = THE SINGLE PRECISION VECTOR OF THE
1236C                                COMPUTED SAMPLE H CONSISTENCY
1237C                                STATISTIC.
1238C                     --TAG    = THE SINGLE PRECISION VECTOR OF THE
1239C                                MATERIAL ID's.
1240C                     --TAG2   = THE SINGLE PRECISION VECTOR OF THE
1241C                                LAB ID's.
1242C                     --NOUT   = THE INTEGER VALUE CONTAINING THE
1243C                                NUMBER OF VALUES IN YOUT
1244C     OUTPUT--THE COMPUTED SINGLE PRECISION VECTOR OF THE
1245C             SAMPLE H CONSISTENCY STATISTIC WITH THE CORRESPONDING
1246C             MATERIAL ID.
1247C     RESTRICTIONS--THERE IS NO RESTRICTION ON THE MAXIMUM VALUE
1248C                   OF N FOR THIS SUBROUTINE.
1249C     OTHER DATAPAC   SUBROUTINES NEEDED--SORT, DISTIN, SD.
1250C     FORTRAN LIBRARY SUBROUTINES NEEDED--SQRT.
1251C     MODE OF INTERNAL OPERATIONS--DOUBLE PRECISION.
1252C     LANGUAGE--ANSI FORTRAN (1977)
1253C     REFERENCES--"Standard Practice for Conducting an
1254C                 Interlaboratory Study to Determine the Precision
1255C                 of a Test Method", ASTM International,
1256C                 100 Barr Harbor Drive, PO BOX C700,
1257C                 West Conshohoceken, PA 19428-2959, USA.
1258C                 This document is in support of
1259C                 ASTM Standard E 691 - 99.
1260C     WRITTEN BY--ALAN HECKERT
1261C                 STATISTICAL ENGINEERING DIVISION
1262C                 INFORMATION TECHNOLOGY LABORATORY
1263C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
1264C                 GAITHERSBURG, MD 20899-8980
1265C                 PHONE--301-975-2899
1266C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
1267C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
1268C     LANGUAGE--ANSI FORTRAN (1977)
1269C     VERSION NUMBER--2005.2
1270C     ORIGINAL VERSION--FEBRUARY  2005.
1271C
1272C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
1273C
1274      CHARACTER*4 IWRITE
1275      CHARACTER*4 IBUGA3
1276      CHARACTER*4 ISUBRO
1277      CHARACTER*4 IERROR
1278C
1279      CHARACTER*4 ISUBN1
1280      CHARACTER*4 ISUBN2
1281C
1282C---------------------------------------------------------------------
1283C
1284      DIMENSION Y(*)
1285      DIMENSION X1(*)
1286      DIMENSION X2(*)
1287      DIMENSION YOUT(*)
1288      DIMENSION TAG(*)
1289      DIMENSION TAG2(*)
1290      DIMENSION XIDTEM(*)
1291      DIMENSION XIDTE2(*)
1292      DIMENSION TEMP(*)
1293      DIMENSION TEMP2(*)
1294C
1295C-----COMMON----------------------------------------------------------
1296C
1297      INCLUDE 'DPCOP2.INC'
1298C
1299C-----START POINT-----------------------------------------------------
1300C
1301      ISUBN1='HCON'
1302      ISUBN2='S2  '
1303      IERROR='NO'
1304C
1305      IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'ONS2')THEN
1306        WRITE(ICOUT,999)
1307  999   FORMAT(1X)
1308        CALL DPWRST('XXX','BUG ')
1309        WRITE(ICOUT,51)
1310   51   FORMAT('***** AT THE BEGINNING OF HCONS2--')
1311        CALL DPWRST('XXX','BUG ')
1312        WRITE(ICOUT,52)IBUGA3,ISUBRO,N
1313   52   FORMAT('IBUGA3,ISUBRO,N = ',A4,1X,A4,1X,I8)
1314        CALL DPWRST('XXX','BUG ')
1315        DO55I=1,N
1316          WRITE(ICOUT,56)I,Y(I),X1(I),X2(I)
1317   56     FORMAT('I,Y(I),X1(I),X2(I) = ',I8,3G15.7)
1318          CALL DPWRST('XXX','BUG ')
1319   55   CONTINUE
1320      ENDIF
1321C
1322C               ********************************************
1323C               **  STEP 1--                              **
1324C               **  CHECK THE INPUT ARGUMENTS FOR ERRORS  **
1325C               ********************************************
1326C
1327      AN=N
1328C
1329      IF(N.LE.1)THEN
1330        IERROR='YES'
1331        WRITE(ICOUT,999)
1332        CALL DPWRST('XXX','BUG ')
1333        WRITE(ICOUT,111)
1334  111   FORMAT('***** ERROR IN COMPUTING H CONSISTENCY STATISTIC--')
1335        CALL DPWRST('XXX','BUG ')
1336        WRITE(ICOUT,112)
1337  112   FORMAT('      THE INPUT NUMBER OF OBSERVATIONS IN THE')
1338        CALL DPWRST('XXX','BUG ')
1339        WRITE(ICOUT,114)
1340  114   FORMAT('      VARIABLES FOR WHICH THE H CONSISTENCY ',
1341     1         'STATISTIC')
1342        CALL DPWRST('XXX','BUG ')
1343        WRITE(ICOUT,115)
1344  115   FORMAT('      IS TO BE COMPUTED MUST BE 2 OR LARGER.')
1345        CALL DPWRST('XXX','BUG ')
1346        WRITE(ICOUT,116)
1347  116   FORMAT('      SUCH WAS NOT THE CASE HERE.')
1348        CALL DPWRST('XXX','BUG ')
1349        WRITE(ICOUT,117)N
1350  117   FORMAT('      THE INPUT NUMBER OF OBSERVATIONS = ',I8,'.')
1351        CALL DPWRST('XXX','BUG ')
1352        IERROR='YES'
1353        GOTO9000
1354      ENDIF
1355C
1356C               ****************************************************
1357C               **  STEP 2--                                      **
1358C               **  COMPUTE THE H CONSISTENCY STATISTIC           **
1359C               ****************************************************
1360C
1361      IWRITE='OFF'
1362      CALL DISTIN(X1,N,IWRITE,XIDTEM,NUMSE1,IBUGA3,IERROR)
1363      CALL SORT(XIDTEM,NUMSE1,XIDTEM)
1364      CALL DISTIN(X2,N,IWRITE,XIDTE2,NUMSE2,IBUGA3,IERROR)
1365      CALL SORT(XIDTE2,NUMSE2,XIDTE2)
1366C
1367      IF(NUMSE1.LT.1)THEN
1368        WRITE(ICOUT,999)
1369        CALL DPWRST('XXX','BUG ')
1370        WRITE(ICOUT,111)
1371        CALL DPWRST('XXX','BUG ')
1372        WRITE(ICOUT,192)
1373  192   FORMAT('      NUMBER OF LABS    NUMSE1 < 1')
1374        CALL DPWRST('XXX','BUG ')
1375        IERROR='YES'
1376        GOTO9000
1377      ENDIF
1378C
1379      IF(NUMSE2.LT.1)THEN
1380        WRITE(ICOUT,999)
1381        CALL DPWRST('XXX','BUG ')
1382        WRITE(ICOUT,111)
1383        CALL DPWRST('XXX','BUG ')
1384        WRITE(ICOUT,194)
1385  194   FORMAT('      NUMBER OF MATERIALS    NUMSE2 < 1')
1386        CALL DPWRST('XXX','BUG ')
1387        IERROR='YES'
1388        GOTO9000
1389      ENDIF
1390C
1391      J=0
1392      NOUT=0
1393      DO1110ISET2=1,NUMSE2
1394C
1395C  STEP 1: COMPUTE OVERALL MEAN FOR CURRENT MATERIAL
1396C
1397        K=0
1398        DO1120I=1,N
1399          IF(XIDTE2(ISET2).EQ.X2(I))THEN
1400            K=K+1
1401            TEMP(K)=Y(I)
1402          ENDIF
1403 1120   CONTINUE
1404        NTEMP=K
1405        CALL MEAN(TEMP,NTEMP,IWRITE,XBAR,IBUGA3,IERROR)
1406C
1407        DO1130ISET1=1,NUMSE1
1408C
1409          K=0
1410          DO1140I=1,N
1411            IF(XIDTEM(ISET1).EQ.X1(I).AND.XIDTE2(ISET2).EQ.X2(I))THEN
1412              K=K+1
1413              TEMP(K)=Y(I)
1414            ENDIF
1415 1140     CONTINUE
1416          NTEMP=K
1417C
1418          CALL MEAN(TEMP,NTEMP,IWRITE,XBARI,IBUGA3,IERROR)
1419          TEMP2(ISET1)=XBARI
1420          NOUT=(ISET2-1)*NUMSE1 + ISET1
1421          YOUT(NOUT)=XBARI - XBAR
1422          TAG(NOUT)=XIDTE2(ISET2)
1423          TAG2(NOUT)=XIDTEM(ISET1)
1424C
1425          IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'ONS2')THEN
1426            WRITE(ICOUT,1141)ISET1,ISET2,NOUT,XBAR,XBARI,YOUT(NOUT)
1427 1141       FORMAT('ISET1,ISET2,NOUT,XBAR,XBARI,YOUT(NOUT) = ',
1428     1             3I8,3G15.7)
1429            CALL DPWRST('XXX','BUG ')
1430          ENDIF
1431C
1432 1130   CONTINUE
1433C
1434        CALL SD(TEMP2,NUMSE1,IWRITE,SDBARI,IBUGA3,IERROR)
1435C
1436        IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'ONS2')THEN
1437          WRITE(ICOUT,1147)ISET1,SDBARI
1438 1147     FORMAT('ISET1,SDBARI = ',I8,G15.7)
1439          CALL DPWRST('XXX','BUG ')
1440        ENDIF
1441C
1442        DO1150I=(ISET2-1)*NUMSE1+1,ISET2*NUMSE1
1443          YOUT(I)=YOUT(I)/SDBARI
1444 1150   CONTINUE
1445C
1446 1110 CONTINUE
1447      NOUT=NUMSE1*NUMSE2
1448C
1449C               *****************
1450C               **  STEP 90--  **
1451C               **  EXIT.      **
1452C               *****************
1453C
1454 9000 CONTINUE
1455      IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'ONS2')THEN
1456        WRITE(ICOUT,999)
1457        CALL DPWRST('XXX','BUG ')
1458        WRITE(ICOUT,9011)
1459 9011   FORMAT('***** AT THE END       OF HCONS2--')
1460        CALL DPWRST('XXX','BUG ')
1461        WRITE(ICOUT,9012)IBUGA3,ISUBRO,IERROR
1462 9012   FORMAT('IBUGA3,ISUBRO,IERROR = ',A4,2X,A4,2X,A4)
1463        CALL DPWRST('XXX','BUG ')
1464        WRITE(ICOUT,9013)N,NUMSE1,NUMSE2,XBAR
1465 9013   FORMAT('N,NUMSE1,NUMSE2,XBAR = ',I8,1X,I8,1X,I8,1X,G15.7)
1466        CALL DPWRST('XXX','BUG ')
1467        WRITE(ICOUT,9015)SDBARI
1468 9015   FORMAT('SDBARI = ',G15.7)
1469        CALL DPWRST('XXX','BUG ')
1470        DO9018I=1,NOUT
1471          WRITE(ICOUT,9019)I,TAG(I),TAG2(I),YOUT(I)
1472 9019     FORMAT('I,TAG(I),TAG2(I),YOUT(I) = ',I8,3G15.7)
1473          CALL DPWRST('XXX','BUG ')
1474 9018   CONTINUE
1475      ENDIF
1476C
1477      RETURN
1478      END
1479      SUBROUTINE HEADS(Y,X,TAG,N,DIST,DTAG,TAGMAX,TAGMIN,DEL,
1480     1                 HEADS2,NTRIAL,AVEDEL,SDAVED,
1481     1                 IBUGG3,ISUBRO,IERROR)
1482C
1483C     PURPOSE--DETERMINE NUMBER OF "HEADS" IN BLOCK PLOT
1484C     WRITTEN BY--JAMES J. FILLIBEN
1485C                 NATIONAL INSTITUTE OF STANDARDS & TECHNOLOGY
1486C                 GAITHERSBURG, MARYLAND 20899
1487C                 PHONE--301-975-2855
1488C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
1489C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
1490C     ORIGINAL VERSION--MAY     1992.
1491C     UPDATED         --AUGUST  2010. PASS IN TEMPORARY ARRAYS
1492C                                     INSTEAD OF CREATING THEM HERE
1493C                                     TO AVOID CONFLICTS WITH ARRAY
1494C                                     CREATION IN DPBLOC
1495C
1496C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
1497C
1498      CHARACTER*4 IBUGG3
1499      CHARACTER*4 ISUBRO
1500      CHARACTER*4 IERROR
1501C
1502      CHARACTER*4 IWRITE
1503C
1504C---------------------------------------------------------------------
1505C
1506      DIMENSION Y(*)
1507      DIMENSION X(*)
1508      DIMENSION TAG(*)
1509      DIMENSION DIST(*)
1510      DIMENSION DTAG(*)
1511      DIMENSION TAGMAX(*)
1512      DIMENSION TAGMIN(*)
1513      DIMENSION DEL(*)
1514C
1515CCCCC DIMENSION TAGMAX(1000)
1516CCCCC DIMENSION TAGMIN(1000)
1517CCCCC DIMENSION DEL(1000)
1518C
1519CCCCC INCLUDE 'DPCOPA.INC'
1520CCCCC INCLUDE 'DPCOZZ.INC'
1521CCCCC EQUIVALENCE (GARBAG(IGARB7),TAGMAX(1))
1522CCCCC EQUIVALENCE (GARBAG(IGARB8),TAGMIN(1))
1523CCCCC EQUIVALENCE (GARBAG(IGARB9),DEL(1))
1524C
1525C
1526C-----COMMON----------------------------------------------------------
1527C
1528      INCLUDE 'DPCOP2.INC'
1529C
1530C-----START POINT-----------------------------------------------------
1531C
1532      IERROR='NO'
1533C
1534      IF(IBUGG3.EQ.'ON' .OR. ISUBRO.EQ.'EADS')THEN
1535        WRITE(ICOUT,999)
1536  999   FORMAT(1X)
1537        CALL DPWRST('XXX','BUG ')
1538        WRITE(ICOUT,70)
1539   70   FORMAT('AT THE BEGINNING OF HEADS--')
1540        CALL DPWRST('XXX','BUG ')
1541        WRITE(ICOUT,71)N
1542   71   FORMAT('N = ',I8)
1543        CALL DPWRST('XXX','BUG ')
1544        DO75I=1,N
1545          WRITE(ICOUT,76)I,Y(I),X(I),TAG(I)
1546   76     FORMAT('I,Y(I),X(I),TAG(I) = ',I8,3F15.7)
1547          CALL DPWRST('XXX','BUG ')
1548   75   CONTINUE
1549      ENDIF
1550C
1551C               **************************************************
1552C               **  STEP 1--                                    **
1553C               **  FORM A VECTOR (TAXMAX(.))                   **
1554C               **  WHICH WILL CONTAIN THE TAGS                 **
1555C               **  OF THE LARGEST ITEM IN EACH BLOCK.          **
1556C               **  THE NUMBER OF ITEMS IN TAGMAX(.)            **
1557C               **  WILL EQUAL THE NUMBER OF DISTINCT X VALUES. **
1558C               **************************************************
1559C
1560      CALL DISTIN(X,N,'OFF ',DIST,NTRIAL,IBUGG3,IERROR)
1561C
1562      DO1100ID=1,NTRIAL
1563C
1564         YIMAX=CPUMIN
1565         DO1200I=1,N
1566            IF(X(I).EQ.DIST(ID))THEN
1567               IF(Y(I).GT.YIMAX)THEN
1568                  YIMAX=Y(I)
1569                  TAGMAX(ID)=TAG(I)
1570               ENDIF
1571            ENDIF
1572 1200    CONTINUE
1573C
1574         YIMIN=CPUMAX
1575         DO1300I=1,N
1576            IF(X(I).EQ.DIST(ID))THEN
1577               IF(Y(I).LT.YIMIN)THEN
1578                  YIMIN=Y(I)
1579                  TAGMIN(ID)=TAG(I)
1580               ENDIF
1581            ENDIF
1582 1300    CONTINUE
1583C
1584      IF(TAGMAX(ID).EQ.TAGMAX(1))DEL(ID)=YIMAX-YIMIN
1585      IF(TAGMAX(ID).NE.TAGMAX(1))DEL(ID)=(-(YIMAX-YIMIN))
1586C
1587 1100 CONTINUE
1588C
1589C               **************************************************
1590C               **  STEP 2--                                    **
1591C               **  SCAN THE TAGMAX(.) VECTOR.                  **
1592C               **  DETERMINE THE MOST FREQUENT TAG IN TAXMAX(.). **
1593C               **  OUTPUT THAT MAX FREQUENCY (IN HEADS2).      **
1594C               **************************************************
1595C
1596      CALL DISTIN(TAGMAX,NTRIAL,'OFF ',DTAG,NDTAG,IBUGG3,IERROR)
1597C
1598      JMAX=(-999)
1599      DO2100IDTAG=1,NDTAG
1600         J=0
1601         DO2200I=1,NTRIAL
1602            IF(TAGMAX(I).EQ.DTAG(IDTAG))J=J+1
1603 2200    CONTINUE
1604         IF(J.GT.JMAX)JMAX=J
1605 2100 CONTINUE
1606      HEADS2=JMAX
1607C
1608C               *****************************************************
1609C               **  STEP 3--                                       **
1610C               **  COMPUTE THE AVERAGE DIFFERENCE (= EST. EFFECT) **
1611C               **  IN THE RESPONSE                                **
1612C               **  BETWEEN THE MAX AND THE MIN                    **
1613C               *****************************************************
1614C
1615      IWRITE='OFF'
1616      CALL MEAN(DEL,NTRIAL,IWRITE,AVEDEL,IBUGG3,IERROR)
1617      CALL SDMEAN(DEL,NTRIAL,IWRITE,SDAVED,IBUGG3,IERROR)
1618C
1619C               ******************
1620C               **   STEP 90--  **
1621C               **   EXIT       **
1622C               ******************
1623C
1624      IF(IBUGG3.EQ.'ON' .OR. ISUBRO.EQ.'EADS')THEN
1625        WRITE(ICOUT,999)
1626        CALL DPWRST('XXX','BUG ')
1627        WRITE(ICOUT,9011)
1628 9011   FORMAT('AT THE END       OF HEADS--')
1629        CALL DPWRST('XXX','BUG ')
1630        WRITE(ICOUT,9031)HEADS2,AVEDEL,SDAVED,NTRIAL
1631 9031   FORMAT('HEADS2,AVEDEL,SDAVED,NTRIAL= ',3F15.5,I8)
1632        CALL DPWRST('XXX','BUG ')
1633        DO9033I=1,NTRIAL
1634          WRITE(ICOUT,9034)I,DIST(I),TAGMAX(I)
1635 9034     FORMAT('I,DIST(I),TAGMAX(I) = ',I8,2F15.7)
1636          CALL DPWRST('XXX','BUG ')
1637 9033   CONTINUE
1638        WRITE(ICOUT,9041)NDTAG
1639 9041   FORMAT('NDTAG = ',I8)
1640        CALL DPWRST('XXX','BUG ')
1641        DO9042I=1,NDTAG
1642          WRITE(ICOUT,9043)I,DTAG(I)
1643 9043     FORMAT('I,DTAG(I) = ',I8,F15.7)
1644          CALL DPWRST('XXX','BUG ')
1645 9042   CONTINUE
1646      ENDIF
1647C
1648      RETURN
1649      END
1650      SUBROUTINE HEDGEG(Y1,Y2,N1,N2,IWRITE,STATVA,STATBC,STATSE,
1651     1                  ALPHA,ALCL,AUCL,
1652     1                  YMEAN1,YSD1,YMEAN2,YSD2,SPOOL,
1653     1                  ICASE,ISUBRO,IBUGA3,IERROR)
1654C
1655C     PURPOSE--THIS SUBROUTINE COMPUTES THE HEDGE'S G STATISTIC.
1656C
1657C              GIVEN TWO SAMPLES, THE HEDGE'S G STATISTIC IS
1658C
1659C                 g = (YBAR1 - YBAR2)/S(POOLED)
1660C
1661C              WHERE
1662C
1663C                 YBAR1  = MEAN OF SAMPLE 1
1664C                 YBAR2  = MEAN OF SAMPEL 2
1665C                 S(POOLED) = THE POOLED STANDARD DEVIATION OF THE
1666C                             TWO SAMPLES:
1667C
1668C                             SQRT{((N1-1)*s1**2 + (N2-1)*s2**2)/
1669C                                  ((N1-1) + (N2-1))}
1670C
1671C                             S1 = STANDARD DEVIAITON SAMPLE ONE
1672C                             N1 = NUMBER OF OBSERVATIONS FOR SAMPLE ONE
1673C                             S2 = STANDARD DEVIAITON SAMPLE TWO
1674C                             N2 = NUMBER OF OBSERVATIONS FOR SAMPLE TWO
1675C
1676C              THERE IS A SMALL SAMPLE BIAS CORRECTION TERM (N=N1+N2):
1677C
1678C                 ((N-3)/(N-2.25))*SQRT((N-2)/N)
1679C
1680C              2018/08: HEDGE'S ORIGINAL APPROXIMATION WAS
1681C
1682C                           1 - 3/(4*N - 9)
1683C
1684C                        NOTE THAT THESE ARE ACTUALLY APPROXIMATING
1685C
1686C                           J(N1+N2-2)
1687C
1688C                        WHERE
1689C
1690C                           J(X) = GAMMA(X/2)/{SQRT(X/2)*GAMMA((X-1)/2)}
1691C
1692C                        RUNNING A COMPARISON FOR VALUES OF N1 AND N2
1693C                        FROM 2 TO 20 INDICATES THAT HEDGE'S ORIGINAL
1694C                        APPROXIMATION IS MORE ACCURATE.  WE WILL USE
1695C                        THE GAMMA FUNCTIONS FOR N1 AND N2 < 20.
1696C
1697C              THIS STATISTIC IS A MEASURE OF EFFECT SIZE IN STANDARD
1698C              DEVIATION UNITS.  A RULE OF THUMB IS
1699C
1700C                  0.2  => SMALL EFFECT
1701C                  0.5  => MODERATE EFFECT
1702C                  0.8  => LARGE EFFECT
1703C
1704C              THIS ROUTINE COMPUTES TWO VARIANTS OF THIS STATISTIC.
1705C
1706C                  1) COHEN'S D USES THE FOLLOWING ESTIMATE FOR
1707C                     THE POOLED STANDARD DEVAITION
1708C
1709C                       S(pooled) = SQRT((s1**2 + s2**2)/2)
1710C
1711C                     THAT IS, THE POOLED STANDARD DEVIATION IS NOT
1712C                     WEIGHTED BY SAMPLE SIZE.
1713C
1714C                     GENERALLY SPEAKING, HEDGE'S G IS PREFERRED TO
1715C                     COHEN'S D.
1716C
1717C                  2) GLASS'S ESTIMATE USES THE CONTROL GROUP STANDARD
1718C                     DEVIATION RATHER THAN THE POOLED STANDARD
1719C                     DEVIATION.  THIS VERSION IS SOMETIMES PREFERRED
1720C                     WHEN THE DIFFERENCE IN THE SAMPLE STANDARD
1721C                     DEVIATIONS IS LARGE.
1722C
1723C                     DATAPLOT ASSUMES THE CONTROL DATA IS IN SAMPLE
1724C                     TWO.
1725C
1726C     INPUT  ARGUMENTS--Y1     = THE SINGLE PRECISION VECTOR FOR SAMPLE ONE
1727C                     --Y2     = THE SINGLE PRECISION VECTOR FOR SAMPLE TWO
1728C                     --N1     = THE INTEGER NUMBER OF OBSERVATIONS FOR Y1
1729C                     --N2     = THE INTEGER NUMBER OF OBSERVATIONS FOR Y2
1730C                     --ICASE  = 'BIAS' => NO BIAS CORRECTION
1731C                              = 'BC  ' => BIAS CORRECTED
1732C                              = 'COHE' => COHEN'S D
1733C                              = 'GLAS' => GLASS STATISTIC
1734C     OUTPUT ARGUMENTS--STATVA = THE SINGLE PRECISION VALUE OF THE
1735C                                COMPUTED HEDGE'S G
1736C                     --STATBC = THE SINGLE PRECISION VALUE OF THE
1737C                                BIAS CORRECTED HEDGE'S G
1738C     OUTPUT--THE COMPUTED SINGLE PRECISION VALUE OF THE
1739C             SAMPLE HEDGE'S G.
1740C     RESTRICTIONS--THERE IS NO RESTRICTION ON THE MAXIMUM VALUE
1741C                   OF N FOR THIS SUBROUTINE.
1742C     OTHER DATAPAC   SUBROUTINES NEEDED--NONE.
1743C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE.
1744C     MODE OF INTERNAL OPERATIONS--DOUBLE PRECISION.
1745C     LANGUAGE--ANSI FORTRAN (1977)
1746C     WRITTEN BY--ALAN HECKERT
1747C                 STATISTICAL ENGINEERING DIVISION
1748C                 INFORMATION TECHNOLOGY LABORATORY
1749C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
1750C                 GAITHERSBURG, MD 20899-8980
1751C                 PHONE--301-975-2899
1752C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
1753C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
1754C     LANGUAGE--ANSI FORTRAN (1977)
1755C     VERSION NUMBER--2017/07
1756C     ORIGINAL VERSION--JULY      2017.
1757C     UPDATED         --AUGUST    2018. UPDATED BIAS CORRECTION TERM
1758C                                       FOR HEDGE'S G
1759C
1760C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
1761C
1762      CHARACTER*4 IWRITE
1763      CHARACTER*4 ICASE
1764      CHARACTER*4 ISUBRO
1765      CHARACTER*4 IBUGA3
1766      CHARACTER*4 IERROR
1767C
1768      CHARACTER*4 ISUBN1
1769      CHARACTER*4 ISUBN2
1770C
1771C---------------------------------------------------------------------
1772C
1773      DOUBLE PRECISION DN1
1774      DOUBLE PRECISION DN2
1775      DOUBLE PRECISION DN
1776      DOUBLE PRECISION DY
1777      DOUBLE PRECISION DSUM1
1778      DOUBLE PRECISION DPOOL
1779      DOUBLE PRECISION DX
1780      DOUBLE PRECISION DX2
1781      DOUBLE PRECISION DTERM1
1782      DOUBLE PRECISION DTERM2
1783      DOUBLE PRECISION DTERM3
1784      DOUBLE PRECISION DCORR
1785C
1786      DIMENSION Y1(*)
1787      DIMENSION Y2(*)
1788C
1789C-----COMMON----------------------------------------------------------
1790C
1791      INCLUDE 'DPCOP2.INC'
1792C
1793C-----START POINT-----------------------------------------------------
1794C
1795      ISUBN1='HEDG'
1796      ISUBN2='EG  '
1797      IERROR='NO'
1798      STATVA=CPUMIN
1799      STATBC=CPUMIN
1800C
1801      IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'DGEG')THEN
1802        WRITE(ICOUT,999)
1803  999   FORMAT(1X)
1804        CALL DPWRST('XXX','BUG ')
1805        WRITE(ICOUT,51)
1806   51   FORMAT('***** AT THE BEGINNING OF HEDGEG--')
1807        CALL DPWRST('XXX','BUG ')
1808        WRITE(ICOUT,52)IBUGA3,ISUBRO,ICASE,N1,N2,ALPHA
1809   52   FORMAT('IBUGA3,ISUBRO,ICASE,N1,N2,ALPHA = ',3(A4,2X),2I8,G15.7)
1810        CALL DPWRST('XXX','BUG ')
1811        DO55I=1,N1
1812          WRITE(ICOUT,56)I,Y1(I)
1813   56     FORMAT('I,Y1(I) = ',I8,G15.7)
1814          CALL DPWRST('XXX','BUG ')
1815   55   CONTINUE
1816        DO65I=1,N2
1817          WRITE(ICOUT,66)I,Y2(I)
1818   66     FORMAT('I,Y2(I) = ',I8,G15.7)
1819          CALL DPWRST('XXX','BUG ')
1820   65   CONTINUE
1821      ENDIF
1822C
1823C               ********************************************
1824C               **  STEP 1--                              **
1825C               **  CHECK THE INPUT ARGUMENTS FOR ERRORS  **
1826C               ********************************************
1827C
1828C
1829      IF(N1.LT.1)THEN
1830        WRITE(ICOUT,999)
1831        CALL DPWRST('XXX','BUG ')
1832        WRITE(ICOUT,111)
1833  111   FORMAT('***** ERROR IN HEDGES G--')
1834        CALL DPWRST('XXX','BUG ')
1835        WRITE(ICOUT,112)
1836  112   FORMAT('      THE NUMBER OF OBSERVATIONS FOR VARIABLE ONE IS ',
1837     1         'LESS THAN ONE.')
1838        CALL DPWRST('XXX','BUG ')
1839        WRITE(ICOUT,117)N1
1840  117   FORMAT('      THE NUMBER OF OBSERVATIONS = ',I8)
1841        CALL DPWRST('XXX','BUG ')
1842        IERROR='YES'
1843        GOTO9000
1844      ELSEIF(N2.LT.1)THEN
1845        WRITE(ICOUT,999)
1846        CALL DPWRST('XXX','BUG ')
1847        WRITE(ICOUT,111)
1848        CALL DPWRST('XXX','BUG ')
1849        WRITE(ICOUT,122)
1850  122   FORMAT('      THE NUMBER OF OBSERVATIONS FOR VARIABLE TWO IS ',
1851     1         'LESS THAN ONE.')
1852        CALL DPWRST('XXX','BUG ')
1853        WRITE(ICOUT,117)N2
1854        CALL DPWRST('XXX','BUG ')
1855        IERROR='YES'
1856        GOTO9000
1857      ENDIF
1858C
1859C               ************************************************
1860C               **  STEP 2--                                  **
1861C               **  COMPUTE THE HEDGE'S G STATISTIC.          **
1862C               ************************************************
1863C
1864C     COMPUTE THE MEANS AND STANDARD DEVIATIONS
1865C
1866      DN1=DBLE(N1)
1867      DSUM1=0.0D0
1868      DO210I=1,N1
1869        DSUM1=DSUM1+DBLE(Y1(I))
1870  210 CONTINUE
1871      DMEAN1=DSUM1/DN1
1872      DSUM1=0.0D0
1873      DO220I=1,N1
1874        DY=DBLE(Y1(I))
1875        DSUM1=DSUM1+(DY-DMEAN1)**2
1876  220 CONTINUE
1877      DSD1=0.0D0
1878      IF(DN1.GT.1.5D0)DSD1=DSQRT(DSUM1/(DN1-1.0D0))
1879C
1880      DN2=DBLE(N2)
1881      DSUM1=0.0D0
1882      DO230I=1,N2
1883        DSUM1=DSUM1+DBLE(Y2(I))
1884  230 CONTINUE
1885      DMEAN2=DSUM1/DN2
1886      DSUM1=0.0D0
1887      DO240I=1,N2
1888        DY=DBLE(Y2(I))
1889        DSUM1=DSUM1+(DY-DMEAN2)**2
1890  240 CONTINUE
1891      DSD2=0.0D0
1892      IF(DN2.GT.1.5D0)DSD2=DSQRT(DSUM1/(DN2-1.0D0))
1893      YMEAN1=REAL(DMEAN1)
1894      YMEAN2=REAL(DMEAN2)
1895      YSD1=REAL(DSD1)
1896      YSD2=REAL(DSD2)
1897C
1898      DNUM=DMEAN1-DMEAN2
1899      IF(ICASE.EQ.'COHD')THEN
1900        DPOOL=(DSD1**2 + DSD2**2)/2.0D0
1901        DPOOL=DSQRT(DPOOL)
1902      ELSEIF(ICASE.EQ.'GLAS')THEN
1903        DPOOL=DSD2
1904        IF(DSD2.LE.0.0D0)DSD1=0.0D0
1905      ELSE
1906        DPOOL=((DN1-1.0D0)*DSD1**2 + (DN2-1.0D0)*DSD2**2)/
1907     1        (DN1+DN2-2.0D0)
1908        DPOOL=DSQRT(DPOOL)
1909      ENDIF
1910      SPOOL=REAL(DPOOL)
1911C
1912      IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'DGEG')THEN
1913        WRITE(ICOUT,241)DMEAN1,DSD1,DMEAN2,DSD2
1914  241   FORMAT('DMEAN1,DSD1,DMEAN2,DSD2 = ',4G15.7)
1915        CALL DPWRST('XXX','BUG ')
1916        WRITE(ICOUT,243)DNUM,DPOOL
1917  243   FORMAT('DNUM,DPOOL = ',2G15.7)
1918        CALL DPWRST('XXX','BUG ')
1919      ENDIF
1920C
1921      IF(DSD1.LE.0.0D0 .AND. DSD2.LE.0.0D0)THEN
1922        WRITE(ICOUT,999)
1923        CALL DPWRST('XXX','BUG ')
1924        WRITE(ICOUT,111)
1925        CALL DPWRST('XXX','BUG ')
1926        WRITE(ICOUT,251)
1927  251   FORMAT('      THE STANDARD DEVIATIONS FOR BOTH SAMPLES ARE ',
1928     1         'NON-POSITIVE.')
1929        CALL DPWRST('XXX','BUG ')
1930        IERROR='YES'
1931        GOTO9000
1932      ENDIF
1933C
1934      STATVA=REAL(DNUM/DPOOL)
1935C
1936C     COMPUTE BIAS CORRECTION FACTOR
1937C
1938      N=N1+N2
1939      AN=REAL(N)
1940CCCCC CORR=((AN-3.0)/(AN-2.25))*SQRT((AN-2.0)/AN)
1941      IF(N.LE.40)THEN
1942        DN=DBLE(AN)
1943        DX=DN/2.0D0
1944        DTERM1=DGAMMA(DX)
1945        DTERM2=DSQRT(DX)
1946        DX2=(DN-1.0D0)/2.0D0
1947        DTERM3=DGAMMA(DX2)
1948        DCORR=DTERM1/(DTERM2*DTERM3)
1949        CORR=REAL(DCORR)
1950      ELSE
1951        CORR=1.0 - 3.0/(4.0*AN - 9.0)
1952      ENDIF
1953      STATBC=STATVA*CORR
1954C
1955C     COMPUTE STANDARD ERROR AND LOWER AND UPPER CONFIDENCE LIMITS
1956C
1957      TERM1=AN/(REAL(N1)*REAL(N2))
1958      TERM2=STATVA**2/(2.0*AN)
1959      STATSE=SQRT(TERM1 + TERM2)
1960      ALPHA2=ALPHA
1961      IF(ALPHA2.GE.1.0 .AND. ALPHA2.LE.100.0)ALPHA2=ALPHA2/100.0
1962      IF(ALPHA2.LE.0.0 .OR. ALPHA2.GE.1.0)THEN
1963        ALPHA2=0.975
1964      ELSEIF(ALPHA2.LT.0.5)THEN
1965        ALPHA2= 1.0 - (ALPHA2/2.0)
1966      ELSE
1967        ALPHA2=1.0 - ALPHA2
1968        ALPHA2=1.0 - (ALPHA2/2.0)
1969      ENDIF
1970      CALL NORPPF(ALPHA2,PPF)
1971      ALCL=STATVA - PPF*STATSE
1972      AUCL=STATVA + PPF*STATSE
1973C
1974C               *******************************
1975C               **  STEP 3--                 **
1976C               **  WRITE OUT A LINE         **
1977C               **  OF SUMMARY INFORMATION.  **
1978C               *******************************
1979C
1980      IF(IFEEDB.EQ.'ON' .AND. IWRITE.EQ.'ON')THEN
1981        WRITE(ICOUT,999)
1982        CALL DPWRST('XXX','BUG ')
1983        IF(ICASE.EQ.'HEDG')THEN
1984           WRITE(ICOUT,301)STATVA
1985  301      FORMAT('THE HEDGES G STATISTIC (NO BIAS CORRECTION) IS ',
1986     1            G15.7)
1987          CALL DPWRST('XXX','BUG ')
1988        ELSEIF(ICASE.EQ.'BCHG')THEN
1989           WRITE(ICOUT,303)STATBC
1990  303      FORMAT('THE BIAS CORRECTED HEDGES G STATISTIC  IS ',G15.7)
1991          CALL DPWRST('XXX','BUG ')
1992        ENDIF
1993      ENDIF
1994C
1995C               *****************
1996C               **  STEP 90--  **
1997C               **  EXIT       **
1998C               *****************
1999C
2000 9000 CONTINUE
2001      IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'DGEG')THEN
2002        WRITE(ICOUT,999)
2003        CALL DPWRST('XXX','BUG ')
2004        WRITE(ICOUT,9011)
2005 9011   FORMAT('***** AT THE END       OF HEDGEG--')
2006        CALL DPWRST('XXX','BUG ')
2007        WRITE(ICOUT,9014)IERROR,STATVA,STATBC,CORR
2008 9014   FORMAT('IERROR,STATVA,STATBC,CORR = ',A4,2X,3G15.7)
2009        CALL DPWRST('XXX','BUG ')
2010        WRITE(ICOUT,9016)STATSE,ALPHA2,ALCL,AUCL
2011 9016   FORMAT('STATSE,ALPHA2,ALCL,AUCL = ',4G15.7)
2012        CALL DPWRST('XXX','BUG ')
2013      ENDIF
2014C
2015      RETURN
2016      END
2017      SUBROUTINE HERMIT(X,AN,HN)
2018C
2019C     PURPOSE--THIS SUBROUTINE COMPUTES THE HERMITE POLYNOMIAL OF
2020C              ORDER N.
2021C     INPUT  ARGUMENTS--X      = THE SINGLE PRECISION INPUT ARGUMENT
2022C                       AN     = THE SINGLE PRECISION VALUE FOR THE
2023C                                ORDER OF THE FUNCTION (SHOULD BE
2024C                                NON-NEGATIVE ORDER)
2025C     OUTPUT ARGUMENTS--HN     = THE SINGLE PRECISION VALUE OF THE
2026C                                HERMITE POLYNOMIAL.
2027C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
2028C     RESTRICTIONS--
2029C     OTHER DATAPAC   SUBROUTINES NEEDED--NONE
2030C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE
2031C     MODE OF INTERNAL OPERATIONS--SOME DOUBLE PRECISION.
2032C     LANGUAGE--ANSI FORTRAN.
2033C     REFERENCES--"HANDBOOK OF MATHEMATICAL FUNCTIONS, AMS 55",
2034C                 ABRAMOWITZ AND STEGUM.
2035C                 USE FOLLOWING RECURRENCE FORMULA:
2036C                    H(N+1) = 2.0*X*H(N)-2.0*N*H(N-1)
2037C                 FIRST FEW TERMS ARE FROM TABLE 22.12 OF ABRAMOWITZ
2038C                 AND STEGUM.
2039C     WRITTEN BY--JAMES J. FILLIBEN
2040C                 STATISTICAL ENGINEERING LABORATORY (205.03)
2041C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
2042C                 GAITHERSBURG, MD 20899-8980
2043C                 PHONE:  301-975-2855
2044C     ORIGINAL VERSION--JULY       1995.
2045C
2046C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
2047C
2048      DOUBLE PRECISION DX
2049      DOUBLE PRECISION DN, DN2
2050      DOUBLE PRECISION DHN, DHN1, DHN2
2051C
2052C-----COMMON----------------------------------------------------------
2053C
2054      INCLUDE 'DPCOP2.INC'
2055C
2056C-----START POINT-----------------------------------------------------
2057C
2058      N=INT(AN+0.5)
2059      IF(N.LT.0)THEN
2060        WRITE(ICOUT,6)
2061        CALL DPWRST('XXX','BUG ')
2062        WRITE(ICOUT,47)N
2063        CALL DPWRST('XXX','BUG ')
2064        GOTO9999
2065      ENDIF
2066    6 FORMAT('***** NON-FATAL DIAGNOSTIC--THE 2ND INPUT ARGUMENT ',
2067     1'TO THE HERMIT SUBROUTINE IS NEGATIVE *****')
2068   47 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',I8,' *****')
2069C
2070      DX=DBLE(X)
2071      DN=DBLE(N)
2072C
2073      IF(N.LE.0)THEN
2074        HN=1.0
2075      ELSEIF(N.EQ.1)THEN
2076        HN=2.0*X
2077      ELSEIF(N.EQ.2)THEN
2078        HN=4.0*X**2 - 2.0
2079      ELSEIF(N.EQ.3)THEN
2080        DHN=8.0D0*DX**3 - 12.0D0*DX
2081        HN=REAL(DHN)
2082      ELSEIF(N.EQ.4)THEN
2083        DHN=16.0D0*DX**4 - 48.0D0*X**2 + 12.0D0
2084        HN=REAL(DHN)
2085      ELSEIF(N.EQ.5)THEN
2086        DHN=32.0D0*DX**5 - 160.0D0*DX**3 + 120.0D0*DX
2087        HN=REAL(DHN)
2088      ELSE
2089        DHN1=32.0D0*DX**5 - 160.0D0*DX**3 + 120.0D0*DX
2090        DHN2=16.0D0*DX**4 - 48.0D0*X**2 + 12.0D0
2091        DO1000I=6,N
2092          DN2=DBLE(I)-1.0D0
2093          DHN=2.0D0*DX*DHN1 - 2.0D0*DN2*DHN2
2094          DHN2=DHN1
2095          DHN1=DHN
2096 1000   CONTINUE
2097        HN=REAL(DHN)
2098      ENDIF
2099C
2100 9999 CONTINUE
2101      RETURN
2102      END
2103      SUBROUTINE HERCDF(X,ALPHA,BETA,CDF)
2104C
2105C     PURPOSE--THIS SUBROUTINE COMPUTES THE CUMULATIVE DISTRIBUTION
2106C              FUNCTION VALUE AT THE SINGLE PRECISION VALUE X
2107C              FOR THE HERMITE DISTRIBUTION
2108C              WITH SINGLE PRECISION PARAMETERS ALPHA AND BETA.
2109C              THIS DISTRIBUTION IS DEFINED FOR ALL
2110C              NON-NEGATIVE INTEGERS.
2111C              THIS DISTRIBUTION HAS THE PROBABILITY FUNCTION
2112C                 F(X) = (ALPHA**X*H(BETA)/X!)*PR(X=0)
2113C              WITH H(X) DENOTING THE MODIFIED HERMITE POLYNOMIAL:
2114C                 H(BETA) = SUM[j=0 to INT(N/2)]
2115C                           [N!*X**(N-2*j)/((N-2(j)!j!2**j)]
2116C              THE FIRST FEW TERMS ARE:
2117C                 PR(X=0) = EXP[-ALPHA*BETA - ALPHA**2/2]
2118C                 PR(X=1) = ALPHA*BETA*PR(X=0)
2119C                 PR(X=2) = (ALPHA**2*(BETA**2+1)/2!)*PR(X=0)
2120C                 PR(X=3) = (ALPHA**3*(BETA**3+3*BETA)/3!)*PR(X=0)
2121C                 PR(X=4) = (ALPHA**4*(BETA**4+6*BETA**2+3)/4!)*PR(X=0)
2122C                 PR(X=5) = (ALPHA**5*(BETA**5+10*BETA**3+15*BETA)/5!)
2123C                           *PR(X=0)
2124C
2125C                 PR(X=X+1) = (1/(X+1))*ALPHA*BETA*PR(X=x) +
2126C                             ALPHA**2*PR(X=x-1)
2127C
2128C              FOR X <= 20, THE ABOVE RECURRENCE RELATION WILL
2129C              BE USED.  FOR X > 20, AN AYMPTOTIC FORMULA DUE
2130C              TO Y. C. PATEL WILL BE USED.  NOTE THAT THE
2131C              PATEL ARTICLE USES:
2132C
2133C                 A = ALPHA*BETA
2134C                 B = ALPHA**2/2
2135C
2136C              IF YOU WANT TO OBTAIN APPROPRIATE VALUES OF
2137C              ALPHA AND BETA GIVEN A AND B, THEN
2138C
2139C                 ALPHA = SQRT(2*B)
2140C                 BETA  = A/SQRT(2*B)
2141C
2142C     INPUT  ARGUMENTS--X      = THE SINGLE PRECISION VALUE
2143C                                AT WHICH THE PROBABILITY DENSITY
2144C                                FUNCTION IS TO BE EVALUATED.
2145C                                X SHOULD BE INTEGRAL-VALUED,
2146C                                AND BETWEEN 0.0 (INCLUSIVELY)
2147C                                AND N (INCLUSIVELY).
2148C                     --ALPHA  = THE SINGLE PRECISION VALUE
2149C                                OF THE FIRST SHAPE PARAMETER.
2150C                     --BETA   = THE SINGLE PRECISION VALUE
2151C                                OF THE SECOND SHAPE PARAMETER.
2152C     OUTPUT ARGUMENTS--CDF    = THE SINGLE PRECISION CUMULATIVE
2153C                                DISTRIBUTION FUNCTION VALUE.
2154C     OUTPUT--THE SINGLE PRECISION CUMULATIVE DISTRIBUTION
2155C             FUNCTION VALUE CDF FOR THE HERMITE DISTRIBUTION
2156C             WITH SHAPE PARAMETERS ALPHA AND BETA.
2157C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
2158C     RESTRICTIONS--X SHOULD BE INTEGRAL-VALUED AND NON-NEGATIVE
2159C                 --ALPHA AND BETA SHOULD BE POSITIVE.
2160C     OTHER DATAPAC   SUBROUTINES NEEDED--DLNGAM, DGAMMA.
2161C     FORTRAN LIBRARY SUBROUTINES NEEDED--DLOG, DEXP, DSQRT, DCOSH,
2162C                                         DSINH, DLOG10.
2163C     MODE OF INTERNAL OPERATIONS--DOUBLE PRECISION.
2164C     LANGUAGE--ANSI FORTRAN (1977)
2165C     REFERENCES--JOHNSON, KOTZ, AND KEMP, "UNIVARIATE DISCRETE
2166C                 DISTRIBUTIONS", SECOND EDITION, WILEY, 1992,
2167C                 PP. 357-364.
2168C               --Y. C. PATEL, "AN ASYMPTOTIC EXPRESSION FOR
2169C                 CUMULATIVE SUM OF PROBABILITIES OF THE HERMITE
2170C                 DISTRIBUTION", COMMUNICATIOS IN STATISTICS-
2171C                 THEORY AND METHODS, 14, PP. 2233-2241.
2172C               --KEMP AND KEMP, "SOME PROPERTIES OF THE HERMITE
2173C                 DISTRIBUTION", BIOMETRIKA, 1965, 52, 3 AND 4,
2174C                 P. 381
2175C     WRITTEN BY--JAMES J. FILLIBEN
2176C                 STATISTICAL ENGINEERING DIVISION
2177C                 INFORMATION TECHNOLOGY LABORATORY
2178C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
2179C                 GAITHERSBURG, MD 20899-8980
2180C                 PHONE--301-975-2855
2181C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
2182C           OF THE NATIONAL BUREAU OF STANDARDS.
2183C     LANGUAGE--ANSI FORTRAN (1977)
2184C               EXCEPTION--HOLLERITH STRINGS IN FORMAT STATEMENTS
2185C                          DENOTED BY QUOTES RATHER THAN NH.
2186C     VERSION NUMBER--2004/4
2187C     ORIGINAL VERSION--APRIL     2004.
2188C
2189C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
2190C
2191C---------------------------------------------------------------------
2192C
2193      DOUBLE PRECISION DALPHA
2194      DOUBLE PRECISION DBETA
2195      DOUBLE PRECISION DA
2196      DOUBLE PRECISION DB
2197      DOUBLE PRECISION DTERM1, DTERM2, DTERM3, DTERM4, DTERM5
2198      DOUBLE PRECISION DCDF
2199      DOUBLE PRECISION DPDF
2200      DOUBLE PRECISION DCDF0
2201      DOUBLE PRECISION DS
2202      DOUBLE PRECISION DMU
2203      DOUBLE PRECISION DMUS
2204      DOUBLE PRECISION S0
2205      DOUBLE PRECISION K
2206      DOUBLE PRECISION ZS
2207      DOUBLE PRECISION DNUM
2208      DOUBLE PRECISION DDENOM
2209C
2210C-----COMMON----------------------------------------------------------
2211C
2212      INCLUDE 'DPCOP2.INC'
2213C
2214C-----START POINT-----------------------------------------------------
2215C
2216      CDF=0.0
2217C
2218C     CHECK THE INPUT ARGUMENTS FOR ERRORS
2219C
2220      IF(ALPHA.LE.0.0)THEN
2221        WRITE(ICOUT,11)
2222        CALL DPWRST('XXX','BUG ')
2223        WRITE(ICOUT,46)ALPHA
2224        CALL DPWRST('XXX','BUG ')
2225        CDF=0.0
2226        GOTO9999
2227      ENDIF
2228      IF(BETA.LE.0.0)THEN
2229        WRITE(ICOUT,12)
2230        CALL DPWRST('XXX','BUG ')
2231        WRITE(ICOUT,46)BETA
2232        CALL DPWRST('XXX','BUG ')
2233        CDF=0.0
2234        GOTO9999
2235      ENDIF
2236      INTX=INT(X+0.0001)
2237      FINTX=INTX
2238      DEL=X-FINTX
2239      IF(DEL.LT.0.0)DEL=-DEL
2240      IF(DEL.GT.0.001)THEN
2241        WRITE(ICOUT,5)
2242        CALL DPWRST('XXX','BUG ')
2243        WRITE(ICOUT,6)INT(FINTX)
2244        CALL DPWRST('XXX','BUG ')
2245        WRITE(ICOUT,46)X
2246        CALL DPWRST('XXX','BUG ')
2247      ENDIF
2248      IF(FINTX.LT.0.0)THEN
2249        WRITE(ICOUT,4)
2250        CALL DPWRST('XXX','BUG ')
2251        WRITE(ICOUT,46)X
2252        CALL DPWRST('XXX','BUG ')
2253        GOTO9999
2254      ENDIF
2255C
2256    4 FORMAT('***** ERROR--THE FIRST ARGUMENT TO HERCDF IS NEGATIVE.')
2257    5 FORMAT('***** WARNING--THE FIRST ARGUMENT TO HERCDF IS ',
2258     1       'NON-INTEGRAL.')
2259    6 FORMAT('      IT HAS BEEN SET TO ',I8)
2260   11 FORMAT('***** ERROR--THE SECOND ARGUMENT TO HERCDF IS ',
2261     1       'NON-POSITIVE.')
2262   12 FORMAT('***** ERROR--THE THIRD ARGUMENT TO HERCDF IS ',
2263     1       'NON-POSITIVE.')
2264   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',G15.7,'.')
2265C
2266      DALPHA=DBLE(ALPHA)
2267      DBETA=DBLE(BETA)
2268      DB=DALPHA**2/2.0D0
2269      DA=DALPHA*DBETA
2270C
2271C  USE EXACT FORMULAS
2272C
2273      IF(INTX.LE.25)THEN
2274        DCDF0=DEXP(-DALPHA*DBETA - DALPHA**2/2.0D0)
2275        DCDF=DCDF0
2276        IF(INTX.EQ.0)GOTO9010
2277C
2278        DCDF=DCDF + DALPHA*DBETA*DCDF0
2279        IF(INTX.EQ.1)GOTO9010
2280C
2281        DTERM1=DALPHA**2*(DBETA*DBETA + 1.0D0)
2282        DCDF=DCDF + (DTERM1/2.0D0)*DCDF0
2283        IF(INTX.EQ.2)GOTO9010
2284C
2285        DTERM1=DALPHA**3*(DBETA**3 + 3.0D0*DBETA)
2286        DCDF=DCDF + (DTERM1/6.0D0)*DCDF0
2287        IF(INTX.EQ.3)GOTO9010
2288C
2289        DTERM1=DALPHA**4*(DBETA**4 + 6.0D0*DBETA**2 + 3.0D0)
2290        DCDF=DCDF + (DTERM1/24.0D0)*DCDF0
2291        IF(INTX.EQ.4)GOTO9010
2292C
2293        DTERM1=DALPHA**5*(DBETA**5 + 10.0D0*DBETA**3 + 15.0D0*DBETA)
2294        DCDF=DCDF + (DTERM1/120.0D0)*DCDF0
2295        IF(INTX.EQ.5)GOTO9010
2296C
2297        DTERM1=DALPHA**4*(DBETA**4 + 6.0D0*DBETA**2 + 3.0D0)
2298        DTERM1=(DTERM1/24.0D0)*DCDF0
2299        DTERM2=DALPHA**5*(DBETA**5 + 10.0D0*DBETA**3 + 15.0D0*DBETA)
2300        DTERM2=(DTERM2/120.0D0)*DCDF0
2301C
2302        DO110I=6,INTX
2303          DPDF=(DALPHA*DBETA*DTERM2 + DALPHA*DALPHA*DTERM1)/DBLE(I)
2304          DCDF=DCDF + DPDF
2305          DTERM1=DTERM2
2306          DTERM2=DPDF
2307  110   CONTINUE
2308        GOTO9010
2309      ELSE
2310C
2311C  USE ASYMPTOTIC APPROXIMATION
2312C
2313        DS=DBLE(INTX)
2314        DMU=DA + 2.0D0*DB
2315        CALL HERPDF(0.0,ALPHA,BETA,PDF)
2316        S0=1.0D0 + 1.0D0/(12.0D0*DS) + 1.0D0/(288.0D0*DS*DS)
2317        DMUS=(DMU-DS)/DSQRT(DS+2.0D0*DB)
2318        C=DSQRT(2.0D0*DB/DS)
2319        K=DSQRT(1.0D0 + 2.0D0*DB/DS)
2320        CALL NODPDF(DMUS,ZS)
2321        CALL NODCDF(DMUS,DTERM1)
2322C
2323        DTERM1=1.0D0-DTERM1
2324        DTERM1=DTERM1*(1.0D0 + 1.0D0/(12.0D0*DS))
2325C
2326        DNUM=(DMUS**2 + (6.0D0*DB/DS) + 2.0D0)*DS
2327        DDENOM=3.0D0*(DS+2.0D0*DB)**(3.0D0/2.0D0)
2328        DTERM2=(DNUM/DDENOM)*ZS
2329C
2330        DNUM=DMUS*(DS**2 + 6.0D0*DB*DS + 48.0D0*DB*DB)
2331        DDENOM=12.0D0*(DS+2.0D0*DB)**3
2332        DTERM3=(DNUM/DDENOM)*ZS
2333C
2334        DNUM=DMUS**3*(DS + 42.0D0*DB)*DS
2335        DDENOM=36.0D0*(DS+2.0D0*DB)**3
2336        DTERM4=(DNUM/DDENOM)*ZS
2337C
2338        DNUM=DMUS**5*DS*DS
2339        DDENOM=18.0D0*(DS+2.0D0*DB)**3
2340        DTERM5=(DNUM/DDENOM)*ZS
2341C
2342        DCDF=DTERM5 + DTERM4 + DTERM3 + DTERM2 + DTERM1
2343        DCDF=(1.0D0/S0)*DCDF
2344        GOTO9010
2345      ENDIF
2346C
2347 9010 CONTINUE
2348      CDF=REAL(DCDF)
2349C
2350 9999 CONTINUE
2351      RETURN
2352      END
2353      SUBROUTINE HERPDF(X,ALPHA,BETA,PDF)
2354C
2355C     PURPOSE--THIS SUBROUTINE COMPUTES THE PROBABILITY DENSITY
2356C              FUNCTION VALUE AT THE SINGLE PRECISION VALUE X
2357C              FOR THE HERMITE DISTRIBUTION
2358C              WITH SINGLE PRECISION PARAMETERS ALPHA AND BETA.
2359C              THIS DISTRIBUTION IS DEFINED FOR ALL
2360C              NON-NEGATIVE INTEGERS.
2361C              THIS DISTRIBUTION HAS THE PROBABILITY FUNCTION
2362C                 F(X) = (ALPHA**X*H(BETA)/X!)*PR(X=0)
2363C              WITH H(X) DENOTING THE MODIFIED HERMITE POLYNOMIAL:
2364C                 H(BETA) = SUM[j=0 to INT(N/2)]
2365C                           [N!*X**(N-2*j)/((N-2(j)!j!2**j)]
2366C              THE FIRST FEW TERMS ARE:
2367C                 PR(X=0) = EXP[-ALPHA*BETA - ALPHA**2/2]
2368C                 PR(X=1) = ALPHA*BETA*PR(X=0)
2369C                 PR(X=2) = (ALPHA**2*(BETA**2+1)/2!)*PR(X=0)
2370C                 PR(X=3) = (ALPHA**3*(BETA**3+3*BETA)/3!)*PR(X=0)
2371C                 PR(X=4) = (ALPHA**4*(BETA**4+6*BETA**2+3)/4!)*PR(X=0)
2372C                 PR(X=5) = (ALPHA**5*(BETA**5+10*BETA**3+15*BETA)/5!)
2373C                           *PR(X=0)
2374C
2375C                 PR(X=X+1) = (1/(X+1))*ALPHA*BETA*PR(X=x) +
2376C                             ALPHA**2*PR(X=x-1)
2377C
2378C              FOR X <= 10, THE ABOVE RECURRENCE RELATION WILL
2379C              BE USED.  FOR X > 10, AN AYMPTOTIC FORMULA DUE
2380C              TO Y. C. PATEL WILL BE USED.  NOTE THAT THE
2381C              PATEL ARTICLE USES:
2382C
2383C                 A = ALPHA*BETA
2384C                 B = ALPHA**2/2
2385C
2386C              IF YOU WANT TO OBTAIN APPROPRIATE VALUES OF
2387C              ALPHA AND BETA GIVEN A AND B, THEN
2388C
2389C                 ALPHA = SQRT(2*B)
2390C                 BETA  = A/SQRT(2*B)
2391C
2392C     INPUT  ARGUMENTS--X      = THE SINGLE PRECISION VALUE
2393C                                AT WHICH THE PROBABILITY DENSITY
2394C                                FUNCTION IS TO BE EVALUATED.
2395C                                X SHOULD BE INTEGRAL-VALUED,
2396C                                AND BETWEEN 0.0 (INCLUSIVELY)
2397C                                AND N (INCLUSIVELY).
2398C                     --ALPHA  = THE SINGLE PRECISION VALUE
2399C                                OF THE FIRST SHAPE PARAMETER.
2400C                     --BETA   = THE SINGLE PRECISION VALUE
2401C                                OF THE SECOND SHAPE PARAMETER.
2402C     OUTPUT ARGUMENTS--PDF    = THE SINGLE PRECISION PROBABILITY
2403C                                DENSITY FUNCTION VALUE.
2404C     OUTPUT--THE SINGLE PRECISION PROBABILITY DENSITY
2405C             FUNCTION VALUE PDF FOR THE HERMITE DISTRIBUTION
2406C             WITH SHAPE PARAMETERS ALPHA AND BETA.
2407C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
2408C     RESTRICTIONS--X SHOULD BE INTEGRAL-VALUED AND NON-NEGATIVE
2409C                 --ALPHA AND BETA SHOULD BE POSITIVE.
2410C     OTHER DATAPAC   SUBROUTINES NEEDED--DLNGAM, DGAMMA.
2411C     FORTRAN LIBRARY SUBROUTINES NEEDED--DLOG, DEXP, DSQRT, DCOSH,
2412C                                         DSINH, DLOG10.
2413C     MODE OF INTERNAL OPERATIONS--DOUBLE PRECISION.
2414C     LANGUAGE--ANSI FORTRAN (1977)
2415C     REFERENCES--JOHNSON, KOTZ, AND KEMP, "UNIVARIATE DISCRETE
2416C                 DISTRIBUTIONS", SECOND EDITION, WILEY, 1992,
2417C                 PP. 357-364.
2418C               --Y. C. PATEL, "AN ASYMPTOTIC EXPRESSION FOR
2419C                 CUMULATIVE SUM OF PROBABILITIES OF THE HERMITE
2420C                 DISTRIBUTION", COMMUNICATIOS IN STATISTICS-
2421C                 THEORY AND METHODS, 14, PP. 2233-2241.
2422C               --KEMP AND KEMP, "SOME PROPERTIES OF THE HERMITE
2423C                 DISTRIBUTION", BIOMETRIKA, 1965, 52, 3 AND 4,
2424C                 P. 381
2425C     WRITTEN BY--JAMES J. FILLIBEN
2426C                 STATISTICAL ENGINEERING DIVISION
2427C                 INFORMATION TECHNOLOGY LABORATORY
2428C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
2429C                 GAITHERSBURG, MD 20899-8980
2430C                 PHONE--301-975-2855
2431C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
2432C           OF THE NATIONAL BUREAU OF STANDARDS.
2433C     LANGUAGE--ANSI FORTRAN (1977)
2434C               EXCEPTION--HOLLERITH STRINGS IN FORMAT STATEMENTS
2435C                          DENOTED BY QUOTES RATHER THAN NH.
2436C     VERSION NUMBER--2004/4
2437C     ORIGINAL VERSION--APRIL     2004.
2438C
2439C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
2440C
2441C---------------------------------------------------------------------
2442C
2443      DOUBLE PRECISION DALPHA
2444      DOUBLE PRECISION DBETA
2445      DOUBLE PRECISION DA
2446      DOUBLE PRECISION DB
2447      DOUBLE PRECISION DTERM1, DTERM2, DTERM3, DTERM4
2448      DOUBLE PRECISION DPDF
2449      DOUBLE PRECISION DPDF0
2450      DOUBLE PRECISION DTHETA
2451      DOUBLE PRECISION DLNGAM
2452      DOUBLE PRECISION DIS
2453      DOUBLE PRECISION DAA
2454      DOUBLE PRECISION BS
2455      DOUBLE PRECISION CS
2456C
2457C-----COMMON----------------------------------------------------------
2458C
2459      INCLUDE 'DPCOP2.INC'
2460C
2461C-----START POINT-----------------------------------------------------
2462C
2463      PDF=0.0
2464      DPDF=0.0D0
2465C
2466C     CHECK THE INPUT ARGUMENTS FOR ERRORS
2467C
2468      IF(ALPHA.LE.0.0)THEN
2469        WRITE(ICOUT,11)
2470        CALL DPWRST('XXX','BUG ')
2471        WRITE(ICOUT,46)ALPHA
2472        CALL DPWRST('XXX','BUG ')
2473        PDF=0.0
2474        GOTO9999
2475      ENDIF
2476      IF(BETA.LE.0.0)THEN
2477        WRITE(ICOUT,12)
2478        CALL DPWRST('XXX','BUG ')
2479        WRITE(ICOUT,46)BETA
2480        CALL DPWRST('XXX','BUG ')
2481        PDF=0.0
2482        GOTO9999
2483      ENDIF
2484      INTX=INT(X+0.0001)
2485      FINTX=INTX
2486      DEL=X-FINTX
2487      IF(DEL.LT.0.0)DEL=-DEL
2488      IF(DEL.GT.0.001)THEN
2489        WRITE(ICOUT,5)
2490        CALL DPWRST('XXX','BUG ')
2491        WRITE(ICOUT,6)INT(FINTX)
2492        CALL DPWRST('XXX','BUG ')
2493        WRITE(ICOUT,46)X
2494        CALL DPWRST('XXX','BUG ')
2495      ENDIF
2496      IF(FINTX.LT.0.0)THEN
2497        WRITE(ICOUT,4)
2498        CALL DPWRST('XXX','BUG ')
2499        WRITE(ICOUT,46)X
2500        CALL DPWRST('XXX','BUG ')
2501        GOTO9999
2502      ENDIF
2503C
2504    4 FORMAT('***** FATAL ERROR--THE FIRST INPUT ',
2505     1'ARGUMENT TO THE HERPDF SUBROUTINE IS NEGATIVE.')
2506    5 FORMAT('***** NON-FATAL DIAGNOSTIC--THE FIRST INPUT ',
2507     1'ARGUMENT TO THE HERPDF SUBROUTINE IS NON-INTEGRAL *****')
2508    6 FORMAT('      IT HAS BEEN SET TO ',I8)
2509   11 FORMAT('***** FATAL ERROR--THE SECOND INPUT ARGUMENT TO THE ',
2510     1' HERPDF SUBROUTINE IS NON-POSITIVE')
2511   12 FORMAT('***** FATAL ERROR--THE THIRD INPUT ARGUMENT TO THE ',
2512     1' HERPDF SUBROUTINE IS NON-POSITIVE')
2513   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',E15.8,' *****')
2514C
2515      DALPHA=DBLE(ALPHA)
2516      DBETA=DBLE(BETA)
2517      DB=DALPHA**2/2.0D0
2518      DA=DALPHA*DBETA
2519C
2520C  USE EXACT FORMULAS
2521C
2522CCCCC IF(INTX.LE.20)THEN
2523      IF(INTX.LE.10)THEN
2524        DPDF0=DEXP(-DALPHA*DBETA - DALPHA**2/2.0D0)
2525        IF(INTX.EQ.0)THEN
2526          DPDF=DPDF0
2527        ELSEIF(INTX.EQ.1)THEN
2528          DPDF=DALPHA*DBETA*DPDF0
2529        ELSEIF(INTX.EQ.2)THEN
2530          DTERM1=DALPHA**2*(DBETA*DBETA + 1.0D0)
2531          DPDF=(DTERM1/2.0D0)*DPDF0
2532        ELSEIF(INTX.EQ.3)THEN
2533          DTERM1=DALPHA**3*(DBETA**3 + 3.0D0*DBETA)
2534          DPDF=(DTERM1/6.0D0)*DPDF0
2535        ELSEIF(INTX.EQ.4)THEN
2536          DTERM1=DALPHA**4*(DBETA**4 + 6.0D0*DBETA**2 + 3.0D0)
2537          DPDF=(DTERM1/24.0D0)*DPDF0
2538        ELSEIF(INTX.EQ.5)THEN
2539          DTERM1=DALPHA**5*(DBETA**5 + 10.0D0*DBETA**3 + 15.0D0*DBETA)
2540          DPDF=(DTERM1/120.0D0)*DPDF0
2541        ELSEIF(INTX.GE.6)THEN
2542          DTERM1=DALPHA**4*(DBETA**4 + 6.0D0*DBETA**2 + 3.0D0)
2543          DTERM1=(DTERM1/24.0D0)*DPDF0
2544          DTERM2=DALPHA**5*(DBETA**5 + 10.0D0*DBETA**3 + 15.0D0*DBETA)
2545          DTERM2=(DTERM2/120.0D0)*DPDF0
2546          DO110I=6,INTX
2547            DPDF=(DALPHA*DBETA*DTERM2 + DALPHA*DALPHA*DTERM1)/DBLE(I)
2548            DTERM1=DTERM2
2549            DTERM2=DPDF
2550  110     CONTINUE
2551        ENDIF
2552        PDF=REAL(DPDF)
2553      ELSE
2554        IF(MOD(INTX,2).EQ.0)THEN
2555          IS=INTX/2
2556          DIS=DBLE(IS)
2557          DAA=DA*DA/(8.0D0*DB)
2558          BS=(4.0D0*DIS+1.0D0)
2559          DTERM1=DSQRT(DAA)*DSQRT(DAA+BS)
2560          DTERM2=BS*DLOG10(DSQRT(1.0D0+DAA/BS)+DSQRT(DAA/BS))
2561          DTHETA=DCOSH(DTERM1 + DTERM2)
2562          DTERM1=-(DA+DB+DAA)
2563          DTERM2=DIS*DLOG(DB) - DLNGAM(DBLE(IS+1))
2564          DTERM3=-0.25D0*DLOG(1.0D0 + DAA/BS)
2565          DTERM4=DLOG(DTHETA)
2566          DPDF=DTERM1 + DTERM2 + DTERM3 + DTERM4
2567          DPDF=DEXP(DPDF)
2568          PDF=REAL(DPDF)
2569        ELSE
2570          IS=(INTX-1)/2
2571          DIS=DBLE(IS)
2572          DAA=DA*DA/(8.0D0*DB)
2573          CS=(4.0D0*DIS+3.0D0)/2.0D0
2574          DTERM1=DSQRT(DAA)*DSQRT(DAA+CS)
2575          DTERM2=CS*DLOG(DSQRT(1.0D0+DAA/CS)+DSQRT(DAA/CS))
2576          DTHETA=DSINH(DTERM1 + DTERM2)
2577          DTERM1=-(DA+DB+DAA)
2578          DTERM2=DIS*DLOG(DB) + 0.5D0*DLOG(2.0D0*DB) -
2579     1           0.5D0*DLOG(CS) - DLNGAM(DBLE(IS+1))
2580          DTERM3=0.25D0*DLOG(1.0D0 + DAA/CS)
2581          DTERM4=DLOG(DTHETA)
2582          DPDF=DTERM1 + DTERM2 + DTERM3 + DTERM4
2583          DPDF=DEXP(DPDF)
2584          PDF=REAL(DPDF)
2585        ENDIF
2586C
2587C  USE ASYMPTOTIC APPROXIMATION
2588C
2589      ENDIF
2590C
2591 9999 CONTINUE
2592      RETURN
2593      END
2594      SUBROUTINE HERPPF(P,ALPHA,BETA,PPF)
2595C
2596C     PURPOSE--THIS SUBROUTINE COMPUTES THE PERCENT POINT
2597C              FUNCTION VALUE AT THE SINGLE PRECISION VALUE P
2598C              FOR THE HERMITE DISTRIBUTION
2599C              WITH SINGLE PRECISION PARAMETERS ALPHA AND BETA.
2600C              THE FIRST 25 TERMS OF THE HERMITE CUMULATIVE
2601C              DISTRIBUTION WILL BE COMPUTED.  IF THE PERCENT
2602C              POINT IS NOT FOUND WITHIN THESE FIRST 25 TERMS,
2603C              A BISECTION METHOD WILL BE ATTEMPTED.
2604C     INPUT  ARGUMENTS--P      = THE SINGLE PRECISION VALUE
2605C                                (BETWEEN 0.0 (INCLUSIVELY)
2606C                                AND 1.0 (INCLUSIVELY))
2607C                                AT WHICH THE PERCENT POINT
2608C                                FUNCTION IS TO BE EVALUATED.
2609C                     --ALPHA  = THE SINGLE PRECISION VALUE
2610C                                OF THE FIRST SHAPE PARAMETER.
2611C                     --BETA   = THE SINGLE PRECISION VALUE
2612C                                OF THE SECOND SHAPE PARAMETER.
2613C                                N SHOULD BE A POSITIVE INTEGER.
2614C     OUTPUT ARGUMENTS--PPF    = THE SINGLE PRECISION PERCENT
2615C                                POINT FUNCTION VALUE.
2616C     OUTPUT--THE SINGLE PRECISION PERCENT POINT  .
2617C             FUNCTION VALUE PPF
2618C             FOR THE HERMITE DISTRIBUTION
2619C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
2620C     RESTRICTIONS--ALPHA AND BETA SHOULD BE POSITIVE.
2621C                 --P SHOULD BE BETWEEN 0.0 (INCLUSIVELY)
2622C                   AND 1.0 (INCLUSIVELY).
2623C     OTHER DATAPAC   SUBROUTINES NEEDED--HERCDF
2624C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION AND DOUBLE PRECISION.
2625C     LANGUAGE--ANSI FORTRAN (1977)
2626C     REFERENCES--JOHNSON, KOTZ, AND KEMP, "UNIVARIATE DISCRETE
2627C                 DISTRIBUTIONS", SECOND EDITION, WILEY, 1992,
2628C                 PP. 357-364.
2629C               --Y. C. PATEL, "AN ASYMPTOTIC EXPRESSION FOR
2630C                 CUMULATIVE SUM OF PROBABILITIES OF THE HERMITE
2631C                 DISTRIBUTION", COMMUNICATIOS IN STATISTICS-
2632C                 THEORY AND METHODS, 14, PP. 2233-2241.
2633C               --KEMP AND KEMP, "SOME PROPERTIES OF THE HERMITE
2634C                 DISTRIBUTION", BIOMETRIKA, 1965, 52, 3 AND 4,
2635C                 P. 381
2636C     WRITTEN BY--JAMES J. FILLIBEN
2637C                 STATISTICAL ENGINEERING DIVISION
2638C                 INFORMATION TECHNOLOGY LABORATORY
2639C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
2640C                 GAITHERSBURG, MD 20899-8980
2641C                 PHONE--301-975-2855
2642C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
2643C           OF THE NATIONAL BUREAU OF STANDARDS.
2644C     LANGUAGE--ANSI FORTRAN (1966)
2645C               EXCEPTION--HOLLERITH STRINGS IN FORMAT STATEMENTS
2646C                          DENOTED BY QUOTES RATHER THAN NH.
2647C     VERSION NUMBER--2004/4
2648C     ORIGINAL VERSION--APRIL     2004.
2649C
2650C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
2651C
2652C---------------------------------------------------------------------
2653C
2654C---------------------------------------------------------------------
2655C
2656      DOUBLE PRECISION DALPHA
2657      DOUBLE PRECISION DBETA
2658      DOUBLE PRECISION DTERM1
2659      DOUBLE PRECISION DTERM2
2660      DOUBLE PRECISION DCDF
2661      DOUBLE PRECISION DPDF
2662      DOUBLE PRECISION DCDF0
2663      DOUBLE PRECISION DP
2664C
2665      INCLUDE 'DPCOP2.INC'
2666C
2667C-----START POINT-----------------------------------------------------
2668C
2669C     CHECK THE INPUT ARGUMENTS FOR ERRORS
2670C
2671      IF(P.LT.0.0.OR.P.GE.1.0)THEN
2672        WRITE(ICOUT,1)
2673        CALL DPWRST('XXX','BUG ')
2674        WRITE(ICOUT,46)P
2675        CALL DPWRST('XXX','BUG ')
2676        PPF=0.0
2677        GOTO9999
2678      ENDIF
2679      IF(ALPHA.LE.0.0)THEN
2680        WRITE(ICOUT,11)
2681        CALL DPWRST('XXX','BUG ')
2682        WRITE(ICOUT,46)ALPHA
2683        CALL DPWRST('XXX','BUG ')
2684        CDF=0.0
2685        GOTO9999
2686      ENDIF
2687      IF(BETA.LE.0.0)THEN
2688        WRITE(ICOUT,12)
2689        CALL DPWRST('XXX','BUG ')
2690        WRITE(ICOUT,46)BETA
2691        CALL DPWRST('XXX','BUG ')
2692        CDF=0.0
2693        GOTO9999
2694      ENDIF
2695    1 FORMAT('***** ERROR--THE FIRST ARGUMENT TO ',
2696     1' HERPPF IS OUTSIDE THE ALLOWABLE (0,1] INTERVAL')
2697   11 FORMAT('***** ERROR--THE SECOND ARGUMENT TO ',
2698     1' HERPPF IS NON-POSITIVE')
2699   12 FORMAT('***** ERROR--THE THIRD ARGUMENT TO ',
2700     1' HERPPF IS NON-POSITIVE')
2701   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',G15.7,'.')
2702C
2703      PPF=0.0
2704C
2705C     TREAT CERTAIN SPECIAL CASES IMMEDIATELY--
2706C     1) P = 0.0
2707C
2708      IF(P.EQ.0.0)THEN
2709        PPF=0.0
2710        GOTO9999
2711      ENDIF
2712C
2713C     COMPUTE THE HERCDF, TERMINATE WHEN CDF IS GREATER THAN OR
2714C     EQUAL TO P.
2715C
2716      DP=DBLE(P)
2717      DALPHA=DBLE(ALPHA)
2718      DBETA=DBLE(BETA)
2719C
2720      DCDF0=DEXP(-DALPHA*DBETA - DALPHA**2/2.0D0)
2721      DCDF=DCDF0
2722      IF(DCDF.GE.DP)THEN
2723        PPF=0.0
2724        GOTO9999
2725      ENDIF
2726C
2727      DCDF=DCDF + DALPHA*DBETA*DCDF0
2728      IF(DCDF.GE.DP)THEN
2729        PPF=1.0
2730        GOTO9999
2731      ENDIF
2732C
2733      DTERM1=DALPHA**2*(DBETA*DBETA + 1.0D0)
2734      DCDF=DCDF + (DTERM1/2.0D0)*DCDF0
2735      IF(DCDF.GE.DP)THEN
2736        PPF=2.0
2737        GOTO9999
2738      ENDIF
2739C
2740      DTERM1=DALPHA**3*(DBETA**3 + 3.0D0*DBETA)
2741      DCDF=DCDF + (DTERM1/6.0D0)*DCDF0
2742      IF(DCDF.GE.DP)THEN
2743        PPF=3.0
2744        GOTO9999
2745      ENDIF
2746C
2747      DTERM1=DALPHA**4*(DBETA**4 + 6.0D0*DBETA**2 + 3.0D0)
2748      DCDF=DCDF + (DTERM1/24.0D0)*DCDF0
2749      IF(DCDF.GE.DP)THEN
2750        PPF=4.0
2751        GOTO9999
2752      ENDIF
2753C
2754      DTERM1=DALPHA**5*(DBETA**5 + 10.0D0*DBETA**3 + 15.0D0*DBETA)
2755      DCDF=DCDF + (DTERM1/120.0D0)*DCDF0
2756      IF(DCDF.GE.DP)THEN
2757        PPF=5.0
2758        GOTO9999
2759      ENDIF
2760C
2761      DTERM1=DALPHA**4*(DBETA**4 + 6.0D0*DBETA**2 + 3.0D0)
2762      DTERM1=(DTERM1/24.0D0)*DCDF0
2763      DTERM2=DALPHA**5*(DBETA**5 + 10.0D0*DBETA**3 + 15.0D0*DBETA)
2764      DTERM2=(DTERM2/120.0D0)*DCDF0
2765C
2766      DO110I=6,25
2767        DPDF=(DALPHA*DBETA*DTERM2 + DALPHA*DALPHA*DTERM1)/DBLE(I)
2768        DCDF=DCDF + DPDF
2769        IF(DCDF.GE.DP)THEN
2770          PPF=REAL(I)
2771          GOTO9999
2772        ENDIF
2773        DTERM1=DTERM2
2774        DTERM2=DPDF
2775  110 CONTINUE
2776      P0=REAL(DCDF)
2777C
2778C     IF PPF NOT FOUND IN FIRST 25 TERMS, SWITCH TO BISECTION METHOD.
2779C
2780      X0=25.0
2781      AMEAN=ALPHA*(ALPHA+BETA)
2782      ASD=SQRT(ALPHA*(2*ALPHA+BETA))
2783      ISD=INT(ASD)+1
2784C
2785C     DETERMINE AN UPPER BOUND BY ITERATING IN STEPS OF ONE SD.
2786C
2787      MAXIT=1000
2788      ICOUNT=0
2789  200 CONTINUE
2790        ICOUNT=ICOUNT+1
2791        IF(ICOUNT.GT.MAXIT)THEN
2792          WRITE(ICOUT,210)
2793  210     FORMAT('***** ERROR: UNABLE TO FIND UPPER BOUND IN ',
2794     1           'HERPPF.')
2795          CALL DPWRST('XXX','BUG ')
2796          PPF=0.0
2797          GOTO9999
2798        ENDIF
2799        X1=X0 + REAL(ISD)
2800        CALL HERCDF(X1,ALPHA,BETA,P1)
2801        IF(P1.LT.P)THEN
2802          X0=X1
2803          GOTO200
2804        ENDIF
2805C
2806C     THE STOPPING CRITERION IS THAT THE LOWER BOUND
2807C     AND UPPER BOUND ARE EXACTLY 1 UNIT APART.
2808C     CHECK TO SEE IF IX1 = IX0 + 1;
2809C     IF SO, THE ITERATIONS ARE COMPLETE;
2810C     IF NOT, THEN BISECT, COMPUTE PROBABILIIES,
2811C     CHECK PROBABILITIES, AND CONTINUE ITERATING
2812C     UNTIL IX1 = IX0 + 1.
2813      IX0=INT(X0+ 0.01)
2814      IX1=INT(X1+ 0.01)
2815C
2816  300 CONTINUE
2817      IXOP1=IX0+1
2818      IF(IX1.EQ.IXOP1)THEN
2819        PPF=REAL(IX1)
2820        IF(P0.EQ.P)PPF=REAL(IX0)
2821        GOTO9999
2822      ENDIF
2823      IX2=(IX0+IX1)/2
2824      IF(IX2.EQ.IX0 .OR. IX2.EQ.IX0)THEN
2825        WRITE(ICOUT,311)
2826  311   FORMAT('***** INTERNAL ERROR IN HERPPF  SUBROUTINE.')
2827        CALL DPWRST('XXX','BUG ')
2828        WRITE(ICOUT,313)
2829  313   FORMAT('      BISECTION VALUE (X2) = LOWER BOUND (X0) OR ',
2830     1         'UPPER BOUND (X1)')
2831        CALL DPWRST('XXX','BUG ')
2832        WRITE(ICOUT,315)X0,P0
2833  315   FORMAT('      X0  = ',F14.7,10X,'P0 = ',F14.7)
2834        CALL DPWRST('XXX','BUG ')
2835        WRITE(ICOUT,317)X1,P1
2836  317   FORMAT('      X1  = ',F14.7,10X,'P1 = ',F14.7)
2837        CALL DPWRST('XXX','BUG ')
2838        WRITE(ICOUT,319)X2,P2
2839  319   FORMAT('      X2  = ',F14.7,10X,'P2 = ',F14.7)
2840        CALL DPWRST('XXX','BUG ')
2841        WRITE(ICOUT,321)P
2842  321   FORMAT('      P    = ',F14.7)
2843        CALL DPWRST('XXX','BUG ')
2844        WRITE(ICOUT,323)ALPHA,BETA
2845  323   FORMAT('      ALPHA, BETA = ',F14.7,F14.7)
2846        CALL DPWRST('XXX','BUG ')
2847      ELSE
2848        X2=REAL(IX2)
2849        CALL HERCDF(X2,ALPHA,BETA,P2)
2850        IF(P0.LT.P2 .AND. P2.LT.P1)THEN
2851          IF(P2.LE.P)THEN
2852            IX0=IX2
2853            X0=REAL(IX0)
2854            P0=P2
2855          ELSE
2856            IX1=IX2
2857            X1=REAL(IX1)
2858            P1=P2
2859          ENDIF
2860          GOTO300
2861        ELSEIF(P2.LE.P0 .OR. P2.GE.P1)THEN
2862          WRITE(ICOUT,311)
2863          CALL DPWRST('XXX','BUG ')
2864          WRITE(ICOUT,313)
2865          CALL DPWRST('XXX','BUG ')
2866          WRITE(ICOUT,315)X0,P0
2867          CALL DPWRST('XXX','BUG ')
2868          WRITE(ICOUT,317)X1,P1
2869          CALL DPWRST('XXX','BUG ')
2870          WRITE(ICOUT,319)X2,P2
2871          CALL DPWRST('XXX','BUG ')
2872          WRITE(ICOUT,321)P
2873          CALL DPWRST('XXX','BUG ')
2874          WRITE(ICOUT,323)ALPHA,BETA
2875          CALL DPWRST('XXX','BUG ')
2876        ELSE
2877          WRITE(ICOUT,311)
2878          CALL DPWRST('XXX','BUG ')
2879          WRITE(ICOUT,313)
2880          CALL DPWRST('XXX','BUG ')
2881          WRITE(ICOUT,315)X0,P0
2882          CALL DPWRST('XXX','BUG ')
2883          WRITE(ICOUT,317)X1,P1
2884          CALL DPWRST('XXX','BUG ')
2885          WRITE(ICOUT,319)X2,P2
2886          CALL DPWRST('XXX','BUG ')
2887          WRITE(ICOUT,321)P
2888          CALL DPWRST('XXX','BUG ')
2889          WRITE(ICOUT,323)ALPHA,BETA
2890          CALL DPWRST('XXX','BUG ')
2891        ENDIF
2892      ENDIF
2893C
2894 9999 CONTINUE
2895      RETURN
2896      END
2897      SUBROUTINE HERRAN(ALPHA,BETA,N,ISEED,X)
2898C
2899C     PURPOSE--THIS SUBROUTINE GENERATES A RANDOM SAMPLE OF SIZE N
2900C              FROM THE HERMITE DISTRIBUTION
2901C              WITH SHAPE PARAMETERS ALPHA AND BETA.
2902C              THIS DISTRIBUTION IS DEFINED FOR ALL
2903C              NON-NEGATIVE X.
2904C     INPUT  ARGUMENTS--N      = THE DESIRED INTEGER NUMBER
2905C                                OF RANDOM NUMBERS TO BE
2906C                                GENERATED.
2907C                     --ALPHA  = THE SINGLE PRECISION VALUE
2908C                                OF THE FIRST SHAPE PARAMETER OF THE
2909C                                HERMITE DISTRIBUTION.
2910C                                ALPHA > 0.
2911C                     --BETA   = THE SINGLE PRECISION VALUE
2912C                                OF THE SECOND SHAPE PARAMETER OF THE
2913C                                HERMITE DISTRIBUTION.
2914C                                BETA > 0.
2915C     OUTPUT ARGUMENTS--X      = A SINGLE PRECISION VECTOR
2916C                                (OF DIMENSION AT LEAST N)
2917C                                INTO WHICH THE GENERATED
2918C                                RANDOM SAMPLE WILL BE PLACED.
2919C     OUTPUT--A RANDOM SAMPLE OF SIZE N
2920C             FROM THE HERMITE DISTRIBUTION.
2921C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
2922C     RESTRICTIONS--THERE IS NO RESTRICTION ON THE MAXIMUM VALUE
2923C                   OF N FOR THIS SUBROUTINE.
2924C                 --ALPHA, BETA > 0
2925C     OTHER DATAPAC   SUBROUTINES NEEDED--UNIRAN, GEORAN.
2926C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE.
2927C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
2928C     LANGUAGE--ANSI FORTRAN (1977)
2929C     REFERENCES--JOHNSON, KOTZ, AND KEMP, "UNIVARIATE DISCRETE
2930C                 DISTRIBUTIONS", SECOND EDITION, WILEY, 1992,
2931C                 PP. 357-364.
2932C               --Y. C. PATEL, "AN ASYMPTOTIC EXPRESSION FOR
2933C                 CUMULATIVE SUM OF PROBABILITIES OF THE HERMITE
2934C                 DISTRIBUTION", COMMUNICATIOS IN STATISTICS-
2935C                 THEORY AND METHODS, 14, PP. 2233-2241.
2936C               --KEMP AND KEMP, "SOME PROPERTIES OF THE HERMITE
2937C                 DISTRIBUTION", BIOMETRIKA, 1965, 52, 3 AND 4,
2938C                 P. 381
2939C     WRITTEN BY--JAMES J. FILLIBEN
2940C                 STATISTICAL ENGINEERING DIVISION
2941C                 INFORMATION TECHNOLOGY LABORATORY
2942C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
2943C                 GAITHERSBURG, MD 20899-8980
2944C                 PHONE--301-975-2899
2945C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
2946C           OF THE NATIONAL BUREAU OF STANDARDS.
2947C     LANGUAGE--ANSI FORTRAN (1977)
2948C               EXCEPTION--HOLLERITH STRINGS IN FORMAT STATEMENTS
2949C                          DENOTED BY QUOTES RATHER THAN NH.
2950C     VERSION NUMBER--2004/4
2951C     ORIGINAL VERSION--APRIL     2004.
2952C
2953C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
2954C
2955C---------------------------------------------------------------------
2956C
2957      DIMENSION G(2)
2958      DIMENSION X(*)
2959C
2960C-----COMMON----------------------------------------------------------
2961C
2962      INCLUDE 'DPCOP2.INC'
2963C
2964C-----START POINT-----------------------------------------------------
2965C
2966C     CHECK THE INPUT ARGUMENTS FOR ERRORS
2967C
2968      IF(N.LT.1)THEN
2969        WRITE(ICOUT, 5)
2970        CALL DPWRST('XXX','BUG ')
2971        WRITE(ICOUT,47)N
2972        CALL DPWRST('XXX','BUG ')
2973        GOTO9000
2974      ENDIF
2975      IF(ALPHA.LE.0.0)THEN
2976        WRITE(ICOUT,11)
2977        CALL DPWRST('XXX','BUG ')
2978        WRITE(ICOUT,46)ALPHA
2979        CALL DPWRST('XXX','BUG ')
2980        GOTO9000
2981      ENDIF
2982      IF(BETA.LE.0.0)THEN
2983        WRITE(ICOUT,12)
2984        CALL DPWRST('XXX','BUG ')
2985        WRITE(ICOUT,46)BETA
2986        CALL DPWRST('XXX','BUG ')
2987        GOTO9000
2988      ENDIF
2989    5 FORMAT('***** FATAL ERROR--NUMBER OF HERMITE RANDOM ',
2990     1'NUMBERS REQUESTED < 1')
2991   11 FORMAT('***** FATAL ERROR--THE ALPHA SHAPE PARAMETER ARGUMENT',
2992     1' TO THE HERRAN SUBROUTINE IS <= 0')
2993   12 FORMAT('***** FATAL ERROR--THE BETA SHAPE PARAMETER ARGUMENT',
2994     1' TO THE HERRAN SUBROUTINE IS <= 0')
2995   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',E15.8,' *****')
2996   47 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',I8,' *****')
2997C
2998C     ALGORITHM BASED ON FACT THAT HERMITE DISTRIBUTION IS
2999C
3000C          X1 + 2*X2
3001C
3002C     WHERE X1 AND X2 ARE INDPENDENT POISSON RANDOM VARIABLES
3003C     WITH SHAPE PARAMETERS ALPHA*BETA AND ALPHA**2/2, RESPECTIVELY.
3004C
3005      A1=ALPHA*BETA
3006      A2=ALPHA*ALPHA/2.0
3007      NTEMP=1
3008C
3009      DO100I=1,N
3010        CALL POIRAN(NTEMP,A1,ISEED,G(1))
3011        CALL POIRAN(NTEMP,A2,ISEED,G(2))
3012        X(I)=G(1) + 2.0*G(2)
3013  100 CONTINUE
3014C
3015 9000 CONTINUE
3016      RETURN
3017C
3018      END
3019      SUBROUTINE HESS(PNRFUN,X,N,SCL,STPSZ,FNBR,H,TIMEL,TIMEU,RLENGT)
3020C
3021C *   AUTHORS: Necip Doganaksoy and Wayne Nelson
3022C *   PURPOSE: Maximum likelihood fitting of the power-normal and
3023C *            -lognormal models to censored life or strength data
3024C *            from specimens of various sizes
3025C *   DOCUMENTATION: Wayne Nelson and Necip Doganaksoy, "A Computer
3026C *                  Program POWNOR for Fitting the Power-Normal and
3027C *                  -Lognormal Models to Life or Strength Data from
3028C *                  Specimens of Various Sizes", NISTIR 4760, 3/1992.
3029C *   PROJECT: 1990-91 ASA/NIST/NSF Fellowship
3030C
3031C     Declarations
3032C
3033
3034      IMPLICIT DOUBLE PRECISION (a-h,o-z)
3035C
3036      DOUBLE PRECISION X(N),SCL(N),STPSZ(N),FNBR(N),H(N,N)
3037      DOUBLE PRECISION MACHEP
3038C
3039      DOUBLE PRECISION TIMEL(*)
3040      DOUBLE PRECISION TIMEU(*)
3041      DOUBLE PRECISION RLENGT(*)
3042C
3043      REAL R1MACH
3044      INCLUDE 'DPCOMC.INC'
3045C
3046      EXTERNAL PNRFUN
3047C
3048C     End declarations
3049C
3050      MACHEP = D1MACH(4)
3051      FC = PNRFUN(X,N,TIMEL,TIMEU,RLENGT)
3052      C = MACHEP**(1.0D0/3.0D0)
3053C
3054C     Calculate stepsize and updated function value
3055C
3056      DO 10 i = 1,n
3057          stpsz(i) = dmax1(dabs(x(i)),1.0d0/scl(i))
3058          stpsz(i) = stpsz(i)*c*dsign(1.0d0,x(i))
3059          tempi = x(i)
3060          x(i) = x(i) + stpsz(i)
3061          stpsz(i) = x(i) - tempi
3062          FNBR(I) = PNRFUN(X,N,TIMEL,TIMEU,RLENGT)
3063          x(i) = tempi
3064   10 CONTINUE
3065      DO 30 i = 1,n
3066C
3067C     Calculate Hessian
3068C
3069C
3070C     Calculate Diagonal Elements
3071C
3072          tempi = x(i)
3073          x(i) = x(i) + 2.0d0*stpsz(i)
3074          fii=pnrfun(x,n,timel,timeu,rlengt)
3075          h(i,i) = ((fc-fnbr(i))+ (fii-fnbr(i)))/ (stpsz(i)*stpsz(i))
3076          x(i) = tempi + stpsz(i)
3077          DO 20 j = i + 1,n
3078C
3079C     Calculate Off-Diagonal Elements
3080C
3081              tempj = x(j)
3082              x(j) = x(j) + stpsz(j)
3083              fij=pnrfun(x,n,timel,timeu,rlengt)
3084              h(i,j) = ((fc-fnbr(i))+ (fij-fnbr(j)))/
3085     +                 (stpsz(i)*stpsz(j))
3086              h(j,i) = h(i,j)
3087              x(j) = tempj
3088   20     CONTINUE
3089          x(i) = tempi
3090   30 CONTINUE
3091C
3092      RETURN
3093      END
3094      SUBROUTINE HFCCDF(X,CDF)
3095C
3096C     PURPOSE--THIS SUBROUTINE COMPUTES THE CUMULATIVE DISTRIBUTION
3097C              FUNCTION VALUE FOR THE HALF-CAUCHY DISTRIBUTION
3098C              THIS DISTRIBUTION IS DEFINED FOR ALL NON-NEGATIVE X
3099C              AND HAS THE PROBABILITY DENSITY FUNCTION
3100C              F(X) = (2/PI)/(1+x**2)
3101C              THE HALF-CAUCHY DISTRIBUTION USED HEREIN
3102C              IS THE DISTRIBUTION OF THE VARIATE X = ABS(Z) WHERE
3103C              THE VARIATE Z IS CAUCHY DISTRIBUTED
3104C     INPUT  ARGUMENTS--X      = THE SINGLE PRECISION VALUE
3105C                                AT WHICH THE CUMULATIVE DISTRIBUTION
3106C                                FUNCTION IS TO BE EVALUATED.
3107C                                X SHOULD BE NON-NEGATIVE.
3108C     OUTPUT ARGUMENTS--CDF    = THE SINGLE PRECISION CUMULATIVE
3109C                                DISTRIBUTION FUNCTION VALUE.
3110C     OUTPUT--THE SINGLE PRECISION CUMULATIVE DISTRIBUTION
3111C             FUNCTION VALUE CDF FOR THE HALF-CAUCHY DISTRIBUTION
3112C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
3113C     RESTRICTIONS--X SHOULD BE NON-NEGATIVE.
3114C     OTHER DATAPAC   SUBROUTINES NEEDED--CAUCDF.
3115C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE.
3116C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
3117C     LANGUAGE--ANSI FORTRAN.
3118C     REFERENCES--JOHNSON AND KOTZ, CONTINUOUS UNIVARIATE
3119C                 DISTRIBUTIONS--1, 1994, PAGE 328
3120C     WRITTEN BY--JAMES J. FILLIBEN
3121C                 STATISTICAL ENGINEERING LABORATORY (205.03)
3122C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
3123C                 GAITHERSBURG, MD 20899-8980
3124C                 PHONE:  301-975-2855
3125C     ORIGINAL VERSION--OCTOBER   1995.
3126C
3127C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
3128C
3129C-----COMMON----------------------------------------------------------
3130C
3131      INCLUDE 'DPCOP2.INC'
3132C
3133C---------------------------------------------------------------------
3134C
3135C     CHECK THE INPUT ARGUMENTS FOR ERRORS
3136C
3137      IF(X.LT.0.0)GOTO50
3138      GOTO90
3139   50 CONTINUE
3140      WRITE(ICOUT,4)
3141      CALL DPWRST('XXX','BUG ')
3142      WRITE(ICOUT,5)
3143      CALL DPWRST('XXX','BUG ')
3144      WRITE(ICOUT,46)X
3145      CALL DPWRST('XXX','BUG ')
3146      CDF=0.0
3147      RETURN
3148   90 CONTINUE
3149    4 FORMAT('***** NON-FATAL DIAGNOSTIC--THE FIRST  INPUT ARGUMENT')
3150    5 FORMAT('      TO THE HFCCDF SUBROUTINE IS NEGATIVE *****')
3151   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',E15.8,' *****')
3152C
3153C-----START POINT-----------------------------------------------------
3154C
3155      CALL CAUCDF(X,CDF)
3156      CDF=2.0*CDF-1.0
3157C
3158      RETURN
3159      END
3160      SUBROUTINE HFCPDF(X,PDF)
3161C
3162C     PURPOSE--THIS SUBROUTINE COMPUTES THE PROBABILITY DENSITY
3163C              FUNCTION VALUE FOR THE HALF-CAUCHY DISTRIBUTION.
3164C              THIS DISTRIBUTION IS DEFINED FOR ALL NON-NEGATIVE X
3165C              AND HAS THE PROBABILITY DENSITY FUNCTION
3166C              F(X) = (2/PI)/(1+x**2)
3167C              THE HALF-CAUCHY DISTRIBUTION USED HEREIN
3168C              IS THE DISTRIBUTION OF THE VARIATE X = ABS(Z) WHERE
3169C              THE VARIATE Z IS CAUCHY DISTRIBUTED
3170C     INPUT  ARGUMENTS--X      = THE SINGLE PRECISION VALUE
3171C                                AT WHICH THE PROBABILITY DENSITY
3172C                                FUNCTION IS TO BE EVALUATED.
3173C                                X SHOULD BE NON-NEGATIVE.
3174C     OUTPUT ARGUMENTS--PDF    = THE SINGLE PRECISION PROBABILITY
3175C                                DENSITY FUNCTION VALUE.
3176C     OUTPUT--THE SINGLE PRECISION PROBABILITY DENSITY
3177C             FUNCTION VALUE PDF FOR THE HALF-CAUCHY
3178C             DISTRIBUTION
3179C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
3180C     RESTRICTIONS--X SHOULD BE NON-NEGATIVE.
3181C     OTHER DATAPAC   SUBROUTINES NEEDED--CAUPDF.
3182C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE.
3183C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
3184C     LANGUAGE--ANSI FORTRAN.
3185C     REFERENCES--JOHNSON AND KOTZ, CONTINUOUS UNIVARIATE
3186C                 DISTRIBUTIONS--1, 1994, PAGE 328
3187C     WRITTEN BY--JAMES J. FILLIBEN
3188C                 STATISTICAL ENGINEERING LABORATORY (205.03)
3189C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
3190C                 GAITHERSBURG, MD 20899-8980
3191C                 PHONE:  301-975-2855
3192C     ORIGINAL VERSION--OCTOBER   1995.
3193C
3194C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
3195C
3196C-----COMMON----------------------------------------------------------
3197C
3198      INCLUDE 'DPCOP2.INC'
3199C
3200C---------------------------------------------------------------------
3201C
3202C     CHECK THE INPUT ARGUMENTS FOR ERRORS
3203C
3204      IF(X.LT.0.0)GOTO50
3205      GOTO90
3206   50 CONTINUE
3207      WRITE(ICOUT,4)
3208      CALL DPWRST('XXX','BUG ')
3209      WRITE(ICOUT,5)
3210      CALL DPWRST('XXX','BUG ')
3211      WRITE(ICOUT,46)X
3212      CALL DPWRST('XXX','BUG ')
3213      PDF=0.0
3214      RETURN
3215   90 CONTINUE
3216    4 FORMAT('***** NON-FATAL DIAGNOSTIC--THE FIRST  INPUT ARGUMENT')
3217    5 FORMAT('      TO THE HFCPDF SUBROUTINE IS NEGATIVE *****')
3218   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',E15.8,' *****')
3219C
3220C-----START POINT-----------------------------------------------------
3221C
3222      CALL CAUPDF(X,PDF)
3223      PDF=2.0*PDF
3224C
3225      RETURN
3226      END
3227      SUBROUTINE HFCPPF(P,PPF)
3228C
3229C     PURPOSE--THIS SUBROUTINE COMPUTES THE PERCENT POINT
3230C              FUNCTION VALUE FOR THE HALF-CAUCHY DISTRIBUTION
3231C              THIS DISTRIBUTION IS DEFINED FOR ALL NON-NEGATIVE X
3232C              AND HAS THE PROBABILITY DENSITY FUNCTION
3233C              F(X) = (2/PI)/(1+X**2)
3234C              THE HALF-CAUCHY DISTRIBUTION USED HEREIN
3235C              IS THE DISTRIBUTION OF THE VARIATE X = ABS(Z) WHERE
3236C              THE VARIATE Z IS CAUCHY DISTRIBUTED
3237C              NOTE THAT THE PERCENT POINT FUNCTION OF A DISTRIBUTION
3238C              IS IDENTICALLY THE SAME AS THE INVERSE CUMULATIVE
3239C              DISTRIBUTION FUNCTION OF THE DISTRIBUTION.
3240C     INPUT  ARGUMENTS--P      = THE SINGLE PRECISION VALUE
3241C                                (BETWEEN 0.0 (INCLUSIVELY)
3242C                                AND 1.0 (EXCLUSIVELY))
3243C                                AT WHICH THE PERCENT POINT
3244C                                FUNCTION IS TO BE EVALUATED.
3245C     OUTPUT ARGUMENTS--PPF    = THE SINGLE PRECISION PERCENT
3246C                                POINT FUNCTION VALUE.
3247C     OUTPUT--THE SINGLE PRECISION PERCENT POINT FUNCTION .
3248C             VALUE PPF FOR THE HALF-CAUCHY DISTRIBUTION
3249C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
3250C     RESTRICTIONS--P SHOULD BE BETWEEN 0.0 (INCLUSIVELY)
3251C                   AND 1.0 (EXCLUSIVELY).
3252C     OTHER DATAPAC   SUBROUTINES NEEDED--CAUPPF.
3253C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE.
3254C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
3255C     LANGUAGE--ANSI FORTRAN (1977)
3256C     REFERENCES--JOHNSON AND KOTZ, CONTINUOUS UNIVARIATE
3257C                 DISTRIBUTIONS--1, 1994, PAGE 328
3258C     WRITTEN BY--JAMES J. FILLIBEN
3259C                 STATISTICAL ENGINEERING DIVISION
3260C                 INFORMATION TECHNOLOGY LABORATORY
3261C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
3262C                 GAITHERSBURG, MD 20899-8980
3263C                 PHONE--301-975-2855
3264C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
3265C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
3266C     LANGUAGE--ANSI FORTRAN (1966)
3267C               EXCEPTION--HOLLERITH STRINGS IN FORMAT STATEMENTS
3268C                          DENOTED BY QUOTES RATHER THAN NH.
3269C     VERSION NUMBER--95/10
3270C     ORIGINAL VERSION--OCTOBER   1995.
3271C
3272C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
3273C
3274C-----COMMON----------------------------------------------------------
3275C
3276      INCLUDE 'DPCOP2.INC'
3277C
3278C-----START POINT-----------------------------------------------------
3279C
3280C     CHECK THE INPUT ARGUMENTS FOR ERRORS
3281C
3282      IF(P.LT.0.0.OR.P.GE.1.0)GOTO50
3283      GOTO90
3284   50 WRITE(ICOUT,1)
3285      CALL DPWRST('XXX','BUG ')
3286      WRITE(ICOUT,46)P
3287      CALL DPWRST('XXX','BUG ')
3288      PPF=0.0
3289      RETURN
3290   90 CONTINUE
3291    1 FORMAT('***** FATAL ERROR--THE 1ST INPUT ARGUMENT TO THE ',
3292     1'HFCPPF SUBROUTINE IS OUTSIDE THE ALLOWABLE (0,1) INTERVAL')
3293   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',E15.8,' *****')
3294C
3295      ARG=(1.0+P)/2.0
3296      CALL CAUPPF(ARG,PPF)
3297      IF(PPF.LE.0.0)PPF=0.0
3298C
3299      RETURN
3300      END
3301      SUBROUTINE HFCRAN(N,ISEED,X)
3302C
3303C     PURPOSE--THIS SUBROUTINE GENERATES A RANDOM SAMPLE OF SIZE N
3304C              FROM THE HALF-CAUCHY DISTRIBUTION
3305C              WITH MEDIAN = 0 AND 75% POINT = 1.
3306C              THIS DISTRIBUTION IS DEFINED FOR ALL X AND HAS
3307C              THE PROBABILITY DENSITY FUNCTION
3308C              F(X) = (2/PI)*(1/(1+X*X)).
3309C     INPUT  ARGUMENTS--N      = THE DESIRED INTEGER NUMBER
3310C                                OF RANDOM NUMBERS TO BE
3311C                                GENERATED.
3312C     OUTPUT ARGUMENTS--X      = A SINGLE PRECISION VECTOR
3313C                                (OF DIMENSION AT LEAST N)
3314C                                INTO WHICH THE GENERATED
3315C                                RANDOM SAMPLE WILL BE PLACED.
3316C     OUTPUT--A RANDOM SAMPLE OF SIZE N
3317C             FUNCTION VALUE FOR THE HALF-CAUCHY DISTRIBUTION
3318C             WITH MEDIAN = 0 AND 75% POINT = 1.
3319C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
3320C     RESTRICTIONS--THERE IS NO RESTRICTION ON THE MAXIMUM VALUE
3321C                   OF N FOR THIS SUBROUTINE.
3322C     OTHER DATAPAC   SUBROUTINES NEEDED--UNIRAN.
3323C     FORTRAN LIBRARY SUBROUTINES NEEDED--SIN, COS.
3324C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
3325C     LANGUAGE--ANSI FORTRAN (1977)
3326C     REFERENCES--TOCHER, THE ART OF SIMULATION,
3327C                 1963, PAGE 15.
3328C               --HAMMERSLEY AND HANDSCOMB, MONTE CARLO METHODS,
3329C                 1964, PAGE 36.
3330C               --FILLIBEN, SIMPLE AND ROBUST LINEAR ESTIMATION
3331C                 OF THE LOCATION PARAMETER OF A SYMMETRIC
3332C                 DISTRIBUTION (UNPUBLISHED PH.D. DISSERTATION,
3333C                 PRINCETON UNIVERSITY), 1969, PAGE 231.
3334C               --FILLIBEN, 'THE PERCENT POINT FUNCTION',
3335C                 (UNPUBLISHED MANUSCRIPT), 1970, PAGES 28-31.
3336C               --JOHNSON AND KOTZ, CONTINUOUS UNIVARIATE
3337C                 DISTRIBUTIONS--1, 1970, PAGES 154-165.
3338C     WRITTEN BY--JAMES J. FILLIBEN
3339C                 STATISTICAL ENGINEERING DIVISION
3340C                 INFORMATION TECHNOLOGY LABORATORY
3341C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
3342C                 GAITHERSBURG, MD 20899-8980
3343C                 PHONE--301-975-2855
3344C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
3345C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
3346C     LANGUAGE--ANSI FORTRAN (1966)
3347C               EXCEPTION--HOLLERITH STRINGS IN FORMAT STATEMENTS
3348C                          DENOTED BY QUOTES RATHER THAN NH.
3349C     VERSION NUMBER--95/10
3350C     ORIGINAL VERSION--OCTOBER   1995.
3351C
3352C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
3353C
3354C---------------------------------------------------------------------
3355C
3356      DIMENSION X(*)
3357C
3358C-----COMMON----------------------------------------------------------
3359C
3360      INCLUDE 'DPCOP2.INC'
3361C
3362C-----DATA STATEMENTS-------------------------------------------------
3363C
3364      DATA PI/3.14159265359/
3365C
3366C-----START POINT-----------------------------------------------------
3367C
3368C     CHECK THE INPUT ARGUMENTS FOR ERRORS
3369C
3370      IF(N.LT.1)GOTO50
3371      GOTO90
3372   50 WRITE(ICOUT, 5)
3373      CALL DPWRST('XXX','BUG ')
3374      WRITE(ICOUT,47)N
3375      CALL DPWRST('XXX','BUG ')
3376      RETURN
3377   90 CONTINUE
3378    5 FORMAT('***** FATAL ERROR--THE 1ST INPUT ARGUMENT TO THE ',
3379     1'HFCRAN SUBROUTINE IS NON-POSITIVE *****')
3380   47 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',I8   ,' *****')
3381C
3382C     GENERATE N UNIFORM (0,1) RANDOM NUMBERS;
3383C
3384      CALL UNIRAN(N,ISEED,X)
3385C
3386C     GENERATE N CAUCHY RANDOM NUMBERS
3387C     USING THE PERCENT POINT FUNCTION TRANSFORMATION METHOD.
3388C
3389      DO100I=1,N
3390      ARG=PI*X(I)
3391      X(I)=-COS(ARG)/SIN(ARG)
3392  100 CONTINUE
3393C
3394C
3395C     GENERATE N HALF-CAUCHY RANDOM NUMBERS
3396C     USING THE DEFINITION THAT
3397C     A HALF-CAUCHY VARIATE
3398C     EQUALS THE ABSOLUTE VALUE OF A CAUCHY VARIATE.
3399C
3400      DO400I=1,N
3401      IF(X(I).LT.0.0)X(I)=-X(I)
3402  400 CONTINUE
3403C
3404      RETURN
3405      END
3406      SUBROUTINE HFLCDF(X,GAMMA,CDF)
3407C
3408C     PURPOSE--THIS SUBROUTINE COMPUTES THE PROBABILITY DENSITY
3409C              FUNCTION VALUE FOR THE HALF-LOGISTIC DISTRIBUTION.
3410C              THIS DISTRIBUTION IS DEFINED FOR ALL NON-NEGATIVE X
3411C              AND HAS THE PROBABILITY DENSITY FUNCTION
3412C              F(X) = 2*EXP(-X)/(1+EXP(-X))**2    X>=0
3413C              THE HALF-LOGISTIC DISTRIBUTION USED HEREIN
3414C              IS THE DISTRIBUTION OF THE VARIATE X = ABS(Z) WHERE
3415C              THE VARIATE Z IS LOGISTICALLY DISTRIBUTED
3416C              IF GAMMA IS POSITIVE, THE GENERALIZED HALF-LOGISTIC
3417C              DISTRIBUTION IS COMPUTED.  THIS HAS THE PDF:
3418C              F(X) = 2*(1-K*X)**((1/K)-1)/(1+(1-K*X)**(1/K))**2
3419C                                                     0<=X<=1/K
3420C     INPUT  ARGUMENTS--X      = THE SINGLE PRECISION VALUE
3421C                                AT WHICH THE PROBABILITY DENSITY
3422C                                FUNCTION IS TO BE EVALUATED.
3423C                                X SHOULD BE NON-NEGATIVE.
3424C     OUTPUT ARGUMENTS--CDF    = THE SINGLE PRECISION PROBABILITY
3425C                                DENSITY FUNCTION VALUE.
3426C     OUTPUT--THE SINGLE PRECISION PROBABILITY DENSITY
3427C             FUNCTION VALUE CDF FOR THE HALF-LOGISTIC
3428C             DISTRIBUTION
3429C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
3430C     RESTRICTIONS--X SHOULD BE NON-NEGATIVE.
3431C     OTHER DATAPAC   SUBROUTINES NEEDED--CAUCDF.
3432C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE.
3433C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
3434C     LANGUAGE--ANSI FORTRAN.
3435C     REFERENCES--JOHNSON AND KOTZ, CONTINUOUS UNIVARIATE
3436C                 DISTRIBUTIONS--2, 1994, PAGES 150-151
3437C     WRITTEN BY--JAMES J. FILLIBEN
3438C                 STATISTICAL ENGINEERING LABORATORY
3439C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
3440C                 GAITHERSBURG, MD 20899-8980
3441C                 PHONE:  301-975-2855
3442C     ORIGINAL VERSION--OCTOBER   1995.
3443C
3444C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
3445C
3446C---------------------------------------------------------------------
3447C
3448      DOUBLE PRECISION DX, DG, DCDF
3449      DOUBLE PRECISION DTERM1, DTERM2, DTERM3
3450C
3451      INCLUDE 'DPCOP2.INC'
3452C
3453C---------------------------------------------------------------------
3454C
3455C     CHECK THE INPUT ARGUMENTS FOR ERRORS
3456C
3457      IF(GAMMA.GT.10.0)THEN
3458          WRITE(ICOUT,24)
3459          CALL DPWRST('XXX','BUG ')
3460          WRITE(ICOUT,46)GAMMA
3461          CALL DPWRST('XXX','BUG ')
3462          CDF=0.0
3463          GOTO9999
3464      ENDIF
3465      IF(GAMMA.LE.0.0)THEN
3466        IF(X.LT.0.0)THEN
3467          WRITE(ICOUT,4)
3468          CALL DPWRST('XXX','BUG ')
3469          WRITE(ICOUT,46)X
3470          CALL DPWRST('XXX','BUG ')
3471          CDF=0.0
3472          GOTO9999
3473        ENDIF
3474      ELSE
3475        ARG1=1./GAMMA
3476        IF(X.LT.0.0.OR.X.GT.ARG1)THEN
3477          WRITE(ICOUT,14)
3478          CALL DPWRST('XXX','BUG ')
3479          WRITE(ICOUT,46)X
3480          CALL DPWRST('XXX','BUG ')
3481          CDF=0.0
3482          GOTO9999
3483        ENDIF
3484      ENDIF
3485    4 FORMAT('***** WARNING--THE FIRST ARGUMENT TO HFLCDF ',
3486     1       'IS NEGATIVE.')
3487   14 FORMAT('***** WARNING--THE FIRST  ARGUMENT TO HFLCDF IS ',
3488     1       'OUTSIDE THE (0,1/GAMMA) INTERVAL.')
3489   24 FORMAT('***** ERROR--THE SECOND ARGUMENT TO HFLCDF ',
3490     1       'IS GREATER THAN 10.')
3491   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',G15.7,'.')
3492C
3493C-----START POINT-----------------------------------------------------
3494C
3495      IF(X.EQ.0.)THEN
3496        CDF=0.0
3497        GOTO9999
3498      ELSEIF(GAMMA.GT.0.0.AND.X.GE.1.0/GAMMA)THEN
3499        CDF=1.0
3500        GOTO9999
3501      ENDIF
3502C
3503      DX=DBLE(X)
3504      DG=DBLE(GAMMA)
3505      IF(GAMMA.LE.0.0)THEN
3506        DTERM1=DLOG(1.D0-DEXP(-DX))
3507        DTERM2=DLOG(1.D0+DEXP(-DX))
3508        DTERM3=DTERM1-DTERM2
3509        IF(DTERM3.LE.-500.D0)THEN
3510          CDF=0.0
3511        ELSEIF(DTERM3.GE.500.D0)THEN
3512          CDF=1.0
3513        ELSE
3514          DCDF=DEXP(DTERM3)
3515          CDF=SNGL(DCDF)
3516        ENDIF
3517      ELSE
3518        DTERM1=DLOG(1.D0-(1.D0-DG*DX)**(1.D0/DG))
3519        DTERM2=DLOG(1.D0+(1.D0-DG*DX)**(1.D0/DG))
3520        DTERM3=DTERM1-DTERM2
3521        IF(DTERM3.LE.-500.D0)THEN
3522          CDF=0.0
3523        ELSEIF(DTERM3.GE.500.D0)THEN
3524          CDF=1.0
3525        ELSE
3526          DCDF=DEXP(DTERM3)
3527          CDF=SNGL(DCDF)
3528        ENDIF
3529      ENDIF
3530C
3531 9999 CONTINUE
3532      RETURN
3533      END
3534      REAL FUNCTION HFLFUN(SIGHAT,X,N)
3535C
3536C     PURPOSE--THIS ROUTINE IS USED IN FINDING THE MAXIMUM LIKELIHOOD
3537C              ESTIMATE OF THE SCALE PARAMETER OF THE HALF-LOGISTIC
3538C              DISTRIBUTION.  THIS FUNCTION FINDS THE ROOT OF THE
3539C              EQUATION:
3540C
3541C                N*LOG(2) - N*LOG(SIGMA) + (N*YBAR/SIGMA) -
3542C                2*SUM[LOG(1 + EXP(Y(I)/SIGMA)]
3543C
3544C              CALLED BY FMIND2 ROUTINE FOR FINDING THE MINIMUM
3545C              OF A FUNCTION.  RETURN "NEGATIVE" OF THE FUNCTION
3546C              SINCE WE WANT THE MAXIMUM.
3547C     EXAMPLE--HALF LOGISTIC MAXIMUM LIKELIHOOD Y
3548C     REFERENCE--XXX
3549C     WRITTEN BY--ALAN HECKERT
3550C                 STATISTICAL ENGINEERING DIVISION
3551C                 INFORMATION TECHNOLOGY LABORATORY
3552C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
3553C                 GAITHERSBUG, MD 20899-8980
3554C                 PHONE--301-975-2899
3555C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
3556C           OF THE NATIONAL BUREAU OF STANDARDS.
3557C     LANGUAGE--ANSI FORTRAN (1977)
3558C     VERSION NUMBER--2020/04
3559C     ORIGINAL VERSION--APRIL      2020.
3560C
3561C---------------------------------------------------------------------
3562C
3563      REAL SIGHAT
3564      DOUBLE PRECISION X(*)
3565C
3566      DOUBLE PRECISION DTERM1
3567      DOUBLE PRECISION DTERM2
3568      COMMON/HFLCOM/DTERM1,DTERM2
3569C
3570C---------------------------------------------------------------------
3571C
3572      DOUBLE PRECISION DSUM1
3573      DOUBLE PRECISION DTERM3
3574      DOUBLE PRECISION DX
3575      DOUBLE PRECISION DN
3576      DOUBLE PRECISION SG
3577C
3578      INCLUDE 'DPCOP2.INC'
3579C
3580C-----START POINT-----------------------------------------------------
3581C
3582      SG=DBLE(SIGHAT)
3583      DN=DBLE(N)
3584      DSUM1=0.0D0
3585      DO100I=1,N
3586        DX=X(I)
3587        DTERM3=1.0D0 + DEXP(DX/SG)
3588        DSUM1=DSUM1 + DLOG(DTERM3)
3589  100 CONTINUE
3590C
3591CCCCC HFLFUN=-REAL(DTERM1 + DN*DLOG(SG) + (DTERM2/SG) - 2.0*DSUM1)
3592      HFLFUN=REAL(DTERM1 + DN*DLOG(SG) + (DTERM2/SG) - 2.0*DSUM1)
3593CCCCC write(18,*) 'sighat,hflfun = ',sighat,hflfun
3594C
3595      RETURN
3596      END
3597      SUBROUTINE HFLLI1(Y,N,ICASPL,
3598     1                  ALOC,SCALE,
3599     1                  ALIK,AIC,AICC,BIC,
3600     1                  ISUBRO,IBUGA3,IERROR)
3601C
3602C     PURPOSE--THIS ROUTINE COMPUTES THE LIKELIHOOD FUNCTION FOR
3603C              THE HALF-LOGISTIC DISTRIBUTION.  THIS IS FOR THE RAW DATA
3604C              CASE (I.E., NO GROUPING AND NO CENSORING).
3605C
3606C              IT IS ASSUMED THAT BASIC ERROR CHECKING HAS ALREADY BEEN
3607C              PERFORMED.
3608C
3609C     REFERENCE--XXXX
3610C     WRITTEN BY--ALAN HECKERT
3611C                 STATISTICAL ENGINEERING DIVISION
3612C                 INFORMATION TECHNOLOGY LABORATORY
3613C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
3614C                 GAITHERSBURG, MD 20899-8980
3615C                 PHONE--301-975-2899
3616C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
3617C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
3618C     LANGUAGE--ANSI FORTRAN (1977)
3619C     VERSION NUMBER--2020/04
3620C     ORIGINAL VERSION--APRIL     2020.
3621C
3622C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
3623C
3624      CHARACTER*4 ICASPL
3625      CHARACTER*4 ISUBRO
3626      CHARACTER*4 IBUGA3
3627      CHARACTER*4 IERROR
3628C
3629      CHARACTER*4 IWRITE
3630      CHARACTER*4 ISUBN1
3631      CHARACTER*4 ISUBN2
3632      CHARACTER*4 ISTEPN
3633C
3634      DOUBLE PRECISION DN
3635      DOUBLE PRECISION DNP
3636      DOUBLE PRECISION DLIK
3637      DOUBLE PRECISION DTERM3
3638C
3639C---------------------------------------------------------------------
3640C
3641      DIMENSION Y(*)
3642C
3643C-----COMMON----------------------------------------------------------
3644C
3645      INCLUDE 'DPCOP2.INC'
3646C
3647C-----START POINT-----------------------------------------------------
3648C
3649      ISUBN1='HFLL'
3650      ISUBN2='I1  '
3651      IERROR='NO'
3652C
3653      ALIK=CPUMIN
3654      AIC=CPUMIN
3655      AICC=CPUMIN
3656      BIC=CPUMIN
3657C
3658      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'LLI1')THEN
3659        WRITE(ICOUT,999)
3660  999   FORMAT(1X)
3661        CALL DPWRST('XXX','WRIT')
3662        WRITE(ICOUT,51)
3663   51   FORMAT('**** AT THE BEGINNING OF HFLLI1--')
3664        CALL DPWRST('XXX','WRIT')
3665        WRITE(ICOUT,52)IBUGA3,ISUBRO
3666   52   FORMAT('IBUGA3,ISUBRO = ',A4,2X,A4)
3667        CALL DPWRST('XXX','WRIT')
3668        WRITE(ICOUT,55)N,ALOC,SCALE
3669   55   FORMAT('N,ALOC,SCALE = ',I8,2G15.7)
3670        CALL DPWRST('XXX','WRIT')
3671        DO56I=1,MIN(N,100)
3672          WRITE(ICOUT,57)I,Y(I)
3673   57     FORMAT('I,Y(I) = ',I8,G15.7)
3674          CALL DPWRST('XXX','WRIT')
3675   56   CONTINUE
3676      ENDIF
3677C
3678C               ******************************************
3679C               **  STEP 1--                            **
3680C               **  COMPUTE LIKELIHOOD FUNCTION         **
3681C               ******************************************
3682C
3683      ISTEPN='1'
3684      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'LLI1')
3685     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
3686C
3687      IERFLG=0
3688      IERROR='NO'
3689      IWRITE='OFF'
3690C
3691      NP=2
3692      IF(ICASPL.EQ.'1')THEN
3693        ALOC=0.0
3694        NP=1
3695      ENDIF
3696C
3697      ALIK=0.0
3698      GAMMA=CPUMIN
3699      DO1000I=1,N
3700        ARG1=(Y(I) - ALOC)/SCALE
3701        CALL HFLPDF(ARG1,GAMMA,RESULT)
3702        APDF=RESULT/SCALE
3703        IF(APDF.GT.0.0)THEN
3704          ALIK=ALIK + LOG(APDF)
3705        ENDIF
3706 1000 CONTINUE
3707C
3708      DN=DBLE(N)
3709      DLIK=DBLE(ALIK)
3710      DNP=DBLE(NP)
3711      AIC=REAL(-2.0D0*DLIK + 2.0D0*DNP)
3712      DTERM3=(2.0D0*DNP*(DNP+1.0D0))/(DN-DNP-1.0D0)
3713      AICC=REAL(-2.0D0*DLIK + 2.0D0*DNP + DTERM3)
3714      BIC=REAL(-2.0D0*DLIK + DNP*LOG(DN))
3715C
3716      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'LLI1')THEN
3717        WRITE(ICOUT,999)
3718        CALL DPWRST('XXX','WRIT')
3719        WRITE(ICOUT,9011)
3720 9011   FORMAT('**** AT THE END OF HFLLI1--')
3721        CALL DPWRST('XXX','WRIT')
3722        WRITE(ICOUT,9014)ALIK,AIC,AICC,BIC
3723 9014   FORMAT('ALIK,AIC,AICC,BIC = ',4G15.7)
3724        CALL DPWRST('XXX','WRIT')
3725      ENDIF
3726C
3727      RETURN
3728      END
3729      SUBROUTINE HFLML1(Y,N,ICASPL,
3730     1                  TEMP1,DTEMP1,
3731     1                  XMEAN,XSD,XMIN,XMAX,
3732     1                  ALOCML,SCALML,SCALBC,SCALSE,
3733     1                  ISUBRO,IBUGA3,IERROR)
3734C
3735C     PURPOSE--THIS ROUTINE COMPUTES THE MAXIMUM LIKELIHOOD ESTIMATES
3736C              FOR THE HALF-LOGISTIC DISTRIBUTION FOR THE RAW DATA CASE (I.E.,
3737C              NO CENSORING AND NO GROUPING).
3738C
3739C              IT IS ASSUMED THAT BASIC ERROR CHECKING HAS ALREADY BEEN
3740C              PERFORMED.
3741C
3742C              PUT THIS IN A SEPARATE ROUTINE AS IT MAY BE CALLED
3743C              FROM MULTIPLE PLACES (DPMLHL WILL GENERATE THE OUTPUT
3744C              FOR THE HALF LOGISTIC MLE COMMAND).
3745C
3746C              THE CODE IS SET-UP TO HANDLE EITHER 1-PARAMETER OR
3747C              2-PARAMETER CASE.
3748C
3749C     REFERENCE--XXXX
3750C     WRITTEN BY--ALAN HECKERT
3751C                 STATISTICAL ENGINEERING DIVISION
3752C                 INFORMATION TECHNOLOGY LABORATORY
3753C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
3754C                 GAITHERSBURG, MD 20899-8980
3755C                 PHONE--301-975-2899
3756C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
3757C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
3758C     LANGUAGE--ANSI FORTRAN (1977)
3759C     VERSION NUMBER--2020/04
3760C     ORIGINAL VERSION--APRIL     2020.
3761C
3762C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
3763C
3764      CHARACTER*4 ICASPL
3765      CHARACTER*4 ISUBRO
3766      CHARACTER*4 IBUGA3
3767      CHARACTER*4 IERROR
3768C
3769      CHARACTER*4 IWRITE
3770      CHARACTER*40 IDIST
3771      CHARACTER*4 ISUBN1
3772      CHARACTER*4 ISUBN2
3773      CHARACTER*4 ISTEPN
3774C
3775      DIMENSION Y(*)
3776      DIMENSION TEMP1(*)
3777      DOUBLE PRECISION DTEMP1(*)
3778C
3779      DOUBLE PRECISION DN
3780C
3781      REAL HFLFUN
3782      EXTERNAL HFLFUN
3783      REAL FMIND2
3784      EXTERNAL FMIND2
3785C
3786      DOUBLE PRECISION DTERM1
3787      DOUBLE PRECISION DTERM2
3788      COMMON/HFLCOM/DTERM1,DTERM2
3789C
3790C-----COMMON----------------------------------------------------------
3791C
3792      INCLUDE 'DPCOP2.INC'
3793C
3794C-----START POINT-----------------------------------------------------
3795C
3796      ISUBN1='MAXM'
3797      ISUBN2='L1  '
3798      IWRITE='OFF'
3799      IERROR='NO'
3800C
3801      ALOCML=CPUMIN
3802      SCALML=CPUMIN
3803      SCALSE=CPUMIN
3804      SCALBC=CPUMIN
3805C
3806      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'LML1')THEN
3807        WRITE(ICOUT,999)
3808  999   FORMAT(1X)
3809        CALL DPWRST('XXX','WRIT')
3810        WRITE(ICOUT,51)
3811   51   FORMAT('**** AT THE BEGINNING OF HFLML1--')
3812        CALL DPWRST('XXX','WRIT')
3813        WRITE(ICOUT,52)IBUGA3,ISUBRO,N,MAXNXT
3814   52   FORMAT('IBUGA3,ISUBRO,N,MAXNXT = ',2(A4,2X),2I8)
3815        CALL DPWRST('XXX','WRIT')
3816        DO56I=1,MIN(N,100)
3817          WRITE(ICOUT,57)I,Y(I),DTEMP1(I)
3818   57     FORMAT('I,Y(I),DTEMP1(I) = ',I8,2G15.7)
3819          CALL DPWRST('XXX','WRIT')
3820   56   CONTINUE
3821      ENDIF
3822C
3823C               ********************************************
3824C               **  STEP 1--                              **
3825C               **  CARRY OUT CALCULATIONS                **
3826C               **  FOR HALF-LOGISTIC MLE ESTIMATE        **
3827C               ********************************************
3828C
3829      ISTEPN='1'
3830      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'LML1')
3831     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
3832C
3833      IDIST='HALF-LOGISTIC'
3834      IFLAG=0
3835      IF(ICASPL.EQ.'1')IFLAG=1
3836      CALL SUMRAW(Y,N,IDIST,IFLAG,
3837     1            XMEAN,XVAR,XSD,XMIN,XMAX,
3838     1            ISUBRO,IBUGA3,IERROR)
3839      IF(IERROR.EQ.'YES')GOTO9000
3840C
3841C     ESTIMATE FOR LOCATION PARAMETER FIRST
3842C
3843      IF(ICASPL.EQ.'1')THEN
3844        ALOCML=0.0
3845      ELSE
3846        ALOCML=XMIN
3847      ENDIF
3848C
3849      DO120I=1,N
3850        TEMP1(I)=Y(I) - ALOCML
3851        DTEMP1(I)=DBLE(TEMP1(I))
3852  120 CONTINUE
3853      CALL MEAN(TEMP1,N,IWRITE,XMEAN2,IBUGA3,IERROR)
3854C
3855C     ESTIMATE SCALE PARAMETER BY SOLVING THE EQUATION
3856C
3857C         N*LOG(2) - N*LOG(SIGMA) + (N*YBAR/SIGMA) -
3858C         2*SUM[LOG(1 + EXP(Y(I)/SIGMA)]
3859C
3860      DN=DBLE(N)
3861      DTERM1=DN*DLOG(2.0D0)
3862      DTERM2=DN*DBLE(XMEAN2)
3863C
3864      XLOW=XSD/2.0
3865      XUPP=XSD*2.0
3866      TOL=0.001
3867CCCCC SCALML=FMIND2(XLOW,XUPP,HFLFUN,DTEMP1,N,TOL)
3868      C=(REAL(N) + 0.05256765)/REAL(N)
3869      SCALBC=SCALML*C
3870C
3871C     NOTE: NOT GETTING REASONABLE RESULTS WITH FMIND2 ROUTINE.
3872C           FOR NOW, BRUTE FORCE EVALUATE THE FUNCTION
3873C
3874CCCCC SCALML=FMIND2(XLOW,XUPP,HFLFUN,DTEMP1,N,TOL)
3875      AINC=0.01
3876      SIGVAL=XLOW
3877      AMXVAL=CPUMIN
3878C
3879 2000 CONTINUE
3880      AVAL=HFLFUN(SIGVAL,DTEMP1,N)
3881      IF(AVAL.GT.AMXVAL)THEN
3882        SCALML=SIGVAL
3883        AMXVAL=AVAL
3884      ENDIF
3885      write(18,*)'sigval,aval = ',sigval,aval
3886      SIGVAL=SIGVAL+AINC
3887      IF(SIGVAL.LT.XUPP)GOTO2000
3888C
3889      C=(REAL(N) + 0.05256765)/REAL(N)
3890      SCALBC=SCALML*C
3891C
3892 9000 CONTINUE
3893      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'LML1')THEN
3894        WRITE(ICOUT,999)
3895        CALL DPWRST('XXX','WRIT')
3896        WRITE(ICOUT,9011)
3897 9011   FORMAT('**** AT THE END OF HFLML1--')
3898        CALL DPWRST('XXX','WRIT')
3899        WRITE(ICOUT,9055)XMEAN,XMEAN2,XSD,XMIN,XMAX
3900 9055   FORMAT('XMEAN,XMEAN2,XSD,XMIN,XMAX = ',5G15.7)
3901        CALL DPWRST('XXX','WRIT')
3902        WRITE(ICOUT,9058)ALOCML,SCALML,C,SCALBC
3903 9058   FORMAT('ALOCML,SCALML,C,SCALBC = ',4G15.7)
3904        CALL DPWRST('XXX','WRIT')
3905      ENDIF
3906C
3907      RETURN
3908      END
3909      SUBROUTINE HFLPDF(X,GAMMA,PDF)
3910C
3911C     PURPOSE--THIS SUBROUTINE COMPUTES THE PROBABILITY DENSITY
3912C              FUNCTION VALUE FOR THE HALF-LOGISTIC DISTRIBUTION.
3913C              THIS DISTRIBUTION IS DEFINED FOR ALL NON-NEGATIVE X
3914C              AND HAS THE PROBABILITY DENSITY FUNCTION
3915C              F(X) = 2*EXP(-X)/(1+EXP(-X))**2    X>=0
3916C              THE HALF-LOGISTIC DISTRIBUTION USED HEREIN
3917C              IS THE DISTRIBUTION OF THE VARIATE X = ABS(Z) WHERE
3918C              THE VARIATE Z IS LOGISTIC DISTRIBUTED
3919C              IF GAMMA IS POSITIVE, THE GENERALIZED HALF-LOGISTIC
3920C              DISTRIBUTION IS COMPUTED.  THIS HAS THE PDF:
3921C              F(X) = 2*(1-K*X)**((1/K)-1)/(1+(1-K*X)**(1/K))**2
3922C                                                     0<=X<=1/K
3923C     INPUT  ARGUMENTS--X      = THE SINGLE PRECISION VALUE
3924C                                AT WHICH THE PROBABILITY DENSITY
3925C                                FUNCTION IS TO BE EVALUATED.
3926C                                X SHOULD BE NON-NEGATIVE.
3927C     OUTPUT ARGUMENTS--PDF    = THE SINGLE PRECISION PROBABILITY
3928C                                DENSITY FUNCTION VALUE.
3929C     OUTPUT--THE SINGLE PRECISION PROBABILITY DENSITY
3930C             FUNCTION VALUE PDF FOR THE HALF-LOGISTIC
3931C             DISTRIBUTION
3932C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
3933C     RESTRICTIONS--X SHOULD BE NON-NEGATIVE.
3934C     OTHER DATAPAC   SUBROUTINES NEEDED--CAUPDF.
3935C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE.
3936C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
3937C     LANGUAGE--ANSI FORTRAN.
3938C     REFERENCES--JOHNSON AND KOTZ, CONTINUOUS UNIVARIATE
3939C                 DISTRIBUTIONS--2, 1994, PAGES 150-151
3940C     WRITTEN BY--JAMES J. FILLIBEN
3941C                 STATISTICAL ENGINEERING LABORATORY
3942C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
3943C                 GAITHERSBURG, MD 20899-8980
3944C                 PHONE:  301-975-2855
3945C     ORIGINAL VERSION--OCTOBER   1995.
3946C
3947C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
3948C
3949C---------------------------------------------------------------------
3950C
3951      DOUBLE PRECISION DX, DG, DPDF
3952      DOUBLE PRECISION DTERM1, DTERM2, DTERM3, DTERM4
3953C
3954      INCLUDE 'DPCOP2.INC'
3955C
3956C---------------------------------------------------------------------
3957C
3958C     CHECK THE INPUT ARGUMENTS FOR ERRORS
3959C
3960      PDF=0.0
3961      IF(GAMMA.GT.10.0)THEN
3962          WRITE(ICOUT,24)
3963          CALL DPWRST('XXX','BUG ')
3964          WRITE(ICOUT,46)GAMMA
3965          CALL DPWRST('XXX','BUG ')
3966          GOTO9999
3967      ELSEIF(GAMMA.LE.0.0)THEN
3968        IF(X.LT.0.0)THEN
3969          WRITE(ICOUT,4)
3970          CALL DPWRST('XXX','BUG ')
3971          WRITE(ICOUT,46)X
3972          CALL DPWRST('XXX','BUG ')
3973          GOTO9999
3974        ENDIF
3975      ELSE
3976        ARG1=1./GAMMA
3977        IF(X.LT.0.0.OR.X.GT.ARG1)THEN
3978          WRITE(ICOUT,14)
3979          CALL DPWRST('XXX','BUG ')
3980          WRITE(ICOUT,46)X
3981          CALL DPWRST('XXX','BUG ')
3982          GOTO9999
3983        ENDIF
3984      ENDIF
3985    4 FORMAT('***** WARNING--THE FIRST ARGUMENT TO HFLPDF IS NEGATIVE.')
3986   14 FORMAT('***** WARNING--THE FIRST ARGUMENT TO HFLPDF ',
3987     1       'IS OUTSIDE THE (0,1/GAMMA) INTERVAL.')
3988   24 FORMAT('***** ERROR--THE SECOND ARGUMENT TO HFLPDF ',
3989     1       'IS GREATER THAN 10.')
3990   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',G15.7,'.')
3991C
3992C-----START POINT-----------------------------------------------------
3993C
3994      IF(GAMMA.LE.0.0)THEN
3995        CALL LOGPDF(X,PDF)
3996        PDF=2.0*PDF
3997      ELSE
3998        DX=DBLE(X)
3999        IF(X.GE.1.0/GAMMA)THEN
4000          IF(GAMMA.LT.1.0)THEN
4001            PDF=0.0
4002            GOTO9999
4003          ELSEIF(GAMMA.EQ.1.0)THEN
4004            PDF=2.0
4005            GOTO9999
4006          ELSE
4007            DX=DX-0.000000001D0
4008          ENDIF
4009        ENDIF
4010        DG=DBLE(GAMMA)
4011        DTERM1=DLOG(2.0D0)
4012        DTERM2=((1.D0/DG)-1.D0)*DLOG(1.D0-DG*DX)
4013        DTERM3=2.D0*DLOG(1.D0+(1.D0-DG*DX)**(1.D0/DG))
4014        DTERM4=DTERM1+DTERM2-DTERM3
4015        IF(DABS(DTERM4).GE.40.D0)THEN
4016          PDF=0.0
4017        ELSE
4018          DPDF=DEXP(DTERM4)
4019          PDF=SNGL(DPDF)
4020        ENDIF
4021      ENDIF
4022C
4023 9999 CONTINUE
4024      RETURN
4025      END
4026      SUBROUTINE HFLPPF(P,GAMMA,PPF)
4027C
4028C     PURPOSE--THIS SUBROUTINE COMPUTES THE PROBABILITY DENSITY
4029C              FUNCTION VALUE FOR THE HALF-LOGISTIC DISTRIBUTION.
4030C              THIS DISTRIBUTION IS DEFINED FOR ALL NON-NEGATIVE X
4031C              AND HAS THE PROBABILITY DENSITY FUNCTION
4032C              F(X) = 2*EXP(-X)/(1+EXP(-X))**2    X>=0
4033C              THE HALF-LOGISTIC DISTRIBUTION USED HEREIN
4034C              IS THE DISTRIBUTION OF THE VARIATE X = ABS(Z) WHERE
4035C              THE VARIATE Z IS LOGISTIC DISTRIBUTED
4036C              IF GAMMA IS POSITIVE, THE GENERALIZED HALF-LOGISTIC
4037C              DISTRIBUTION IS COMPUTED.  THIS HAS THE PDF:
4038C              F(X) = 2*(1-K*X)**((1/K)-1)/(1+(1-K*X)**(1/K))**2
4039C                                                     0<=X<=1/K
4040C
4041C              FOR THE HALF-LOGISTIC, THE PPF FUNCTION IS:
4042C
4043C                 G(P) = -LOG((P-1)/(P+1))
4044C
4045C              FOR THE GENERALIZED HALF-LOGISTIC, THE PPF
4046C              FUNCTION IS:
4047C
4048C                 G(P,GAMMA) = (1 - ((1-P)/(1+P))**GAMMA)/GAMMA
4049C
4050C
4051C     INPUT  ARGUMENTS--P      = THE SINGLE PRECISION VALUE
4052C                                (BETWEEN 0.0 (INCLUSIVELY)
4053C                                AND 1.0 (EXCLUSIVELY))
4054C                                AT WHICH THE PERCENT POINT
4055C                                FUNCTION IS TO BE EVALUATED.
4056C     OUTPUT ARGUMENTS--PPF    = THE SINGLE PRECISION PERCENT
4057C                                POINT FUNCTION VALUE.
4058C     OUTPUT--THE SINGLE PRECISION PERCENT POINT FUNCTION .
4059C             VALUE PPF FOR THE HALF-LOGISTIC DISTRIBUTION
4060C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
4061C     RESTRICTIONS--P SHOULD BE BETWEEN 0.0 (INCLUSIVELY)
4062C                   AND 1.0 (EXCLUSIVELY).
4063C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE.
4064C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
4065C     LANGUAGE--ANSI FORTRAN (1977)
4066C     REFERENCES--JOHNSON AND KOTZ, CONTINUOUS UNIVARIATE
4067C                 DISTRIBUTIONS--2, 1994, PAGES 150-151
4068C     WRITTEN BY--JAMES J. FILLIBEN
4069C                 STATISTICAL ENGINEERING DIVISION
4070C                 INFORMATION TECHNOLOGY LABORATORY
4071C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
4072C                 GAITHERSBURG, MD 20899-8980
4073C                 PHONE--301-975-2855
4074C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
4075C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
4076C     LANGUAGE--ANSI FORTRAN (1966)
4077C               EXCEPTION--HOLLERITH STRINGS IN FORMAT STATEMENTS
4078C                          DENOTED BY QUOTES RATHER THAN NH.
4079C     VERSION NUMBER--95/10
4080C     ORIGINAL VERSION--OCTOBER   1995.
4081C     UPDATED         --JANUARY   2005. REPLACE NUMERICAL INVERSION
4082C                                       WITH EXPLICIT FORMULAS
4083C
4084C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
4085C
4086C---------------------------------------------------------------------
4087C
4088      DOUBLE PRECISION DP
4089      DOUBLE PRECISION DPPF
4090      DOUBLE PRECISION DG
4091C
4092      INCLUDE 'DPCOP2.INC'
4093C
4094C-----START POINT-----------------------------------------------------
4095C
4096C     CHECK THE INPUT ARGUMENTS FOR ERRORS
4097C
4098      PPF=0.0
4099      IF(GAMMA.GT.10.0)THEN
4100          WRITE(ICOUT,24)
4101   24     FORMAT('***** ERROR--THE SECOND ARGUMENT TO HFLPPF ',
4102     1           'IS GREATER THAN 10.')
4103          CALL DPWRST('XXX','BUG ')
4104          WRITE(ICOUT,46)GAMMA
4105          CALL DPWRST('XXX','BUG ')
4106          GOTO9999
4107      ELSEIF(GAMMA.LE.0.0)THEN
4108        IF(P.LT.0.0.OR.P.GE.1.0)THEN
4109          WRITE(ICOUT,1)
4110    1     FORMAT('***** ERROR--THE FIRST ARGUMENT TO HFLPPF ',
4111     1           'IS OUTSIDE THE ALLOWABLE (0,1) INTERVAL')
4112          CALL DPWRST('XXX','BUG ')
4113          WRITE(ICOUT,46)P
4114          CALL DPWRST('XXX','BUG ')
4115          GOTO9999
4116        ENDIF
4117      ELSE
4118        IF(P.LT.0.0.OR.P.GT.1.0)THEN
4119          WRITE(ICOUT,1)
4120          CALL DPWRST('XXX','BUG ')
4121          WRITE(ICOUT,46)P
4122          CALL DPWRST('XXX','BUG ')
4123          PPF=0.0
4124          GOTO9999
4125        ENDIF
4126      ENDIF
4127   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',G15.7,'.')
4128C
4129C  STANDARD HALF-LOGISTIC CASE.  HAVE TO BOUND TO THE RIGHT.
4130C
4131      IF(P.EQ.0.0)THEN
4132        PPF=0.
4133        GOTO9999
4134      ENDIF
4135C
4136      DP=DBLE(P)
4137      DG=DBLE(GAMMA)
4138C
4139      IF(GAMMA.LE.0.0)THEN
4140        DPPF=-DLOG((1.0D0-DP)/(1.0D0+DP))
4141      ELSE
4142        IF(P.EQ.1.0)THEN
4143          DPPF=1.0D0/DG
4144        ELSE
4145          DPPF=(1.0D0 - ((1.0D0-DP)/(1.0D0+DP))**DG)/DG
4146        ENDIF
4147      ENDIF
4148      PPF=REAL(DPPF)
4149C
4150 9999 CONTINUE
4151      RETURN
4152      END
4153      SUBROUTINE HFLRAN(N,GAMMA,ISEED,X)
4154C
4155C     PURPOSE--THIS SUBROUTINE GENERATES A RANDOM SAMPLE OF SIZE N
4156C              FROM THE HALF-LOGISTIC DISTRIBUTION
4157C     INPUT  ARGUMENTS--N      = THE DESIRED INTEGER NUMBER
4158C                                OF RANDOM NUMBERS TO BE
4159C                                GENERATED.
4160C     OUTPUT ARGUMENTS--X      = A SINGLE PRECISION VECTOR
4161C                                (OF DIMENSION AT LEAST N)
4162C                                INTO WHICH THE GENERATED
4163C                                RANDOM SAMPLE WILL BE PLACED.
4164C     OUTPUT--A RANDOM SAMPLE OF SIZE N
4165C             FROM THE HALF-LOGISTIC DISTRIBUTION
4166C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
4167C     RESTRICTIONS--THERE IS NO RESTRICTION ON THE MAXIMUM VALUE
4168C                   OF N FOR THIS SUBROUTINE.
4169C     OTHER DATAPAC   SUBROUTINES NEEDED--UNIRAN.
4170C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
4171C     LANGUAGE--ANSI FORTRAN (1977)
4172C     WRITTEN BY--JAMES J. FILLIBEN
4173C                 STATISTICAL ENGINEERING DIVISION
4174C                 INFORMATION TECHNOLOGY LABORATORY
4175C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
4176C                 GAITHERSBURG, MD 20899-8980
4177C                 PHONE--301-975-2855
4178C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
4179C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
4180C     LANGUAGE--ANSI FORTRAN (1977)
4181C               EXCEPTION--HOLLERITH STRINGS IN FORMAT STATEMENTS
4182C                          DENOTED BY QUOTES RATHER THAN NH.
4183C     VERSION NUMBER--2001/10
4184C     ORIGINAL VERSION--OCTOBER   2001.
4185C
4186C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
4187C
4188C---------------------------------------------------------------------
4189C
4190      DIMENSION X(*)
4191C
4192C---------------------------------------------------------------------
4193C
4194      INCLUDE 'DPCOP2.INC'
4195C
4196C-----START POINT-----------------------------------------------------
4197C
4198C     CHECK THE INPUT ARGUMENTS FOR ERRORS
4199C
4200      IF(N.LT.1)THEN
4201        WRITE(ICOUT, 5)
4202    5   FORMAT('***** ERROR--THE FIRST ARGUMENT TO HFLRAN ',
4203     1         'IS NON-POSITIVE.')
4204        CALL DPWRST('XXX','BUG ')
4205        WRITE(ICOUT,47)N
4206   47   FORMAT('***** THE VALUE OF THE ARGUMENT IS ',I8,'.')
4207        CALL DPWRST('XXX','BUG ')
4208        GOTO9000
4209      ENDIF
4210C
4211C     GENERATE N UNIFORM (0,1) RANDOM NUMBERS;
4212C
4213      CALL UNIRAN(N,ISEED,X)
4214C
4215C     GENERATE N HALF-LOGISTIC RANDOM NUMBERS
4216C     USING THE PERCENT POINT FUNCTION TRANSFORMATION METHOD
4217C     AND THE FACT THAT THE HALF-LOGISTIC RANDOM NUMBER IS DEFINED
4218C     TO BE THE ABSOLUTE VALUE OF LOGISTIC RANDOM NUMBER.
4219C
4220      DO100I=1,N
4221      CALL HFLPPF(X(I),GAMMA,XTEMP)
4222      X(I)=XTEMP
4223  100 CONTINUE
4224C
4225 9000 CONTINUE
4226      RETURN
4227      END
4228      SUBROUTINE HFNCDF(X,CDF)
4229C
4230C     PURPOSE--THIS SUBROUTINE COMPUTES THE CUMULATIVE DISTRIBUTION
4231C              FUNCTION VALUE FOR THE HALFNORMAL
4232C              DISTRIBUTION.
4233C              THE HALFNORMAL DISTRIBUTION USED
4234C              HEREIN HAS MEAN = SQRT(2/PI) = 0.79788456
4235C              AND STANDARD DEVIATION = 1.
4236C              THIS DISTRIBUTION IS DEFINED FOR ALL NON-NEGATIVE X
4237C              AND HAS THE PROBABILITY DENSITY FUNCTION
4238C              F(X) = (2/SQRT(2*PI)) * EXP(-X*X/2).
4239C              THE HALFNORMAL DISTRIBUTION USED HEREIN
4240C              IS THE DISTRIBUTION OF THE VARIATE X = ABS(Z) WHERE
4241C              THE VARIATE Z IS NORMALLY DISTRIBUTED
4242C              WITH MEAN = 0 AND STANDARD DEVIATION = 1.
4243C     INPUT  ARGUMENTS--X      = THE SINGLE PRECISION VALUE
4244C                                AT WHICH THE CUMULATIVE DISTRIBUTION
4245C                                FUNCTION IS TO BE EVALUATED.
4246C                                X SHOULD BE NON-NEGATIVE.
4247C     OUTPUT ARGUMENTS--CDF    = THE SINGLE PRECISION CUMULATIVE
4248C                                DISTRIBUTION FUNCTION VALUE.
4249C     OUTPUT--THE SINGLE PRECISION CUMULATIVE DISTRIBUTION
4250C             FUNCTION VALUE CDF FOR THE HALFNORMAL
4251C             DISTRIBUTION WITH MEAN = SQRT(2/PI) = 0.79788456
4252C             AND STANDARD DEVIATION = 1.
4253C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
4254C     RESTRICTIONS--X SHOULD BE NON-NEGATIVE.
4255C     OTHER DATAPAC   SUBROUTINES NEEDED--NORCDF.
4256C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE.
4257C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
4258C     LANGUAGE--ANSI FORTRAN.
4259C     REFERENCES--JOHNSON AND KOTZ, CONTINUOUS UNIVARIATE
4260C                 DISTRIBUTIONS--1, 1970, PAGES 53, 59, 81, 83.
4261C               --DANIEL, 'USE OF HALF-NORMAL PLOTS IN
4262C                 INTERPRETING FACTORIAL TWO-LEVEL EXPERIMENTS',
4263C                 TECHNOMETRICS, 1959, PAGES 311-341.
4264C     WRITTEN BY--JAMES J. FILLIBEN
4265C                 STATISTICAL ENGINEERING LABORATORY (205.03)
4266C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
4267C                 GAITHERSBURG, MD 20899-8980
4268C                 PHONE:  301-921-2315
4269C     ORIGINAL VERSION--APRIL     1994.
4270C
4271C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
4272C
4273C---------------------------------------------------------------------
4274C
4275      INCLUDE 'DPCOP2.INC'
4276C
4277C---------------------------------------------------------------------
4278C
4279C     CHECK THE INPUT ARGUMENTS FOR ERRORS
4280C
4281      IF(X.LT.0.0)GOTO50
4282      GOTO90
4283   50 CONTINUE
4284      WRITE(ICOUT,4)
4285      CALL DPWRST('XXX','BUG ')
4286      WRITE(ICOUT,5)
4287      CALL DPWRST('XXX','BUG ')
4288      WRITE(ICOUT,46)X
4289      CALL DPWRST('XXX','BUG ')
4290      CDF=0.0
4291      RETURN
4292   90 CONTINUE
4293    4 FORMAT('***** NON-FATAL DIAGNOSTIC--THE FIRST  INPUT ARGUMENT')
4294    5 FORMAT('      TO THE HFNCDF SUBROUTINE IS NEGATIVE *****')
4295   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',E15.8,' *****')
4296C
4297C-----START POINT-----------------------------------------------------
4298C
4299      CALL NORCDF(X,CDF)
4300      CDF=2.0*CDF-1.0
4301C
4302      RETURN
4303      END
4304      SUBROUTINE HFNLI1(Y,N,ICASPL,
4305     1                  ALOC,SCALE,
4306     1                  ALIK,AIC,AICC,BIC,
4307     1                  ISUBRO,IBUGA3,IERROR)
4308C
4309C     PURPOSE--THIS ROUTINE COMPUTES THE LIKELIHOOD FUNCTION FOR
4310C              THE HALF-NORMAL DISTRIBUTION.  THIS IS FOR THE RAW DATA
4311C              CASE (I.E., NO GROUPING AND NO CENSORING).
4312C
4313C              IT IS ASSUMED THAT BASIC ERROR CHECKING HAS ALREADY BEEN
4314C              PERFORMED.
4315C
4316C     REFERENCE--XXXX
4317C     WRITTEN BY--ALAN HECKERT
4318C                 STATISTICAL ENGINEERING DIVISION
4319C                 INFORMATION TECHNOLOGY LABORATORY
4320C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
4321C                 GAITHERSBURG, MD 20899-8980
4322C                 PHONE--301-975-2899
4323C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
4324C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
4325C     LANGUAGE--ANSI FORTRAN (1977)
4326C     VERSION NUMBER--2020/04
4327C     ORIGINAL VERSION--APRIL     2020.
4328C
4329C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
4330C
4331      CHARACTER*4 ICASPL
4332      CHARACTER*4 ISUBRO
4333      CHARACTER*4 IBUGA3
4334      CHARACTER*4 IERROR
4335C
4336      CHARACTER*4 IWRITE
4337      CHARACTER*4 ISUBN1
4338      CHARACTER*4 ISUBN2
4339      CHARACTER*4 ISTEPN
4340C
4341      DOUBLE PRECISION DN
4342      DOUBLE PRECISION DNP
4343      DOUBLE PRECISION DLIK
4344      DOUBLE PRECISION DTERM3
4345C
4346C---------------------------------------------------------------------
4347C
4348      DIMENSION Y(*)
4349C
4350C---------------------------------------------------------------------
4351C
4352      INCLUDE 'DPCOP2.INC'
4353C
4354C-----START POINT-----------------------------------------------------
4355C
4356      ISUBN1='HFNL'
4357      ISUBN2='I1  '
4358      IERROR='NO'
4359C
4360      ALIK=CPUMIN
4361      AIC=CPUMIN
4362      AICC=CPUMIN
4363      BIC=CPUMIN
4364C
4365      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'NLI1')THEN
4366        WRITE(ICOUT,999)
4367  999   FORMAT(1X)
4368        CALL DPWRST('XXX','WRIT')
4369        WRITE(ICOUT,51)
4370   51   FORMAT('**** AT THE BEGINNING OF HFNLI1--')
4371        CALL DPWRST('XXX','WRIT')
4372        WRITE(ICOUT,52)IBUGA3,ISUBRO
4373   52   FORMAT('IBUGA3,ISUBRO = ',A4,2X,A4)
4374        CALL DPWRST('XXX','WRIT')
4375        WRITE(ICOUT,55)N,ALOC,SCALE
4376   55   FORMAT('N,ALOC,SCALE = ',I8,2G15.7)
4377        CALL DPWRST('XXX','WRIT')
4378        DO56I=1,MIN(N,100)
4379          WRITE(ICOUT,57)I,Y(I)
4380   57     FORMAT('I,Y(I) = ',I8,G15.7)
4381          CALL DPWRST('XXX','WRIT')
4382   56   CONTINUE
4383      ENDIF
4384C
4385C               ******************************************
4386C               **  STEP 1--                            **
4387C               **  COMPUTE LIKELIHOOD FUNCTION         **
4388C               ******************************************
4389C
4390      ISTEPN='1'
4391      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'NLI1')
4392     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
4393C
4394      IERFLG=0
4395      IERROR='NO'
4396      IWRITE='OFF'
4397C
4398      NP=2
4399      IF(ICASPL.EQ.'1')THEN
4400        ALOC=0.0
4401        NP=1
4402      ENDIF
4403C
4404      ALIK=0.0
4405      DO1000I=1,N
4406        ARG1=(Y(I) - ALOC)/SCALE
4407        CALL HFNPDF(ARG1,RESULT)
4408        APDF=RESULT/SCALE
4409        IF(APDF.GT.0.0)THEN
4410          ALIK=ALIK + LOG(APDF)
4411        ENDIF
4412 1000 CONTINUE
4413C
4414      DN=DBLE(N)
4415      DLIK=DBLE(ALIK)
4416      DNP=DBLE(NP)
4417      AIC=REAL(-2.0D0*DLIK + 2.0D0*DNP)
4418      DTERM3=(2.0D0*DNP*(DNP+1.0D0))/(DN-DNP-1.0D0)
4419      AICC=REAL(-2.0D0*DLIK + 2.0D0*DNP + DTERM3)
4420      BIC=REAL(-2.0D0*DLIK + DNP*LOG(DN))
4421C
4422      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'NLI1')THEN
4423        WRITE(ICOUT,999)
4424        CALL DPWRST('XXX','WRIT')
4425        WRITE(ICOUT,9011)
4426 9011   FORMAT('**** AT THE END OF HFNLI1--')
4427        CALL DPWRST('XXX','WRIT')
4428        WRITE(ICOUT,9014)ALIK,AIC,AICC,BIC
4429 9014   FORMAT('ALIK,AIC,AICC,BIC = ',4G15.7)
4430        CALL DPWRST('XXX','WRIT')
4431      ENDIF
4432C
4433      RETURN
4434      END
4435      SUBROUTINE HFNML1(Y,N,ICASPL,
4436     1                  XMEAN,XSD,XMIN,XMAX,
4437     1                  ALOCML,SCALML,
4438     1                  ISUBRO,IBUGA3,IERROR)
4439C
4440C     PURPOSE--THIS ROUTINE COMPUTES THE MAXIMUM LIKELIHOOD ESTIMATES
4441C              FOR THE MAXWELL DISTRIBUTION FOR THE RAW DATA CASE (I.E.,
4442C              NO CENSORING AND NO GROUPING).
4443C
4444C              IT IS ASSUMED THAT BASIC ERROR CHECKING HAS ALREADY BEEN
4445C              PERFORMED.
4446C
4447C              PUT THIS IN A SEPARATE ROUTINE AS IT MAY BE CALLED
4448C              FROM MULTIPLE PLACES (DPMLHN WILL GENERATE THE OUTPUT
4449C              FOR THE MAXWELL MLE COMMAND).
4450C
4451C              THE CODE IS SET-UP TO HANDLE EITHER 1-PARAMETER OR
4452C              2-PARAMETER CASE.
4453C
4454C              THE ESTIMATE OF THE LOCATION PARAMETER IS THE
4455C              SAMPLE MINIMUM.  THE ESTIMATE OF THE SCALE PARAMETER IS
4456C
4457C                 SCALEHAT = SQRT(SUM[i=1 to N][(X(i) - YMIN)**2/N])
4458C
4459C     REFERENCE--XXXX
4460C     WRITTEN BY--ALAN HECKERT
4461C                 STATISTICAL ENGINEERING DIVISION
4462C                 INFORMATION TECHNOLOGY LABORATORY
4463C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
4464C                 GAITHERSBURG, MD 20899-8980
4465C                 PHONE--301-975-2899
4466C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
4467C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
4468C     LANGUAGE--ANSI FORTRAN (1977)
4469C     VERSION NUMBER--2020/04
4470C     ORIGINAL VERSION--APRIL     2020.
4471C
4472C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
4473C
4474      CHARACTER*4 ICASPL
4475      CHARACTER*4 ISUBRO
4476      CHARACTER*4 IBUGA3
4477      CHARACTER*4 IERROR
4478C
4479      CHARACTER*4 IWRITE
4480      CHARACTER*40 IDIST
4481      CHARACTER*4 ISUBN1
4482      CHARACTER*4 ISUBN2
4483      CHARACTER*4 ISTEPN
4484C
4485      DOUBLE PRECISION DSUM1
4486      DOUBLE PRECISION DLOC
4487      DOUBLE PRECISION DN
4488      DOUBLE PRECISION DX
4489C
4490      DIMENSION Y(*)
4491C
4492C---------------------------------------------------------------------
4493C
4494      INCLUDE 'DPCOP2.INC'
4495C
4496C-----START POINT-----------------------------------------------------
4497C
4498      ISUBN1='HFNM'
4499      ISUBN2='L1  '
4500      IWRITE='OFF'
4501      IERROR='NO'
4502C
4503      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'NML1')THEN
4504        WRITE(ICOUT,999)
4505  999   FORMAT(1X)
4506        CALL DPWRST('XXX','WRIT')
4507        WRITE(ICOUT,51)
4508   51   FORMAT('**** AT THE BEGINNING OF HFNML1--')
4509        CALL DPWRST('XXX','WRIT')
4510        WRITE(ICOUT,52)IBUGA3,ISUBRO,N
4511   52   FORMAT('IBUGA3,ISUBRO,N = ',2(A4,2X),I8)
4512        CALL DPWRST('XXX','WRIT')
4513        DO56I=1,MIN(N,100)
4514          WRITE(ICOUT,57)I,Y(I)
4515   57     FORMAT('I,Y(I) = ',I8,G15.7)
4516          CALL DPWRST('XXX','WRIT')
4517   56   CONTINUE
4518      ENDIF
4519C
4520C               ********************************************
4521C               **  STEP 1--                              **
4522C               **  CARRY OUT CALCULATIONS                **
4523C               **  FOR HALF-NORMAL MLE ESTIMATE          **
4524C               ********************************************
4525C
4526      ISTEPN='1'
4527      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'NML1')
4528     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
4529C
4530      IDIST='HALF-NORMAL'
4531      IFLAG=0
4532      IF(ICASPL.EQ.'1')IFLAG=1
4533      CALL SUMRAW(Y,N,IDIST,IFLAG,
4534     1            XMEAN,XVAR,XSD,XMIN,XMAX,
4535     1            ISUBRO,IBUGA3,IERROR)
4536      IF(IERROR.EQ.'YES')GOTO9000
4537C
4538      IF(ICASPL.EQ.'1')THEN
4539        ALOCML=0.0
4540      ELSE
4541        ALOCML=XMIN
4542      ENDIF
4543      SCALML=CPUMIN
4544C
4545      DSUM1=0.0D0
4546      DLOC=DBLE(ALOCML)
4547      DN=DBLE(N)
4548C
4549      DO1010I=1,N
4550        DX=DBLE(Y(I))
4551        DSUM1=DSUM1 + (DX - DLOC)**2
4552 1010 CONTINUE
4553      SCALML=REAL(DSQRT(DSUM1/DN))
4554C
4555 9000 CONTINUE
4556      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'NML1')THEN
4557        WRITE(ICOUT,999)
4558        CALL DPWRST('XXX','WRIT')
4559        WRITE(ICOUT,9011)
4560 9011   FORMAT('**** AT THE END OF HFNML1--')
4561        CALL DPWRST('XXX','WRIT')
4562        WRITE(ICOUT,9055)N,XMEAN,XSD,XMIN,XMAX
4563 9055   FORMAT('N,XMEAN,XSD,XMIN,XMAX = ',I8,6G15.7)
4564        CALL DPWRST('XXX','WRIT')
4565        WRITE(ICOUT,9056)DSUM1,ALOCML,SCALML
4566 9056   FORMAT('DSUM1,ALOCML,SCALML = ',3G15.7)
4567        CALL DPWRST('XXX','WRIT')
4568      ENDIF
4569C
4570      RETURN
4571      END
4572      SUBROUTINE HFNPDF(X,PDF)
4573C
4574C     PURPOSE--THIS SUBROUTINE COMPUTES THE PROBABILITY DENSITY
4575C              FUNCTION VALUE FOR THE HALFNORMAL DISTRIBUTION.
4576C              THE HALFNORMAL DISTRIBUTION USED
4577C              HEREIN HAS MEAN = SQRT(2/PI) = 0.79788456
4578C              AND STANDARD DEVIATION = 1.
4579C              THIS DISTRIBUTION IS DEFINED FOR ALL NON-NEGATIVE X
4580C              AND HAS THE PROBABILITY DENSITY FUNCTION
4581C              F(X) = (2/SQRT(2*PI)) * EXP(-X*X/2).
4582C              THE HALFNORMAL DISTRIBUTION USED HEREIN
4583C              IS THE DISTRIBUTION OF THE VARIATE X = ABS(Z) WHERE
4584C              THE VARIATE Z IS NORMALLY DISTRIBUTED
4585C              WITH MEAN = 0 AND STANDARD DEVIATION = 1.
4586C     INPUT  ARGUMENTS--X      = THE SINGLE PRECISION VALUE
4587C                                AT WHICH THE PROBABILITY DENSITY
4588C                                FUNCTION IS TO BE EVALUATED.
4589C                                X SHOULD BE NON-NEGATIVE.
4590C     OUTPUT ARGUMENTS--PDF    = THE SINGLE PRECISION PROBABILITY
4591C                                DENSITY FUNCTION VALUE.
4592C     OUTPUT--THE SINGLE PRECISION PROBABILITY DENSITY
4593C             FUNCTION VALUE PDF FOR THE HALFNORMAL
4594C             DISTRIBUTION WITH MEAN = SQRT(2/PI) = 0.79788456
4595C             AND STANDARD DEVIATION = 1.
4596C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
4597C     RESTRICTIONS--X SHOULD BE NON-NEGATIVE.
4598C     OTHER DATAPAC   SUBROUTINES NEEDED--NORPDF.
4599C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE.
4600C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
4601C     LANGUAGE--ANSI FORTRAN.
4602C     REFERENCES--JOHNSON AND KOTZ, CONTINUOUS UNIVARIATE
4603C                 DISTRIBUTIONS--1, 1970, PAGES 53, 59, 81, 83.
4604C               --DANIEL, 'USE OF HALF-NORMAL PLOTS IN
4605C                 INTERPRETING FACTORIAL TWO-LEVEL EXPERIMENTS',
4606C                 TECHNOMETRICS, 1959, PAGES 311-341.
4607C     WRITTEN BY--JAMES J. FILLIBEN
4608C                 STATISTICAL ENGINEERING LABORATORY (205.03)
4609C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
4610C                 GAITHERSBURG, MD 20899-8980
4611C                 PHONE:  301-921-2315
4612C     ORIGINAL VERSION--APRIL     1994.
4613C
4614C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
4615C
4616C---------------------------------------------------------------------
4617C
4618      INCLUDE 'DPCOP2.INC'
4619C
4620C---------------------------------------------------------------------
4621C
4622C     CHECK THE INPUT ARGUMENTS FOR ERRORS
4623C
4624      IF(X.LT.0.0)GOTO50
4625      GOTO90
4626   50 CONTINUE
4627      WRITE(ICOUT,4)
4628      CALL DPWRST('XXX','BUG ')
4629      WRITE(ICOUT,5)
4630      CALL DPWRST('XXX','BUG ')
4631      WRITE(ICOUT,46)X
4632      CALL DPWRST('XXX','BUG ')
4633      PDF=0.0
4634      RETURN
4635   90 CONTINUE
4636    4 FORMAT('***** NON-FATAL DIAGNOSTIC--THE FIRST  INPUT ARGUMENT')
4637    5 FORMAT('      TO THE HFNPDF SUBROUTINE IS NEGATIVE *****')
4638   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',E15.8,' *****')
4639C
4640C-----START POINT-----------------------------------------------------
4641C
4642      CALL NORPDF(X,PDF)
4643      PDF=2.0*PDF
4644C
4645      RETURN
4646      END
4647      SUBROUTINE HFNPPF(P,PPF)
4648C
4649C     PURPOSE--THIS SUBROUTINE COMPUTES THE PERCENT POINT
4650C              FUNCTION VALUE FOR THE HALFNORMAL
4651C              DISTRIBUTION.
4652C              THE HALFNORMAL DISTRIBUTION USED
4653C              HEREIN HAS MEAN = SQRT(2/PI) = 0.79788456
4654C              AND STANDARD DEVIATION = 1.
4655C              THIS DISTRIBUTION IS DEFINED FOR ALL NON-NEGATIVE X
4656C              AND HAS THE PROBABILITY DENSITY FUNCTION
4657C              F(X) = (2/SQRT(2*PI)) * EXP(-X*X/2).
4658C              THE HALFNORMAL DISTRIBUTION USED HEREIN
4659C              IS THE DISTRIBUTION OF THE VARIATE X = ABS(Z) WHERE
4660C              THE VARIATE Z IS NORMALLY DISTRIBUTED
4661C              WITH MEAN = 0 AND STANDARD DEVIATION = 1.
4662C              NOTE THAT THE PERCENT POINT FUNCTION OF A DISTRIBUTION
4663C              IS IDENTICALLY THE SAME AS THE INVERSE CUMULATIVE
4664C              DISTRIBUTION FUNCTION OF THE DISTRIBUTION.
4665C     INPUT  ARGUMENTS--P      = THE SINGLE PRECISION VALUE
4666C                                (BETWEEN 0.0 (INCLUSIVELY)
4667C                                AND 1.0 (EXCLUSIVELY))
4668C                                AT WHICH THE PERCENT POINT
4669C                                FUNCTION IS TO BE EVALUATED.
4670C     OUTPUT ARGUMENTS--PPF    = THE SINGLE PRECISION PERCENT
4671C                                POINT FUNCTION VALUE.
4672C     OUTPUT--THE SINGLE PRECISION PERCENT POINT FUNCTION .
4673C             VALUE PPF FOR THE HALFNORMAL DISTRIBUTION
4674C             WITH MEAN = SQRT(2/PI) = 0.79788456
4675C             AND STANDARD DEVIATION = 1.
4676C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
4677C     RESTRICTIONS--P SHOULD BE BETWEEN 0.0 (INCLUSIVELY)
4678C                   AND 1.0 (EXCLUSIVELY).
4679C     OTHER DATAPAC   SUBROUTINES NEEDED--NORPPF.
4680C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE.
4681C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
4682C     LANGUAGE--ANSI FORTRAN (1977)
4683C     REFERENCES--JOHNSON AND KOTZ, CONTINUOUS UNIVARIATE
4684C                 DISTRIBUTIONS--1, 1970, PAGES 53, 59, 81, 83.
4685C               --DANIEL, 'USE OF HALF-NORMAL PLOTS IN
4686C                 INTERPRETING FACTORIAL TWO-LEVEL EXPERIMENTS',
4687C                 TECHNOMETRICS, 1959, PAGES 311-341.
4688C     WRITTEN BY--JAMES J. FILLIBEN
4689C                 STATISTICAL ENGINEERING DIVISION
4690C                 INFORMATION TECHNOLOGY LABORATORY
4691C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
4692C                 GAITHERSBURG, MD 20899-8980
4693C                 PHONE--301-975-2855
4694C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
4695C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
4696C     LANGUAGE--ANSI FORTRAN (1966)
4697C               EXCEPTION--HOLLERITH STRINGS IN FORMAT STATEMENTS
4698C                          DENOTED BY QUOTES RATHER THAN NH.
4699C     VERSION NUMBER--82/7
4700C     ORIGINAL VERSION--NOVEMBER  1975.
4701C     UPDATED         --OCTOBER   1976.
4702C     UPDATED         --DECEMBER  1981.
4703C     UPDATED         --MAY       1982.
4704C
4705C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
4706C
4707C---------------------------------------------------------------------
4708C
4709      INCLUDE 'DPCOP2.INC'
4710C
4711C-----START POINT-----------------------------------------------------
4712C
4713C     CHECK THE INPUT ARGUMENTS FOR ERRORS
4714C
4715      IF(P.LT.0.0.OR.P.GE.1.0)GOTO50
4716      GOTO90
4717   50 WRITE(ICOUT,1)
4718      CALL DPWRST('XXX','BUG ')
4719      WRITE(ICOUT,46)P
4720      CALL DPWRST('XXX','BUG ')
4721      PPF=0.0
4722      RETURN
4723   90 CONTINUE
4724    1 FORMAT('***** FATAL ERROR--THE 1ST INPUT ARGUMENT TO THE ',
4725     1'HFNPPF SUBROUTINE IS OUTSIDE THE ALLOWABLE (0,1) INTERVAL')
4726   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',E15.8,' *****')
4727C
4728      ARG=(1.0+P)/2.0
4729      CALL NORPPF(ARG,PPF)
4730      IF(PPF.LE.0.0)PPF=0.0
4731C
4732      RETURN
4733      END
4734      SUBROUTINE HFNRAN(N,ISEED,X)
4735C
4736C     PURPOSE--THIS SUBROUTINE GENERATES A RANDOM SAMPLE OF SIZE N
4737C              FROM THE HALFNORMAL DISTRIBUTION.
4738C              THE PROTOTYPE HALFNORMAL DISTRIBUTION USED
4739C              HEREIN HAS MEAN = SQRT(2/PI) = 0.79788456
4740C              AND STANDARD DEVIATION = 1.
4741C              THIS DISTRIBUTION IS DEFINED FOR ALL NON-NEGATIVE X
4742C              AND HAS THE PROBABILITY DENSITY FUNCTION
4743C              F(X) = (2/SQRT(2*PI)) * EXP(-X*X/2).
4744C              THE PROTOTYPE HALFNORMAL DISTRIBUTION USED HEREIN
4745C              IS THE DISTRIBUTION OF THE VARIATE X = ABS(Z) WHERE
4746C              THE VARIATE Z IS NORMALLY DISTRIBUTED
4747C              WITH MEAN = 0 AND STANDARD DEVIATION = 1.
4748C     INPUT  ARGUMENTS--N      = THE DESIRED INTEGER NUMBER
4749C                                OF RANDOM NUMBERS TO BE
4750C                                GENERATED.
4751C     OUTPUT ARGUMENTS--X      = A SINGLE PRECISION VECTOR
4752C                                (OF DIMENSION AT LEAST N)
4753C                                INTO WHICH THE GENERATED
4754C                                RANDOM SAMPLE WILL BE PLACED.
4755C     OUTPUT--A RANDOM SAMPLE OF SIZE N
4756C             FROM THE HALFNORMAL DISTRIBUTION
4757C              WITH MEAN = SQRT(2/PI) = 0.79788456
4758C              AND STANDARD DEVIATION = 1.
4759C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
4760C     RESTRICTIONS--THERE IS NO RESTRICTION ON THE MAXIMUM VALUE
4761C                   OF N FOR THIS SUBROUTINE.
4762C     OTHER DATAPAC   SUBROUTINES NEEDED--UNIRAN.
4763C     FORTRAN LIBRARY SUBROUTINES NEEDED--LOG, SQRT, SIN, COS.
4764C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
4765C     LANGUAGE--ANSI FORTRAN (1977)
4766C     REFERENCES--TOCHER, THE ART OF SIMULATION,
4767C                 1963, PAGES 14-15.
4768C               --HAMMERSLEY AND HANDSCOMB, MONTE CARLO METHODS,
4769C                 1964, PAGE 36.
4770C               --JOHNSON AND KOTZ, CONTINUOUS UNIVARIATE
4771C                 DISTRIBUTIONS--1, 1970, PAGES 53, 59, 81, 83.
4772C     WRITTEN BY--JAMES J. FILLIBEN
4773C                 STATISTICAL ENGINEERING DIVISION
4774C                 INFORMATION TECHNOLOGY LABORATORY
4775C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
4776C                 GAITHERSBURG, MD 20899-8980
4777C                 PHONE--301-975-2855
4778C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
4779C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
4780C     LANGUAGE--ANSI FORTRAN (1966)
4781C               EXCEPTION--HOLLERITH STRINGS IN FORMAT STATEMENTS
4782C                          DENOTED BY QUOTES RATHER THAN NH.
4783C     VERSION NUMBER--82/7
4784C     ORIGINAL VERSION--NOVEMBER  1975.
4785C     UPDATED         --JULY      1976.
4786C     UPDATED         --DECEMBER  1981.
4787C     UPDATED         --MAY       1982.
4788C
4789C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
4790C
4791C---------------------------------------------------------------------
4792C
4793      DIMENSION X(*)
4794      DIMENSION Y(2)
4795C
4796C---------------------------------------------------------------------
4797C
4798      INCLUDE 'DPCOP2.INC'
4799C
4800C-----DATA STATEMENTS-------------------------------------------------
4801C
4802      DATA PI/3.14159265359/
4803C
4804C-----START POINT-----------------------------------------------------
4805C
4806C     CHECK THE INPUT ARGUMENTS FOR ERRORS
4807C
4808      IF(N.LT.1)GOTO50
4809      GOTO90
4810   50 WRITE(ICOUT, 5)
4811      CALL DPWRST('XXX','BUG ')
4812      WRITE(ICOUT,47)N
4813      CALL DPWRST('XXX','BUG ')
4814      RETURN
4815   90 CONTINUE
4816    5 FORMAT('***** FATAL ERROR--THE 1ST INPUT ARGUMENT TO THE ',
4817     1'HFNRAN SUBROUTINE IS NON-POSITIVE *****')
4818   47 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',I8,' *****')
4819C
4820C     GENERATE N UNIFORM (0,1) RANDOM NUMBERS;
4821C     THEN GENERATE 2 ADDITIONAL UNIFORM (0,1) RANDOM NUMBERS
4822C     (TO BE USED BELOW IN FORMING THE N-TH NORMAL
4823C     RANDOM NUMBER WHEN THE DESIRED SAMPLE SIZE N
4824C     HAPPENS TO BE ODD).
4825C
4826      CALL UNIRAN(N,ISEED,X)
4827      CALL UNIRAN(2,ISEED,Y)
4828C
4829C     GENERATE N NORMAL RANDOM NUMBERS
4830C     USING THE BOX-MULLER METHOD.
4831C
4832      DO200I=1,N,2
4833      IP1=I+1
4834      U1=X(I)
4835      IF(I.EQ.N)GOTO210
4836      U2=X(IP1)
4837      GOTO220
4838  210 U2=Y(2)
4839  220 ARG1=-2.0*LOG(U1)
4840      ARG2=2.0*PI*U2
4841      SQRT1=SQRT(ARG1)
4842      Z1=SQRT1*COS(ARG2)
4843      Z2=SQRT1*SIN(ARG2)
4844      X(I)=Z1
4845      IF(I.EQ.N)GOTO200
4846      X(IP1)=Z2
4847  200 CONTINUE
4848C
4849C     GENERATE N HALFNORMAL RANDOM NUMBERS
4850C     USING THE DEFINITION THAT
4851C     A HALFNORMAL VARIATE
4852C     EQUALS THE ABSOLUTE VALUE OF A NORMAL VARIATE.
4853C
4854      DO400I=1,N
4855      IF(X(I).LT.0.0)X(I)=-X(I)
4856  400 CONTINUE
4857C
4858      RETURN
4859      END
4860      SUBROUTINE HLQEST(X, N, XTEMP, LB, RB, Q, ISEED, RESULT)
4861C
4862C    SUBROUTINE HLQEST
4863C
4864C    PURPOSE       COMPUTES THE HODGES-LEHMANN LOCATION ESTIMATOR:
4865C                  MEDIAN OF ( X(I) + X(J) ) / 2   FOR 1 LE I LE J LE N
4866C
4867C    USAGE         CALL HLQEST(X,N,LB,RB,Q,RESULT)
4868C
4869C    ARGUMENTS  X   REAL ARRAY OF OBSERVATIONS  (INPUT)
4870C                 * VALUES OF X MUST BE IN NONDECREASING ORDER *
4871C
4872C               N   INTEGER NUMBER OF OBSERVATIONS  (INPUT)
4873C                 * N MUST NOT BE LESS THAN 1 *
4874C
4875C               LB  INTEGER ARRAY OF LENGTH N FOR WORKSPACE
4876C
4877C               RB  INTEGER ARRAY OF LENGTH N FOR WORKSPACE
4878C
4879C               Q   INTEGER ARRAY OF LENGTH N FOR WORKSPACE
4880C
4881C           ISEED   SEED FOR UNIFORM RANDOM NUMBER GENERATOR
4882C
4883C         NOTE ---  ONLY LB,RB, AND Q ARE CHANGED IN COMPUTATION
4884C
4885C   EXTERNAL ROUTINE
4886C              RAN  FUNCTION PROVIDING UNIFORM RANDOM VARIABLES
4887C                   IN THE INTERVAL (0,1)
4888C                   RAN REQUIRES A DUMMY INTEGER ARGUMENT
4889C
4890C   NOTES           HLQEST HAS AN EXPECTED TIME COMPLEXITY ON
4891C                   THE ORDER OF N * LG( N )
4892C
4893C
4894C                   FOR N <= 25, COMPUTE DIRECTLY
4895C
4896C  J F MONAHAN, APRIL 1982, DEPT OF STAT, N C S U, RALEIGH, N C 27650
4897C  FINAL VERSION  JUNE 1983
4898C
4899      REAL X(*), AMN, AMX, XRAN(1)
4900      REAL XTEMP(*)
4901      INTEGER LB(*), RB(*), Q(*), SM, SQ, I, J, K, K1, K2, L, N, NN,
4902     * MDLL, MDLU, LBI, RBI, MDLROW, IQ
4903C
4904C  TAKE CARE OF SPECIAL CASES: N=1 AND N=2
4905C
4906      IF (N.LE.0) THEN
4907         RESULT=0.0
4908         RETURN
4909      ENDIF
4910C
4911      CALL SORT(X,N,X)
4912      IF (N.EQ.1) THEN
4913          RESULT = X(1)
4914          RETURN
4915      ELSEIF (N.EQ.2) THEN
4916          RESULT = (X(1)+X(2))/2.
4917          RETURN
4918      ELSEIF (N.LE.25) THEN
4919          NN = 0
4920          DO 1 I=1,N
4921            DO 2 J = I,N
4922              NN = NN + 1
4923              XTEMP(NN) = X(I) + X(J)
4924 2          CONTINUE
4925 1        CONTINUE
4926          CALL SORT(XTEMP,NN,XTEMP)
4927          K=(NN+1)/2
4928          IF(2*K.EQ.NN) XTEMP(K) = (XTEMP(K) + XTEMP(K+1))/2.
4929          RESULT=XTEMP(K)/2.
4930          RETURN
4931      ENDIF
4932C
4933C  FIND THE TOTAL NUMBER OF PAIRS (NN) AND THE MEDIAN(S) (K1,K2) NEEDED
4934C
4935      NN = (N*(N+1))/2
4936      K1 = (NN+1)/2
4937      K2 = (NN+2)/2
4938C
4939C  INITIALIZE LEFT AND RIGHT BOUNDS
4940C
4941      DO 20 I=1,N
4942        LB(I) = I
4943        RB(I) = N
4944   20 CONTINUE
4945C  SM = NUMBER IN SET S AT STEP M
4946      SM = NN
4947C  L = NUMBER OF PAIRS LESS THAN THOSE IN SET S AT STEP M
4948      L = 0
4949C
4950C
4951C  USE THE MEDIAN OF X(I)'S TO PARTITION ON THE FIRST STEP
4952C
4953      MDLL = (N+1)/2
4954      MDLU = (N+2)/2
4955      AM = X(MDLL) + X(MDLU)
4956      GO TO 80
4957C
4958C  USE THE MIDRANGE OF SET S AS PARTITION ELEMENT WHEN TIES ARE LIKELY
4959C   -- OR GET THE AVERAGE OF THE LAST 2 ELEMENTS
4960C
4961   30 CONTINUE
4962      AMX = X(1) + X(1)
4963      AMN = X(N) + X(N)
4964      DO 40 I=1,N
4965C   SKIP THIS ROW IF NO ELEMENT IN IT IS IN SET S ON THIS STEP
4966        IF (LB(I).GT.RB(I)) GO TO 40
4967        LBI = LB(I)
4968C                             GET THE SMALLEST IN THIS ROW
4969        AMN = AMIN1(AMN,X(LBI)+X(I))
4970        RBI = RB(I)
4971C                             GET THE LARGEST IN THIS ROW
4972        AMX = AMAX1(AMX,X(RBI)+X(I))
4973   40 CONTINUE
4974      AM = (AMX+AMN)/2.
4975C  BE CAREFUL TO CUT OFF SOMETHING -- ROUNDOFF CAN DO WIERD THINGS
4976      IF (AM.LE.AMN .OR. AM.GT.AMX) AM = AMX
4977C  UNLESS FINISHED, JUMP TO PARTITION STEP
4978      IF (AMN.NE.AMX .AND. SM.NE.2) GO TO 80
4979C  ALL DONE IF ALL OF S IS THE SAME -OR- IF ONLY 2 ELEMENTS ARE LEFT
4980      RESULT = AM/2.
4981      RETURN
4982C
4983C   *****   RESTART HERE UNLESS WORRIED ABOUT TIES   *****
4984C
4985   50 CONTINUE
4986C                        USE RANDOM ROW MEDIAN AS PARTITION ELEMENT
4987CCCCC FOR DATAPLOT: CALL UNIRAN
4988CCCCC K = IFIX(FLOAT(SM)*RAN(SM))
4989      NTEMP=1
4990      CALL UNIRAN(NTEMP, ISEED, XRAN)
4991      K = IFIX(FLOAT(SM)*XRAN(1))
4992C                        K IS A RANDOM INTEGER FROM O TO SM-1
4993      DO 60 I=1,N
4994        J = I
4995        IF (K.LE.RB(I)-LB(I)) GO TO 70
4996        K = K - RB(I) + LB(I) - 1
4997   60 CONTINUE
4998C                        J IS A RANDOM ROW --- NOW GET ITS MEDIAN
4999   70 MDLROW = (LB(J)+RB(J))/2
5000      AM = X(J) + X(MDLROW)
5001C
5002C       *****   PARTITION STEP   *****
5003C
5004C  USE AM TO PARTITION S0 INTO 2 GROUPS: THOSE .LT. AM, THOSE .GE. AM
5005C  Q(I)= HOW MANY PAIRS (X(I)+X(J)) IN ROW I LESS THAN AM
5006   80 CONTINUE
5007      J = N
5008C                              START IN UPPER RIGHT CORNER
5009      SQ = 0
5010C                              I COUNTS ROWS
5011      DO 110 I=1,N
5012        Q(I) = 0
5013C                              HAVE WE HIT THE DIAGONAL ?
5014   90   IF (J.LT.I) GO TO 110
5015C                              SHALL WE MOVE LEFT ?
5016        IF (X(I)+X(J).LT.AM) GO TO 100
5017        J = J - 1
5018        GO TO 90
5019C                              WE'RE DONE IN THIS ROW
5020  100   Q(I) = J - I + 1
5021C  SQ = TOTAL NUMBER OF PAIRS LESS THAN AM
5022        SQ = SQ + Q(I)
5023  110 CONTINUE
5024C
5025C  ***  FINISHED PARTITION --- START BRANCHING  ***
5026C
5027C  IF CONSECUTIVE PARTITIONS ARE THE SAME WE PROBABLY HAVE TIES
5028      IF (SQ.EQ.L) GO TO 30
5029C
5030C  ARE WE NEARLY DONE, WITH THE VALUES WE WANT ON THE BORDER?
5031C  IF(WE NEED  MAX OF THOSE .LT. AM -OR- MIN OF THOSE .GE. AM) GO TO 90
5032C
5033      IF (SQ.EQ.K2-1) GO TO 180
5034C
5035C  THE SET S IS SPLIT, WHICH PIECE DO WE KEEP?
5036C  70  =  CUT OFF BOTTOM,   90  =  NEARLY DONE,   60  =  CUT OFF TOP
5037C
5038CCCCC IF (SQ-K1) 140, 180, 120
5039      IF (SQ-K1.LT.0) THEN
5040         GOTO140
5041      ELSEIF (SQ-K1.EQ.0) THEN
5042        GOTO180
5043      ELSE
5044        GOTO120
5045      ENDIF
5046C
5047C  NEW S = (OLD S) .INTERSECT. (THOSE .LT. AM)
5048  120 CONTINUE
5049      DO 130 I=1,N
5050C                            RESET RIGHT BOUNDS FOR EACH ROW
5051        RB(I) = I + Q(I) - 1
5052  130 CONTINUE
5053      GO TO 160
5054C  NEW S = (OLD S) .INTERSECT. (THOSE .GE. AM)
5055  140 CONTINUE
5056      DO 150 I=1,N
5057C                            RESET LEFT BOUNDS FOR EACH ROW
5058        LB(I) = I + Q(I)
5059  150 CONTINUE
5060C
5061C  COUNT   SM = NUMBER OF PAIRS STILL IN NEW SET S
5062C           L = NUMBER OF PAIRS LESS THAN THOSE IN NEW SET S
5063  160 L = 0
5064      SM = 0
5065      DO 170 I=1,N
5066        L = L + LB(I) - I
5067        SM = SM + RB(I) - LB(I) + 1
5068  170 CONTINUE
5069C
5070C        *****   NORMAL RESTART JUMP   *****
5071C
5072      IF (SM.GT.2) GO TO 50
5073C  CAN ONLY GET TO 2 LEFT IF K1.NE.K2  -- GO GET THEIR AVERAGE
5074      GO TO 30
5075C
5076C  FIND:   MAX OF THOSE .LT. AM
5077C          MIN OF THOSE .GE. AM
5078  180 CONTINUE
5079      AMN = X(N) + X(N)
5080      AMX = X(1) + X(1)
5081      DO 190 I=1,N
5082        IQ = Q(I)
5083        IPIQ = I + IQ
5084        IF (IQ.GT.0) AMX = AMAX1(AMX,X(I)+X(IPIQ-1))
5085        IPIQ = I + IQ
5086        IF (IQ.LT.N-I+1) AMN = AMIN1(AMN,X(I)+X(IPIQ))
5087  190 CONTINUE
5088      RESULT = (AMN+AMX)/4.
5089C  WE ARE DONE, BUT WHICH SITUATION ARE WE IN?
5090      IF (K1.LT.K2) RETURN
5091      IF (SQ.EQ.K1) RESULT = AMX/2.
5092      IF (SQ.EQ.K1-1) RESULT = AMN/2.
5093      RETURN
5094      END
5095      SUBROUTINE HN(NX,DHN)
5096C
5097C     PURPOSE--THIS SUBROUTINE COMPUTES THE HARMONIC NUMBER
5098C              FUNCTION FOR REAL ARGUMENTS GREATER THAN 1.
5099C
5100C              THE HARMONIC NUMBER IS:
5101C
5102C                 H(N)=SUM[K=1 to N][1/K]
5103C
5104C              THE HARMONIC NUMBER CAN BE COMPUTED IN EITHER
5105C              OF THE FOLLOWING TWO WAYS:
5106C
5107C              1) H(N) = PSI(N+1) + gamma
5108C                 WHERE gamma IS EULER'S CONSTANT
5109C
5110C              2) H(N) = gamma + LOG(N) + (1/2)*N**(-2) +
5111C                        (1/120)*N**(-4) + O(n**(-6))
5112C
5113C              IN THIS SUBROUTINE, WE WILL USE DIRECT SUMMATION
5114C              FOR N <= 30.  FOR N > 30, WE WILL USE THE PSI
5115C              FUNCTION.
5116C
5117C     INPUT  ARGUMENTS--NX     = THE INTEGR VALUE OF THE ORDER OF
5118C                                THE HARMONIC NUMBER
5119C     OUTPUT ARGUMENTS--DHN    = THE DOUBLE PRECISION HARMONIC
5120C                                NUMBER
5121C     OUTPUT--THE DOUBLE PRECISION HARMONIC NUMBER DHN.
5122C     PRINTING--NONE.
5123C     RESTRICTIONS--NONE.
5124C     OTHER DATAPAC   SUBROUTINES NEEDED--DPSI.
5125C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE.
5126C     MODE OF INTERNAL OPERATIONS--DOUBLE PRECISION.
5127C     LANGUAGE--ANSI FORTRAN (1977)
5128C     REFERENCES--XX
5129C     WRITTEN BY--JAMES J. FILLIBEN
5130C                 STATISTICAL ENGINEERING DIVISION
5131C                 INFORMATION TECHNOLOGY LABORATORY
5132C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
5133C                 GAITHERSBRUG, MD 20899-8980
5134C                 PHONE--301-975-2855
5135C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
5136C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
5137C     LANGUAGE--ANSI FORTRAN (1977)
5138C     VERSION NUMBER--2006.9
5139C     ORIGINAL VERSION--MAY       2006.
5140C
5141C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-----------------
5142C
5143C-------------------------------------------------------------------
5144C
5145      IMPLICIT DOUBLE PRECISION (A-H, O-Z)
5146      EXTERNAL DPSI
5147      DOUBLE PRECISION DPSI
5148C
5149      INCLUDE 'DPCOP2.INC'
5150C
5151C-----DATA STATEMENTS-----------------------------------------------
5152C
5153CCCCC DATA DEPS/1.0D-20/
5154C
5155C-----START POINT---------------------------------------------------
5156C
5157      IF(NX.LT.1)THEN
5158        WRITE(ICOUT,51)
5159   51   FORMAT('***** ERROR FROM HARMNUMB FUNCTION--')
5160        CALL DPWRST('XXX','BUG ')
5161        WRITE(ICOUT,53)
5162   53   FORMAT('      THE FIRST ARGUMENT (N) MUST BE A POSITIVE ',
5163     1         'INTEGER')
5164        CALL DPWRST('XXX','BUG ')
5165        WRITE(ICOUT,55)NX
5166   55   FORMAT('      VALUE OF THE ARGUMENT IS ',I8)
5167        CALL DPWRST('XXX','BUG ')
5168        DHN=0.0D0
5169        GOTO9000
5170      ENDIF
5171C
5172C     FOR N <= 30, JUST DO A DIRECT SUM.
5173C
5174      IF(NX.LE.30)THEN
5175        DSUM=0.0D0
5176        DO100I=NX,1,-1
5177          DSUM=DSUM + 1.0D0/DBLE(I)
5178  100   CONTINUE
5179        DHN=DSUM
5180C
5181C     OTHERWISE, USE DPSI FUNCTION
5182C
5183      ELSE
5184        DHN=DPSI(DBLE(NX+1)) + 0.5772156649
5185      ENDIF
5186C
5187 9000 CONTINUE
5188      RETURN
5189      END
5190      SUBROUTINE HNM(NX,DM,DHNM)
5191C
5192C     PURPOSE--THIS SUBROUTINE COMPUTES THE GENERALIZED HARMONIC
5193C              NUMBER FUNCTION FOR REAL ARGUMENTS GREATER THAN 1.
5194C
5195C              THE GENERALIZED HARMONIC NUMBER IS:
5196C
5197C                 H(N,M)=SUM[K=1 to N][1/K**M]
5198C
5199C              THIS IS RELATED TO THE RIEMAN-ZETA SUM:
5200C
5201C                 ZETA(M)=SUM[K=1 to INFINITY][1/K**M]
5202C
5203C              THAT IS, THE ZETA SUM IS THE LIMIT OF THE
5204C              GENERALIZED HARMONIC NUMBER AS N GOES TO INFINITY.
5205C
5206C              WE ADAPT THE CODE FOR COMPUTING THE RIEMAN-ZETA SUM.
5207C              THIS CODE IS BASED ON EULER-MACMACLAURIN SUMMATION.
5208C
5209C              FOR BETTER COMPUTATIONAL ACCURACY, ACTUALLY
5210C              COMPUTE ZETA(X) - 1.
5211C     INPUT  ARGUMENTS--DNX    = THE DOUBLE PRECISION VALUE OF
5212C                                THE N ARGUMENT
5213C                     --DM     = THE DOUBLE PRECISION VALUE OF
5214C                                THE M ARGUMENT
5215C     OUTPUT ARGUMENTS--DHNM   = THE DOUBLE PRECISION GENERALIZED
5216C                                HARMONIC NUMBER
5217C     OUTPUT--THE DOUBLE PRECISION GENERALIZED HARMONIC NUMBER DHNM.
5218C     PRINTING--NONE.
5219C     RESTRICTIONS--NONE.
5220C     OTHER DATAPAC   SUBROUTINES NEEDED--NONE.
5221C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE.
5222C     MODE OF INTERNAL OPERATIONS--DOUBLE PRECISION.
5223C     LANGUAGE--ANSI FORTRAN (1977)
5224C     REFERENCES--NATIONAL BUREAU OF STANDARDS APPLIED MATHEMATICS
5225C                 SERIES 55, 1964.
5226C               --THOMPSON, "ATLAS FOR COMPUTING MATHEMATICAL
5227C                 FUNCTIONS", WILEY, 1997.  THIS ROUTINE IS A
5228C                 FORTRAN TRANSLATION OF THE C FUNCTION ON PAGE 146
5229C                 OF THIS BOOK.
5230C     WRITTEN BY--JAMES J. FILLIBEN
5231C                 STATISTICAL ENGINEERING DIVISION
5232C                 INFORMATION TECHNOLOGY LABORATORY
5233C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
5234C                 GAITHERSBRUG, MD 20899-8980
5235C                 PHONE--301-975-2855
5236C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
5237C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
5238C     LANGUAGE--ANSI FORTRAN (1977)
5239C     VERSION NUMBER--2006.9
5240C     ORIGINAL VERSION--MAY       2006.
5241C
5242C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-----------------
5243C
5244C-------------------------------------------------------------------
5245C
5246      IMPLICIT DOUBLE PRECISION (A-H, O-Z)
5247C
5248      INCLUDE 'DPCOP2.INC'
5249C
5250C-----DATA STATEMENTS-----------------------------------------------
5251C
5252CCCCC DATA DEPS/1.0D-30/
5253C
5254C-----START POINT---------------------------------------------------
5255C
5256      IF(NX.LT.1)THEN
5257        WRITE(ICOUT,51)
5258   51   FORMAT('***** ERROR FROM GENEHARM FUNCTION--')
5259        CALL DPWRST('XXX','BUG ')
5260        WRITE(ICOUT,53)
5261   53   FORMAT('      THE FIRST ARGUMENT (N) MUST BE A POSITIVE ',
5262     1         'INTEGER')
5263        CALL DPWRST('XXX','BUG ')
5264        WRITE(ICOUT,55)NX
5265   55   FORMAT('      VALUE OF THE ARGUMENT IS ',I8)
5266        CALL DPWRST('XXX','BUG ')
5267        DHNM=0.0D0
5268        GOTO9000
5269      ELSEIF(DM.LE.1.0D0)THEN
5270        WRITE(ICOUT,51)
5271        CALL DPWRST('XXX','BUG ')
5272        WRITE(ICOUT,63)
5273   63   FORMAT('      THE SECOND ARGUMENT (M) MUST BE > 1')
5274        CALL DPWRST('XXX','BUG ')
5275        WRITE(ICOUT,65)DM
5276   65   FORMAT('      VALUE OF THE ARGUMENT IS ',G15.7)
5277        CALL DPWRST('XXX','BUG ')
5278        DHNM=0.0D0
5279        GOTO9000
5280      ENDIF
5281C
5282CCCCC DX=DM
5283C
5284CCCCC DSTERM=DX*(DX+1.0D0)*(DX+2.0D0)*
5285CCCCC1       (DX+3.0D0)*(DX+4.0D0)/30240.0D0
5286CCCCC DTERM1=DSTERM*(2.0D0**DX)/DEPS
5287CCCCC DTERM2=DTERM1**(1.0D0/(DX+5.0D0))
5288CCCCC IF(DTERM2.LE.10.01)THEN
5289CCCCC   N=10
5290CCCCC ELSE
5291CCCCC   N=INT(DTERM2)
5292CCCCC ENDIF
5293C
5294CCCCC DSUM2=0.0D0
5295CCCCC DO190I=1,MIN(N,NX)
5296CCCCC     DSUM2=DSUM2 + 1.0D0/DBLE(I)**DX
5297CC190 CONTINUE
5298CCCCC print *,'nx,n,dsum2=',nx,n,dsum2
5299C
5300C     FOR NOW, JUST COMPUTE BY DIRECT SUMMATION.  NEED TO
5301C     FIND A BETTER ALGORITHM FOR THIS FUNCTION.
5302C
5303      DX=DM
5304      N=NX
5305CCCCC IF(N.LE.30)THEN
5306        DSUM=0.0D0
5307        DO200I=N,1,-1
5308          DSUM=DSUM + 1.0D0/DBLE(I)**DX
5309  200   CONTINUE
5310        DHNM=DSUM
5311C
5312C     OTHERWISE, USE ZETA APPROXIMATION WHERE N MAY BE
5313C     TRUNCATED SOONER THAN FOR ZETA.
5314C
5315CCCCC ELSE
5316CCCCC   FN=DBLE(N)
5317CCCCC   DNEGX=-DX
5318CCCCC   DSUM=0.0D0
5319CCCCC   DO100K=2,N-1
5320CCCCC     DSUM=DSUM + DBLE(K)**DNEGX
5321C100    CONTINUE
5322C
5323CCCCC   DSUM = DSUM +
5324CCCCC1         (FN**DNEGX)*(0.5D0 + FN/(DX-1.0D0)
5325CCCCC1         + DX*(1.0D0 -
5326CCCCC1         (DX+1.0D0)*(DX+2.0D0)/(60.0D0*FN*FN))/(12.0D0*FN))
5327CCCCC1         + DSTERM/(FN**(DX+0.5D0))
5328C
5329CCCCC   DHNM=DSUM + 1.0D0
5330CCCCC ENDIF
5331C
5332 9000 CONTINUE
5333      RETURN
5334      END
5335      SUBROUTINE HOOKDR(NR,N,X,F,G,A,UDIAG,P,XPLS,FPLS,
5336     +     SX,STEPMX,
5337CDPLT+     OPTFCN,SX,STEPMX,
5338     +     STEPTL,DLT,IRETCD,MXTAKE,AMU,DLTP,PHI,PHIP0,
5339     +     SC,XPLSP,WRK0,EPSM,ITNCNT,IPR)
5340      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
5341C
5342C PURPOSE
5343C -------
5344C FIND A NEXT NEWTON ITERATE (XPLS) BY THE MORE-HEBDON METHOD
5345C
5346C PARAMETERS
5347C ----------
5348C NR           --> ROW DIMENSION OF MATRIX
5349C N            --> DIMENSION OF PROBLEM
5350C X(N)         --> OLD ITERATE X[K-1]
5351C F            --> FUNCTION VALUE AT OLD ITERATE, F(X)
5352C G(N)         --> GRADIENT AT OLD ITERATE, G(X), OR APPROXIMATE
5353C A(N,N)       --> CHOLESKY DECOMPOSITION OF HESSIAN IN LOWER
5354C                  TRIANGULAR PART AND DIAGONAL.
5355C                  HESSIAN IN UPPER TRIANGULAR PART AND UDIAG.
5356C UDIAG(N)     --> DIAGONAL OF HESSIAN IN A(.,.)
5357C P(N)         --> NEWTON STEP
5358C XPLS(N)     <--  NEW ITERATE X[K]
5359C FPLS        <--  FUNCTION VALUE AT NEW ITERATE, F(XPLS)
5360C OPTFCN       --> NAME OF SUBROUTINE TO EVALUATE FUNCTION
5361C SX(N)        --> DIAGONAL SCALING MATRIX FOR X
5362C STEPMX       --> MAXIMUM ALLOWABLE STEP SIZE
5363C STEPTL       --> RELATIVE STEP SIZE AT WHICH SUCCESSIVE ITERATES
5364C                  CONSIDERED CLOSE ENOUGH TO TERMINATE ALGORITHM
5365C DLT         <--> TRUST REGION RADIUS
5366C IRETCD      <--  RETURN CODE
5367C                    =0 SATISFACTORY XPLS FOUND
5368C                    =1 FAILED TO FIND SATISFACTORY XPLS SUFFICIENTLY
5369C                       DISTINCT FROM X
5370C MXTAKE      <--  BOOLEAN FLAG INDICATING STEP OF MAXIMUM LENGTH USED
5371C AMU         <--> [RETAIN VALUE BETWEEN SUCCESSIVE CALLS]
5372C DLTP        <--> [RETAIN VALUE BETWEEN SUCCESSIVE CALLS]
5373C PHI         <--> [RETAIN VALUE BETWEEN SUCCESSIVE CALLS]
5374C PHIP0       <--> [RETAIN VALUE BETWEEN SUCCESSIVE CALLS]
5375C SC(N)        --> WORKSPACE
5376C XPLSP(N)     --> WORKSPACE
5377C WRK0(N)      --> WORKSPACE
5378C EPSM         --> MACHINE EPSILON
5379C ITNCNT       --> ITERATION COUNT
5380C IPR          --> DEVICE TO WHICH TO SEND OUTPUT
5381C
5382      DIMENSION X(N),G(N),P(N),XPLS(N),SX(N)
5383      DIMENSION A(NR,1),UDIAG(N)
5384      DIMENSION SC(N),XPLSP(N),WRK0(N)
5385      LOGICAL MXTAKE,NWTAKE
5386      LOGICAL FSTIME
5387CDPLT EXTERNAL OPTFCN
5388C
5389      IRETCD=4
5390      FSTIME=.TRUE.
5391      TMP=0.
5392      DO 5 I=1,N
5393        TMP=TMP+SX(I)*SX(I)*P(I)*P(I)
5394    5 CONTINUE
5395      RNWTLN=SQRT(TMP)
5396C$    WRITE(IPR,954) RNWTLN
5397C
5398      IF(ITNCNT.GT.1) GO TO 100
5399C     IF(ITNCNT.EQ.1)
5400C     THEN
5401        AMU=0.
5402C
5403C       IF FIRST ITERATION AND TRUST REGION NOT PROVIDED BY USER,
5404C       COMPUTE INITIAL TRUST REGION.
5405C
5406        IF(DLT.NE. (-1.)) GO TO 100
5407C       IF(DLT.EQ. (-1.))
5408C       THEN
5409          ALPHA=0.
5410          DO 10 I=1,N
5411            ALPHA=ALPHA+(G(I)*G(I))/(SX(I)*SX(I))
5412   10     CONTINUE
5413          BETA=0.0
5414          DO 30 I=1,N
5415            TMP=0.
5416            DO 20 J=I,N
5417              TMP=TMP + (A(J,I)*G(J))/(SX(J)*SX(J))
5418   20       CONTINUE
5419            BETA=BETA+TMP*TMP
5420   30     CONTINUE
5421          DLT=ALPHA*SQRT(ALPHA)/BETA
5422          DLT = MIN(DLT, STEPMX)
5423C$        WRITE(IPR,950)
5424C$        WRITE(IPR,951) ALPHA,BETA,DLT
5425C       ENDIF
5426C     ENDIF
5427C
5428  100 CONTINUE
5429C
5430C FIND NEW STEP BY MORE-HEBDON ALGORITHM
5431      CALL HOOKST(NR,N,G,A,UDIAG,P,SX,RNWTLN,DLT,AMU,
5432     +     DLTP,PHI,PHIP0,FSTIME,SC,NWTAKE,WRK0,EPSM,IPR)
5433      DLTP=DLT
5434C
5435C CHECK NEW POINT AND UPDATE TRUST REGION
5436CDPLT CALL TREGUP(NR,N,X,F,G,A,OPTFCN,SC,SX,NWTAKE,STEPMX,STEPTL,
5437      CALL TREGUP(NR,N,X,F,G,A,SC,SX,NWTAKE,STEPMX,STEPTL,
5438     +         DLT,IRETCD,XPLSP,FPLSP,XPLS,FPLS,MXTAKE,IPR,3,UDIAG)
5439      IF(IRETCD.LE.1) RETURN
5440      GO TO 100
5441C
5442CC950 FORMAT(43H HOOKDR    INITIAL TRUST REGION NOT GIVEN. ,
5443CC   +       21H COMPUTE CAUCHY STEP.)
5444CC951 FORMAT(18H HOOKDR    ALPHA =,E20.13/
5445CC   +       18H HOOKDR    BETA  =,E20.13/
5446CC   +       18H HOOKDR    DLT   =,E20.13)
5447CC952 FORMAT(28H HOOKDR    CURRENT STEP (SC))
5448CC954 FORMAT(18H0HOOKDR    RNWTLN=,E20.13)
5449CC955 FORMAT(14H HOOKDR       ,5(E20.13,3X))
5450      END
5451      SUBROUTINE HOOKST(NR,N,G,A,UDIAG,P,SX,RNWTLN,DLT,AMU,
5452     +     DLTP,PHI,PHIP0,FSTIME,SC,NWTAKE,WRK0,EPSM,IPR)
5453      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
5454C
5455C PURPOSE
5456C -------
5457C FIND NEW STEP BY MORE-HEBDON ALGORITHM
5458C
5459C PARAMETERS
5460C ----------
5461C NR           --> ROW DIMENSION OF MATRIX
5462C N            --> DIMENSION OF PROBLEM
5463C G(N)         --> GRADIENT AT CURRENT ITERATE, G(X)
5464C A(N,N)       --> CHOLESKY DECOMPOSITION OF HESSIAN IN
5465C                  LOWER TRIANGULAR PART AND DIAGONAL.
5466C                  HESSIAN OR APPROX IN UPPER TRIANGULAR PART
5467C UDIAG(N)     --> DIAGONAL OF HESSIAN IN A(.,.)
5468C P(N)         --> NEWTON STEP
5469C SX(N)        --> DIAGONAL SCALING MATRIX FOR N
5470C RNWTLN       --> NEWTON STEP LENGTH
5471C DLT         <--> TRUST REGION RADIUS
5472C AMU         <--> [RETAIN VALUE BETWEEN SUCCESSIVE CALLS]
5473C DLTP         --> TRUST REGION RADIUS AT LAST EXIT FROM THIS ROUTINE
5474C PHI         <--> [RETAIN VALUE BETWEEN SUCCESSIVE CALLS]
5475C PHIP0       <--> [RETAIN VALUE BETWEEN SUCCESSIVE CALLS]
5476C FSTIME      <--> BOOLEAN. =.TRUE. IF FIRST ENTRY TO THIS ROUTINE
5477C                  DURING K-TH ITERATION
5478C SC(N)       <--  CURRENT STEP
5479C NWTAKE      <--  BOOLEAN, =.TRUE. IF NEWTON STEP TAKEN
5480C WRK0         --> WORKSPACE
5481C EPSM         --> MACHINE EPSILON
5482C IPR          --> DEVICE TO WHICH TO SEND OUTPUT
5483C
5484      DIMENSION G(N),P(N),SX(N),SC(N),WRK0(N)
5485      DIMENSION A(NR,1),UDIAG(N)
5486      LOGICAL NWTAKE,DONE
5487      LOGICAL FSTIME
5488C
5489      PHIP=0.0
5490C
5491C HI AND ALO ARE CONSTANTS USED IN THIS ROUTINE.
5492C CHANGE HERE IF OTHER VALUES ARE TO BE SUBSTITUTED.
5493      IPR=IPR
5494      HI=1.5
5495      ALO=.75
5496C -----
5497      IF(RNWTLN.GT.HI*DLT) GO TO 15
5498C     IF(RNWTLN.LE.HI*DLT)
5499C     THEN
5500C
5501C       TAKE NEWTON STEP
5502C
5503        NWTAKE=.TRUE.
5504        DO 10 I=1,N
5505          SC(I)=P(I)
5506   10   CONTINUE
5507        DLT=MIN(DLT,RNWTLN)
5508        AMU=0.
5509C$      WRITE(IPR,951)
5510        RETURN
5511C     ELSE
5512C
5513C       NEWTON STEP NOT TAKEN
5514C
5515   15   CONTINUE
5516C$      WRITE(IPR,952)
5517        NWTAKE=.FALSE.
5518        IF(AMU.LE.0.) GO TO 20
5519C       IF(AMU.GT.0.)
5520C       THEN
5521          AMU=AMU- (PHI+DLTP) *((DLTP-DLT)+PHI)/(DLT*PHIP)
5522C$        WRITE(IPR,956) AMU
5523C       ENDIF
5524   20   CONTINUE
5525        PHI=RNWTLN-DLT
5526        IF(.NOT.FSTIME) GO TO 28
5527C       IF(FSTIME)
5528C       THEN
5529          DO 25 I=1,N
5530            WRK0(I)=SX(I)*SX(I)*P(I)
5531   25     CONTINUE
5532C
5533C         SOLVE L*Y = (SX**2)*P
5534C
5535          CALL FORSLV(NR,N,A,WRK0,WRK0)
5536          PHIP0=-DNRM2(N,WRK0,1)**2/RNWTLN
5537          FSTIME=.FALSE.
5538C       ENDIF
5539   28   PHIP=PHIP0
5540        AMULO=-PHI/PHIP
5541        AMUUP=0.0
5542        DO 30 I=1,N
5543          AMUUP=AMUUP+(G(I)*G(I))/(SX(I)*SX(I))
5544   30   CONTINUE
5545        AMUUP=SQRT(AMUUP)/DLT
5546        DONE=.FALSE.
5547C$      WRITE(IPR,956) AMU
5548C$      WRITE(IPR,959) PHI
5549C$      WRITE(IPR,960) PHIP
5550C$      WRITE(IPR,957) AMULO
5551C$      WRITE(IPR,958) AMUUP
5552C
5553C       TEST VALUE OF AMU; GENERATE NEXT AMU IF NECESSARY
5554C
5555  100   CONTINUE
5556        IF(DONE) RETURN
5557C$      WRITE(IPR,962)
5558        IF(AMU.GE.AMULO .AND. AMU.LE.AMUUP) GO TO 110
5559C       IF(AMU.LT.AMULO .OR.  AMU.GT.AMUUP)
5560C       THEN
5561          AMU=MAX(SQRT(AMULO*AMUUP),AMUUP*1.0E-3)
5562C$        WRITE(IPR,956) AMU
5563C       ENDIF
5564  110   CONTINUE
5565C
5566C       COPY (H,UDIAG) TO L
5567C       WHERE H <-- H+AMU*(SX**2) [DO NOT ACTUALLY CHANGE (H,UDIAG)]
5568        DO 130 J=1,N
5569          A(J,J)=UDIAG(J) + AMU*SX(J)*SX(J)
5570          IF(J.EQ.N) GO TO 130
5571          JP1=J+1
5572          DO 120 I=JP1,N
5573            A(I,J)=A(J,I)
5574  120     CONTINUE
5575  130   CONTINUE
5576C
5577C       FACTOR H=L(L+)
5578C
5579        CALL CHOLDC(NR,N,A,0.0D0,SQRT(EPSM),ADDMAX)
5580C
5581C       SOLVE H*P = L(L+)*SC = -G
5582C
5583        DO 140 I=1,N
5584          WRK0(I)=-G(I)
5585  140   CONTINUE
5586        CALL LLTSLV(NR,N,A,SC,WRK0)
5587C$      WRITE(IPR,955)
5588C$      WRITE(IPR,963) (SC(I),I=1,N)
5589C
5590C       RESET H.  NOTE SINCE UDIAG HAS NOT BEEN DESTROYED WE NEED DO
5591C       NOTHING HERE.  H IS IN THE UPPER PART AND IN UDIAG, STILL INTACT
5592C
5593        STEPLN=0.
5594        DO 150 I=1,N
5595          STEPLN=STEPLN + SX(I)*SX(I)*SC(I)*SC(I)
5596  150   CONTINUE
5597        STEPLN=SQRT(STEPLN)
5598        PHI=STEPLN-DLT
5599        DO 160 I=1,N
5600          WRK0(I)=SX(I)*SX(I)*SC(I)
5601  160   CONTINUE
5602        CALL FORSLV(NR,N,A,WRK0,WRK0)
5603        PHIP=-DNRM2(N,WRK0,1)**2/STEPLN
5604C$      WRITE(IPR,961) DLT,STEPLN
5605C$      WRITE(IPR,959) PHI
5606C$      WRITE(IPR,960) PHIP
5607        IF((ALO*DLT.GT.STEPLN .OR. STEPLN.GT.HI*DLT) .AND.
5608     +       (AMUUP-AMULO.GT.0.)) GO TO 170
5609C       IF((ALO*DLT.LE.STEPLN .AND. STEPLN.LE.HI*DLT) .OR.
5610C            (AMUUP-AMULO.LE.0.))
5611C       THEN
5612C
5613C         SC IS ACCEPTABLE HOOKSTEP
5614C
5615C$        WRITE(IPR,954)
5616          DONE=.TRUE.
5617          GO TO 100
5618C       ELSE
5619C
5620C         SC NOT ACCEPTABLE HOOKSTEP.  SELECT NEW AMU
5621C
5622  170     CONTINUE
5623C$        WRITE(IPR,953)
5624          AMULO=MAX(AMULO,AMU-(PHI/PHIP))
5625          IF(PHI.LT.0.) AMUUP=MIN(AMUUP,AMU)
5626          AMU=AMU-(STEPLN*PHI)/(DLT*PHIP)
5627C$        WRITE(IPR,956) AMU
5628C$        WRITE(IPR,957) AMULO
5629C$        WRITE(IPR,958) AMUUP
5630          GO TO 100
5631C       ENDIF
5632C     ENDIF
5633C
5634CC951 FORMAT(27H0HOOKST    TAKE NEWTON STEP)
5635CC952 FORMAT(32H0HOOKST    NEWTON STEP NOT TAKEN)
5636CC953 FORMAT(31H HOOKST    SC IS NOT ACCEPTABLE)
5637CC954 FORMAT(27H HOOKST    SC IS ACCEPTABLE)
5638CC955 FORMAT(28H HOOKST    CURRENT STEP (SC))
5639CC956 FORMAT(18H HOOKST    AMU   =,E20.13)
5640CC957 FORMAT(18H HOOKST    AMULO =,E20.13)
5641CC958 FORMAT(18H HOOKST    AMUUP =,E20.13)
5642CC959 FORMAT(18H HOOKST    PHI   =,E20.13)
5643CC960 FORMAT(18H HOOKST    PHIP  =,E20.13)
5644CC961 FORMAT(18H HOOKST    DLT   =,E20.13/
5645CCCCC+       18H HOOKST    STEPLN=,E20.13)
5646CC962 FORMAT(23H0HOOKST    FIND NEW AMU)
5647CC963 FORMAT(14H HOOKST       ,5(E20.13,3X))
5648      END
5649      SUBROUTINE HORIND(X,XMIN,XMAX,I1,I2,I,IBUGU2,ISUBRO,IERROR)
5650C
5651C     PURPOSE--TRANSLATE A FLOATING POINT NUMBER
5652C              BETWEEN XMIN AND XMAX
5653C              INTO AN INTEGER INDEX BETWEEN I1 AND I2.
5654C              THIS IS USED IN REFERENCING ELEMENTS
5655C              IN HTE HORIZON TABLES USED IN
5656C              3-D HIDDEN LINE REMOVAL.
5657C
5658C---------------------------------------------------------------------
5659C
5660      CHARACTER*4 IBUGU2
5661      CHARACTER*4 ISUBRO
5662      CHARACTER*4 IERROR
5663C
5664C-----COMMON----------------------------------------------------------
5665C
5666      INCLUDE 'DPCOP2.INC'
5667C
5668C-----START POINT-----------------------------------------------------
5669C
5670C               **************************************************
5671C               **  STEP 11--                                   **
5672C               **  COMPUTE THE INTEGER INDEX.                  **
5673C               **************************************************
5674C
5675      IERROR='NO'
5676C
5677      P=(X-XMIN)/(XMAX-XMIN)
5678      AI1=I1
5679      AI2=I2
5680      AI=AI1+P*(AI2-AI1)
5681      I=INT(AI+0.5)
5682C
5683C               **************************************************
5684C               **  STEP 90--                                   **
5685C               **  EXIT.                                       **
5686C               **************************************************
5687C
5688      IF(IBUGU2.EQ.'ON' .OR. ISUBRO.EQ.'NDEX')THEN
5689        WRITE(ICOUT,9014)X,XMIN,XMAX,I1,I2,I
5690 9014   FORMAT('FROM HORIND--X,XMIN,XMAX,I1,I2,I = ',3E15.7,3I8)
5691        CALL DPWRST('XXX','BUG ')
5692      ENDIF
5693C
5694      RETURN
5695      END
5696      SUBROUTINE HPSORT (HX, N, STRBEG, STREND, IPERM, KFLAG, WORK, IER)
5697C***BEGIN PROLOGUE  HPSORT
5698C***PURPOSE  Return the permutation vector generated by sorting a
5699C            substring within a character array and, optionally,
5700C            rearrange the elements of the array.  The array may be
5701C            sorted in forward or reverse lexicographical order.  A
5702C            slightly modified quicksort algorithm is used.
5703C***LIBRARY   SLATEC
5704C***CATEGORY  N6A1C, N6A2C
5705C***TYPE      CHARACTER (SPSORT-S, DPSORT-D, IPSORT-I, HPSORT-H)
5706C***KEYWORDS  PASSIVE SORTING, SINGLETON QUICKSORT, SORT, STRING SORTING
5707C***AUTHOR  Jones, R. E., (SNLA)
5708C           Rhoads, G. S., (NBS)
5709C           Sullivan, F. E., (NBS)
5710C           Wisniewski, J. A., (SNLA)
5711C***DESCRIPTION
5712C
5713C   HPSORT returns the permutation vector IPERM generated by sorting
5714C   the substrings beginning with the character STRBEG and ending with
5715C   the character STREND within the strings in array HX and, optionally,
5716C   rearranges the strings in HX.   HX may be sorted in increasing or
5717C   decreasing lexicographical order.  A slightly modified quicksort
5718C   algorithm is used.
5719C
5720C   IPERM is such that HX(IPERM(I)) is the Ith value in the
5721C   rearrangement of HX.  IPERM may be applied to another array by
5722C   calling IPPERM, SPPERM, DPPERM or HPPERM.
5723C
5724C   An active sort of numerical data is expected to execute somewhat
5725C   more quickly than a passive sort because there is no need to use
5726C   indirect references. But for the character data in HPSORT, integers
5727C   in the IPERM vector are manipulated rather than the strings in HX.
5728C   Moving integers may be enough faster than moving character strings
5729C   to more than offset the penalty of indirect referencing.
5730C
5731C   Description of Parameters
5732C      HX - input/output -- array of type character to be sorted.
5733C           For example, to sort a 80 element array of names,
5734C           each of length 6, declare HX as character HX(100)*6.
5735C           If ABS(KFLAG) = 2, then the values in HX will be
5736C           rearranged on output; otherwise, they are unchanged.
5737C      N  - input -- number of values in array HX to be sorted.
5738C      STRBEG - input -- the index of the initial character in
5739C               the string HX that is to be sorted.
5740C      STREND - input -- the index of the final character in
5741C               the string HX that is to be sorted.
5742C      IPERM - output -- permutation array such that IPERM(I) is the
5743C              index of the string in the original order of the
5744C              HX array that is in the Ith location in the sorted
5745C              order.
5746C      KFLAG - input -- control parameter:
5747C            =  2  means return the permutation vector resulting from
5748C                  sorting HX in lexicographical order and sort HX also.
5749C            =  1  means return the permutation vector resulting from
5750C                  sorting HX in lexicographical order and do not sort
5751C                  HX.
5752C            = -1  means return the permutation vector resulting from
5753C                  sorting HX in reverse lexicographical order and do
5754C                  not sort HX.
5755C            = -2  means return the permutation vector resulting from
5756C                  sorting HX in reverse lexicographical order and sort
5757C                  HX also.
5758C      WORK - character variable which must have a length specification
5759C             at least as great as that of HX.
5760C      IER - output -- error indicator:
5761C          =  0  if no error,
5762C          =  1  if N is zero or negative,
5763C          =  2  if KFLAG is not 2, 1, -1, or -2,
5764C          =  3  if work array is not long enough,
5765C          =  4  if string beginning is beyond its end,
5766C          =  5  if string beginning is out-of-range,
5767C          =  6  if string end is out-of-range.
5768C
5769C     E X A M P L E  O F  U S E
5770C
5771C      CHARACTER*2 HX, W
5772C      INTEGER STRBEG, STREND
5773C      DIMENSION HX(10), IPERM(10)
5774C      DATA (HX(I),I=1,10)/ '05','I ',' I','  ','Rs','9R','R9','89',
5775C     1     ',*','N"'/
5776C      DATA STRBEG, STREND / 1, 2 /
5777C      CALL HPSORT (HX,10,STRBEG,STREND,IPERM,1,W)
5778C      PRINT 100, (HX(IPERM(I)),I=1,10)
5779C 100 FORMAT (2X, A2)
5780C      STOP
5781C      END
5782C
5783C***REFERENCES  R. C. Singleton, Algorithm 347, An efficient algorithm
5784C                 for sorting with minimal storage, Communications of
5785C                 the ACM, 12, 3 (1969), pp. 185-187.
5786C***ROUTINES CALLED  XERMSG
5787C***REVISION HISTORY  (YYMMDD)
5788C   761101  DATE WRITTEN
5789C   761118  Modified by John A. Wisniewski to use the Singleton
5790C           quicksort algorithm.
5791C   811001  Modified by Francis Sullivan for string data.
5792C   850326  Documentation slightly modified by D. Kahaner.
5793C   870423  Modified by Gregory S. Rhoads for passive sorting with the
5794C           option for the rearrangement of the original data.
5795C   890620  Algorithm for rearranging the data vector corrected by R.
5796C           Boisvert.
5797C   890622  Prologue upgraded to Version 4.0 style by D. Lozier.
5798C   920507  Modified by M. McClain to revise prologue text.
5799C   920818  Declarations section rebuilt and code restructured to use
5800C           IF-THEN-ELSE-ENDIF.  (SMR, WRB)
5801C***END PROLOGUE  HPSORT
5802C     .. Scalar Arguments ..
5803      INTEGER IER, KFLAG, N, STRBEG, STREND
5804      CHARACTER * (*) WORK
5805C     .. Array Arguments ..
5806      INTEGER IPERM(*)
5807      CHARACTER * (*) HX(*)
5808C     .. Local Scalars ..
5809      REAL R
5810      INTEGER I, IJ, INDX, INDX0, IR, ISTRT, J, K, KK, L, LM, LMT, M,
5811     +        NN, NN2
5812C     .. Local Arrays ..
5813      INTEGER IL(21), IU(21)
5814C     .. External Subroutines ..
5815CCCCC EXTERNAL XERMSG
5816C     .. Intrinsic Functions ..
5817      INTRINSIC ABS, INT, LEN
5818C
5819      INCLUDE 'DPCOP2.INC'
5820C
5821C***FIRST EXECUTABLE STATEMENT  HPSORT
5822      IER = 0
5823      NN = N
5824      IF (NN .LT. 1) THEN
5825         IER = 1
5826         WRITE(ICOUT,999)
5827  999    FORMAT(1X)
5828         CALL DPWRST('XXX','BUG ')
5829         WRITE(ICOUT,901)
5830  901    FORMAT('***** ERROR IN HPSORT (SORTING CHARACTER DATA--')
5831         CALL DPWRST('XXX','BUG ')
5832         WRITE(ICOUT,903)
5833  903    FORMAT('      THE NUMBER OF VALUES TO BE SORTED IS ',
5834     1          'NON-POSITIVE')
5835         CALL DPWRST('XXX','BUG ')
5836         GOTO9999
5837      ENDIF
5838      KK = ABS(KFLAG)
5839      IF (KK.NE.1 .AND. KK.NE.2) THEN
5840         IER = 2
5841         WRITE(ICOUT,999)
5842         CALL DPWRST('XXX','BUG ')
5843         WRITE(ICOUT,901)
5844         CALL DPWRST('XXX','BUG ')
5845         WRITE(ICOUT,921)
5846  921    FORMAT('      THE SORT CONTROL PARAMETER HAS AN INVALID ',
5847     1          'VALUE.')
5848         CALL DPWRST('XXX','BUG ')
5849         GOTO9999
5850      ENDIF
5851C
5852      IF(LEN(WORK) .LT. LEN(HX(1))) THEN
5853         IER = 3
5854         WRITE(ICOUT,999)
5855         CALL DPWRST('XXX','BUG ')
5856         WRITE(ICOUT,901)
5857         CALL DPWRST('XXX','BUG ')
5858         WRITE(ICOUT,931)
5859  931    FORMAT('      THE LENGTH OF THE WORK VARIABLE IS TOO SHORT.')
5860         CALL DPWRST('XXX','BUG ')
5861         GOTO9999
5862      ENDIF
5863      IF (STRBEG .GT. STREND) THEN
5864         IER = 4
5865         WRITE(ICOUT,999)
5866         CALL DPWRST('XXX','BUG ')
5867         WRITE(ICOUT,901)
5868         CALL DPWRST('XXX','BUG ')
5869         WRITE(ICOUT,941)STRBEG,STREND
5870  941    FORMAT('      THE STRING BEGINNING, ',I8,' IS BEYOND ITS ',
5871     1          'END, ',I8,' .')
5872         CALL DPWRST('XXX','BUG ')
5873         GOTO9999
5874      ENDIF
5875      IF (STRBEG .LT. 1 .OR. STRBEG .GT. LEN(HX(1))) THEN
5876         IER = 5
5877         WRITE(ICOUT,999)
5878         CALL DPWRST('XXX','BUG ')
5879         WRITE(ICOUT,901)
5880         CALL DPWRST('XXX','BUG ')
5881         WRITE(ICOUT,951)STRBEG
5882  951    FORMAT('      THE STRING BEGINNING, ',I8,' IS OUT-OF-RANGE.')
5883         CALL DPWRST('XXX','BUG ')
5884         GOTO9999
5885      ENDIF
5886      IF (STREND .LT. 1 .OR. STREND .GT. LEN(HX(1))) THEN
5887         IER = 6
5888         WRITE(ICOUT,999)
5889         CALL DPWRST('XXX','BUG ')
5890         WRITE(ICOUT,901)
5891         CALL DPWRST('XXX','BUG ')
5892         WRITE(ICOUT,961)STREND
5893  961    FORMAT('      THE STRING END, ',I8,' IS OUT-OF-RANGE.')
5894         CALL DPWRST('XXX','BUG ')
5895         GOTO9999
5896      ENDIF
5897C
5898C     Initialize permutation vector
5899C
5900      DO 10 I=1,NN
5901         IPERM(I) = I
5902   10 CONTINUE
5903C
5904C     Return if only one value is to be sorted
5905C
5906      IF (NN .EQ. 1) RETURN
5907C
5908C     Sort HX only
5909C
5910      M = 1
5911      I = 1
5912      J = NN
5913      R = .375E0
5914C
5915   20 IF (I .EQ. J) GO TO 70
5916      IF (R .LE. 0.5898437E0) THEN
5917         R = R+3.90625E-2
5918      ELSE
5919         R = R-0.21875E0
5920      ENDIF
5921C
5922   30 K = I
5923C
5924C     Select a central element of the array and save it in location L
5925C
5926      IJ = I + INT((J-I)*R)
5927      LM = IPERM(IJ)
5928C
5929C     If first element of array is greater than LM, interchange with LM
5930C
5931      IF (HX(IPERM(I))(STRBEG:STREND) .GT. HX(LM)(STRBEG:STREND)) THEN
5932         IPERM(IJ) = IPERM(I)
5933         IPERM(I) = LM
5934         LM = IPERM(IJ)
5935      ENDIF
5936      L = J
5937C
5938C     If last element of array is less than LM, interchange with LM
5939C
5940      IF (HX(IPERM(J))(STRBEG:STREND) .LT. HX(LM)(STRBEG:STREND)) THEN
5941         IPERM(IJ) = IPERM(J)
5942         IPERM(J) = LM
5943         LM = IPERM(IJ)
5944C
5945C        If first element of array is greater than LM, interchange
5946C        with LM
5947C
5948         IF (HX(IPERM(I))(STRBEG:STREND) .GT. HX(LM)(STRBEG:STREND))
5949     +      THEN
5950               IPERM(IJ) = IPERM(I)
5951               IPERM(I) = LM
5952               LM = IPERM(IJ)
5953         ENDIF
5954      ENDIF
5955      GO TO 50
5956   40 LMT = IPERM(L)
5957      IPERM(L) = IPERM(K)
5958      IPERM(K) = LMT
5959C
5960C     Find an element in the second half of the array which is smaller
5961C     than LM
5962C
5963   50 L = L-1
5964      IF (HX(IPERM(L))(STRBEG:STREND) .GT. HX(LM)(STRBEG:STREND))
5965     +    GO TO 50
5966C
5967C     Find an element in the first half of the array which is greater
5968C     than LM
5969C
5970   60 K = K+1
5971      IF (HX(IPERM(K))(STRBEG:STREND) .LT. HX(LM)(STRBEG:STREND))
5972     +   GO TO 60
5973C
5974C     Interchange these elements
5975C
5976      IF (K .LE. L) GO TO 40
5977C
5978C     Save upper and lower subscripts of the array yet to be sorted
5979C
5980      IF (L-I .GT. J-K) THEN
5981         IL(M) = I
5982         IU(M) = L
5983         I = K
5984         M = M+1
5985      ELSE
5986         IL(M) = K
5987         IU(M) = J
5988         J = L
5989         M = M+1
5990      ENDIF
5991      GO TO 80
5992C
5993C     Begin again on another portion of the unsorted array
5994C
5995   70 M = M-1
5996      IF (M .EQ. 0) GO TO 110
5997      I = IL(M)
5998      J = IU(M)
5999C
6000   80 IF (J-I .GE. 1) GO TO 30
6001      IF (I .EQ. 1) GO TO 20
6002      I = I-1
6003C
6004   90 I = I+1
6005      IF (I .EQ. J) GO TO 70
6006      LM = IPERM(I+1)
6007      IF (HX(IPERM(I))(STRBEG:STREND) .LE. HX(LM)(STRBEG:STREND))
6008     +   GO TO 90
6009      K = I
6010C
6011  100 IPERM(K+1) = IPERM(K)
6012      K = K-1
6013C
6014      IF (HX(LM)(STRBEG:STREND) .LT. HX(IPERM(K))(STRBEG:STREND))
6015     +    GO TO 100
6016      IPERM(K+1) = LM
6017      GO TO 90
6018C
6019C     Clean up
6020C
6021  110 IF (KFLAG .LE. -1) THEN
6022C
6023C        Alter array to get reverse order, if necessary
6024C
6025         NN2 = NN/2
6026         DO 120 I=1,NN2
6027           IR = NN-I+1
6028           LM = IPERM(I)
6029           IPERM(I) = IPERM(IR)
6030           IPERM(IR) = LM
6031  120    CONTINUE
6032      ENDIF
6033C
6034C     Rearrange the values of HX if desired
6035C
6036      IF (KK .EQ. 2) THEN
6037C
6038C        Use the IPERM vector as a flag.
6039C        If IPERM(I) < 0, then the I-th value is in correct location
6040C
6041         DO 140 ISTRT=1,NN
6042            IF (IPERM(ISTRT) .GE. 0) THEN
6043               INDX = ISTRT
6044               INDX0 = INDX
6045               WORK = HX(ISTRT)
6046  130          IF (IPERM(INDX) .GT. 0) THEN
6047                  HX(INDX) = HX(IPERM(INDX))
6048                  INDX0 = INDX
6049                  IPERM(INDX) = -IPERM(INDX)
6050                  INDX = ABS(IPERM(INDX))
6051                  GO TO 130
6052               ENDIF
6053               HX(INDX0) = WORK
6054            ENDIF
6055  140    CONTINUE
6056C
6057C        Revert the signs of the IPERM values
6058C
6059         DO 150 I=1,NN
6060            IPERM(I) = -IPERM(I)
6061  150    CONTINUE
6062C
6063      ENDIF
6064C
6065 9999 CONTINUE
6066      RETURN
6067      END
6068      SUBROUTINE HPTRPT(IXC,IYC,ICSTR,NCSTR,ISUBN0)
6069C
6070C     PURPOSE--TRANSLATE AN INTEGER PAIR OF COORDINATES
6071C              (HP MBP = MULTIPLE BYTE PAIR OF NUMBERS)
6072C              INTO A 5-BYTE PACKED CHARACTER REPRESENTATION
6073C              THAT WILL BE UNDERSTOOD BY A HEWLETT-PACKARD
6074C              GRAPHICS DEVICE.
6075C     NOTE--THE RESULTING PACKED WORDS
6076C           WILL BE PLACED IN SPECIFIC ELEMENTS
6077C           OF THE CHARACTER*130 VARIABLE ICSTR(.:.).
6078C           THE VALUE OF THE VARIABLE    NCSTR
6079C           REPRESENTS THE NUMBER OF ELEMENTS IN ICSTR(.:.)
6080C           THAT HAVE ALREADY BEEN FILLED.
6081C           THE RESULTING PACKED WORDS WILL GO INTO
6082C           THE NEXT AVAILABLE ELEMENTS OF ICSTR(.:.)
6083C           AND THE VALUE OF    NCSTR    WILL BE
6084C           UPDATED ACCORDINGLY.
6085C     NOTE--MORE COMPACT (1 TO 4-BYTE REPRESENTATIONS)
6086C           ARE POSSIBLE FOR HP DEVICES FOR SMALLER
6087C           RANGES (0 TO 3, 0 TO 31, 0 TO 255, AND
6088C           0 TO 2047, RESPECTIVELY) OF THE INPUT X AND Y
6089C           COORDINATES.
6090C           THIS SUBROUTINE IS GENERAL AND TREATS ALL
6091C           X AND Y VALUES FROM 0 TO 2**14-1 (= 16383).
6092C           THE OUTPUT WILL THUS ALWAYS BE A 5-BYTE
6093C           REPRESENTATION.
6094C     DANGER--NCSTR IS BOTH AN INPUT ARGUMENT
6095C             AND AN OUTPUT ARGUMENT OF THIS SUBROUTINE.
6096C     NOTE--ISUBN0 = NAME OF SUBROUTINE WHICH CALLED HPTRPT
6097C                    (AND THEREBY HAVE WALKBACK INFORMATION).
6098C     REFERENCE--HP 7221 C AND HP 7221T GRAPHICS PLOTTER
6099C                OPERATING AND PROGRAMMING MANUAL,
6100C                PAGES 71-72 AND 319.
6101C
6102C     WRITTEN BY--JAMES J. FILLIBEN
6103C                 STATISTICAL ENGINEERING DIVISION
6104C                 INFORMATION TECHNOLOGY LABORATORY
6105C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
6106C                 GAITHERSBURG, MD 20899-8980
6107C                 PHONE--301-975-2855
6108C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
6109C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
6110C     LANGUAGE--ANSI FORTRAN (1977)
6111C     VERSION NUMBER--83.6
6112C     ORIGINAL VERSION (AS A SEPARATE SUBROUTINE)--MARCH     1984.
6113C
6114C-----NON-COMMON VARIABLES (GRAPHICS)-------------------------------------------
6115C
6116      CHARACTER*4 ISUBN0
6117C
6118      CHARACTER*130 ICSTR
6119C
6120C-----COMMON----------------------------------------------------------
6121C
6122      INCLUDE 'DPCOGR.INC'
6123      INCLUDE 'DPCOBE.INC'
6124      INCLUDE 'DPCOP2.INC'
6125C
6126C-----DATA STATEMENTS-----------------------------------------------
6127C
6128      DATA K2/4/
6129      DATA K4/16/
6130      DATA K6/64/
6131      DATA K10/1024/
6132      DATA K12/4096/
6133C
6134C-----START POINT-----------------------------------------------------
6135C
6136      IERRG4='NO'
6137C
6138      IF(IBUGG4.EQ.'OFF'.AND.ISUBG4.NE.'TRPT')GOTO90
6139      WRITE(ICOUT,999)
6140  999 FORMAT(1X)
6141      CALL DPWRST('XXX','BUG ')
6142      WRITE(ICOUT,51)
6143   51 FORMAT('***** AT THE BEGINNING OF HPTRPT--')
6144      CALL DPWRST('XXX','BUG ')
6145      WRITE(ICOUT,52)ISUBN0
6146   52 FORMAT('ISUBN0 (NAME OF THE CALLING SUBROUTINE) = ',A4)
6147      CALL DPWRST('XXX','BUG ')
6148      WRITE(ICOUT,53)IXC,IYC
6149   53 FORMAT('IXC,IYC = ',2I8)
6150      CALL DPWRST('XXX','BUG ')
6151      WRITE(ICOUT,55)K2,K4,K6,K10,K12
6152   55 FORMAT('K2,K4,K6,K10,K12 = ',5I8)
6153      CALL DPWRST('XXX','BUG ')
6154      WRITE(ICOUT,56)IGUNIT
6155   56 FORMAT('IGUNIT = ',I8)
6156      CALL DPWRST('XXX','BUG ')
6157      WRITE(ICOUT,63)NCSTR
6158   63 FORMAT('NCSTR = ',I8)
6159      CALL DPWRST('XXX','BUG ')
6160      IF(NCSTR.LE.0)GOTO67
6161      DO65I=1,NCSTR
6162CCCCC IASCNE=ICHAR(ICSTR(I:I))
6163      CALL DPCOAN(ICSTR(I:I),IASCNE)
6164      WRITE(ICOUT,66)I,ICSTR(I:I),IASCNE
6165   66 FORMAT('I,ICSTR(I:I),IASCNE = ',I8,2X,A1,I8)
6166      CALL DPWRST('XXX','BUG ')
6167   65 CONTINUE
6168   67 CONTINUE
6169      WRITE(ICOUT,69)IBUGG4,ISUBG4,IERRG4
6170   69 FORMAT('IBUGG4,ISUBG4,IERRG4 = ',A4,2X,A4,2X,A4)
6171      CALL DPWRST('XXX','BUG ')
6172   90 CONTINUE
6173C
6174      IVX=IXC
6175      IVY=IYC
6176      IF(IVX.LT.0)IVX=0
6177      IF(IVY.LT.0)IVY=0
6178C
6179C               ******************************************************
6180C               **  STEP 1--                                        **
6181C               **  FORM THE HIGH-X 7-BIT BYTE--                    **
6182C               **  THE LEFT 3 BITS ARE 1 1 0;                      **
6183C               **  THE RIGHT 4 BITS = BITS 13 TO 10 OF X.          **
6184C               **  SHIFT THE X VALUE TO THE RIGHT 10 PLACES;       **
6185C               **  THEN KEEP ONLY THE RIGHT 4 PLACES;              **
6186C               **  THEN PLACE A 1 1 0 IN BITS 6, 5, AND 4          **
6187C               **  (WHERE BIT 6 = LEFT-MOST BIT IN A 7-BIT BYTE).  **
6188C               ******************************************************
6189C
6190      NCSTR=NCSTR+1
6191      IBYTE1=MOD(IVX/K10,K4)+96
6192CCCCC ICSTR(NCSTR:NCSTR)=CHAR(IBYTE1)
6193      CALL DPCONA(IBYTE1,ICSTR(NCSTR:NCSTR))
6194C
6195C               ***************************************************************
6196C               **  STEP 2--                                                 **
6197C               **  FORM THE MIDDLE-X 7-BIT BYTE--                           **
6198C               **  THE LEFT BIT IS THE COMPLEMENT OF THE NEXT-TO-LEFT BIT;  **
6199C               **  THE RIGHT 6 BITS = BITS 9 TO 4 OF X.                     **
6200C               **  SHIFT THE X VALUE TO THE RIGHT 4 PLACES;                 **
6201C               **  THEN KEEP ONLY THE RIGHT 6 PLACES;                       **
6202C               **  THEN IF NEW BIT 5 = 0, PLACE A 1 IN NEW BIT 6,           **
6203C               **  OR   IF NEW BIT 5 = 1, PLACE A 0 IN NEW BIT 6.           **
6204C               ***************************************************************
6205C
6206      NCSTR=NCSTR+1
6207      IBYTE2=MOD(IVX/K4,K6)
6208      IF(IBYTE2.LE.31)IBYTE2=IBYTE2+64
6209CCCCC ICSTR(NCSTR:NCSTR)=CHAR(IBYTE2)
6210      CALL DPCONA(IBYTE2,ICSTR(NCSTR:NCSTR))
6211C
6212C               ***************************************************************
6213C               **  STEP 3--                                                 **
6214C               **  FORM THE SHARED (LOW-X, HIGH Y) 7-BIT BYTE--             **
6215C               **  THE LEFT BIT IS THE COMPLEMENT OF THE NEXT-TO-LEFT BIT;  **
6216C               **  THE NEXT 4 BITS = BITS 3 TO 0 OF X;                      **
6217C               **  THE RIGHT 2 BITS = BITS 13 AND 12 OF Y.                  **
6218C               **  KEEP ONLY THE RIGHT 4 BITS OF X;                         **
6219C               **  SHIFT THESE 4 BITS TO THE LEFT 2 PLACES;                 **
6220C               **  SHIFT THE Y VALUE TO THE RIGHT 12 PLACES;                **
6221C               **  THEN KEEP ONLY THE RIGHT 2 BITS;                         **
6222C               **  THEN MERGE THE 4 X BITS AND THE 2 Y BITS;                **
6223C               **  FINALLY, IF NEW BIT 5 = 0, PLACE A 1 IN NEW BIT 6,       **
6224C               **  OR       IF NEW BIT 5 = 1, PLACE A 0 IN NEW BIT 6.       **
6225C               ***************************************************************
6226C
6227      NCSTR=NCSTR+1
6228      IBYTE3=MOD(IVX,K4)*K2+MOD(IVY/K12,K2)
6229      IF(IBYTE3.LE.31)IBYTE3=IBYTE3+64
6230CCCCC ICSTR(NCSTR:NCSTR)=CHAR(IBYTE3)
6231      CALL DPCONA(IBYTE3,ICSTR(NCSTR:NCSTR))
6232C
6233C               ***************************************************************
6234C               **  STEP 4--                                                 **
6235C               **  FORM THE MIDDLE-Y 7-BIT BYTE--                           **
6236C               **  THE LEFT BIT IS THE COMPLEMENT OF THE NEXT-TO-LEFT BIT;  **
6237C               **  THE RIGHT 6 BITS = BITS 11 TO 6 OF Y.                    **
6238C               **  SHIFT THE Y VALUE 6 PLACES TO THE RIGHT;                 **
6239C               **  THEN KEEP ONLY THE RIGHT 6 PLACES;                       **
6240C               **  THEN IF NEW BIT 5 = 0, PLACE A 1 IN NEW BIT 6,           **
6241C               **  OR   IF NEW BIT 5 = 1, PLACE A 0 IN NEW BIT 6.           **
6242C               ***************************************************************
6243C
6244      NCSTR=NCSTR+1
6245      IBYTE4=MOD(IVY/K6,K6)
6246      IF(IBYTE4.LE.31)IBYTE4=IBYTE4+64
6247CCCCC ICSTR(NCSTR:NCSTR)=CHAR(IBYTE4)
6248      CALL DPCONA(IBYTE4,ICSTR(NCSTR:NCSTR))
6249C
6250C               ***************************************************************
6251C               **  STEP 5--                                                 **
6252C               **  FORM THE LOW-Y 7-BIT BYTE--                              **
6253C               **  THE LEFT BIT IS THE COMPLEMENT OF THE NEXT-TO-LEFT BIT;  **
6254C               **  THE RIGHT 6 BITS = BITS 5 TO 0 OF Y.                     **
6255C               **  KEEP ONLY THE RIGHT 6 BITS OF Y;                         **
6256C               **  THEN IF NEW BIT 5 = 0, PLACE A 1 IN NEW BIT 6,           **
6257C               **  OR   IF NEW BIT 5 = 1, PLACE A 0 IN NEW BIT 6.           **
6258C               ***************************************************************
6259C
6260      NCSTR=NCSTR+1
6261      IBYTE5=MOD(IVY,K6)
6262      IF(IBYTE5.LE.31)IBYTE5=IBYTE5+64
6263CCCCC ICSTR(NCSTR:NCSTR)=CHAR(IBYTE5)
6264      CALL DPCONA(IBYTE5,ICSTR(NCSTR:NCSTR))
6265C
6266C               *****************
6267C               **  STEP 90--  **
6268C               **  EXIT       **
6269C               *****************
6270C
6271      IF(IBUGG4.EQ.'OFF'.AND.ISUBG4.NE.'TRPT')GOTO9090
6272      WRITE(ICOUT,9011)
6273 9011 FORMAT('***** AT THE END       OF TKTRPT--')
6274      WRITE(ICOUT,9012)IXC,IYC
6275 9012 FORMAT('IXC,IYC = ',2I8)
6276      CALL DPWRST('XXX','BUG ')
6277      WRITE(ICOUT,9013)IVX,IVY
6278 9013 FORMAT('IVX,IVY = ',2I8)
6279      CALL DPWRST('XXX','BUG ')
6280      WRITE(ICOUT,9015)K2,K4,K6,K10,K12
6281 9015 FORMAT('K2,K4,K6,K10,K12 = ',5I8)
6282      CALL DPWRST('XXX','BUG ')
6283      WRITE(ICOUT,9016)IGUNIT
6284 9016 FORMAT('IGUNIT = ',I8)
6285      CALL DPWRST('XXX','BUG ')
6286      WRITE(ICOUT,9017)IBYTE1,IBYTE2,IBYTE3,IBYTE4,IBYTE5
6287 9017 FORMAT('IBYTE1,IBYTE2,IBYTE3,IBYTE4,IBYTE5 = ',5I8)
6288      CALL DPWRST('XXX','BUG ')
6289      WRITE(ICOUT,9023)NCSTR
6290 9023 FORMAT('NCSTR = ',I8)
6291      CALL DPWRST('XXX','BUG ')
6292      IF(NCSTR.LE.0)GOTO9027
6293      DO9025I=1,NCSTR
6294CCCCC IASCNE=ICHAR(ICSTR(I:I))
6295      CALL DPCOAN(ICSTR(I:I),IASCNE)
6296      WRITE(ICOUT,9026)I,ICSTR(I:I),IASCNE
6297 9026 FORMAT('I,ICSTR(I:I),IASCNE = ',I8,2X,A1,I8)
6298      CALL DPWRST('XXX','BUG ')
6299 9025 CONTINUE
6300 9027 CONTINUE
6301      WRITE(ICOUT,9029)IBUGG4,ISUBG4,IERRG4
6302 9029 FORMAT('IBUGG4,ISUBG4,IERRG4 = ',A4,2X,A4,2X,A4)
6303      CALL DPWRST('XXX','BUG ')
6304 9090 CONTINUE
6305C
6306      RETURN
6307      END
6308      SUBROUTINE HQR(NM,N,LOW,IGH,H,WR,WI,IERR)
6309C***BEGIN PROLOGUE  HQR
6310C***DATE WRITTEN   760101   (YYMMDD)
6311C***REVISION DATE  830518   (YYMMDD)
6312C***CATEGORY NO.  D4C2B
6313C***KEYWORDS  EIGENVALUES,EIGENVECTORS,EISPACK
6314C***AUTHOR  SMITH, B. T., ET AL.
6315C***PURPOSE  Computes eigenvalues of a real upper Hessenberg matrix
6316C            using the QR method.
6317C***DESCRIPTION
6318C
6319C     This subroutine is a translation of the ALGOL procedure HQR,
6320C     NUM. MATH. 14, 219-231(1970) by Martin, Peters, and Wilkinson.
6321C     HANDBOOK FOR AUTO. COMP., VOL.II-LINEAR ALGEBRA, 359-371(1971).
6322C
6323C     This subroutine finds the eigenvalues of a REAL
6324C     UPPER Hessenberg matrix by the QR method.
6325C
6326C     On INPUT
6327C
6328C        NM must be set to the row dimension of two-dimensional
6329C          array parameters as declared in the calling program
6330C          dimension statement.
6331C
6332C        N is the order of the matrix.
6333C
6334C        LOW and IGH are integers determined by the balancing
6335C          subroutine  BALANC.  If  BALANC  has not been used,
6336C          set LOW=1, IGH=N.
6337C
6338C        H contains the upper Hessenberg matrix.  Information about
6339C          the transformations used in the reduction to Hessenberg
6340C          form by  ELMHES  or  ORTHES, if performed, is stored
6341C          in the remaining triangle under the Hessenberg matrix.
6342C
6343C     On OUTPUT
6344C
6345C        H has been destroyed.  Therefore, it must be saved
6346C          before calling  HQR  if subsequent calculation and
6347C          back transformation of eigenvectors is to be performed.
6348C
6349C        WR and WI contain the real and imaginary parts,
6350C          respectively, of the eigenvalues.  The eigenvalues
6351C          are unordered except that complex conjugate pairs
6352C          of values appear consecutively with the eigenvalue
6353C          having the positive imaginary part first.  If an
6354C          error exit is made, the eigenvalues should be correct
6355C          for indices IERR+1,...,N.
6356C
6357C        IERR is set to
6358C          Zero       for normal return,
6359C          J          if the J-th eigenvalue has not been
6360C                     determined after a total of 30*N iterations.
6361C
6362C     Questions and comments should be directed to B. S. Garbow,
6363C     APPLIED MATHEMATICS DIVISION, ARGONNE NATIONAL LABORATORY
6364C     ------------------------------------------------------------------
6365C***REFERENCES  B. T. SMITH, J. M. BOYLE, J. J. DONGARRA, B. S. GARBOW,
6366C                 Y. IKEBE, V. C. KLEMA, C. B. MOLER, *MATRIX EIGEN-
6367C                 SYSTEM ROUTINES - EISPACK GUIDE*, SPRINGER-VERLAG,
6368C                 1976.
6369C***ROUTINES CALLED  (NONE)
6370C***END PROLOGUE  HQR
6371C
6372      INTEGER I,J,K,L,M,N,EN,LL,MM,NA,NM,IGH,ITN,ITS,LOW,MP2,ENM2,IERR
6373      REAL H(NM,N),WR(N),WI(N)
6374      REAL P,Q,R,S,T,W,X,Y,ZZ,NORM,S1,S2
6375      LOGICAL NOTLAS
6376C
6377      R=0.0
6378      Q=0.0
6379      P=0.0
6380      M=0
6381C
6382C***FIRST EXECUTABLE STATEMENT  HQR
6383      IERR = 0
6384      NORM = 0.0E0
6385      K = 1
6386C     .......... STORE ROOTS ISOLATED BY BALANC
6387C                AND COMPUTE MATRIX NORM ..........
6388      DO 50 I = 1, N
6389C
6390         DO 40 J = K, N
6391            NORM = NORM + ABS(H(I,J))
6392   40    CONTINUE
6393C
6394         K = I
6395         IF (I .GE. LOW .AND. I .LE. IGH) GO TO 50
6396         WR(I) = H(I,I)
6397         WI(I) = 0.0E0
6398   50 CONTINUE
6399C
6400      EN = IGH
6401      T = 0.0E0
6402      ITN = 30*N
6403C     .......... SEARCH FOR NEXT EIGENVALUES ..........
6404   60 IF (EN .LT. LOW) GO TO 1001
6405      ITS = 0
6406      NA = EN - 1
6407      ENM2 = NA - 1
6408C     .......... LOOK FOR SINGLE SMALL SUB-DIAGONAL ELEMENT
6409C                FOR L=EN STEP -1 UNTIL LOW DO -- ..........
6410   70 DO 80 LL = LOW, EN
6411         L = EN + LOW - LL
6412         IF (L .EQ. LOW) GO TO 100
6413         S = ABS(H(L-1,L-1)) + ABS(H(L,L))
6414         IF (S .EQ. 0.0E0) S = NORM
6415         S2 = S + ABS(H(L,L-1))
6416         IF (S2 .EQ. S) GO TO 100
6417   80 CONTINUE
6418C     .......... FORM SHIFT ..........
6419  100 X = H(EN,EN)
6420      IF (L .EQ. EN) GO TO 270
6421      Y = H(NA,NA)
6422      W = H(EN,NA) * H(NA,EN)
6423      IF (L .EQ. NA) GO TO 280
6424      IF (ITN .EQ. 0) GO TO 1000
6425      IF (ITS .NE. 10 .AND. ITS .NE. 20) GO TO 130
6426C     .......... FORM EXCEPTIONAL SHIFT ..........
6427      T = T + X
6428C
6429      DO 120 I = LOW, EN
6430         H(I,I) = H(I,I) - X
6431  120 CONTINUE
6432C
6433      S = ABS(H(EN,NA)) + ABS(H(NA,ENM2))
6434      X = 0.75E0 * S
6435      Y = X
6436      W = -0.4375E0 * S * S
6437  130 ITS = ITS + 1
6438      ITN = ITN - 1
6439C     .......... LOOK FOR TWO CONSECUTIVE SMALL
6440C                SUB-DIAGONAL ELEMENTS.
6441C                FOR M=EN-2 STEP -1 UNTIL L DO -- ..........
6442      DO 140 MM = L, ENM2
6443         M = ENM2 + L - MM
6444         ZZ = H(M,M)
6445         R = X - ZZ
6446         S = Y - ZZ
6447         P = (R * S - W) / H(M+1,M) + H(M,M+1)
6448         Q = H(M+1,M+1) - ZZ - R - S
6449         R = H(M+2,M+1)
6450         S = ABS(P) + ABS(Q) + ABS(R)
6451         P = P / S
6452         Q = Q / S
6453         R = R / S
6454         IF (M .EQ. L) GO TO 150
6455         S1 = ABS(P) * (ABS(H(M-1,M-1)) + ABS(ZZ) + ABS(H(M+1,M+1)))
6456         S2 = S1 + ABS(H(M,M-1)) * (ABS(Q) + ABS(R))
6457         IF (S2 .EQ. S1) GO TO 150
6458  140 CONTINUE
6459C
6460  150 MP2 = M + 2
6461C
6462      DO 160 I = MP2, EN
6463         H(I,I-2) = 0.0E0
6464         IF (I .EQ. MP2) GO TO 160
6465         H(I,I-3) = 0.0E0
6466  160 CONTINUE
6467C     .......... DOUBLE QR STEP INVOLVING ROWS L TO EN AND
6468C                COLUMNS M TO EN ..........
6469      DO 260 K = M, NA
6470         NOTLAS = K .NE. NA
6471         IF (K .EQ. M) GO TO 170
6472         P = H(K,K-1)
6473         Q = H(K+1,K-1)
6474         R = 0.0E0
6475         IF (NOTLAS) R = H(K+2,K-1)
6476         X = ABS(P) + ABS(Q) + ABS(R)
6477         IF (X .EQ. 0.0E0) GO TO 260
6478         P = P / X
6479         Q = Q / X
6480         R = R / X
6481  170    S = SIGN(SQRT(P*P+Q*Q+R*R),P)
6482         IF (K .EQ. M) GO TO 180
6483         H(K,K-1) = -S * X
6484         GO TO 190
6485  180    IF (L .NE. M) H(K,K-1) = -H(K,K-1)
6486  190    P = P + S
6487         X = P / S
6488         Y = Q / S
6489         ZZ = R / S
6490         Q = Q / P
6491         R = R / P
6492C     .......... ROW MODIFICATION ..........
6493         DO 210 J = K, EN
6494            P = H(K,J) + Q * H(K+1,J)
6495            IF (.NOT. NOTLAS) GO TO 200
6496            P = P + R * H(K+2,J)
6497            H(K+2,J) = H(K+2,J) - P * ZZ
6498  200       H(K+1,J) = H(K+1,J) - P * Y
6499            H(K,J) = H(K,J) - P * X
6500  210    CONTINUE
6501C
6502         J = MIN0(EN,K+3)
6503C     .......... COLUMN MODIFICATION ..........
6504         DO 230 I = L, J
6505            P = X * H(I,K) + Y * H(I,K+1)
6506            IF (.NOT. NOTLAS) GO TO 220
6507            P = P + ZZ * H(I,K+2)
6508            H(I,K+2) = H(I,K+2) - P * R
6509  220       H(I,K+1) = H(I,K+1) - P * Q
6510            H(I,K) = H(I,K) - P
6511  230    CONTINUE
6512C
6513  260 CONTINUE
6514C
6515      GO TO 70
6516C     .......... ONE ROOT FOUND ..........
6517  270 WR(EN) = X + T
6518      WI(EN) = 0.0E0
6519      EN = NA
6520      GO TO 60
6521C     .......... TWO ROOTS FOUND ..........
6522  280 P = (Y - X) / 2.0E0
6523      Q = P * P + W
6524      ZZ = SQRT(ABS(Q))
6525      X = X + T
6526      IF (Q .LT. 0.0E0) GO TO 320
6527C     .......... REAL PAIR ..........
6528      ZZ = P + SIGN(ZZ,P)
6529      WR(NA) = X + ZZ
6530      WR(EN) = WR(NA)
6531      IF (ZZ .NE. 0.0E0) WR(EN) = X - W / ZZ
6532      WI(NA) = 0.0E0
6533      WI(EN) = 0.0E0
6534      GO TO 330
6535C     .......... COMPLEX PAIR ..........
6536  320 WR(NA) = X + P
6537      WR(EN) = X + P
6538      WI(NA) = ZZ
6539      WI(EN) = -ZZ
6540  330 EN = ENM2
6541      GO TO 60
6542C     .......... SET ERROR -- NO CONVERGENCE TO AN
6543C                EIGENVALUE AFTER 30*N ITERATIONS ..........
6544 1000 IERR = EN
6545 1001 RETURN
6546      END
6547      SUBROUTINE HQR2(NM,N,LOW,IGH,H,WR,WI,Z,IERR)
6548C***BEGIN PROLOGUE  HQR2
6549C***DATE WRITTEN   760101   (YYMMDD)
6550C***REVISION DATE  830518   (YYMMDD)
6551C***CATEGORY NO.  D4C2B
6552C***KEYWORDS  EIGENVALUES,EIGENVECTORS,EISPACK
6553C***AUTHOR  SMITH, B. T., ET AL.
6554C***PURPOSE  Computes eigenvalues and eigenvectors of real upper
6555C            Hessenberg matrix using QR method.
6556C***DESCRIPTION
6557C
6558C     This subroutine is a translation of the ALGOL procedure HQR2,
6559C     NUM. MATH. 16, 181-204(1970) by Peters and Wilkinson.
6560C     HANDBOOK FOR AUTO. COMP., VOL.II-LINEAR ALGEBRA, 372-395(1971).
6561C
6562C     This subroutine finds the eigenvalues and eigenvectors
6563C     of a REAL UPPER Hessenberg matrix by the QR method.  The
6564C     eigenvectors of a REAL GENERAL matrix can also be found
6565C     if  ELMHES  and  ELTRAN  or  ORTHES  and  ORTRAN  have
6566C     been used to reduce this general matrix to Hessenberg form
6567C     and to accumulate the similarity transformations.
6568C
6569C     On INPUT
6570C
6571C        NM must be set to the row dimension of two-dimensional
6572C          array parameters as declared in the calling program
6573C          dimension statement.
6574C
6575C        N is the order of the matrix.
6576C
6577C        LOW and IGH are integers determined by the balancing
6578C          subroutine  BALANC.  If  BALANC  has not been used,
6579C          set LOW=1, IGH=N.
6580C
6581C        H contains the upper Hessenberg matrix.
6582C
6583C        Z contains the transformation matrix produced by  ELTRAN
6584C          after the reduction by  ELMHES, or by  ORTRAN  after the
6585C          reduction by  ORTHES, if performed.  If the eigenvectors
6586C          of the Hessenberg matrix are desired, Z must contain the
6587C          identity matrix.
6588C
6589C     On OUTPUT
6590C
6591C        H has been destroyed.
6592C
6593C        WR and WI contain the real and imaginary parts,
6594C          respectively, of the eigenvalues.  The eigenvalues
6595C          are unordered except that complex conjugate pairs
6596C          of values appear consecutively with the eigenvalue
6597C          having the positive imaginary part first.  If an
6598C          error exit is made, the eigenvalues should be correct
6599C          for indices IERR+1,...,N.
6600C
6601C        Z contains the real and imaginary parts of the eigenvectors.
6602C          If the I-th eigenvalue is real, the I-th column of Z
6603C          contains its eigenvector.  If the I-th eigenvalue is complex
6604C          with positive imaginary part, the I-th and (I+1)-th
6605C          columns of Z contain the real and imaginary parts of its
6606C          eigenvector.  The eigenvectors are unnormalized.  If an
6607C          error exit is made, none of the eigenvectors has been found.
6608C
6609C        IERR is set to
6610C          Zero       for normal return,
6611C          J          if the J-th eigenvalue has not been
6612C                     determined after a total of 30*N iterations.
6613C
6614C     Calls CDIV for complex division.
6615C
6616C     Questions and comments should be directed to B. S. Garbow,
6617C     APPLIED MATHEMATICS DIVISION, ARGONNE NATIONAL LABORATORY
6618C     ------------------------------------------------------------------
6619C***REFERENCES  B. T. SMITH, J. M. BOYLE, J. J. DONGARRA, B. S. GARBOW,
6620C                 Y. IKEBE, V. C. KLEMA, C. B. MOLER, *MATRIX EIGEN-
6621C                 SYSTEM ROUTINES - EISPACK GUIDE*, SPRINGER-VERLAG,
6622C                 1976.
6623C***ROUTINES CALLED  CDIV
6624C***END PROLOGUE  HQR2
6625C
6626      INTEGER I,J,K,L,M,N,EN,II,JJ,LL,MM,NA,NM,NN
6627      INTEGER IGH,ITN,ITS,LOW,MP2,ENM2,IERR
6628      REAL H(NM,N),WR(N),WI(N),Z(NM,N)
6629      REAL P,Q,R,S,T,W,X,Y,RA,SA,VI,VR,ZZ,NORM,S1
6630      LOGICAL NOTLAS
6631C
6632      S=0.0
6633      R=0.0
6634      P=0.0
6635      M=0
6636C
6637C***FIRST EXECUTABLE STATEMENT  HQR2
6638      IERR = 0
6639      NORM = 0.0E0
6640      K = 1
6641C     .......... STORE ROOTS ISOLATED BY BALANC
6642C                AND COMPUTE MATRIX NORM ..........
6643      DO 50 I = 1, N
6644C
6645         DO 40 J = K, N
6646            NORM = NORM + ABS(H(I,J))
6647   40    CONTINUE
6648C
6649         K = I
6650         IF (I .GE. LOW .AND. I .LE. IGH) GO TO 50
6651         WR(I) = H(I,I)
6652         WI(I) = 0.0E0
6653   50 CONTINUE
6654C
6655      EN = IGH
6656      T = 0.0E0
6657      ITN = 30*N
6658C     .......... SEARCH FOR NEXT EIGENVALUES ..........
6659   60 IF (EN .LT. LOW) GO TO 340
6660      ITS = 0
6661      NA = EN - 1
6662      ENM2 = NA - 1
6663C     .......... LOOK FOR SINGLE SMALL SUB-DIAGONAL ELEMENT
6664C                FOR L=EN STEP -1 UNTIL LOW DO -- ..........
6665   70 DO 80 LL = LOW, EN
6666         L = EN + LOW - LL
6667         IF (L .EQ. LOW) GO TO 100
6668         S = ABS(H(L-1,L-1)) + ABS(H(L,L))
6669         IF (S .EQ. 0.0E0) S = NORM
6670         S2 = S + ABS(H(L,L-1))
6671         IF (S2 .EQ. S) GO TO 100
6672   80 CONTINUE
6673C     .......... FORM SHIFT ..........
6674  100 X = H(EN,EN)
6675      IF (L .EQ. EN) GO TO 270
6676      Y = H(NA,NA)
6677      W = H(EN,NA) * H(NA,EN)
6678      IF (L .EQ. NA) GO TO 280
6679      IF (ITN .EQ. 0) GO TO 1000
6680      IF (ITS .NE. 10 .AND. ITS .NE. 20) GO TO 130
6681C     .......... FORM EXCEPTIONAL SHIFT ..........
6682      T = T + X
6683C
6684      DO 120 I = LOW, EN
6685         H(I,I) = H(I,I) - X
6686  120 CONTINUE
6687C
6688      S = ABS(H(EN,NA)) + ABS(H(NA,ENM2))
6689      X = 0.75E0 * S
6690      Y = X
6691      W = -0.4375E0 * S * S
6692  130 ITS = ITS + 1
6693      ITN = ITN - 1
6694C     .......... LOOK FOR TWO CONSECUTIVE SMALL
6695C                SUB-DIAGONAL ELEMENTS.
6696C                FOR M=EN-2 STEP -1 UNTIL L DO -- ..........
6697      DO 140 MM = L, ENM2
6698         M = ENM2 + L - MM
6699         ZZ = H(M,M)
6700         R = X - ZZ
6701         S = Y - ZZ
6702         P = (R * S - W) / H(M+1,M) + H(M,M+1)
6703         Q = H(M+1,M+1) - ZZ - R - S
6704         R = H(M+2,M+1)
6705         S = ABS(P) + ABS(Q) + ABS(R)
6706         P = P / S
6707         Q = Q / S
6708         R = R / S
6709         IF (M .EQ. L) GO TO 150
6710         S1 = ABS(P) * (ABS(H(M-1,M-1)) + ABS(ZZ) + ABS(H(M+1,M+1)))
6711         S2 = S1 + ABS(H(M,M-1)) * (ABS(Q) + ABS(R))
6712         IF (S2 .EQ. S1) GO TO 150
6713  140 CONTINUE
6714C
6715  150 MP2 = M + 2
6716C
6717      DO 160 I = MP2, EN
6718         H(I,I-2) = 0.0E0
6719         IF (I .EQ. MP2) GO TO 160
6720         H(I,I-3) = 0.0E0
6721  160 CONTINUE
6722C     .......... DOUBLE QR STEP INVOLVING ROWS L TO EN AND
6723C                COLUMNS M TO EN ..........
6724      DO 260 K = M, NA
6725         NOTLAS = K .NE. NA
6726         IF (K .EQ. M) GO TO 170
6727         P = H(K,K-1)
6728         Q = H(K+1,K-1)
6729         R = 0.0E0
6730         IF (NOTLAS) R = H(K+2,K-1)
6731         X = ABS(P) + ABS(Q) + ABS(R)
6732         IF (X .EQ. 0.0E0) GO TO 260
6733         P = P / X
6734         Q = Q / X
6735         R = R / X
6736  170    S = SIGN(SQRT(P*P+Q*Q+R*R),P)
6737         IF (K .EQ. M) GO TO 180
6738         H(K,K-1) = -S * X
6739         GO TO 190
6740  180    IF (L .NE. M) H(K,K-1) = -H(K,K-1)
6741  190    P = P + S
6742         X = P / S
6743         Y = Q / S
6744         ZZ = R / S
6745         Q = Q / P
6746         R = R / P
6747C     .......... ROW MODIFICATION ..........
6748         DO 210 J = K, N
6749            P = H(K,J) + Q * H(K+1,J)
6750            IF (.NOT. NOTLAS) GO TO 200
6751            P = P + R * H(K+2,J)
6752            H(K+2,J) = H(K+2,J) - P * ZZ
6753  200       H(K+1,J) = H(K+1,J) - P * Y
6754            H(K,J) = H(K,J) - P * X
6755  210    CONTINUE
6756C
6757         J = MIN0(EN,K+3)
6758C     .......... COLUMN MODIFICATION ..........
6759         DO 230 I = 1, J
6760            P = X * H(I,K) + Y * H(I,K+1)
6761            IF (.NOT. NOTLAS) GO TO 220
6762            P = P + ZZ * H(I,K+2)
6763            H(I,K+2) = H(I,K+2) - P * R
6764  220       H(I,K+1) = H(I,K+1) - P * Q
6765            H(I,K) = H(I,K) - P
6766  230    CONTINUE
6767C     .......... ACCUMULATE TRANSFORMATIONS ..........
6768         DO 250 I = LOW, IGH
6769            P = X * Z(I,K) + Y * Z(I,K+1)
6770            IF (.NOT. NOTLAS) GO TO 240
6771            P = P + ZZ * Z(I,K+2)
6772            Z(I,K+2) = Z(I,K+2) - P * R
6773  240       Z(I,K+1) = Z(I,K+1) - P * Q
6774            Z(I,K) = Z(I,K) - P
6775  250    CONTINUE
6776C
6777  260 CONTINUE
6778C
6779      GO TO 70
6780C     .......... ONE ROOT FOUND ..........
6781  270 H(EN,EN) = X + T
6782      WR(EN) = H(EN,EN)
6783      WI(EN) = 0.0E0
6784      EN = NA
6785      GO TO 60
6786C     .......... TWO ROOTS FOUND ..........
6787  280 P = (Y - X) / 2.0E0
6788      Q = P * P + W
6789      ZZ = SQRT(ABS(Q))
6790      H(EN,EN) = X + T
6791      X = H(EN,EN)
6792      H(NA,NA) = Y + T
6793      IF (Q .LT. 0.0E0) GO TO 320
6794C     .......... REAL PAIR ..........
6795      ZZ = P + SIGN(ZZ,P)
6796      WR(NA) = X + ZZ
6797      WR(EN) = WR(NA)
6798      IF (ZZ .NE. 0.0E0) WR(EN) = X - W / ZZ
6799      WI(NA) = 0.0E0
6800      WI(EN) = 0.0E0
6801      X = H(EN,NA)
6802      S = ABS(X) + ABS(ZZ)
6803      P = X / S
6804      Q = ZZ / S
6805      R = SQRT(P*P+Q*Q)
6806      P = P / R
6807      Q = Q / R
6808C     .......... ROW MODIFICATION ..........
6809      DO 290 J = NA, N
6810         ZZ = H(NA,J)
6811         H(NA,J) = Q * ZZ + P * H(EN,J)
6812         H(EN,J) = Q * H(EN,J) - P * ZZ
6813  290 CONTINUE
6814C     .......... COLUMN MODIFICATION ..........
6815      DO 300 I = 1, EN
6816         ZZ = H(I,NA)
6817         H(I,NA) = Q * ZZ + P * H(I,EN)
6818         H(I,EN) = Q * H(I,EN) - P * ZZ
6819  300 CONTINUE
6820C     .......... ACCUMULATE TRANSFORMATIONS ..........
6821      DO 310 I = LOW, IGH
6822         ZZ = Z(I,NA)
6823         Z(I,NA) = Q * ZZ + P * Z(I,EN)
6824         Z(I,EN) = Q * Z(I,EN) - P * ZZ
6825  310 CONTINUE
6826C
6827      GO TO 330
6828C     .......... COMPLEX PAIR ..........
6829  320 WR(NA) = X + P
6830      WR(EN) = X + P
6831      WI(NA) = ZZ
6832      WI(EN) = -ZZ
6833  330 EN = ENM2
6834      GO TO 60
6835C     .......... ALL ROOTS FOUND.  BACKSUBSTITUTE TO FIND
6836C                VECTORS OF UPPER TRIANGULAR FORM ..........
6837  340 IF (NORM .EQ. 0.0E0) GO TO 1001
6838C     .......... FOR EN=N STEP -1 UNTIL 1 DO -- ..........
6839      DO 800 NN = 1, N
6840         EN = N + 1 - NN
6841         P = WR(EN)
6842         Q = WI(EN)
6843         NA = EN - 1
6844CCCCC    IF (Q) 710, 600, 800
6845         IF (Q.LT.0.) THEN
6846            GOTO710
6847         ELSEIF (Q.EQ.0.) THEN
6848            GOTO600
6849         ELSE
6850            GOTO800
6851         ENDIF
6852C     .......... REAL VECTOR ..........
6853  600    M = EN
6854         H(EN,EN) = 1.0E0
6855         IF (NA .EQ. 0) GO TO 800
6856C     .......... FOR I=EN-1 STEP -1 UNTIL 1 DO -- ..........
6857         DO 700 II = 1, NA
6858            I = EN - II
6859            W = H(I,I) - P
6860            R = H(I,EN)
6861            IF (M .GT. NA) GO TO 620
6862C
6863            DO 610 J = M, NA
6864               R = R + H(I,J) * H(J,EN)
6865  610       CONTINUE
6866C
6867  620       IF (WI(I) .GE. 0.0E0) GO TO 630
6868            ZZ = W
6869            S = R
6870            GO TO 700
6871  630       M = I
6872            IF (WI(I) .NE. 0.0E0) GO TO 640
6873            T = W
6874            IF (T .NE. 0.0E0) GO TO 635
6875            T = NORM
6876  632       T = 0.5E0*T
6877            IF (NORM + T .GT. NORM) GO TO 632
6878            T = 2.0E0*T
6879  635       H(I,EN) = -R / T
6880            GO TO 700
6881C     .......... SOLVE REAL EQUATIONS ..........
6882  640       X = H(I,I+1)
6883            Y = H(I+1,I)
6884            Q = (WR(I) - P) * (WR(I) - P) + WI(I) * WI(I)
6885            T = (X * S - ZZ * R) / Q
6886            H(I,EN) = T
6887            IF (ABS(X) .LE. ABS(ZZ)) GO TO 650
6888            H(I+1,EN) = (-R - W * T) / X
6889            GO TO 700
6890  650       H(I+1,EN) = (-S - Y * T) / ZZ
6891  700    CONTINUE
6892C     .......... END REAL VECTOR ..........
6893         GO TO 800
6894C     .......... COMPLEX VECTOR ..........
6895  710    M = NA
6896C     .......... LAST VECTOR COMPONENT CHOSEN IMAGINARY SO THAT
6897C                EIGENVECTOR MATRIX IS TRIANGULAR ..........
6898         IF (ABS(H(EN,NA)) .LE. ABS(H(NA,EN))) GO TO 720
6899         H(NA,NA) = Q / H(EN,NA)
6900         H(NA,EN) = -(H(EN,EN) - P) / H(EN,NA)
6901         GO TO 730
6902  720    CALL CDIV(0.0E0,-H(NA,EN),H(NA,NA)-P,Q,H(NA,NA),H(NA,EN))
6903  730    H(EN,NA) = 0.0E0
6904         H(EN,EN) = 1.0E0
6905         ENM2 = NA - 1
6906         IF (ENM2 .EQ. 0) GO TO 800
6907C     .......... FOR I=EN-2 STEP -1 UNTIL 1 DO -- ..........
6908         DO 790 II = 1, ENM2
6909            I = NA - II
6910            W = H(I,I) - P
6911            RA = 0.0E0
6912            SA = H(I,EN)
6913C
6914            DO 760 J = M, NA
6915               RA = RA + H(I,J) * H(J,NA)
6916               SA = SA + H(I,J) * H(J,EN)
6917  760       CONTINUE
6918C
6919            IF (WI(I) .GE. 0.0E0) GO TO 770
6920            ZZ = W
6921            R = RA
6922            S = SA
6923            GO TO 790
6924  770       M = I
6925            IF (WI(I) .NE. 0.0E0) GO TO 780
6926            CALL CDIV(-RA,-SA,W,Q,H(I,NA),H(I,EN))
6927            GO TO 790
6928C     .......... SOLVE COMPLEX EQUATIONS ..........
6929  780       X = H(I,I+1)
6930            Y = H(I+1,I)
6931            VR = (WR(I) - P) * (WR(I) - P) + WI(I) * WI(I) - Q * Q
6932            VI = (WR(I) - P) * 2.0E0 * Q
6933            IF (VR .NE. 0.0E0 .OR. VI .NE. 0.0E0) GO TO 783
6934            S1 = NORM * (ABS(W)+ABS(Q)+ABS(X)+ABS(Y)+ABS(ZZ))
6935            VR = S1
6936  782       VR = 0.5E0*VR
6937            IF (S1 + VR .GT. S1) GO TO 782
6938            VR = 2.0E0*VR
6939  783       CALL CDIV(X*R-ZZ*RA+Q*SA,X*S-ZZ*SA-Q*RA,VR,VI,
6940     1                H(I,NA),H(I,EN))
6941            IF (ABS(X) .LE. ABS(ZZ) + ABS(Q)) GO TO 785
6942            H(I+1,NA) = (-RA - W * H(I,NA) + Q * H(I,EN)) / X
6943            H(I+1,EN) = (-SA - W * H(I,EN) - Q * H(I,NA)) / X
6944            GO TO 790
6945  785       CALL CDIV(-R-Y*H(I,NA),-S-Y*H(I,EN),ZZ,Q,
6946     1                H(I+1,NA),H(I+1,EN))
6947  790    CONTINUE
6948C     .......... END COMPLEX VECTOR ..........
6949  800 CONTINUE
6950C     .......... END BACK SUBSTITUTION.
6951C                VECTORS OF ISOLATED ROOTS ..........
6952      DO 840 I = 1, N
6953         IF (I .GE. LOW .AND. I .LE. IGH) GO TO 840
6954C
6955         DO 820 J = I, N
6956            Z(I,J) = H(I,J)
6957  820    CONTINUE
6958C
6959  840 CONTINUE
6960C     .......... MULTIPLY BY TRANSFORMATION MATRIX TO GIVE
6961C                VECTORS OF ORIGINAL FULL MATRIX.
6962C                FOR J=N STEP -1 UNTIL LOW DO -- ..........
6963      DO 880 JJ = LOW, N
6964         J = N + LOW - JJ
6965         M = MIN0(J,IGH)
6966C
6967         DO 885 I = LOW, IGH
6968            ZZ = 0.0E0
6969C
6970            DO 860 K = LOW, M
6971               ZZ = ZZ + Z(I,K) * H(K,J)
6972  860       CONTINUE
6973C
6974            Z(I,J) = ZZ
6975  885    CONTINUE
6976  880 CONTINUE
6977C
6978      GO TO 1001
6979C     .......... SET ERROR -- NO CONVERGENCE TO AN
6980C                EIGENVALUE AFTER 30*N ITERATIONS ..........
6981 1000 IERR = EN
6982 1001 RETURN
6983      END
6984      SUBROUTINE HSECDF(X,CDF)
6985C
6986C     PURPOSE--THIS SUBROUTINE COMPUTES THE CUMULATIVE DISTRIBUTION
6987C              FUNCTION VALUE FOR THE HYPERBOLIC SECANT DISTRIBUTION
6988C              WITH MEAN = 0 AND STANDARD DEVIATION = PI/SQRT(3).
6989C              THIS DISTRIBUTION IS DEFINED FOR ALL X AND HAS
6990C              THE PROBABILITY DENSITY FUNCTION
6991C              F(X) = EXP(X)/(1+EXP(X)).
6992C     INPUT  ARGUMENTS--X      = THE SINGLE PRECISION VALUE AT
6993C                                WHICH THE CUMULATIVE DISTRIBUTION
6994C                                FUNCTION IS TO BE EVALUATED.
6995C     OUTPUT ARGUMENTS--CDF    = THE SINGLE PRECISION CUMULATIVE
6996C                                DISTRIBUTION FUNCTION VALUE.
6997C     OUTPUT--THE SINGLE PRECISION CUMULATIVE DISTRIBUTION
6998C             FUNCTION VALUE CDF.
6999C     PRINTING--NONE.
7000C     RESTRICTIONS--NONE.
7001C     OTHER DATAPAC   SUBROUTINES NEEDED--NONE.
7002C     FORTRAN LIBRARY SUBROUTINES NEEDED--EXP.
7003C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
7004C     LANGUAGE--ANSI FORTRAN.
7005C     REFERENCES--JOHNSON AND KOTZ, CONTINUOUS UNIVARIATE
7006C                 DISTRIBUTIONS--2, 1994, PAGE 147
7007C     WRITTEN BY--JAMES J. FILLIBEN
7008C                 STATISTICAL ENGINEERING LABORATORY (205.03)
7009C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
7010C                 GAITHERSBURG, MD 20899-8980
7011C                 PHONE:  301-975-2855
7012C     ORIGINAL VERSION--OCTOBER   1995.
7013C
7014C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
7015C
7016C----COMMON-----------------------------------------------------------
7017C
7018      INCLUDE 'DPCOP2.INC'
7019C
7020      DATA PI / 3.1415926535/
7021C
7022C---------------------------------------------------------------------
7023C
7024C     CHECK THE INPUT ARGUMENTS FOR ERRORS.
7025C     NO INPUT ARGUMENT ERRORS POSSIBLE
7026C     FOR THIS DISTRIBUTION.
7027C
7028C-----START POINT-----------------------------------------------------
7029C
7030      IF(X.GT.80.0)THEN
7031        CDF=1.0
7032        GOTO9999
7033      ELSEIF(X.LT.-80.0)THEN
7034        CDF=0.0
7035        GOTO9999
7036      ELSE
7037        ARG=X/2.0
7038        TERM1=(EXP(ARG)-EXP(-ARG))/(EXP(ARG)+EXP(-ARG))
7039        CDF=0.5 + (2.0/PI)*ATAN(TERM1)
7040      ENDIF
7041C
7042 9999 CONTINUE
7043      RETURN
7044      END
7045      SUBROUTINE HSEPDF(X,PDF)
7046C
7047C     PURPOSE--THIS SUBROUTINE COMPUTES THE PROBABILITY DENSITY
7048C              FUNCTION VALUE FOR THE HYPERBOLIC SECANT DISTRIBUTION
7049C              THIS DISTRIBUTION IS DEFINED FOR ALL X AND HAS
7050C              THE PROBABILITY DENSITY FUNCTION
7051C              F(X) = SECH(X)/PI
7052C                   = (1/PI)*(2/(EXP(X) + EXP(-X))
7053C     INPUT  ARGUMENTS--X      = THE SINGLE PRECISION VALUE AT
7054C                                WHICH THE PROBABILITY DENSITY
7055C                                FUNCTION IS TO BE EVALUATED.
7056C     OUTPUT ARGUMENTS--PDF    = THE SINGLE PRECISION PROBABILITY
7057C                                DENSITY FUNCTION VALUE.
7058C     OUTPUT--THE SINGLE PRECISION PROBABILITY DENSITY
7059C             FUNCTION VALUE PDF.
7060C     PRINTING--NONE.
7061C     RESTRICTIONS--NONE.
7062C     OTHER DATAPAC   SUBROUTINES NEEDED--NONE.
7063C     FORTRAN LIBRARY SUBROUTINES NEEDED--EXP.
7064C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
7065C     LANGUAGE--ANSI FORTRAN.
7066C     REFERENCES--JOHNSON AND KOTZ, CONTINUOUS UNIVARIATE
7067C                 DISTRIBUTIONS--2, 1994, PAGE 147
7068C     WRITTEN BY--JAMES J. FILLIBEN
7069C                 STATISTICAL ENGINEERING DIVISION
7070C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
7071C                 GAITHERSBURG, MD 20899-8980
7072C                 PHONE:  301-975-2899
7073C     ORIGINAL VERSION--OCTOBER   1995.
7074C
7075C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
7076C
7077C---------------------------------------------------------------------
7078C
7079      DOUBLE PRECISION DX, DPDF, DPI
7080C
7081      INCLUDE 'DPCOP2.INC'
7082C
7083      DATA DPI / 3.1415926535 8979323846 2643383279 503 D0 /
7084C
7085C---------------------------------------------------------------------
7086C
7087      DX=DBLE(X)
7088      IF(DABS(DX).GT.500.0D0)THEN
7089        PDF=0.0
7090      ELSE
7091        DPDF=2.0D0/(DEXP(DX) + DEXP(-DX))
7092        PDF=SNGL(DPDF/DPI)
7093      ENDIF
7094C
7095      RETURN
7096      END
7097      SUBROUTINE HSEPPF(P,PPF)
7098C
7099C     PURPOSE--THIS SUBROUTINE COMPUTES THE PERCENT POINT
7100C              FUNCTION VALUE FOR THE HYPERBOLIC SECANT DISTRIBUTION
7101C              THE PROBABILITY DENSITY FUNCTION IS
7102C              F(X) = SECH(X)/PI
7103C                   = (1/PI)*(2/(EXP(X) + EXP(-X))
7104C              NOTE THAT THE PERCENT POINT FUNCTION OF A DISTRIBUTION
7105C              IS IDENTICALLY THE SAME AS THE INVERSE CUMULATIVE
7106C              DISTRIBUTION FUNCTION OF THE DISTRIBUTION.
7107C     INPUT  ARGUMENTS--P      = THE SINGLE PRECISION VALUE
7108C                                (BETWEEN 0.0 AND 1.0)
7109C                                AT WHICH THE PERCENT POINT
7110C                                FUNCTION IS TO BE EVALUATED.
7111C     OUTPUT ARGUMENTS--PPF    = THE SINGLE PRECISION PERCENT
7112C                                POINT FUNCTION VALUE.
7113C     OUTPUT--THE SINGLE PRECISION PERCENT POINT
7114C             FUNCTION VALUE PPF.
7115C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
7116C     RESTRICTIONS--P SHOULD BE BETWEEN 0.0 AND 1.0, EXCLUSIVELY.
7117C     OTHER DATAPAC   SUBROUTINES NEEDED--NONE.
7118C     FORTRAN LIBRARY SUBROUTINES NEEDED--EXP.
7119C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
7120C     LANGUAGE--ANSI FORTRAN (1977)
7121C               --JOHNSON AND KOTZ, CONTINUOUS UNIVARIATE
7122C                 DISTRIBUTIONS--2, 1994, PAGE 147
7123C     WRITTEN BY--JAMES J. FILLIBEN
7124C                 STATISTICAL ENGINEERING DIVISION
7125C                 INFORMATION TECHNOLOGY LABORATORY
7126C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
7127C                 GAITHERSBURG, MD 20899-8980
7128C                 PHONE--301-975-2855
7129C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
7130C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
7131C     LANGUAGE--ANSI FORTRAN (1966)
7132C               EXCEPTION--HOLLERITH STRINGS IN FORMAT STATEMENTS
7133C                          DENOTED BY QUOTES RATHER THAN NH.
7134C     VERSION NUMBER--95.10
7135C     ORIGINAL VERSION--OCTOBER   1995.
7136C
7137C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
7138C
7139C---------------------------------------------------------------------
7140C
7141      DOUBLE PRECISION DARG
7142      DOUBLE PRECISION DPI
7143      DOUBLE PRECISION DTERM1
7144      DOUBLE PRECISION DPPF
7145C
7146      INCLUDE 'DPCOP2.INC'
7147C
7148      DATA DPI / 3.1415926535 8979323846 2643383279 503 D0 /
7149C
7150C-----START POINT-----------------------------------------------------
7151C
7152C     CHECK THE INPUT ARGUMENTS FOR ERRORS
7153C
7154      IF(P.LE.0.0.OR.P.GE.1.0)GOTO50
7155      GOTO90
7156   50 WRITE(ICOUT,1)
7157      CALL DPWRST('XXX','BUG ')
7158      WRITE(ICOUT,46)P
7159      CALL DPWRST('XXX','BUG ')
7160      RETURN
7161   90 CONTINUE
7162    1 FORMAT('***** FATAL ERROR--THE 1ST INPUT ARGUMENT TO THE ',
7163     1'HSEPPF SUBROUTINE IS OUTSIDE THE ALLOWABLE (0,1) INTERVAL')
7164   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',E15.8,' *****')
7165C
7166      DARG=DPI*(DBLE(P)-0.5D0)/2.0D0
7167      DTERM1=DTAN(DARG)
7168      DPPF=DLOG((1.0+DTERM1)/(1.0D0-DTERM1))
7169      PPF=SNGL(DPPF)
7170C
7171      RETURN
7172      END
7173      SUBROUTINE HSERAN(N,ISEED,X)
7174C
7175C     PURPOSE--THIS SUBROUTINE GENERATES A RANDOM SAMPLE OF SIZE N
7176C              FROM THE HYPERBOLIC SECANT DISTRIBUTION
7177C     INPUT  ARGUMENTS--N      = THE DESIRED INTEGER NUMBER
7178C                                OF RANDOM NUMBERS TO BE
7179C                                GENERATED.
7180C     OUTPUT ARGUMENTS--X      = A SINGLE PRECISION VECTOR
7181C                                (OF DIMENSION AT LEAST N)
7182C                                INTO WHICH THE GENERATED
7183C                                RANDOM SAMPLE WILL BE PLACED.
7184C     OUTPUT--A RANDOM SAMPLE OF SIZE N
7185C             FROM THE HYPERBOLIC SECANT DISTRIBUTION
7186C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
7187C     RESTRICTIONS--THERE IS NO RESTRICTION ON THE MAXIMUM VALUE
7188C                   OF N FOR THIS SUBROUTINE.
7189C     OTHER DATAPAC   SUBROUTINES NEEDED--UNIRAN.
7190C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
7191C     LANGUAGE--ANSI FORTRAN (1977)
7192C     WRITTEN BY--JAMES J. FILLIBEN
7193C                 STATISTICAL ENGINEERING DIVISION
7194C                 INFORMATION TECHNOLOGY LABORATORY
7195C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
7196C                 GAITHERSBURG, MD 20899-8980
7197C                 PHONE--301-975-2855
7198C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
7199C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
7200C     LANGUAGE--ANSI FORTRAN (1977)
7201C               EXCEPTION--HOLLERITH STRINGS IN FORMAT STATEMENTS
7202C                          DENOTED BY QUOTES RATHER THAN NH.
7203C     VERSION NUMBER--2001/10
7204C     ORIGINAL VERSION--OCTOBER   2001.
7205C
7206C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
7207C
7208C---------------------------------------------------------------------
7209C
7210      DIMENSION X(*)
7211C
7212C---------------------------------------------------------------------
7213C
7214      INCLUDE 'DPCOP2.INC'
7215C
7216C-----START POINT-----------------------------------------------------
7217C
7218C     CHECK THE INPUT ARGUMENTS FOR ERRORS
7219C
7220      IF(N.LT.1)GOTO50
7221      GOTO90
7222   50 WRITE(ICOUT, 5)
7223      CALL DPWRST('XXX','BUG ')
7224      WRITE(ICOUT,47)N
7225      CALL DPWRST('XXX','BUG ')
7226      RETURN
7227   90 CONTINUE
7228    5 FORMAT('***** FATAL ERROR--THE 1ST INPUT ARGUMENT TO THE ',
7229     1'HSERAN SUBROUTINE IS NON-POSITIVE *****')
7230   47 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',I8,' *****')
7231C
7232C     GENERATE N UNIFORM (0,1) RANDOM NUMBERS;
7233C
7234      CALL UNIRAN(N,ISEED,X)
7235C
7236C     GENERATE N HYPERBOLIC SECANT RANDOM NUMBERS
7237C     USING THE PERCENT POINT FUNCTION TRANSFORMATION METHOD.
7238C
7239      DO100I=1,N
7240      CALL HSEPPF(X(I),XTEMP)
7241      X(I)=XTEMP
7242  100 CONTINUE
7243C
7244      RETURN
7245      END
7246      SUBROUTINE HSNINT(NR,N,A,SX,METHOD)
7247      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
7248C
7249C PURPOSE
7250C -------
7251C PROVIDE INITIAL HESSIAN WHEN USING SECANT UPDATES
7252C
7253C PARAMETERS
7254C ----------
7255C NR           --> ROW DIMENSION OF MATRIX
7256C N            --> DIMENSION OF PROBLEM
7257C A(N,N)      <--  INITIAL HESSIAN (LOWER TRIANGULAR MATRIX)
7258C SX(N)        --> DIAGONAL SCALING MATRIX FOR X
7259C METHOD       --> ALGORITHM TO USE TO SOLVE MINIMIZATION PROBLEM
7260C                    =1,2 FACTORED SECANT METHOD USED
7261C                    =3   UNFACTORED SECANT METHOD USED
7262C
7263      DIMENSION A(NR,1),SX(N)
7264C
7265      DO 100 J=1,N
7266        IF(METHOD.EQ.3) A(J,J)=SX(J)*SX(J)
7267        IF(METHOD.NE.3) A(J,J)=SX(J)
7268        IF(J.EQ.N) GO TO 100
7269        JP1=J+1
7270        DO 90 I=JP1,N
7271          A(I,J)=0.D0
7272   90   CONTINUE
7273  100 CONTINUE
7274      RETURN
7275      END
7276      SUBROUTINE HTTSQ1(AMAT1,AMAT2,MAXROM,MAXCOM,NR1,NC1,
7277     1TSTAT,ASIG90,ASIG95,ASIG99,ASG995,
7278     1DMEAN,Y1,Y2,Y3,INDEX,
7279     1IBUGA3,IERROR)
7280C
7281C     PURPOSE--THIS SUBROUTINE COMPUTES THE
7282C              1-SAMPLE HOTELLING T-SQUARE STATISTIC.
7283C              HO: U = U0
7284C              T2=N*(XBAR-U0)'*SINV*(XBAR-U0)
7285C     INPUT  ARGUMENTS--AMAT1  = THE ORIGINAL SINGLE PRECISION MATRIX
7286C                     --MAXROM = THE INTEGER ROW DIMENSION OF AMAT1
7287C                     --MAXCOM = THE INTEGER COUMN DIMENSION OF AMAT1
7288C                     --NR1    = THE INTEGER NUMBER OF ROWS OF AMAT1
7289C                     --NC1    = THE INTEGER NUMBER OF COLUMNS OF AMAT1
7290C                     --Y1     = VECTOR CONTAINING HYPOTHESIZED MEANS
7291C                     --Y2     = DUMMY VECTOR CONTAINING SAMPLE MEANS
7292C     OUTPUT ARGUMENTS--AMAT2  = THE SINGLE PRECISION VALUE OF THE
7293C                                COMPUTED INVERTED VARIANCE-COVARIANCE
7294C                                MATRIX
7295C                     --TSTAT  = VALUE OF HOTELLING T-SQUARE
7296C                     --ASIG90 = CRITICAL VALUE FOR ALPHA = .90
7297C                     --ASIG95 = CRITICAL VALUE FOR ALPHA = .95
7298C                     --ASIG99 = CRITICAL VALUE FOR ALPHA = .99
7299C                     --ASG995= CRITICAL VALUE FOR ALPHA = .995
7300C     OUTPUT--THE COMPUTED SINGLE PRECISION VALUE OF THE
7301C             HOTELLING T-SQUARE VALUE
7302C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE.
7303C     LANGUAGE--ANSI FORTRAN (1977)
7304C     WRITTEN BY--JAMES J. FILLIBEN
7305C                 STATISTICAL ENGINEERING DIVISION
7306C                 INFORMATION TECHNOLOGY LABORATORY
7307C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
7308C                 GAITHERSBURG, MD 20899-8980
7309C                 PHONE--301-975-2855
7310C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
7311C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
7312C     LANGUAGE--ANSI FORTRAN (1977)
7313C     VERSION NUMBER--98.7
7314C     ORIGINAL VERSION--JULY      1998.
7315C
7316C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
7317C
7318      CHARACTER*4 ICASE
7319      CHARACTER*4 IWRITE
7320      CHARACTER*4 IBUGA3
7321      CHARACTER*4 IERROR
7322C
7323      CHARACTER*4 ISUBN1
7324      CHARACTER*4 ISUBN2
7325C
7326C---------------------------------------------------------------------
7327C
7328C
7329      DIMENSION AMAT1(MAXROM,MAXCOM)
7330      DIMENSION AMAT2(MAXROM,MAXCOM)
7331      DIMENSION Y1(*)
7332      DIMENSION Y2(*)
7333      DIMENSION Y3(*)
7334      DIMENSION INDEX(*)
7335      DOUBLE PRECISION DMEAN(*)
7336C
7337C---------------------------------------------------------------------
7338C
7339      INCLUDE 'DPCOP2.INC'
7340C
7341C-----START POINT-----------------------------------------------------
7342C
7343      ISUBN1='HOTT'
7344      ISUBN2='SQ  '
7345C
7346      IWRITE='OFF'
7347      IERROR='NO'
7348C
7349      IF(IBUGA3.EQ.'OFF')GOTO90
7350      WRITE(ICOUT,999)
7351  999 FORMAT(1X)
7352      CALL DPWRST('XXX','BUG ')
7353      WRITE(ICOUT,51)
7354   51 FORMAT('***** AT THE BEGINNING OF HTTSQ1--')
7355      CALL DPWRST('XXX','BUG ')
7356      WRITE(ICOUT,52)IBUGA3
7357   52 FORMAT('IBUGA3 = ',A4)
7358      CALL DPWRST('XXX','BUG ')
7359      WRITE(ICOUT,53)NR1,NC1
7360   53 FORMAT('NR1, NC1 = ',2I8)
7361      CALL DPWRST('XXX','BUG ')
7362      DO55I=1,NC1
7363      WRITE(ICOUT,56)I,Y1(I)
7364   56 FORMAT('I,Y(I) = ',I8,E15.7)
7365      CALL DPWRST('XXX','BUG ')
7366   55 CONTINUE
7367   90 CONTINUE
7368C
7369C               **********************************
7370C               **  COMPUTE HOTELLING T-SQUARE  **
7371C               **********************************
7372C
7373      ICASE='COLU'
7374      CALL VARCOV(AMAT1,AMAT2,MAXROM,MAXCOM,NR1,NC1,DMEAN,
7375     1            ICASE,IBUGA3,IERROR)
7376      CALL SGECO(AMAT2,MAXROM,NC1,INDEX,RCOND,Y2)
7377C
7378      IF(1.0+RCOND.EQ.1.0)THEN
7379        WRITE(ICOUT,999)
7380        CALL DPWRST('XXX','BUG ')
7381        WRITE(ICOUT,5171)
7382        CALL DPWRST('XXX','ERRO ')
7383        WRITE(ICOUT,5172)
7384        CALL DPWRST('XXX','ERRO ')
7385        WRITE(ICOUT,5173)
7386        CALL DPWRST('XXX','ERRO ')
7387        IERROR='YES'
7388        GOTO9000
7389      ENDIF
7390 5171 FORMAT('*** ERROR FROM HTTSQ1: UNABLE TO COMPUTE THE INVERSE OF ',
7391     1       'THE COVARIANCE MATRIX.')
7392 5172 FORMAT('    PROBLEM: SOME COLUMNS ARE LINEARLY DEPDENDENT ON ',
7393     1       ' OTHER COLUMNS.')
7394 5173 FORMAT('    SUGGESTED SOLUTION: WORK WITH A SUBSET OF THE ',
7395     1       'ORIGINAL COLUMNS.')
7396C
7397      IJOB=1
7398      CALL SGEDI(AMAT2,MAXROM,NC1,INDEX,Y2,Y3,IJOB)
7399C
7400      DO6000I=1,NC1
7401        DO6110J=1,NR1
7402          Y2(J)=AMAT1(J,I)
7403 6110   CONTINUE
7404        CALL MEAN(Y2,NR1,IWRITE,XMEAN,IBUGA3,IERROR)
7405        Y3(I)=XMEAN-Y1(I)
7406 6000 CONTINUE
7407      CALL QUAFRM(AMAT2,MAXROM,MAXCOM,NC1,NC1,Y3,IWRITE,
7408     1            XQUAD,IBUGA3,IERROR)
7409      TSTAT=REAL(NR1)*XQUAD
7410C
7411      AFACT=REAL(NC1*(NR1-1)/(NR1-NC1))
7412      CALL FPPF(0.90,NC1,NR1-NC1,ATEMP1)
7413      ASIG90=AFACT*ATEMP1
7414      CALL FPPF(0.95,NC1,NR1-NC1,ATEMP1)
7415      ASIG95=AFACT*ATEMP1
7416      CALL FPPF(0.99,NC1,NR1-NC1,ATEMP1)
7417      ASIG99=AFACT*ATEMP1
7418      CALL FPPF(0.995,NC1,NR1-NC1,ATEMP1)
7419      ASG995=AFACT*ATEMP1
7420C
7421C               *****************
7422C               **  STEP 90--  **
7423C               **  EXIT.      **
7424C               *****************
7425C
7426 9000 CONTINUE
7427      IF(IBUGA3.EQ.'OFF')GOTO9090
7428      WRITE(ICOUT,999)
7429      CALL DPWRST('XXX','BUG ')
7430      WRITE(ICOUT,9011)
7431 9011 FORMAT('***** AT THE END       OF HTTSQ1--')
7432      CALL DPWRST('XXX','BUG ')
7433      WRITE(ICOUT,9012)IBUGA3,IERROR
7434 9012 FORMAT('IBUGA3,IERROR = ',A4,2X,A4)
7435      CALL DPWRST('XXX','BUG ')
7436 9090 CONTINUE
7437C
7438      RETURN
7439      END
7440      SUBROUTINE HTTSQ2(AMAT1,AMAT2,AMAT3,MAXROM,MAXCOM,NR1,NR2,NC1,
7441     1TSTAT,ASIG90,ASIG95,ASIG99,ASG995,
7442     1DMEAN,Y1,Y2,Y3,INDEX,
7443     1IBUGA3,IERROR)
7444C
7445C     PURPOSE--THIS SUBROUTINE COMPUTES THE
7446C              2-SAMPLE HOTELLING T-SQUARE STATISTIC.
7447C              HO: U1 = U2
7448C              T2=N1*N2*(XBAR1-XBAR2)'*SINV*(XBAR1-XBAR2)/(N1+N2)
7449C              WHERE SINV IS THE INVERSE OF THE POOLED COVARIANCE
7450C              MATRIX.
7451C     INPUT  ARGUMENTS--AMAT1  = THE SAMPLE 1 SINGLE PRECISION MATRIX
7452C                     --AMAT2  = THE SAMPLE 2 SINGLE PRECISION MATRIX
7453C                     --MAXROM = THE INTEGER ROW DIMENSION OF AMAT1
7454C                     --MAXCOM = THE INTEGER COUMN DIMENSION OF AMAT1
7455C                     --NR1    = THE INTEGER NUMBER OF ROWS OF AMAT1
7456C                     --NR2    = THE INTEGER NUMBER OF ROWS OF AMAT2
7457C                     --NC1    = THE INTEGER NUMBER OF COLUMNS OF AMAT1
7458C                     --Y1     = DUMMY VECTOR CONTAINING SAMPLE 1 MEANS
7459C                     --Y2     = DUMMY VECTOR CONTAINING SAMPLE 2 MEANS
7460C     OUTPUT ARGUMENTS--AMAT3  = THE SINGLE PRECISION VALUE OF THE
7461C                                COMPUTED INVERTED VARIANCE-COVARIANCE
7462C                                MATRIX
7463C                     --TSTAT  = VALUE OF HOTELLING T-SQUARE
7464C                     --ASIG90 = CRITICAL VALUE FOR ALPHA = .90
7465C                     --ASIG95 = CRITICAL VALUE FOR ALPHA = .95
7466C                     --ASIG99 = CRITICAL VALUE FOR ALPHA = .99
7467C                     --ASG995= CRITICAL VALUE FOR ALPHA = .995
7468C     OUTPUT--THE COMPUTED SINGLE PRECISION VALUE OF THE
7469C             HOTELLING T-SQUARE VALUE
7470C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE.
7471C     LANGUAGE--ANSI FORTRAN (1977)
7472C     WRITTEN BY--JAMES J. FILLIBEN
7473C                 STATISTICAL ENGINEERING DIVISION
7474C                 INFORMATION TECHNOLOGY LABORATORY
7475C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
7476C                 GAITHERSBURG, MD 20899-8980
7477C                 PHONE--301-975-2855
7478C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
7479C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
7480C     LANGUAGE--ANSI FORTRAN (1977)
7481C     VERSION NUMBER--98.7
7482C     ORIGINAL VERSION--JULY      1998.
7483C
7484C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
7485C
7486      CHARACTER*4 IWRITE
7487      CHARACTER*4 IBUGA3
7488      CHARACTER*4 IERROR
7489C
7490      CHARACTER*4 ISUBN1
7491      CHARACTER*4 ISUBN2
7492C
7493C---------------------------------------------------------------------
7494C
7495C
7496      DIMENSION AMAT1(MAXROM,MAXCOM)
7497      DIMENSION AMAT2(MAXROM,MAXCOM)
7498      DIMENSION AMAT3(MAXROM,MAXCOM)
7499      DIMENSION Y1(*)
7500      DIMENSION Y2(*)
7501      DIMENSION Y3(*)
7502      DIMENSION INDEX(*)
7503      DOUBLE PRECISION DMEAN(*)
7504C
7505C---------------------------------------------------------------------
7506C
7507      INCLUDE 'DPCOP2.INC'
7508C
7509C-----START POINT-----------------------------------------------------
7510C
7511      ISUBN1='HTTS'
7512      ISUBN2='Q2  '
7513      IWRITE='OFF'
7514      IERROR='NO'
7515C
7516      IF(IBUGA3.EQ.'OFF')GOTO90
7517      WRITE(ICOUT,999)
7518  999 FORMAT(1X)
7519      CALL DPWRST('XXX','BUG ')
7520      WRITE(ICOUT,51)
7521   51 FORMAT('***** AT THE BEGINNING OF HTTSQ2--')
7522      CALL DPWRST('XXX','BUG ')
7523      WRITE(ICOUT,52)IBUGA3
7524   52 FORMAT('IBUGA3 = ',A4)
7525      CALL DPWRST('XXX','BUG ')
7526      WRITE(ICOUT,53)NR1,NR2,NC1
7527   53 FORMAT('NR1, NR2, NC1 = ',3I8)
7528      CALL DPWRST('XXX','BUG ')
7529   90 CONTINUE
7530C
7531C               **********************************
7532C               **  COMPUTE HOTELLING T-SQUARE  **
7533C               **********************************
7534C
7535      CALL VARPOO(AMAT1,AMAT2,AMAT3,MAXROM,MAXCOM,NR1,NC1,NR2,
7536     1            DMEAN,IBUGA3,IERROR)
7537      CALL SGECO(AMAT3,MAXROM,NC1,INDEX,RCOND,Y1)
7538C
7539      IF(1.0+RCOND.EQ.1.0)THEN
7540        WRITE(ICOUT,999)
7541        CALL DPWRST('XXX','BUG ')
7542        WRITE(ICOUT,5171)
7543        CALL DPWRST('XXX','ERRO ')
7544        WRITE(ICOUT,5172)
7545        CALL DPWRST('XXX','ERRO ')
7546        WRITE(ICOUT,5173)
7547        CALL DPWRST('XXX','ERRO ')
7548        IERROR='YES'
7549        GOTO9000
7550      ENDIF
7551 5171 FORMAT('*** ERROR FROM HTTSQ2: UNABLE TO COMPUTE THE INVERSE OF ',
7552     1       'THE POOLED COVARIANCE MATRIX.')
7553 5172 FORMAT('    PROBLEM: SOME COLUMNS ARE LINEARLY DEPDENDENT ON ',
7554     1       ' OTHER COLUMNS.')
7555 5173 FORMAT('    SUGGESTED SOLUTION: WORK WITH A SUBSET OF THE ',
7556     1       'ORIGINAL COLUMNS.')
7557C
7558      IJOB=1
7559      CALL SGEDI(AMAT3,MAXROM,NC1,INDEX,Y1,Y2,IJOB)
7560C
7561      DO6000I=1,NC1
7562        DO6110J=1,NR1
7563          Y1(J)=AMAT1(J,I)
7564 6110   CONTINUE
7565        DO6120J=1,NR2
7566          Y2(J)=AMAT2(J,I)
7567 6120   CONTINUE
7568        CALL MEAN(Y1,NR1,IWRITE,XMEAN1,IBUGA3,IERROR)
7569        CALL MEAN(Y2,NR2,IWRITE,XMEAN2,IBUGA3,IERROR)
7570        Y3(I)=XMEAN1-XMEAN2
7571 6000 CONTINUE
7572      CALL QUAFRM(AMAT3,MAXROM,MAXCOM,NC1,NC1,Y3,IWRITE,
7573     1            XQUAD,IBUGA3,IERROR)
7574      TSTAT=REAL(NR1*NR2)*XQUAD/REAL(NR1+NR2)
7575C
7576      AFACT=REAL((Nr1+NR2-NC1-1)/((NR1+NR2-2)*NC1))
7577      CALL FPPF(0.90,NC1,NR1+NR2-NC1-1,ATEMP1)
7578      ASIG90=AFACT*ATEMP1
7579      CALL FPPF(0.95,NC1,NR1+NR2-NC1-1,ATEMP1)
7580      ASIG95=AFACT*ATEMP1
7581      CALL FPPF(0.99,NC1,NR1+NR2-NC1-1,ATEMP1)
7582      ASIG99=AFACT*ATEMP1
7583      CALL FPPF(0.995,NC1,NR1+NR2-NC1-1,ATEMP1)
7584      ASG995=AFACT*ATEMP1
7585C
7586C               *****************
7587C               **  STEP 90--  **
7588C               **  EXIT.      **
7589C               *****************
7590C
7591 9000 CONTINUE
7592      IF(IBUGA3.EQ.'OFF')GOTO9090
7593      WRITE(ICOUT,999)
7594      CALL DPWRST('XXX','BUG ')
7595      WRITE(ICOUT,9011)
7596 9011 FORMAT('***** AT THE END       OF HTTSQ2--')
7597      CALL DPWRST('XXX','BUG ')
7598      WRITE(ICOUT,9012)IBUGA3,IERROR
7599 9012 FORMAT('IBUGA3,IERROR = ',A4,2X,A4)
7600      CALL DPWRST('XXX','BUG ')
7601 9090 CONTINUE
7602C
7603      RETURN
7604      END
7605      SUBROUTINE HYGFX(A,B,C,X,HF,IERROR)
7606C
7607C       ====================================================
7608C       Purpose: Compute hypergeometric function F(a,b,c,x)
7609C       Input :  a --- Parameter
7610C                b --- Parameter
7611C                c --- Parameter, c <> 0,-1,-2,...
7612C                x --- Argument   ( x < 1 )
7613C       Output:  HF --- F(a,b,c,x)
7614C                IERROR--ERROR FLAG
7615C       Routines called:
7616C            (1) GAMMA for computing gamma function
7617C            (2) PSI for computing psi function
7618C       ====================================================
7619C
7620        IMPLICIT DOUBLE PRECISION (A-H,O-Z)
7621        LOGICAL L0,L1,L2,L3,L4,L5
7622C
7623        HW=0.0D0
7624        NM=0
7625C
7626        PI=3.141592653589793D0
7627        EL=.5772156649015329D0
7628        L0=C.EQ.INT(C).AND.C.LT.0.0
7629        L1=1.0D0-X.LT.1.0D-15.AND.C-A-B.LE.0.0
7630        L2=A.EQ.INT(A).AND.A.LT.0.0
7631        L3=B.EQ.INT(B).AND.B.LT.0.0
7632        L4=C-A.EQ.INT(C-A).AND.C-A.LE.0.0
7633        L5=C-B.EQ.INT(C-B).AND.C-B.LE.0.0
7634        IF (L0) THEN
7635           IERROR=1
7636CCCCC      WRITE(*,*)'The hypergeometric series is divergent'
7637           RETURN
7638        ENDIF
7639        IF (L1) THEN
7640           IERROR=2
7641CCCCC      WRITE(*,*)'The hypergeometric series is divergent'
7642           RETURN
7643        ENDIF
7644        EPS=1.0D-15
7645        IF (X.GT.0.95) EPS=1.0D-8
7646        IF (X.EQ.0.0.OR.A.EQ.0.0.OR.B.EQ.0.0) THEN
7647           HF=1.0D0
7648           RETURN
7649        ELSE IF (1.0D0-X.EQ.EPS.AND.C-A-B.GT.0.0) THEN
7650CCCCC USE CMLIB DGAMMA ROUTINE
7651CCCCC      CALL GAMMA(C,GC)
7652CCCCC      CALL GAMMA(C-A-B,GCAB)
7653CCCCC      CALL GAMMA(C-A,GCA)
7654CCCCC      CALL GAMMA(C-B,GCB)
7655           GC=DGAMMA(C)
7656           GCAB=DGAMMA(C-A-B)
7657           GCA=DGAMMA(C-A)
7658           GCB=DGAMMA(C-B)
7659           HF=GC*GCAB/(GCA*GCB)
7660           RETURN
7661        ELSE IF (1.0D0+X.LE.EPS.AND.DABS(C-A+B-1.0).LE.EPS) THEN
7662           G0=DSQRT(PI)*2.0D0**(-A)
7663CCCCC USE CMLIB DGAMMA ROUTINE
7664CCCCC      CALL GAMMA(C,G1)
7665CCCCC      CALL GAMMA(1.0D0+A/2.0-B,G2)
7666CCCCC      CALL GAMMA(0.5D0+0.5*A,G3)
7667           G1=DGAMMA(C)
7668           G2=DGAMMA(1.0D0+A/2.0-B)
7669           G3=DGAMMA(0.5D0+0.5*A)
7670           HF=G0*G1/(G2*G3)
7671           RETURN
7672        ELSE IF (L2.OR.L3) THEN
7673           IF (L2) NM=INT(ABS(A))
7674           IF (L3) NM=INT(ABS(B))
7675           HF=1.0D0
7676           R=1.0D0
7677           DO 10 K=1,NM
7678              R=R*(A+K-1.0D0)*(B+K-1.0D0)/(K*(C+K-1.0D0))*X
7679              HF=HF+R
768010         CONTINUE
7681           RETURN
7682        ELSE IF (L4.OR.L5) THEN
7683           IF (L4) NM=INT(ABS(C-A))
7684           IF (L5) NM=INT(ABS(C-B))
7685           HF=1.0D0
7686           R=1.0D0
7687           DO 15 K=1,NM
7688              R=R*(C-A+K-1.0D0)*(C-B+K-1.0D0)/(K*(C+K-1.0D0))*X
7689              HF=HF+R
769015         CONTINUE
7691           HF=(1.0D0-X)**(C-A-B)*HF
7692           RETURN
7693        ENDIF
7694        AA=A
7695        BB=B
7696        X1=X
7697        IF (X.LT.0.0D0) THEN
7698           X=X/(X-1.0D0)
7699           IF (C.GT.A.AND.B.LT.A.AND.B.GT.0.0) THEN
7700              A=BB
7701              B=AA
7702           ENDIF
7703           B=C-B
7704        ENDIF
7705        IF (X.GE.0.75D0) THEN
7706           GM=0.0D0
7707           IF (DABS(C-A-B-INT(C-A-B)).LT.1.0D-15) THEN
7708              M=INT(C-A-B)
7709CCCCC USE CMLIB DGAMMA ROUTINE
7710CCCCC         CALL GAMMA(A,GA)
7711CCCCC         CALL GAMMA(B,GB)
7712CCCCC         CALL GAMMA(C,GC)
7713CCCCC         CALL GAMMA(A+M,GAM)
7714CCCCC         CALL GAMMA(B+M,GBM)
7715              GA=DGAMMA(A)
7716              GB=DGAMMA(B)
7717              GC=DGAMMA(C)
7718              GAM=DGAMMA(A+M)
7719              GBM=DGAMMA(B+M)
7720CCCCC USE CMLIB DPSI ROUTINE
7721CCCCC         CALL PSI(A,PA)
7722CCCCC         CALL PSI(B,PB)
7723              PA=DPSI(A)
7724              PB=DPSI(B)
7725              IF (M.NE.0) GM=1.0D0
7726              DO 30 J=1,ABS(M)-1
7727                 GM=GM*J
772830            CONTINUE
7729              RM=1.0D0
7730              DO 35 J=1,ABS(M)
7731                 RM=RM*J
773235            CONTINUE
7733              F0=1.0D0
7734              R0=1.0D0
7735              R1=1.0D0
7736              SP0=0.D0
7737              SP=0.0D0
7738              IF (M.GE.0) THEN
7739                 C0=GM*GC/(GAM*GBM)
7740                 C1=-GC*(X-1.0D0)**M/(GA*GB*RM)
7741                 DO 40 K=1,M-1
7742                    R0=R0*(A+K-1.0D0)*(B+K-1.0)/(K*(K-M))*(1.0-X)
7743                    F0=F0+R0
774440               CONTINUE
7745                 DO 45 K=1,M
7746                    SP0=SP0+1.0D0/(A+K-1.0)+1.0/(B+K-1.0)-1.0/K
774745               CONTINUE
7748                 F1=PA+PB+SP0+2.0D0*EL+DLOG(1.0D0-X)
7749                 DO 55 K=1,250
7750                    SP=SP+(1.0D0-A)/(K*(A+K-1.0))+(1.0-B)/(K*(B+K-1.0))
7751                    SM=0.0D0
7752                    DO 50 J=1,M
7753                       SM=SM+(1.0D0-A)/((J+K)*(A+J+K-1.0))+1.0/
7754     &                    (B+J+K-1.0)
775550                  CONTINUE
7756                    RP=PA+PB+2.0D0*EL+SP+SM+DLOG(1.0D0-X)
7757                    R1=R1*(A+M+K-1.0D0)*(B+M+K-1.0)/(K*(M+K))*(1.0-X)
7758                    F1=F1+R1*RP
7759                    IF (DABS(F1-HW).LT.DABS(F1)*EPS) GO TO 60
7760                    HW=F1
776155               CONTINUE
776260               HF=F0*C0+F1*C1
7763              ELSE IF (M.LT.0) THEN
7764                 M=-M
7765                 C0=GM*GC/(GA*GB*(1.0D0-X)**M)
7766                 C1=-(-1)**M*GC/(GAM*GBM*RM)
7767                 DO 65 K=1,M-1
7768                    R0=R0*(A-M+K-1.0D0)*(B-M+K-1.0)/(K*(K-M))*(1.0-X)
7769                    F0=F0+R0
777065               CONTINUE
7771                 DO 70 K=1,M
7772                    SP0=SP0+1.0D0/K
777370               CONTINUE
7774                 F1=PA+PB-SP0+2.0D0*EL+DLOG(1.0D0-X)
7775                 DO 80 K=1,250
7776                    SP=SP+(1.0D0-A)/(K*(A+K-1.0))+(1.0-B)/(K*(B+K-1.0))
7777                    SM=0.0D0
7778                    DO 75 J=1,M
7779                       SM=SM+1.0D0/(J+K)
778075                  CONTINUE
7781                    RP=PA+PB+2.0D0*EL+SP-SM+DLOG(1.0D0-X)
7782                    R1=R1*(A+K-1.0D0)*(B+K-1.0)/(K*(M+K))*(1.0-X)
7783                    F1=F1+R1*RP
7784                    IF (DABS(F1-HW).LT.DABS(F1)*EPS) GO TO 85
7785                    HW=F1
778680               CONTINUE
778785               HF=F0*C0+F1*C1
7788              ENDIF
7789           ELSE
7790CCCCC USE CMLIB DGAMMA ROUTINE
7791CCCCC         CALL GAMMA(A,GA)
7792CCCCC         CALL GAMMA(B,GB)
7793CCCCC         CALL GAMMA(C,GC)
7794CCCCC         CALL GAMMA(C-A,GCA)
7795CCCCC         CALL GAMMA(C-B,GCB)
7796CCCCC         CALL GAMMA(C-A-B,GCAB)
7797CCCCC         CALL GAMMA(A+B-C,GABC)
7798              GA=DGAMMA(A)
7799              GB=DGAMMA(B)
7800              GC=DGAMMA(C)
7801              GCA=DGAMMA(C-A)
7802              GCB=DGAMMA(C-B)
7803              GCAB=DGAMMA(C-A-B)
7804              GABC=DGAMMA(A+B-C)
7805              C0=GC*GCAB/(GCA*GCB)
7806              C1=GC*GABC/(GA*GB)*(1.0D0-X)**(C-A-B)
7807              HF=0.0D0
7808              R0=C0
7809              R1=C1
7810              DO 90 K=1,250
7811                 R0=R0*(A+K-1.0D0)*(B+K-1.0)/(K*(A+B-C+K))*(1.0-X)
7812                 R1=R1*(C-A+K-1.0D0)*(C-B+K-1.0)/(K*(C-A-B+K))
7813     &              *(1.0-X)
7814                 HF=HF+R0+R1
7815                 IF (DABS(HF-HW).LT.DABS(HF)*EPS) GO TO 95
7816                 HW=HF
781790            CONTINUE
781895            HF=HF+C0+C1
7819           ENDIF
7820        ELSE
7821           A0=1.0D0
7822           IF (C.GT.A.AND.C.LT.2.0D0*A.AND.
7823     &         C.GT.B.AND.C.LT.2.0D0*B) THEN
7824              A0=(1.0D0-X)**(C-A-B)
7825              A=C-A
7826              B=C-B
7827           ENDIF
7828           HF=1.0D0
7829           R=1.0D0
7830           DO 100 K=1,250
7831              R=R*(A+K-1.0D0)*(B+K-1.0D0)/(K*(C+K-1.0D0))*X
7832              HF=HF+R
7833              IF (DABS(HF-HW).LE.DABS(HF)*EPS) GO TO 105
7834              HW=HF
7835100        CONTINUE
7836105        HF=A0*HF
7837        ENDIF
7838        IF (X1.LT.0.0D0) THEN
7839           X=X1
7840           C0=1.0D0/(1.0D0-X)**AA
7841           HF=C0*HF
7842        ENDIF
7843        A=AA
7844        B=BB
7845        IF (K.GT.120) THEN
7846CCCCC     WRITE(*,115)
7847C115      FORMAT(1X,'Warning! You should check the accuracy')
7848          IERROR=3
7849        ENDIF
7850        RETURN
7851        END
7852      SUBROUTINE HYPCDF(LL,KK,NN,MM,POINT,CDF)
7853C
7854C     PURPOSE--THIS SUBROUTINE COMPUTES THE CUMULATIVE DISTRIBUTION
7855C              FUNCTION VALUE AT THE INTEGER VALUE LL
7856C              FOR THE HYPERGEOMETRIC DISTRIBUTION.
7857C              THE HYPERGEOMETRIC DISTRIBUTION IS THE PROBABILITY OF
7858C              SELECTING LL MARKED ITEMS WHEN A RANDOM SAMPLE OF SIZE
7859C              KK IS TAKEN WITHOUT REPLACEMENT FROM A POPULATION OF
7860C              MM ITEMS, NN OF WHICH ARE MARKED.  IT HAS CDF OF:
7861C                 CDF = P(X<= LL | KK, NN, MM)
7862C     INPUT  ARGUMENTS--LL     = THE INTEGER VALUE
7863C                                AT WHICH THE CUMULATIVE DISTRIBUTION
7864C                                FUNCTION IS TO BE EVALUATED.
7865C                                IT SHOULD BE INTEGRAL-VALUED,
7866C                                AND BETWEEN 0.0 (INCLUSIVELY)
7867C                                AND MM (INCLUSIVELY).
7868C                     --KK     = THE INTEGER VALUE INDICATING THE
7869C                                SAMPLE SIZE.
7870C                     --NN     = THE NUMBER OF MARKED ITEMS IN THE
7871C                                POPULATION.
7872C                     --MM     = THE POPULATION SIZE.
7873C                     --POINT  = LOGICAL VARIABLE THAT SPECIFIES
7874C                                WHETHER THE CDF OR PDF SHOULD BE
7875C                                COMPUTED.
7876C     OUTPUT ARGUMENTS--CDF    = THE SINGLE PRECISION CUMULATIVE
7877C                                DISTRIBUTION FUNCTION VALUE.
7878C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
7879C     RESTRICTIONS--LL SHOULD BE INTEGRAL-VALUED,
7880C                   AND BETWEEN 0 AND MM (INCLUSIVELY)
7881C                 --KK SHOULD BE A POSITIVE INTEGER BETWEEN 1 AND MM.
7882C                 --NN SHOULD BE A POSITIVE INTEGER BETWEEN 1 AND MM.
7883C     OTHER SUBROUTINES NEEDED--NORCDF, DLNGAM
7884C     LANGUAGE--ANSI FORTRAN (1977)
7885C     COMMENT--THIS ROUTINE USES ALGORITHM AS R77 FROM THE
7886C              APPLIED STATISTICS JOURNAL. CODE RETRIEVED FROM STATLIB.
7887C
7888C     ALGORITHM AS R77  APPL. STATIST. (1989), VOL.38, NO.1
7889C     Replaces AS 59 and AS 152
7890C     Incorporates AS R86 from vol.40(2)
7891C
7892C     Auxiliary routines required: ALNFAC (AS 245), ALNORM (AS 66)
7893C
7894C     REFERENCES--HASTINGS AND PEACOCK, STATISTICAL
7895C                 DISTRIBUTIONS--A HANDBOOK FOR
7896C                 STUDENTS AND PRACTITIONERS, 1975,
7897C               --JOHNSON AND KOTZ, DISCRETE
7898C                 DISTRIBUTIONS, 1969.
7899C               --REMARK AS R77, AS152, AND AS59 FROM THE APPLIED
7900C                 STATISTICS JOURNAL.
7901C               --"THE ACCURACY OF PIEZER APPROXIMATIONS TO THE
7902C                 HYPERGEOMETRIC DISTRIBUTION, WITH COMPARISONS TO
7903C                 SOME OTHER APPROXIMATIONS", LING AND PRATT, JASA,
7904C                 MARCH, 1984.
7905C     WRITTEN BY--JAMES J. FILLIBEN
7906C                 STATISTICAL ENGINEERING DIVISION
7907C                 INFORMATION TECHNOLOGY LABORATORY
7908C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
7909C                 GAITHERSBURG, MD 20899-8980
7910C                 PHONE--301-975-2855
7911C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
7912C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
7913C     LANGUAGE--ANSI FORTRAN (1966)
7914C               EXCEPTION--HOLLERITH STRINGS IN FORMAT STATEMENTS
7915C                          DENOTED BY QUOTES RATHER THAN NH.
7916C     VERSION NUMBER--94/9
7917C     ORIGINAL VERSION--SEPTEMBER 1994.
7918C
7919C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
7920C
7921C---------------------------------------------------------------------
7922C
7923      INTEGER  KK, LL, MM, NN, K, L, M, N, I, J, NL, KL,
7924     *         MNKL, MVBIG, MBIG
7925CCCCC DOUBLE PRECISION ZERO, ONE, P, PT, HALF, DLNGAM, ELIMIT, MEAN,
7926CCCCC*                 SIG, SXTEEN, SCALE, ROOTPI, ARG, HUNDRD, DCDF,
7927      DOUBLE PRECISION ZERO, ONE, P, PT, HALF, DLNGAM, ELIMIT,
7928     *                 SXTEEN, SCALE, ROOTPI, HUNDRD, DCDF,
7929     *                 XMAX,XMAXT,DTERM1,
7930     *                 DTERM2,DTERM3,DTERM4,DTERM5,DTERM6,DTERM7,DTERM8
7931      DOUBLE PRECISION P1, P2, A, B, C, D, DCDF2
7932      LOGICAL   POINT, DIR
7933      PARAMETER (ZERO = 0.0D0, HALF = 0.5D0, ONE = 1.0D0, MVBIG = 1000,
7934     *           MBIG = 600, SXTEEN = 16.0D0,
7935     *           ROOTPI = 2.50662 82746 31001D0,
7936     *           HUNDRD = 100.0D0)
7937C
7938C-----COMMON----------------------------------------------------------
7939C
7940      INCLUDE 'DPCOMC.INC'
7941      INCLUDE 'DPCOP2.INC'
7942C
7943C-----DATA STATEMENTS-------------------------------------------------
7944C
7945C-----START POINT-----------------------------------------------------
7946C
7947C     CHECK THE INPUT ARGUMENTS FOR ERRORS
7948C
7949      CDF=0.0
7950      IF(NN.LE.0.OR.NN.GT.MM)THEN
7951        WRITE(ICOUT,11)
7952   11   FORMAT('***** ERROR--THE THIRD ARGUMENT TO HYPCDF ',
7953     1         '(THE NUMBER OF MARKED ITEMS)')
7954        CALL DPWRST('XXX','BUG ')
7955        WRITE(ICOUT,12)
7956   12   FORMAT('      IS LESS THAN ZERO OR GREATER THAN THE POULATION ',
7957     1         'SIZE.')
7958        CALL DPWRST('XXX','BUG ')
7959        WRITE(ICOUT,46)NN
7960        CALL DPWRST('XXX','BUG ')
7961        GOTO9000
7962      ELSEIF(KK.LE.0.OR.KK.GT.MM)THEN
7963        WRITE(ICOUT,21)
7964   21   FORMAT('***** ERROR--THE SECOND ARGUMENT TO HYPCDF ',
7965     1         '(THE SAMPLE SIZE)')
7966        CALL DPWRST('XXX','BUG ')
7967        WRITE(ICOUT,22)
7968   22   FORMAT('      IS LESS THAN ZERO OR GREATER THAN THE POULATION ',
7969     1         'SIZE.')
7970        CALL DPWRST('XXX','BUG ')
7971        WRITE(ICOUT,46)KK
7972        CALL DPWRST('XXX','BUG ')
7973        GOTO9000
7974      ELSEIF(LL.LT.0.OR.KK-LL.GT.MM-NN)THEN
7975        WRITE(ICOUT,31)MM-NN
7976   31   FORMAT('***** WARNING--THE FIRST INPUT ARGUMENT TO ',
7977     1         'HYPCDF IS OUTSIDE THE (0,',I8,') INTERVAL.')
7978        CALL DPWRST('XXX','BUG ')
7979        WRITE(ICOUT,46)LL
7980        CALL DPWRST('XXX','BUG ')
7981        GOTO9000
7982      ELSEIF(LL.GT.NN.OR.LL.GT.KK)THEN
7983        WRITE(ICOUT,41)
7984   41   FORMAT('***** WARNING--THE FIRST ARGUMENT TO HYPCDF ',
7985     1         'IS GREATER THAN THE SAMPLE SIZE ')
7986        CALL DPWRST('XXX','BUG ')
7987        WRITE(ICOUT,42)
7988   42   FORMAT('      OR GREATER THAN THE NUMBER OF MARKED ITEMS.')
7989        CALL DPWRST('XXX','BUG ')
7990        WRITE(ICOUT,46)LL
7991        CALL DPWRST('XXX','BUG ')
7992        IF(.NOT.POINT)CDF=1.0
7993        GOTO9000
7994      ENDIF
7995   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',I8,'.')
7996C
7997C  CALCULATE EXPONENTIAL LIMIT FOR UNDERFLOW
7998C
7999      XMAXT = -DLOG(D1MACH(1))
8000      XMAX = XMAXT - 0.5D0*XMAXT*DLOG(XMAXT)/(XMAXT+0.5D0) - 0.01D0
8001      ELIMIT=-XMAX
8002      SCALE = D1MACH(1) + 1000.D0*D1MACH(3)
8003C
8004C     TREAT IMMEDIATELY THE SPECIAL CASES WHICH RETURN A VALUE OF
8005C     0 OR 1.
8006C
8007      K = KK + 1
8008      L = LL + 1
8009      M = MM + 1
8010      N = NN + 1
8011      DIR = .TRUE.
8012      DCDF = ONE
8013      IF (K .EQ. 1 .OR. K .EQ. M .OR. N .EQ. 1 .OR. N .EQ. M) GOTO9999
8014      IF (.NOT. POINT .AND. LL .EQ. MIN(KK, NN)) GOTO9999
8015C
8016      P = DBLE(NN) / DBLE(MM - NN)
8017C
8018C     Use a normal approximation for sufficently large arguments
8019C
8020C     THE NORMAL APPROXIMATION HERE DOES NOT SEEM TO PRODUCE
8021C     PARTICULARLY ACCURATE RESULTS.  USE A BINOMIAL APPROXIMATION
8022C     INSTEAD (TAKEN FROM LING AND PRATT ARTICLE IN REFERENCE).
8023CCCCC IF (DBLE(MIN(KK, MM-KK)) .GT. SXTEEN * MAX(P, ONE/P) .AND.
8024CCCCC*   MM .GT. MVBIG .AND. ELIMIT .GT. -HUNDRD) THEN
8025      IF (DBLE(MIN(KK, MM-KK)) .GT. SXTEEN * MAX(P, ONE/P) .AND.
8026     *   MM .GT. MVBIG ) THEN
8027        K=KK
8028        M=MM
8029        N=NN
8030        L=LL
8031        IF (MIN(K-1, M-K) .GT. MIN(N-1, M-N)) THEN
8032          I = K
8033          K = N
8034          N = I
8035        END IF
8036        IF (M-K .LT. K-1) THEN
8037          DIR = .NOT. DIR
8038          L = N - L + 1
8039          K = M - K + 1
8040        END IF
8041CCCCC   MEAN = DBLE(K) * DBLE(N) / DBLE(M)
8042CCCCC   SIG = DSQRT(MEAN*(DBLE(M-N)/DBLE(M))*(DBLE(M-K)/(DBLE(M-1))))
8043CCCCC   IF (POINT) THEN
8044CCCCC     ARG = -HALF * (((DBLE(L) - MEAN) / SIG)**2)
8045CCCCC     DCDF = ZERO
8046CCCCC     IF (ARG .GE. ELIMIT) DCDF = DEXP(ARG)/(SIG*ROOTPI)
8047CCCCC   ELSE
8048CCCCC     DTERM1=(DBLE(L)+HALF-MEAN)/SIG
8049CCCCC     CALL NORCDF(SNGL(DTERM1),CDF)
8050CCCCC     DCDF = DBLE(CDF)
8051CCCCC     IF(.NOT.DIR)DCDF=1.0D0 - DCDF
8052CCCCC   END IF
8053C
8054C     BINOMIAL APPROXIMATION.
8055C
8056        A=DBLE(L)
8057        B=DBLE(K-L)
8058        C=DBLE(N-L)
8059        D=DBLE(M+L-N-K)
8060        P1=DBLE(2*N-L)/DBLE(2*M-K+1)
8061        DTERM1=DBLE(K+1)*(A*P1-(B-1.0D0)*(1.0D0-P1))
8062        DTERM2=-A*(A+2.0D0)/P1 + (B**2-1.0D0)/(1.0D0-P1)
8063        DTERM3=6.0D0*(2.0D0*DBLE(M)-DBLE(K)+1.0D0)**2
8064        P2=P1+(DTERM1+DTERM2)/DTERM3
8065        AP1=SNGL(P1)
8066        AP2=SNGL(P2)
8067        AX=REAL(L)
8068        IF (POINT) THEN
8069          CALL BINCDF(DBLE(AX),DBLE(AP2),K,DCDF)
8070          IF(AX.GT.0.1)THEN
8071            AX=AX-1.0
8072            CALL BINCDF(DBLE(AX),DBLE(AP2),K,DCDF2)
8073            DCDF=DCDF-DCDF2
8074          ENDIF
8075        ELSE
8076          CALL BINCDF(DBLE(AX),DBLE(AP2),K,DCDF)
8077          IF(.NOT.DIR) DCDF=1.0D0-DCDF
8078        ENDIF
8079C
8080C     Calculate exact hypergeometric probabilities.
8081C     Interchange K and N if this saves calculations.
8082C
8083      ELSE
8084        IF (MIN(K-1, M-K) .GT. MIN(N-1, M-N)) THEN
8085          I = K
8086          K = N
8087          N = I
8088        END IF
8089        IF (M-K .LT. K-1) THEN
8090          DIR = .NOT. DIR
8091          L = N - L + 1
8092          K = M - K + 1
8093        END IF
8094        IF (MM .GT. MBIG) THEN
8095C
8096C     Take logarithms of factorials.
8097C     Use fact that GAMMA(N)=(N-1)!.  USE DLNGAM function.
8098C
8099CCCCC     P = ALNFAC(NN) - ALNFAC(MM) + ALNFAC(MM-KK) + ALNFAC(KK) +
8100CCCCC*        ALNFAC(MM-NN)-ALNFAC(LL)-ALNFAC(NN-LL)-ALNFAC(KK-LL)
8101CCCCC*        - ALNFAC(MM-NN-KK+LL)
8102CCCCC     P = DLNGAM(DBLE(NN-1)) - DLNGAM(DBLE(MM-1)) +
8103CCCCC*        DLNGAM(DBLE(MM-KK-1)) + DLNGAM(DBLE(KK-1)) +
8104CCCCC*        DLNGAM(DBLE(MM-NN-1)) - DLNGAM(DBLE(LL-1)) -
8105CCCCC*        DLNGAM(DBLE(NN-LL-1)) - DLNGAM((KK-LL-1)) -
8106CCCCC*        DLNGAM(DBLE(MM-NN-KK+LL-1))
8107          DTERM1=DLNGAM(DBLE(NN+1))
8108          DTERM2=DLNGAM(DBLE(MM+1))
8109          DTERM3=DLNGAM(DBLE(MM-KK+1))
8110          DTERM4=DLNGAM(DBLE(KK+1))
8111          DTERM5=DLNGAM(DBLE(MM-NN+1))
8112          DTERM6=DLNGAM(DBLE(LL+1))
8113          DTERM7=DLNGAM(DBLE(NN-LL+1))
8114          DTERM8=DLNGAM(DBLE(KK-LL+1))
8115          DTERM9=DLNGAM(DBLE(MM-NN-KK+LL+1))
8116          P=DTERM1-DTERM2+DTERM3+DTERM4+DTERM5-
8117     *      DTERM6-DTERM7-DTERM8-DTERM9
8118          DCDF = ZERO
8119          IF (P .GE. ELIMIT) DCDF = DEXP(P)
8120C
8121C     Use Freeman/Lund algorithm
8122C
8123        ELSE
8124          DO 3 I = 1, L-1
8125            DCDF= DCDF*DBLE(K-I)*DBLE(N-I)/(DBLE(L-I)*DBLE(M-I))
8126    3     CONTINUE
8127          IF (L .NE. K) THEN
8128            J = M - N + L
8129            DO 5 I = L, K-1
8130              DCDF = DCDF * DBLE(J-I) / DBLE(M-I)
8131    5       CONTINUE
8132          END IF
8133C
8134        END IF
8135C
8136        IF (POINT) GOTO9999
8137C
8138C     We must recompute the point probability since it has underflowed.
8139C
8140        IF (DCDF .EQ. ZERO) THEN
8141          IF (MM.LE.MBIG)
8142     *      P = DLNGAM(DBLE(NN+1)) - DLNGAM(DBLE(MM+1)) +
8143     *      DLNGAM(DBLE(KK+1)) + DLNGAM(DBLE(MM-NN+1)) -
8144     *      DLNGAM(DBLE(LL+1)) - DLNGAM(DBLE(NN-LL+1)) -
8145     *      DLNGAM(DBLE(KK-LL+1)) - DLNGAM(DBLE(MM-NN-KK+LL+1)) +
8146     *      DLNGAM(DBLE(MM-KK+1))
8147          P = P + DLOG(SCALE)
8148          IF (P .LT. ELIMIT) THEN
8149            WRITE(ICOUT,51)
8150   51       FORMAT('***** WARNING--UNDERFLOW DETECTED.  RESULT MAY ',
8151     1             'BE IN ERROR.')
8152            CALL DPWRST('XXX','BUG ')
8153            IF (LL .GT. DBLE(NN*KK + NN + KK +1)/(MM +2)) DCDF = ONE
8154            GOTO9999
8155          ELSE
8156            P = DEXP(P)
8157          END IF
8158        ELSE
8159C
8160C     Scale up at this point.
8161C
8162          P = DCDF * SCALE
8163        END IF
8164C
8165        PT = ZERO
8166        NL = N - L
8167        KL = K - L
8168        MNKL = M - N - KL + 1
8169        IF (L .LE. KL) THEN
8170          DO 7 I = 1, L-1
8171            P = P * DBLE(L-I) * DBLE(MNKL-I) /(DBLE(NL+I) * DBLE(KL+I))
8172            PT = PT + P
8173    7     CONTINUE
8174          IF (P .EQ. ZERO) THEN
8175            WRITE(ICOUT,51)
8176            CALL DPWRST('XXX','BUG ')
8177          ENDIF
8178        ELSE
8179          DIR = .NOT. DIR
8180          DO 9 J = 0, KL-1
8181            P=P*DBLE(NL-J)*DBLE(KL-J)/(DBLE(L+J)*DBLE(MNKL+J))
8182            PT = PT + P
8183    9     CONTINUE
8184          IF (P .EQ. ZERO) THEN
8185            WRITE(ICOUT,51)
8186            CALL DPWRST('XXX','BUG ')
8187          ENDIF
8188        END IF
8189C
8190        IF (DIR) THEN
8191          DCDF = DCDF + (PT / SCALE)
8192        ELSE
8193          DCDF = ONE - (PT / SCALE)
8194        END IF
8195C
8196      END IF
8197C
8198 9999 CONTINUE
8199      CDF=SNGL(DCDF)
8200 9000 CONTINUE
8201      RETURN
8202      END
8203      SUBROUTINE HYPPPF(P,K,N,M,PPF)
8204C
8205C     PURPOSE--THIS SUBROUTINE COMPUTES THE PERCENT POINT
8206C              FUNCTION VALUE AT THE SINGLE PRECISION VALUE P
8207C              FOR THE HYPERGEOMETRIC DISTRIBUTION
8208C              THE HYPERGEOMETRIC DISTRIBUTION IS THE PROBABILITY OF
8209C              SELECTING LL MARKED ITEMS WHEN A RANDOM SAMPLE OF SIZE
8210C              KK IS TAKEN WITHOUT REPLACEMENT FROM A POPULATION OF
8211C              MM ITEMS, NN OF WHICH ARE MARKED.  IT HAS CDF OF:
8212C                 CDF = P(X<= LL | KK, NN, MM)
8213C     INPUT  ARGUMENTS--P      = THE SINGLE PRECISION VALUE
8214C                                AT WHICH THE PERCENT POINT
8215C                                FUNCTION IS TO BE EVALUATED.
8216C                                IT SHOULD BE IN THE INTERVAL (0,1).
8217C                     --KK     = THE INTEGER VALUE INDICATING THE
8218C                                SAMPLE SIZE.
8219C                     --NN     = THE NUMBER OF MARKED ITEMS IN THE
8220C                                POPULATION.
8221C                     --MM     = THE POPULATION SIZE.
8222C     OUTPUT ARGUMENTS--CDF    = THE SINGLE PRECISION CUMULATIVE
8223C                                DISTRIBUTION FUNCTION VALUE.
8224C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
8225C     RESTRICTIONS--P SHOULD BE BETWEEN 0 and 1 (INCLUSIVELY).
8226C                 --KK SHOULD BE A POSITIVE INTEGER BETWEEN 1 AND MM.
8227C                 --NN SHOULD BE A POSITIVE INTEGER BETWEEN 1 AND MM.
8228C     OUTPUT ARGUMENTS--PPF    = THE SINGLE PRECISION PERCENT
8229C                                POINT FUNCTION VALUE.
8230C     OUTPUT--THE SINGLE PRECISION PERCENT POINT  .
8231C             FUNCTION VALUE PPF
8232C             FOR THE HYPERGEOMETRIC DISTRIBUTION
8233C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
8234C     RESTRICTIONS--PPAR SHOULD BE BETWEEN 0.0 (EXCLUSIVELY)
8235C                   AND 1.0 (EXCLUSIVELY).
8236C                 --N SHOULD BE A POSITIVE INTEGER.
8237C                 --P SHOULD BE BETWEEN 0.0 (INCLUSIVELY)
8238C                   AND 1.0 (INCLUSIVELY).
8239C     OTHER DATAPAC   SUBROUTINES NEEDED--NORPPF, HYPCDF.
8240C     MODE OF INTERNAL OPERATIONS--SINGLE AND DOUBLE PRECISION.
8241C     LANGUAGE--ANSI FORTRAN (1977)
8242C     COMMENT--NOTE THAT EVEN THOUGH THE OUTPUT
8243C              FROM THIS DISCRETE DISTRIBUTION
8244C              PERCENT POINT FUNCTION
8245C              SUBROUTINE MUST NECESSARILY BE A
8246C              DISCRETE INTEGER VALUE,
8247C              THE OUTPUT VARIABLE PPF IS SINGLE
8248C              PRECISION IN MODE.
8249C              PPF HAS BEEN SPECIFIED AS SINGLE
8250C              PRECISION SO AS TO CONFORM WITH THE DATAPAC
8251C              CONVENTION THAT ALL OUTPUT VARIABLES FROM ALL
8252C              DATAPAC SUBROUTINES ARE SINGLE PRECISION.
8253C              THIS CONVENTION IS BASED ON THE BELIEF THAT
8254C              1) A MIXTURE OF MODES (FLOATING POINT
8255C              VERSUS INTEGER) IS INCONSISTENT AND
8256C              AN UNNECESSARY COMPLICATION
8257C              IN A DATA ANALYSIS; AND
8258C              2) FLOATING POINT MACHINE ARITHMETIC
8259C              (AS OPPOSED TO INTEGER ARITHMETIC)
8260C              IS THE MORE NATURAL MODE FOR DOING
8261C              DATA ANALYSIS.
8262C     REFERENCES--JOHNSON AND KOTZ, DISCRETE
8263C                 DISTRIBUTIONS, 1969.
8264C               --HASTINGS AND PEACOCK, STATISTICAL
8265C                 DISTRIBUTIONS--A HANDBOOK FOR
8266C                 STUDENTS AND PRACTITIONERS, 1975,
8267C     WRITTEN BY--JAMES J. FILLIBEN
8268C                 STATISTICAL ENGINEERING DIVISION
8269C                 INFORMATION TECHNOLOGY LABORATORY
8270C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
8271C                 GAITHERSBURG, MD 20899-8980
8272C                 PHONE--301-975-2855
8273C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
8274C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
8275C     LANGUAGE--ANSI FORTRAN (1966)
8276C               EXCEPTION--HOLLERITH STRINGS IN FORMAT STATEMENTS
8277C                          DENOTED BY QUOTES RATHER THAN NH.
8278C     VERSION NUMBER--94/9
8279C     ORIGINAL VERSION--SEPTEMBER 1994.
8280C
8281C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
8282C
8283C---------------------------------------------------------------------
8284C
8285      LOGICAL POINT
8286C
8287      DOUBLE PRECISION DPPF
8288C
8289C-----COMMON----------------------------------------------------------
8290C
8291      INCLUDE 'DPCOP2.INC'
8292C
8293C-----START POINT-----------------------------------------------------
8294C
8295C     CHECK THE INPUT ARGUMENTS FOR ERRORS
8296C
8297      PPF=0.0
8298      IF(P.LT.0.0.OR.P.GT.1.0)THEN
8299        WRITE(ICOUT,1)
8300    1   FORMAT('***** ERROR--THE FIRST ARGUMENT TO HYPPPF ',
8301     1         'IS OUTSIDE THE ALLOWABLE (0,1) INTERVAL')
8302        CALL DPWRST('XXX','BUG ')
8303        WRITE(ICOUT,46)P
8304        CALL DPWRST('XXX','BUG ')
8305        GOTO9000
8306      ELSEIF(N.LE.0.OR.N.GT.M)THEN
8307        WRITE(ICOUT,11)
8308   11   FORMAT('***** ERROR--THE THIRD ARGUMENT TO HYPPPF ',
8309     1         '(THE NUMBER OF MARKED ITEMS)')
8310        CALL DPWRST('XXX','BUG ')
8311        WRITE(ICOUT,12)
8312   12   FORMAT('      IS LESS THAN ZERO OR GREATER THAN THE ',
8313     1         'POPULATION SIZE.')
8314        CALL DPWRST('XXX','BUG ')
8315        WRITE(ICOUT,46)N
8316        CALL DPWRST('XXX','BUG ')
8317        GOTO9000
8318      ELSEIF(K.LE.0.OR.K.GT.M)THEN
8319        WRITE(ICOUT,21)
8320   21   FORMAT('***** ERROR--THE SECOND ARGUMENT TO HYPPPF ',
8321     1         '(THE SAMPLE SIZE) ')
8322        CALL DPWRST('XXX','BUG ')
8323        WRITE(ICOUT,22)
8324   22   FORMAT('      IS LESS THAN ZERO OR GREATER THAN THE ',
8325     1         'POULATION SIZE.')
8326        CALL DPWRST('XXX','BUG ')
8327        WRITE(ICOUT,46)K
8328        CALL DPWRST('XXX','BUG ')
8329        GOTO9000
8330      ENDIF
8331   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',I8,'.')
8332C
8333      PPF=0.0
8334      IX0=0
8335      IX1=0
8336      IX2=0
8337      P0=0.0
8338      P1=0.0
8339      P2=0.0
8340C
8341C     TREAT CERTAIN SPECIAL CASES IMMEDIATELY--
8342C     1) P = 0.0 OR 1.0
8343C
8344      IF(P.EQ.0.0)GOTO110
8345      IF(P.EQ.1.0)GOTO120
8346      GOTO190
8347  110 PPF=0.0
8348      RETURN
8349  120 PPF=REAL(MIN(N,K))
8350      RETURN
8351  190 CONTINUE
8352C
8353C     DETERMINE AN INITIAL APPROXIMATION TO THE HYPERGEOMETRIC
8354C     PERCENT POINT BY USE OF THE BINOMIAL APPROXIMATION
8355C     TO THE HYPERGEOMETRIC.
8356C
8357      PPAR=REAL(N)/REAL(M)
8358      IF(PPAR.LT.0.0.OR.PPAR.GT.1.0)PPAR=0.5
8359      CALL BINPPF(DBLE(P),DBLE(PPAR),K,DPPF)
8360      IX2=INT(DPPF)
8361C
8362C     CHECK AND MODIFY (IF NECESSARY) THIS INITIAL
8363C     ESTIMATE OF THE PERCENT POINT
8364C     TO ASSURE THAT IT BE IN THE CLOSED INTERVAL 0 TO MIN(N,K).
8365C
8366      ITERM=MIN(N,K)
8367      IF(IX2.LT.0)IX2=0
8368      IF(IX2.GT.ITERM)IX2=ITERM
8369C
8370C     DETERMINE UPPER AND LOWER BOUNDS ON THE DESIRED
8371C     PERCENT POINT BY ITERATING OUT (BOTH BELOW AND ABOVE)
8372C     FROM THE ORIGINAL APPROXIMATION AT STEPS
8373C     OF 1 STANDARD DEVIATION.
8374C     THE RESULTING BOUNDS WILL BE AT MOST
8375C     1 STANDARD DEVIATION APART.
8376C
8377      IX0=0
8378      IX1=N
8379      SD=(REAL(M-K)/REAL(M-1))*REAL(K)*(REAL(N)/REAL(M))*
8380     1(1.0-REAL(N)/REAL(M))
8381      ISD=INT(SD+1.0)
8382      POINT=.FALSE.
8383      CALL HYPCDF(IX2,K,N,M,POINT,P2)
8384C
8385      IF(P2.LT.P)GOTO210
8386      GOTO250
8387C
8388  210 CONTINUE
8389      IX0=IX2
8390      I=1
8391  215 CONTINUE
8392      IX2=IX0+ISD
8393      IF(IX2.GE.IX1)GOTO275
8394      CALL HYPCDF(IX2,K,N,M,POINT,P2)
8395      IF(P2.GE.P)GOTO230
8396      IX0=IX2
8397      I=I+1
8398      IF(I.LE.1000000)GOTO215
8399      WRITE(ICOUT,249)
8400      CALL DPWRST('XXX','BUG ')
8401      WRITE(ICOUT,222)
8402      CALL DPWRST('XXX','BUG ')
8403      GOTO950
8404  230 CONTINUE
8405      IX1=IX2
8406      GOTO275
8407C
8408  250 CONTINUE
8409      IX1=IX2
8410      I=1
8411  255 CONTINUE
8412      IX2=IX1-ISD
8413      IF(IX2.LE.IX0)GOTO275
8414      CALL HYPCDF(IX2,K,N,M,POINT,P2)
8415      IF(P2.LT.P)GOTO270
8416      IX1=IX2
8417C
8418      I=I+1
8419      IF(I.LE.1000000)GOTO255
8420      WRITE(ICOUT,249)
8421      CALL DPWRST('XXX','BUG ')
8422      WRITE(ICOUT,262)
8423      CALL DPWRST('XXX','BUG ')
8424      GOTO950
8425  270 CONTINUE
8426      IX0=IX2
8427C
8428  275 CONTINUE
8429      IF(IX0.EQ.IX1)GOTO280
8430      GOTO295
8431  280 CONTINUE
8432      IF(IX0.EQ.0)GOTO285
8433      IF(IX0.EQ.N)GOTO290
8434      WRITE(ICOUT,249)
8435      CALL DPWRST('XXX','BUG ')
8436      WRITE(ICOUT,282)
8437      CALL DPWRST('XXX','BUG ')
8438      GOTO950
8439  285 CONTINUE
8440      IX1=IX1+1
8441      GOTO295
8442  290 CONTINUE
8443      IX0=IX0-1
8444  295 CONTINUE
8445C
8446C     COMPUTE HYPERGEOMETRIC PROBABILITIES FOR THE
8447C     DERIVED LOWER AND UPPER BOUNDS.
8448C
8449      CALL HYPCDF(IX0,K,N,M,POINT,P0)
8450      CALL HYPCDF(IX1,K,N,M,POINT,P1)
8451C
8452C     CHECK THE PROBABILITIES FOR PROPER ORDERING
8453C
8454      IF(P0.LT.P.AND.P.LE.P1)GOTO490
8455      IF(P0.EQ.P)GOTO410
8456      IF(P1.EQ.P)GOTO420
8457      IF(P0.GT.P1)GOTO430
8458      IF(P0.GT.P)GOTO440
8459      IF(P1.LT.P)GOTO450
8460      WRITE(ICOUT,249)
8461      CALL DPWRST('XXX','BUG ')
8462      WRITE(ICOUT,401)
8463      CALL DPWRST('XXX','BUG ')
8464      GOTO950
8465  410 CONTINUE
8466      PPF=IX0
8467      RETURN
8468  420 CONTINUE
8469      PPF=IX1
8470      RETURN
8471  430 CONTINUE
8472      WRITE(ICOUT,249)
8473      CALL DPWRST('XXX','BUG ')
8474      WRITE(ICOUT,431)
8475      CALL DPWRST('XXX','BUG ')
8476      GOTO950
8477  440 CONTINUE
8478      WRITE(ICOUT,249)
8479      CALL DPWRST('XXX','BUG ')
8480      WRITE(ICOUT,441)
8481      CALL DPWRST('XXX','BUG ')
8482      GOTO950
8483  450 CONTINUE
8484      WRITE(ICOUT,249)
8485      CALL DPWRST('XXX','BUG ')
8486      WRITE(ICOUT,451)
8487      CALL DPWRST('XXX','BUG ')
8488      GOTO950
8489  490 CONTINUE
8490C
8491C     THE STOPPING CRITERION IS THAT THE LOWER BOUND
8492C     AND UPPER BOUND ARE EXACTLY 1 UNIT APART.
8493C     CHECK TO SEE IF IX1 = IX0 + 1;
8494C     IF SO, THE ITERATIONS ARE COMPLETE;
8495C     IF NOT, THEN BISECT, COMPUTE PROBABILIIES,
8496C     CHECK PROBABILITIES, AND CONTINUE ITERATING
8497C     UNTIL IX1 = IX0 + 1.
8498C
8499  300 CONTINUE
8500      IX0P1=IX0+1
8501      IF(IX1.EQ.IX0P1)GOTO690
8502      IX2=(IX0+IX1)/2
8503      IF(IX2.EQ.IX0)GOTO610
8504      IF(IX2.EQ.IX1)GOTO620
8505      CALL HYPCDF(IX2,K,N,M,POINT,P2)
8506      IF(P0.LT.P2.AND.P2.LT.P1)GOTO630
8507      IF(P2.LE.P0)GOTO640
8508      IF(P2.GE.P1)GOTO650
8509  610 WRITE(ICOUT,249)
8510      CALL DPWRST('XXX','BUG ')
8511      WRITE(ICOUT,611)
8512      CALL DPWRST('XXX','BUG ')
8513      GOTO950
8514  620 WRITE(ICOUT,249)
8515      CALL DPWRST('XXX','BUG ')
8516      WRITE(ICOUT,611)
8517      CALL DPWRST('XXX','BUG ')
8518      GOTO950
8519  630 CONTINUE
8520      IF(P2.LE.P)GOTO635
8521      IX1=IX2
8522      P1=P2
8523      GOTO300
8524  635 CONTINUE
8525      IX0=IX2
8526      P0=P2
8527      GOTO300
8528  640 CONTINUE
8529      WRITE(ICOUT,249)
8530      CALL DPWRST('XXX','BUG ')
8531      WRITE(ICOUT,641)
8532      CALL DPWRST('XXX','BUG ')
8533      GOTO950
8534  650 CONTINUE
8535      WRITE(ICOUT,249)
8536      CALL DPWRST('XXX','BUG ')
8537      WRITE(ICOUT,651)
8538      CALL DPWRST('XXX','BUG ')
8539      GOTO950
8540  690 CONTINUE
8541      PPF=IX1
8542      IF(P0.EQ.P)PPF=IX0
8543      RETURN
8544C
8545  950 CONTINUE
8546      WRITE(ICOUT,240)IX0,P0
8547      CALL DPWRST('XXX','BUG ')
8548      WRITE(ICOUT,241)IX1,P1
8549      CALL DPWRST('XXX','BUG ')
8550      WRITE(ICOUT,242)IX2,P2
8551      CALL DPWRST('XXX','BUG ')
8552      WRITE(ICOUT,244)P
8553      CALL DPWRST('XXX','BUG ')
8554C
8555  222 FORMAT('NO UPPER BOUND FOUND AFTER 10**7 ITERATIONS')
8556  240 FORMAT('IX0  = ',I8,10X,'P0 = ',F14.7)
8557  241 FORMAT('IX1  = ',I8,10X,'P1 = ',F14.7)
8558  242 FORMAT('IX2  = ',I8,10X,'P2 = ',F14.7)
8559  244 FORMAT('P    = ',F14.7)
8560  249 FORMAT('***** INTERNAL ERROR IN HYPPPF SUBROUTINE *****')
8561  262 FORMAT('NO LOWER BOUND FOUND AFTER 10**7 ITERATIONS')
8562  282 FORMAT('LOWER AND UPPER BOUND IDENTICAL')
8563  401 FORMAT('IMPOSSIBLE BRANCH CONDITION ENCOUNTERED')
8564  431 FORMAT('LOWER BOUND PROBABILITY (P0) GREATER THAN ',
8565     1       'UPPER BOUND PROBABILITY (P1)')
8566  441 FORMAT('LOWER BOUND PROBABILITY (P0) GREATER THAN ',
8567     1       'INPUT PROBABILITY (P)')
8568  451 FORMAT('UPPER BOUND PROBABILITY (P1) LESS    THAN ',
8569     1       'INPUT PROBABILITY (P)')
8570  611 FORMAT('BISECTION VALUE (X2) = LOWER BOUND (X0)')
8571CC621 FORMAT('BISECTION VALUE (X2) = UPPER BOUND (X1)')
8572  641 FORMAT('BISECTION VALUE PROBABILITY (P2) ',
8573     1       'LESS THAN LOWER BOUND PROBABILITY (P0)')
8574  651 FORMAT('BISECTION VALUE PROBABILITY (P2) ',
8575     1       'GREATER THAN UPPER BOUND PROBABILITY (P1)')
8576C
8577 9000 CONTINUE
8578      RETURN
8579      END
8580      SUBROUTINE HYPRAN(KK,NN1,NN2,ISEED,JX)
8581CCCCC SUBROUTINE H2PEC(KK,NN1,NN2,ISEED,JX)
8582C
8583C      ALGORITHM 668, COLLECTED ALGORITHMS FROM ACM.
8584C      THIS WORK PUBLISHED IN TRANSACTIONS ON MATHEMATICAL SOFTWARE,
8585C      VOL. 14, NO. 4, PP. 397-398.
8586C
8587C
8588C     HYPERGEOMETRIC RANDOM VARIATE GENERATOR
8589C
8590C     METHOD
8591C        IF (MODE - MAX(0,KK-NN2) .LT. 10), USE THE INVERSE CDF.
8592C           OTHERWISE, USE ALGORITHM H2PE: ACCEPTANCE-REJECTION VIA
8593C           THREE REGION COMPOSITION.  THE THREE REGIONS ARE A
8594C           RECTANGLE, AND EXPONENTIAL LEFT AND RIGHT TAILS.
8595C        H2PE  REFERS TO HYPERGEOMETRIC-2 POINTS-EXPONENTIAL TAILS.
8596C        H2PEC REFERS TO H2PE AND "COMBINED."  THUS H2PE IS THE
8597C           RESEARCH RESULT AND H2PEC IS THE IMPLEMENTATION OF A
8598C           COMPLETE USABLE ALGORITHM.
8599C
8600C     REFERENCE
8601C        VORATAS KACHITVICHYANUKUL AND BRUCE SCHMEISER,
8602C
8603C        "COMPUTER GENERATION OF HYPERGEOMETRIC RANDOM VARIATES,"
8604C        JOURNAL OF STATISTICAL COMPUTATION AND SIMULATION,
8605C        22(1985), 2, 1985, 127-145.
8606C
8607C     REQUIRED SUBPROGRAMS
8608C        AFC() : A DOUBLE-PRECISION FUNCTION TO EVALUATE
8609C                   THE LOGARITHM OF THE FACTORIAL.
8610C        RAND(): A UNIFORM (0,1) RANDOM NUMBER GENERATOR.
8611C
8612C     ARGUMENTS
8613C        NN1   : NUMBER OF WHITE BALLS          (INPUT)
8614C        NN2   : NUMBER OF BLACK BALLS          (INPUT)
8615C        KK    : NUMBER OF BALLS TO BE DRAWN    (INPUT)
8616C        ISEED : RANDOM NUMBER SEED  (INPUT AND OUTPUT)
8617C        JX    : NUMBER OF WHITE BALLS DRAWN   (OUTPUT)
8618C
8619C     STRUCTURAL VARIABLES
8620C        REJECT: LOGICAL FLAG TO REJECT THE VARIATE GENERATE BY H2PE.
8621C        SETUP1: LOGICAL FLAG TO SETUP FOR NEW VALUES OF NN1 OR NN2.
8622C        SETUP2: LOGICAL FLAG TO SETUP FOR NEW VALUES OF KK.
8623C        IX    : INTEGER CANDIDATE VALUE.
8624C        M     : DISTRIBUTION MODE.
8625C        MINJX : DISTRIBUTION LOWER BOUND.
8626C        MAXJX : DISTRIBUTION UPPER BOUND.
8627C        KS    : SAVED VALUE OF KK FROM THE LAST CALL TO H2PEC.
8628C        N1S   : SAVED VALUE OF NN1 FROM THE LAST CALL TO H2PEC.
8629C        N2S   : SAVED VALUE OF NN2 FROM THE LAST CALL TO H2PEC.
8630C        K,N1,N2: ALTERNATE VARIABLES FOR KK, NN1, AND NN2
8631C                   (ALWAYS (N1 .LE. N2) AND (K .LE. (N1+N2)/2)).
8632C        TN    : TOTAL NUMBER OF WHITE AND BLACK BALLS
8633C
8634C     INVERSE-TRANSFORMATION VARIABLES
8635C        CON   : NATURAL LOGARITHM  OF SCALE.
8636C        P     : CURRENT SCALED PROBABILITY FOR THE INVERSE CDF.
8637C        SCALE : A BIG CONSTANT (1.E25) USED TO SCALE THE
8638C                   PROBABILITY TO AVOID NUMERICAL UNDERFLOW
8639C        U     : THE UNIFORM VARIATE BETWEEN (0, 1.E25).
8640C        W     : SCALED HYPERGEOMETRIC PROBABILITY OF MINJX.
8641C
8642C     H2PE VARIABLES
8643C        S     : DISTRIBUTION STANDARD DEVIATION.
8644C        D     : HALF THE AREA OF THE RECTANGLE.
8645C        XL    : LEFT END OF THE RECTANGLE.
8646C        XR    : RIGHT END OF THE RECTANGLE.
8647C        A     : A SCALING CONSTANT.
8648C        KL    : HIGHEST POINT OF THE LEFT-TAIL REGION.
8649C        KR    : HIGHEST POINT OF THE RIGHT-TAIL REGION.
8650C        LAMDL : RATE FOR THE LEFT EXPONENTIAL TAIL.
8651C        LAMDR : RATE FOR THE RIGHT EXPONENTIAL TAIL.
8652C        P1    : AREA OF THE RECTANGLE.
8653C        P2    : AREA OF THE LEFT EXPONENTIAL TAIL PLUS P1.
8654C        P3    : AREA OF THE RIGHT EXPONENTIAL TAIL PLUS P2.
8655C        U     : A UNIFORM (0,P3) RANDOM VARIATE USED FIRST TO SELECT
8656C                   ONE OF THE THREE REGIONS AND THEN CONDITIONALLY TO
8657C                   GENERATE A VALUE FROM THE REGION.
8658C        V     : U(0,1) RANDOM NUMBER USED TO GENERATE THE RANDOM
8659C                   VALUE OR TO ACCEPT OR REJECT THE CANDIDATE VALUE.
8660C        F     : THE HEIGHT OF THE SCALED DENSITY FUNCTION USED IN THE
8661C                   ACCEPT/REJECT DECISION WHEN BOTH M AND IX ARE SMALL.
8662C        I     : INDEX FOR EXPLICIT CALCULATION OF F FOR H2PE.
8663C
8664C   THE FOLLOWING VARIABLES ARE TEMPORARY VARIABLES USED IN
8665C   COMPUTING THE UPPER AND LOWER BOUNDS OF THE NATURAL LOGARITHM
8666C   OF THE SCALED DENSITY.  THE DETAILED DESCRIPTION IS GIVEN IN
8667C   PROPOSITIONS 2 AND 3 OF THE APPENDIX IN THE REFERENCE.
8668C              Y, Y1, YM, YN, YK, NK, R, S, T, E, G, DG, GU, GL, XM,
8669C              XN, XK, NM
8670C
8671C        Y     : PRELIMINARY CONTINUOUS CANDIDATE VALUE, FLOAT(IX)
8672C        UB    : UPPER BOUND FOR THE NATURAL LOGARITHM OF THE SCALED
8673C                   DENSITY.
8674C        ALV   : NATURAL LOGARITHM OF THE ACCEPT/REJECT VARIATE V.
8675C        DR, DS, DT, DE: ONE OF MANY TERMS SUBTRACTED FROM THE UPPER
8676C                   BOUND TO OBTAIN THE LOWER BOUND ON THE NATURAL
8677C                   LOGARITHM OF THE SCALED DENSITY.
8678C        DELTAU: A CONSTANT, THE VALUE 0.0034 IS OBTAINED BY SETTING
8679C                   N1 = N2 = 200, K = 199, M = 100, AND Y = 50 IN
8680C                   THE FUNCTION DELTA_U IN LEMMA 1 AND ROUNDING THE
8681C                   VALUE TO FOUR DECIMAL PLACES.
8682C        DELTAL: A CONSTANT, THE VALUE 0.0078 IS OBTAINED BY SETTING
8683C                   N1 = N2 = 200, K = 199, M = 100, AND Y = 50 IN
8684C                   THE FUNCTION DELTA_L IN LEMMA 1 AND ROUNDING THE
8685C                   VALUE TO FOUR DECIMAL PLACES.
8686C
8687      SAVE
8688CCCCC SEPTEMBER 1995.  USE DLNGAM FUNCTION IN PLACE OF AFC
8689CCCCC DOUBLE PRECISION AFC,CON,P,SCALE,U,W,A,XL,XR
8690      DOUBLE PRECISION DLNGAM,CON,P,SCALE,U,W,A,XL,XR
8691      REAL KL,KR,LAMDL,LAMDR,NK,NM
8692CCCCC AUGUST 1995.  ADD FOLLOWING ARRAY FOR DATAPLOT
8693CCCCC UNIFORM RANDOM NUMBER GENERATOR.
8694      REAL XTEMP(1)
8695C
8696      LOGICAL REJECT,SETUP1,SETUP2
8697      DATA KS,N1S,N2S/-1,-1,-1/
8698      DATA CON,DELTAL,DELTAU,SCALE/57.56462733D0,0.0078,0.0034,1.D25/
8699C
8700C*****CHECK PARAMETER VALIDITY
8701C
8702      IF (  (NN1 .LT. 0)  .OR.
8703     $      (NN2 .LT. 0)  .OR.
8704     $      (KK  .LT. 0)  .OR.
8705     $      (KK  .GT. NN1 + NN2 )  ) THEN
8706         JX     = -1
8707         RETURN
8708      ENDIF
8709C
8710C*****IF NEW PARAMETER VALUES, INITIALIZE
8711C
8712      REJECT = .TRUE.
8713      SETUP1 = .FALSE.
8714      SETUP2 = .FALSE.
8715      IF ((NN1 .NE. N1S) .OR. (NN2 .NE. N2S))  THEN
8716            SETUP1 = .TRUE.
8717            SETUP2 = .TRUE.
8718      ELSEIF (KK .NE. KS)  THEN
8719            SETUP2 = .TRUE.
8720      ENDIF
8721C
8722      IF (SETUP1)  THEN
8723         N1S   = NN1
8724         N2S   = NN2
8725         TN    = REAL(NN1 + NN2)
8726         IF (NN1 .LE. NN2)  THEN
8727            N1 = NN1
8728            N2 = NN2
8729         ELSE
8730            N1 = NN2
8731            N2 = NN1
8732         ENDIF
8733      ENDIF
8734C
8735      IF (SETUP2)  THEN
8736         KS    = KK
8737         IF (KK+KK .GE. INT(TN+0.1))  THEN
8738            K  = INT(TN - REAL(KK))
8739         ELSE
8740            K  = KK
8741         ENDIF
8742      ENDIF
8743C
8744      IF (SETUP1 .OR. SETUP2)  THEN
8745         M     = INT ((K+1.) * (N1+1.) / (TN+2.))
8746         MINJX = MAX (0, K-N2)
8747         MAXJX = MIN (N1, K)
8748      ENDIF
8749C
8750C*****GENERATE RANDOM VARIATE
8751C
8752      IF (MINJX .EQ. MAXJX)  THEN
8753C
8754C        ...DEGENERATE DISTRIBUTION...
8755C
8756         IX      = MAXJX
8757         RETURN
8758      ELSEIF (M-MINJX .LT. 10)  THEN
8759C
8760C        ...INVERSE TRANSFORMATION...
8761C
8762         IF (SETUP1 .OR. SETUP2)  THEN
8763            IF (K .LT. N2) THEN
8764CCCCC SEPTEMBER 1995.  USE DLNGAM INSTEAD OF AFC
8765CCCCC          W = EXP (CON + AFC(N2) + AFC(N1+N2-K)
8766CCCCC$                       - AFC(N2-K) - AFC(N1+N2))
8767               W = EXP (CON + DLNGAM(DBLE(N2+1))+DLNGAM(DBLE(N1+N2-K+1))
8768     $                 - DLNGAM(DBLE(N2-K+1)) - DLNGAM(DBLE(N1+N2+1)))
8769            ELSE
8770CCCCC SEPTEMBER 1995.  USE DLNGAM INSTEAD OF AFC
8771CCCCC          W = EXP (CON + AFC(N1) + AFC(K)
8772CCCCC$                       - AFC(K-N2) - AFC(N1+N2))
8773               W = EXP (CON + DLNGAM(DBLE(N1+1)) + DLNGAM(DBLE(K+1))
8774     $                 - DLNGAM(DBLE(K-N2+1)) - DLNGAM(DBLE(N1+N2+1)))
8775            ENDIF
8776         ENDIF
8777C
8778   10    P  = W
8779         IX = MINJX
8780CCCCC SEPTEMBER 1995.  REPLACE RAND WITH DATAPLOT UNIFORM RANDOM
8781CCCCC NUMBER GENERATOR.
8782         NTEMP=1
8783         CALL UNIRAN(NTEMP,ISEED,XTEMP)
8784         U = XTEMP(1)*SCALE
8785CCCCCC   U  = RANDDP (ISEED) * SCALE
8786   20    IF (U .GT. P)  THEN
8787            U  = U - P
8788            P  = P * (N1-IX)*(K-IX)
8789            IX = IX + 1
8790            P  = P / IX / (N2-K+IX)
8791            IF (IX .GT. MAXJX)  GO TO 10
8792            GO TO 20
8793         ENDIF
8794      ELSE
8795C
8796C        ...H2PE...
8797C
8798         IF (SETUP1 .OR. SETUP2)  THEN
8799            S     = SQRT ((TN-K) * K * N1 * N2 / (TN-1) / TN /TN)
8800C
8801C           ...REMARK:  D IS DEFINED IN REFERENCE WITHOUT INT.
8802C           THE TRUNCATION CENTERS THE CELL BOUNDARIES AT 0.5
8803C
8804            D     = INT (1.5*S) + .5
8805            XL    = M - D + .5
8806            XR    = M + D + .5
8807CCCCC SEPTEMBER 1995.  USE DLNGAM INSTEAD OF AFC
8808CCCCC       A     = AFC(M) + AFC(N1-M) + AFC(K-M) + AFC(N2-K+M)
8809CCCCC       KL    = EXP (A - AFC(INT(XL)) - AFC(INT(N1-XL))
8810CCCCC$                  - AFC(INT(K-XL)) - AFC(INT(N2-K+XL)))
8811CCCCC       KR    = EXP (A - AFC(INT(XR-1)) - AFC(INT(N1-XR+1))
8812CCCCC$                  - AFC(INT(K-XR+1)) - AFC(INT(N2-K+XR-1)))
8813            A     = DLNGAM(DBLE(M+1)) + DLNGAM(DBLE(N1-M+1)) +
8814     1              DLNGAM(DBLE(K-M+1)) + DLNGAM(DBLE(N2-K+M+1))
8815            KL    = EXP (A - DLNGAM(DBLE(INT(XL)+1)) -
8816     1              DLNGAM(DBLE(INT(N1-XL)+1))
8817     1              - DLNGAM(DBLE(INT(K-XL)+1)) -
8818     1              DLNGAM(DBLE(INT(N2-K+XL)+1)))
8819            KR    = EXP(A-DLNGAM(DBLE(INT(XR-1)+1)) -
8820     1              DLNGAM(DBLE(INT(N1-XR+1)+1))
8821     1              - DLNGAM(DBLE(INT(K-XR+1)+1)) -
8822     1              DLNGAM(DBLE(INT(N2-K+XR-1)+1)))
8823            LAMDL = -LOG (XL * (N2-K+XL) / (N1-XL+1) / (K-XL+1))
8824            LAMDR = -LOG ((N1-XR+1) * (K-XR+1) / XR / (N2-K+XR))
8825            P1    = D + D
8826            P2    = P1 + KL / LAMDL
8827            P3    = P2 + KR / LAMDR
8828         ENDIF
8829C
8830 30      CONTINUE
8831CCCCC AUGUST 1995.  REPLACE RAND WITH DATAPLOT UNIFORM RANDOM
8832CCCCC NUMBER GENERATOR.
8833         NTEMP=1
8834         CALL UNIRAN(NTEMP,ISEED,XTEMP)
8835         U = XTEMP(1) * P3
8836         CALL UNIRAN(NTEMP,ISEED,XTEMP)
8837         V = XTEMP(1)
8838CCC30    U     = RANDDP (ISEED) * P3
8839CCCCC    V     = RANDDP (ISEED)
8840         IF (U .LT. P1)  THEN
8841C
8842C           ...RECTANGULAR REGION...
8843C
8844            IX    = INT(XL + U)
8845         ELSEIF (U .LE. P2)  THEN
8846C
8847C           ...LEFT TAIL...
8848C
8849            IX    = INT(XL + LOG(V)/LAMDL)
8850            IF (IX .LT. MINJX)  GO TO 30
8851            V     = V * (U-P1) * LAMDL
8852         ELSE
8853C
8854C           ...RIGHT TAIL...
8855C
8856            IX    = INT(XR - LOG(V)/LAMDR)
8857            IF (IX .GT. MAXJX)  GO TO 30
8858            V     = V * (U-P2) * LAMDR
8859         ENDIF
8860C
8861C        ...ACCEPTANCE/REJECTION TEST...
8862C
8863         IF (M .LT. 100 .OR. IX .LE. 50)  THEN
8864C
8865C           ...EXPLICIT EVALUATION...
8866C
8867            F     = 1.0
8868            IF (M .LT. IX)  THEN
8869               DO 40 I = M+1,IX
8870                  F      = F * (N1-I+1) * (K-I+1) / (N2-K+I) / I
8871   40          CONTINUE
8872            ELSEIF (M .GT. IX)  THEN
8873               DO 50 I = IX+1,M
8874                  F      = F * I * (N2-K+I) / (N1-I) / (K-I)
8875   50          CONTINUE
8876            ENDIF
8877            IF (V .LE. F)  THEN
8878               REJECT = .FALSE.
8879            ENDIF
8880         ELSE
8881C
8882C        ...SQUEEZE USING UPPER AND LOWER BOUNDS...
8883C
8884            Y   = IX
8885            Y1  = Y + 1.
8886            YM  = Y - M
8887            YN  = N1 - Y + 1.
8888            YK  = K - Y + 1.
8889            NK  = N2 - K + Y1
8890            R   = -YM / Y1
8891            S   = YM / YN
8892            T   = YM / YK
8893            E   = -YM / NK
8894            G   = YN * YK / (Y1*NK) - 1.
8895            DG  = 1.
8896            IF (G .LT. 0.)  DG = 1.+G
8897            GU  = G * (1.+G*(-.5+G/3.))
8898            GL  = GU - .25 * (G*G)**2 / DG
8899            XM  = M + .5
8900            XN  = N1 - M + .5
8901            XK  = K - M + .5
8902            NM  = N2 - K + XM
8903            UB  = Y * GU - M * GL + DELTAU
8904     $              + XM * R * (1.+R*(-.5+R/3.))
8905     $              + XN * S * (1.+S*(-.5+S/3.))
8906     $              + XK * T * (1.+T*(-.5+T/3.))
8907     $              + NM * E * (1.+E*(-.5+E/3.))
8908C
8909C           ...TEST AGAINST UPPER BOUND...
8910C
8911            ALV = LOG(V)
8912            IF (ALV .GT. UB)  THEN
8913               REJECT = .TRUE.
8914            ELSE
8915C
8916C              ...TEST AGAINST LOWER BOUND...
8917C
8918               DR = XM * (R*R)**2
8919               IF (R .LT. 0.)  DR = DR / (1.+R)
8920               DS = XN * (S*S)**2
8921               IF (S .LT. 0.)  DS = DS / (1.+S)
8922               DT = XK * (T*T)**2
8923               IF (T .LT. 0.)  DT = DT / (1.+T)
8924               DE = NM * (E*E)**2
8925               IF (E .LT. 0.)  DE = DE / (1.+E)
8926               IF (ALV .LT. UB-.25*(DR+DS+DT+DE)
8927     $                         +(Y+M)*(GL-GU)-DELTAL)  THEN
8928                  REJECT = .FALSE.
8929               ELSE
8930C
8931C                 ...STIRLING'S FORMULA TO MACHINE ACCURACY...
8932C
8933CCCCC SEPTEMBER 1995.  USE DLNGAM INSTEAD OF AFC
8934CCCCC             IF (ALV .LE. (A - AFC(IX) - AFC(N1-IX)
8935CCCCC$                       - AFC(K-IX) - AFC(N2-K+IX)) )  THEN
8936                  IF (ALV .LE.(A-DLNGAM(DBLE(IX+1)) -
8937     $                        DLNGAM(DBLE(N1-IX+1))
8938     $                        - DLNGAM(DBLE(K-IX+1))
8939     $                        - DLNGAM(DBLE(N2-K+IX+1))))
8940     $            THEN
8941                     REJECT = .FALSE.
8942                  ELSE
8943                     REJECT = .TRUE.
8944                  ENDIF
8945               ENDIF
8946            ENDIF
8947         ENDIF
8948         IF (REJECT)  GO TO 30
8949      ENDIF
8950
8951C
8952C*****RETURN APPROPRIATE VARIATE
8953C
8954      IF (KK + KK .GE. TN)  THEN
8955         IF (NN1 .GT. NN2)  THEN
8956            IX = KK - NN2 + IX
8957         ELSE
8958            IX =  NN1 - IX
8959         ENDIF
8960      ELSE
8961         IF (NN1 .GT. NN2)  IX = KK - IX
8962      ENDIF
8963      JX = IX
8964      RETURN
8965      END
8966      DOUBLE PRECISION FUNCTION I0INT(XVALUE)
8967C
8968C   DESCRIPTION:
8969C      This program computes the integral of the modified Bessel
8970C      function I0(x) using the definition
8971C
8972C         I0INT(x) = {integral 0 to x} I0(t) dt
8973C
8974C      The program uses Chebyshev expansions, the coefficients of
8975C      which are given to 20 decimal places.
8976C
8977C
8978C   ERROR RETURNS:
8979C      If |XVALUE| larger than a certain limit, the value of
8980C      I0INT would cause an overflow. If such a situation occurs
8981C      the programs prints an error message, and returns the
8982C      value sign(XVALUE)*XMAX, where XMAX is the largest
8983C      acceptable floating-pt. value.
8984C
8985C
8986C   MACHINE-DEPENDENT CONSTANTS:
8987C
8988C      NTERM1 - The no. of terms to be used from the array ARI01.
8989C                The recommended value is such that
8990C                    ABS(ARI01(NTERM1)) < EPS/100
8991C
8992C      NTERM2 - The no. of terms to be used from the array ARI0A.
8993C                The recommended value is such that
8994C                    ABS(ARI0A(NTERM2)) < EPS/100
8995C
8996C      XLOW - The value below which I0INT(x) = x, to machine precision.
8997C             The recommended value is
8998C                  sqrt(12*EPS).
8999C
9000C      XHIGH - The value above which overflow will occur. The
9001C              recommended value is
9002C                  ln(XMAX) + 0.5*ln(ln(XMAX)) + ln(2).
9003C
9004C      For values of EPS and XMAX refer to the file MACHCON.TXT.
9005C
9006C      The machine-dependent constants are computed internally by
9007C      using the D1MACH subroutine.
9008C
9009C
9010C   INTRINSIC FUNCTIONS USED:
9011C
9012C      EXP , LOG , SQRT
9013C
9014C
9015C   OTHER MISCFUN SUBROUTINES USED:
9016C
9017C          CHEVAL , ERRPRN, D1MACH
9018C
9019C
9020C   AUTHOR:
9021C
9022C      Dr. Allan J. MacLeod,
9023C      Dept. of Mathematics and Statistics,
9024C      University of Paisley,
9025C      High St.,
9026C      Paisley,
9027C      SCOTLAND
9028C      PA1 2BE
9029C
9030C      (e-mail :   macl_ms0@paisley.ac.uk )
9031C
9032C
9033C   LATEST REVISION:
9034C                   23 January, 1996
9035C
9036      INTEGER IND,NTERM1,NTERM2
9037      DOUBLE PRECISION ARI01(0:28),ARI0A(0:33),
9038     1     ATEEN,CHEVAL,HALF,LNR2PI,ONEHUN,T,TEMP,THREE,THIRT6,
9039     2     X,XHIGH,XLOW,XVALUE,ZERO
9040C
9041C-----COMMON----------------------------------------------------------
9042C
9043      INCLUDE 'DPCOMC.INC'
9044      INCLUDE 'DPCOP2.INC'
9045C
9046CCCCC CHARACTER FNNAME*6,ERRMSG*26
9047CCCCC DATA FNNAME/'I0INT '/
9048CCCCC DATA ERRMSG/'SIZE OF ARGUMENT TOO LARGE'/
9049      DATA ZERO,HALF,THREE/ 0.0 D 0 , 0.5 D 0 , 3.0 D 0 /
9050      DATA ATEEN,THIRT6,ONEHUN/ 18.0 D 0 , 36.0 D 0 , 100.0 D 0/
9051      DATA LNR2PI/0.91893 85332 04672 74178 D 0/
9052      DATA ARI01(0)/  0.41227 90692 67815 16801  D    0/
9053      DATA ARI01(1)/ -0.34336 34515 00815 19562  D    0/
9054      DATA ARI01(2)/  0.22667 58871 57512 42585  D    0/
9055      DATA ARI01(3)/ -0.12608 16471 87422 60032  D    0/
9056      DATA ARI01(4)/  0.60124 84628 77799 0271   D   -1/
9057      DATA ARI01(5)/ -0.24801 20462 91335 8248   D   -1/
9058      DATA ARI01(6)/  0.89277 33895 65563 897    D   -2/
9059      DATA ARI01(7)/ -0.28325 37299 36696 605    D   -2/
9060      DATA ARI01(8)/  0.79891 33904 17129 94     D   -3/
9061      DATA ARI01(9)/ -0.20053 93366 09648 90     D   -3/
9062      DATA ARI01(10)/ 0.44168 16783 01431 3      D   -4/
9063      DATA ARI01(11)/-0.82237 70422 46068        D   -5/
9064      DATA ARI01(12)/ 0.12005 97942 19015        D   -5/
9065      DATA ARI01(13)/-0.11350 86500 4889         D   -6/
9066      DATA ARI01(14)/ 0.69606 01446 6            D   -9/
9067      DATA ARI01(15)/ 0.18062 27728 36           D   -8/
9068      DATA ARI01(16)/-0.26039 48137 0            D   -9/
9069      DATA ARI01(17)/-0.16618 8103               D  -11/
9070      DATA ARI01(18)/ 0.51050 0232               D  -11/
9071      DATA ARI01(19)/-0.41515 879                D  -12/
9072      DATA ARI01(20)/-0.73681 38                 D  -13/
9073      DATA ARI01(21)/ 0.12793 23                 D  -13/
9074      DATA ARI01(22)/ 0.10324 7                  D  -14/
9075      DATA ARI01(23)/-0.30379                    D  -15/
9076      DATA ARI01(24)/-0.1789                     D  -16/
9077      DATA ARI01(25)/ 0.673                      D  -17/
9078      DATA ARI01(26)/ 0.44                       D  -18/
9079      DATA ARI01(27)/-0.14                       D  -18/
9080      DATA ARI01(28)/-0.1                        D  -19/
9081      DATA ARI0A(0)/  2.03739 65457 11432 87070  D    0/
9082      DATA ARI0A(1)/  0.19176 31647 50331 0248   D   -1/
9083      DATA ARI0A(2)/  0.49923 33451 92881 47     D   -3/
9084      DATA ARI0A(3)/  0.22631 87103 65981 5      D   -4/
9085      DATA ARI0A(4)/  0.15868 21082 85561        D   -5/
9086      DATA ARI0A(5)/  0.16507 85563 6318         D   -6/
9087      DATA ARI0A(6)/  0.23850 58373 640          D   -7/
9088      DATA ARI0A(7)/  0.39298 51823 04           D   -8/
9089      DATA ARI0A(8)/  0.46042 71419 9            D   -9/
9090      DATA ARI0A(9)/ -0.70725 58172              D  -10/
9091      DATA ARI0A(10)/-0.67471 83961              D  -10/
9092      DATA ARI0A(11)/-0.20269 62001              D  -10/
9093      DATA ARI0A(12)/-0.87320 338                D  -12/
9094      DATA ARI0A(13)/ 0.17552 0014               D  -11/
9095      DATA ARI0A(14)/ 0.60383 944                D  -12/
9096      DATA ARI0A(15)/-0.39779 83                 D  -13/
9097      DATA ARI0A(16)/-0.80490 48                 D  -13/
9098      DATA ARI0A(17)/-0.11589 55                 D  -13/
9099      DATA ARI0A(18)/ 0.82731 8                  D  -14/
9100      DATA ARI0A(19)/ 0.28229 0                  D  -14/
9101      DATA ARI0A(20)/-0.77667                    D  -15/
9102      DATA ARI0A(21)/-0.48731                    D  -15/
9103      DATA ARI0A(22)/ 0.7279                     D  -16/
9104      DATA ARI0A(23)/ 0.7873                     D  -16/
9105      DATA ARI0A(24)/-0.785                      D  -17/
9106      DATA ARI0A(25)/-0.1281                     D  -16/
9107      DATA ARI0A(26)/ 0.121                      D  -17/
9108      DATA ARI0A(27)/ 0.214                      D  -17/
9109      DATA ARI0A(28)/-0.27                       D  -18/
9110      DATA ARI0A(29)/-0.36                       D  -18/
9111      DATA ARI0A(30)/ 0.7                        D  -19/
9112      DATA ARI0A(31)/ 0.6                        D  -19/
9113      DATA ARI0A(32)/-0.2                        D  -19/
9114      DATA ARI0A(33)/-0.1                        D  -19/
9115C
9116      XLOW=CPUMIN
9117C
9118C   Start computation
9119C
9120      IND = 1
9121      X = XVALUE
9122      IF ( XVALUE .LT. ZERO ) THEN
9123         IND = -1
9124         X = -X
9125      ENDIF
9126C
9127C   Compute the machine-dependent constants.
9128C
9129      T = LOG(D1MACH(2))
9130      XHIGH = T + LOG(T)*HALF - LOG(HALF)
9131C
9132C   Error test
9133C
9134      IF ( X .GT. XHIGH ) THEN
9135CCCCC    CALL ERRPRN(FNNAME,ERRMSG)
9136         WRITE(ICOUT,999)
9137         CALL DPWRST('XXX','BUG ')
9138         WRITE(ICOUT,101)X
9139         CALL DPWRST('XXX','BUG ')
9140         I0INT = EXP ( XHIGH - LNR2PI - HALF * LOG(XHIGH) )
9141         IF ( IND .EQ. -1 ) I0INT = -I0INT
9142         RETURN
9143      ENDIF
9144  999 FORMAT(1X)
9145  101 FORMAT('***** ERROR FROM I0INT--SIZE OF THE INPUT ARGUMENT ',
9146     1        'IS TOO LARGE, ARGUMENT = ',G15.7)
9147C
9148C   Continue with machine-constants
9149C
9150      TEMP = D1MACH(3)
9151      T = TEMP / ONEHUN
9152      IF ( X .LE. ATEEN ) THEN
9153         DO 10 NTERM1 = 28 , 0 , -1
9154            IF ( ABS(ARI01(NTERM1)) .GT. T ) GOTO 19
9155 10      CONTINUE
9156 19      XLOW = SQRT ( THIRT6 * TEMP / THREE )
9157      ELSE
9158         DO 40 NTERM2 = 33 , 0 , -1
9159            IF ( ABS(ARI0A(NTERM2)) .GT. T ) GOTO 49
9160 40      CONTINUE
9161 49      CONTINUE
9162      ENDIF
9163C
9164C   Code for 0 <= |x| <= 18
9165C
9166      IF ( X .LE. ATEEN ) THEN
9167         IF ( X .LT. XLOW ) THEN
9168            I0INT = X
9169         ELSE
9170            T = ( THREE * X - ATEEN ) / ( X + ATEEN )
9171            I0INT = X * EXP(X) * CHEVAL(NTERM1,ARI01,T)
9172         ENDIF
9173      ELSE
9174C
9175C   Code for |x| > 18
9176C
9177         T = ( THIRT6 / X - HALF ) - HALF
9178         TEMP = X - HALF*LOG(X) - LNR2PI + LOG(CHEVAL(NTERM2,ARI0A,T))
9179         I0INT = EXP(TEMP)
9180      ENDIF
9181      IF ( IND .EQ. -1 ) I0INT = -I0INT
9182      RETURN
9183      END
9184      DOUBLE PRECISION FUNCTION I0ML0(XVALUE)
9185C
9186C   DESCRIPTION:
9187C
9188C      This program calculates the function I0ML0 defined as
9189C
9190C                I0ML0(x) = I0(x) - L0(x)
9191C
9192C      where I0(x) is the modified Bessel function of the first kind of
9193C      order 0, and L0(x) is the modified Struve function of order 0.
9194C
9195C      The code uses Chebyshev expansions with the coefficients
9196C      given to an accuracy of 20D.
9197C
9198C
9199C   ERROR RETURNS:
9200C
9201C      The coefficients are only suitable for XVALUE >= 0.0. If
9202C      XVALUE < 0.0, an error message is printed and the function
9203C      returns the value 0.0
9204C
9205C
9206C   MACHINE-DEPENDENT PARAMETERS:
9207C
9208C      NTERM1 - INTEGER - The number of terms required for the array
9209C                         AI0L0. The recommended value is such that
9210C                              ABS(AI0L0(NTERM1)) < EPS/100
9211C
9212C      NTERM2 - INTEGER - The number of terms required for the array
9213C                         AI0L0A. The recommended value is such that
9214C                              ABS(AI0L0A(NTERM2)) < EPS/100
9215C
9216C      XLOW - DOUBLE PRECISION - The value below which I0ML0(x) = 1 to machine
9217C                    precision. The recommended value is
9218C                               EPSNEG
9219C
9220C      XHIGH - DOUBLE PRECISION - The value above which I0ML0(x) = 2/(pi*x) to
9221C                     machine precision. The recommended value is
9222C                               SQRT(800/EPS)
9223C
9224C      For values of EPS, and EPSNEG see the file MACHCON.TXT
9225C
9226C      The machine-dependent constants are computed internally by
9227C      using the D1MACH subroutine.
9228C
9229C
9230C   INTRINSIC FUNCTIONS USED:
9231C
9232C      SQRT
9233C
9234C
9235C   OTHER MISCFUN SUBROUTINES USED:
9236C
9237C          CHEVAL , ERRPRN, D1MACH
9238C
9239C
9240C   AUTHOR:
9241C          Dr. Allan J. MacLeod
9242C          Dept. of Mathematics and Statistics
9243C          University of Paisley
9244C          High St.
9245C          Paisley
9246C          SCOTLAND
9247C          PA1 2BE
9248C
9249C          ( e-mail: macl_ms0@paisley.ac.uk )
9250C
9251C
9252C   LATEST REVISION:
9253C                    23 January, 1996
9254C
9255      INTEGER NTERM1,NTERM2
9256      DOUBLE PRECISION AI0L0(0:23),AI0L0A(0:23),ATEHUN,CHEVAL,
9257     1     FORTY,ONE,ONEHUN,SIX,SIXTEN,T,TWOBPI,TWO88,X,XHIGH,
9258     2     XLOW,XSQ,XVALUE,ZERO
9259C
9260C-----COMMON----------------------------------------------------------
9261C
9262      INCLUDE 'DPCOMC.INC'
9263      INCLUDE 'DPCOP2.INC'
9264C
9265CCCCC CHARACTER FNNAME*6,ERRMSG*14
9266CCCCC DATA FNNAME/'I0ML0 '/
9267CCCCC DATA ERRMSG/'ARGUMENT < 0.0'/
9268      DATA ZERO,ONE/ 0.0 D 0 , 1.0 D 0 /
9269      DATA SIX,SIXTEN/ 6.0 D 0 , 16.0 D 0 /
9270      DATA FORTY,ONEHUN/ 40.0 D 0 , 100.0 D 0 /
9271      DATA TWO88,ATEHUN/ 288.0 D 0 , 800.0 D 0 /
9272      DATA TWOBPI/0.63661 97723 67581 34308 D 0/
9273      DATA AI0L0(0)/  0.52468 73679 14855 99138  D    0/
9274      DATA AI0L0(1)/ -0.35612 46069 96505 86196  D    0/
9275      DATA AI0L0(2)/  0.20487 20286 40099 27687  D    0/
9276      DATA AI0L0(3)/ -0.10418 64052 04026 93629  D    0/
9277      DATA AI0L0(4)/  0.46342 11095 54842 9228   D   -1/
9278      DATA AI0L0(5)/ -0.17905 87192 40349 8630   D   -1/
9279      DATA AI0L0(6)/  0.59796 86954 81143 177    D   -2/
9280      DATA AI0L0(7)/ -0.17177 75476 93565 429    D   -2/
9281      DATA AI0L0(8)/  0.42204 65446 91714 22     D   -3/
9282      DATA AI0L0(9)/ -0.87961 78522 09412 5      D   -4/
9283      DATA AI0L0(10)/ 0.15354 34234 86922 3      D   -4/
9284      DATA AI0L0(11)/-0.21978 07695 84743        D   -5/
9285      DATA AI0L0(12)/ 0.24820 68393 6666         D   -6/
9286      DATA AI0L0(13)/-0.20327 06035 607          D   -7/
9287      DATA AI0L0(14)/ 0.90984 19842 1            D   -9/
9288      DATA AI0L0(15)/ 0.25617 93929              D  -10/
9289      DATA AI0L0(16)/-0.71060 9790               D  -11/
9290      DATA AI0L0(17)/ 0.32716 960                D  -12/
9291      DATA AI0L0(18)/ 0.23002 15                 D  -13/
9292      DATA AI0L0(19)/-0.29210 9                  D  -14/
9293      DATA AI0L0(20)/-0.3566                     D  -16/
9294      DATA AI0L0(21)/ 0.1832                     D  -16/
9295      DATA AI0L0(22)/-0.10                       D  -18/
9296      DATA AI0L0(23)/-0.11                       D  -18/
9297      DATA AI0L0A(0)/ 2.00326 51024 11606 43125  D    0/
9298      DATA AI0L0A(1)/ 0.19520 68515 76492 081    D   -2/
9299      DATA AI0L0A(2)/ 0.38239 52356 99083 28     D   -3/
9300      DATA AI0L0A(3)/ 0.75342 80817 05443 6      D   -4/
9301      DATA AI0L0A(4)/ 0.14959 57655 89707 8      D   -4/
9302      DATA AI0L0A(5)/ 0.29994 05312 10557        D   -5/
9303      DATA AI0L0A(6)/ 0.60769 60482 2459         D   -6/
9304      DATA AI0L0A(7)/ 0.12399 49554 4506         D   -6/
9305      DATA AI0L0A(8)/ 0.25232 62552 649          D   -7/
9306      DATA AI0L0A(9)/ 0.50463 48573 32           D   -8/
9307      DATA AI0L0A(10)/0.97913 23623 0            D   -9/
9308      DATA AI0L0A(11)/0.18389 11524 1            D   -9/
9309      DATA AI0L0A(12)/0.33763 09278              D  -10/
9310      DATA AI0L0A(13)/0.61117 9703               D  -11/
9311      DATA AI0L0A(14)/0.10847 2972               D  -11/
9312      DATA AI0L0A(15)/0.18861 271                D  -12/
9313      DATA AI0L0A(16)/0.32803 45                 D  -13/
9314      DATA AI0L0A(17)/0.56564 7                  D  -14/
9315      DATA AI0L0A(18)/0.93300                    D  -15/
9316      DATA AI0L0A(19)/0.15881                    D  -15/
9317      DATA AI0L0A(20)/0.2791                     D  -16/
9318      DATA AI0L0A(21)/0.389                      D  -17/
9319      DATA AI0L0A(22)/0.70                       D  -18/
9320      DATA AI0L0A(23)/0.16                       D  -18/
9321C
9322      XLOW=CPUMIN
9323C
9324C   Start computation
9325C
9326      X = XVALUE
9327C
9328C   Error test
9329C
9330      IF ( X .LT. ZERO ) THEN
9331CCCCC    CALL ERRPRN(FNNAME,ERRMSG)
9332         WRITE(ICOUT,999)
9333         CALL DPWRST('XXX','BUG ')
9334         WRITE(ICOUT,101)X
9335         CALL DPWRST('XXX','BUG ')
9336         I0ML0 = ZERO
9337         RETURN
9338      ENDIF
9339  999 FORMAT(1X)
9340  101 FORMAT('***** ERROR FROM I0ML0--ARGUMENT MUST BE ',
9341     1        'NON-NEGATIVE, ARGUMENT = ',G15.7)
9342C
9343C   Compute the machine-dependent constants.
9344C
9345      XSQ = D1MACH(3)
9346      T = XSQ / ONEHUN
9347      IF ( X .LE. SIXTEN ) THEN
9348         DO 10 NTERM1 = 23 , 0 , -1
9349            IF ( ABS(AI0L0(NTERM1)) .GT. T ) GOTO 19
9350 10      CONTINUE
9351 19      XLOW = XSQ
9352      ELSE
9353         DO 40 NTERM2 = 23 , 0 , -1
9354            IF ( ABS(AI0L0A(NTERM2)) .GT. T ) GOTO 49
9355 40      CONTINUE
9356 49      XHIGH = SQRT ( ATEHUN / XSQ )
9357      ENDIF
9358C
9359C   Code for x <= 16
9360C
9361      IF ( X .LE. SIXTEN ) THEN
9362         IF ( X .LT. XLOW ) THEN
9363            I0ML0 = ONE
9364            RETURN
9365         ELSE
9366            T = ( SIX * X - FORTY ) / ( X + FORTY )
9367            I0ML0 = CHEVAL(NTERM1,AI0L0,T)
9368            RETURN
9369         ENDIF
9370      ELSE
9371C
9372C   Code for x > 16
9373C
9374         IF ( X .GT. XHIGH ) THEN
9375            I0ML0 = TWOBPI / X
9376         ELSE
9377            XSQ = X * X
9378            T = ( ATEHUN - XSQ ) / ( TWO88 + XSQ )
9379            I0ML0 = CHEVAL(NTERM2,AI0L0A,T) * TWOBPI / X
9380         ENDIF
9381      ENDIF
9382      RETURN
9383      END
9384      DOUBLE PRECISION FUNCTION I1ML1(XVALUE)
9385C
9386C   DESCRIPTION:
9387C
9388C      This program calculates the function I1ML1 defined as
9389C
9390C                I1ML1(x) = I1(x) - L1(x)
9391C
9392C      where I1(x) is the modified Bessel function of the first kind of
9393C      order 1, and L1(x) is the modified Struve function of order 1.
9394C
9395C      The code uses Chebyshev expansions with the coefficients
9396C      given to an accuracy of 20D.
9397C
9398C
9399C   ERROR RETURNS:
9400C
9401C      The coefficients are only suitable for XVALUE >= 0.0. If
9402C      XVALUE < 0.0, an error message is printed and the function
9403C      returns the value 0.0
9404C
9405C
9406C   MACHINE-DEPENDENT PARAMETERS:
9407C
9408C      NTERM1 - INTEGER - The number of terms required for the array
9409C                         AI1L1. The recommended value is such that
9410C                              ABS(AI1L1(NTERM1)) < EPS/100
9411C
9412C      NTERM2 - INTEGER - The number of terms required for the array
9413C                         AI1L1A. The recommended value is such that
9414C                              ABS(AI1L1A(NTERM2)) < EPS/100
9415C
9416C      XLOW - DOUBLE PRECISION - The value below which I1ML1(x) = x/2 to machine
9417C                    precision. The recommended value is
9418C                               2*EPSNEG
9419C
9420C      XHIGH - DOUBLE PRECISION - The value above which I1ML1(x) = 2/pi to
9421C                     machine precision. The recommended value is
9422C                               SQRT(800/EPS)
9423C
9424C      For values of EPS, and EPSNEG see the file MACHCON.TXT
9425C
9426C      The machine-dependent constants are computed internally by
9427C      using the D1MACH subroutine.
9428C
9429C
9430C   INTRINSIC FUNCTIONS USED:
9431C
9432C      ABS , SQRT
9433C
9434C
9435C   OTHER MISCFUN SUBROUTINES USED:
9436C
9437C          CHEVAL , ERRPRN, D1MACH
9438C
9439C
9440C   AUTHOR:
9441C          Dr. Allan J. MacLeod
9442C          Dept. of Mathematics and Statistics
9443C          University of Paisley
9444C          High St.
9445C          Paisley
9446C          SCOTLAND
9447C          PA1 2BE
9448C
9449C          (e-mail: macl_ms0@paisley.ac.uk )
9450C
9451C
9452C   LATEST REVISION:
9453C                    23 January, 1996
9454C
9455      INTEGER NTERM1,NTERM2
9456      DOUBLE PRECISION AI1L1(0:23),AI1L1A(0:25),ATEHUN,CHEVAL
9457CCCCC DOUBLE PRECISION FORTY,ONE,ONEHUN,SIX,SIXTEN,T,TWO,TWOBPI,TWO88
9458      DOUBLE PRECISION FORTY,ONEHUN,SIX,SIXTEN,T,TWO,TWOBPI,TWO88
9459      DOUBLE PRECISION X,XHIGH,XLOW,XSQ,XVALUE,ZERO
9460CCCCC CHARACTER FNNAME*6,ERRMSG*14
9461CCCCC DATA FNNAME/'I1ML1 '/
9462CCCCC DATA ERRMSG/'ARGUMENT < 0.0'/
9463C
9464C-----COMMON----------------------------------------------------------
9465C
9466      INCLUDE 'DPCOMC.INC'
9467      INCLUDE 'DPCOP2.INC'
9468C
9469CCCCC DATA ZERO,ONE,TWO/ 0.0 D 0 , 1.0 D 0 , 2.0 D 0 /
9470      DATA ZERO,TWO/ 0.0D0,2.0D0 /
9471      DATA SIX,SIXTEN,FORTY/ 6.0 D 0 , 16.0 D 0 , 40.0 D 0 /
9472      DATA ONEHUN,TWO88,ATEHUN/ 100.0 D 0 , 288.0 D 0 , 800.0 D 0 /
9473      DATA TWOBPI/0.63661 97723 67581 34308 D 0/
9474      DATA AI1L1(0)/  0.67536 36906 23505 76137  D    0/
9475      DATA AI1L1(1)/ -0.38134 97109 72665 59040  D    0/
9476      DATA AI1L1(2)/  0.17452 17077 51339 43559  D    0/
9477      DATA AI1L1(3)/ -0.70621 05887 23502 5061   D   -1/
9478      DATA AI1L1(4)/  0.25173 41413 55880 3702   D   -1/
9479      DATA AI1L1(5)/ -0.78709 85616 06423 321    D   -2/
9480      DATA AI1L1(6)/  0.21481 43686 51922 006    D   -2/
9481      DATA AI1L1(7)/ -0.50862 19971 79062 36     D   -3/
9482      DATA AI1L1(8)/  0.10362 60828 04423 30     D   -3/
9483      DATA AI1L1(9)/ -0.17954 47212 05724 7      D   -4/
9484      DATA AI1L1(10)/ 0.25978 82745 15414        D   -5/
9485      DATA AI1L1(11)/-0.30442 40632 4667         D   -6/
9486      DATA AI1L1(12)/ 0.27202 39894 766          D   -7/
9487      DATA AI1L1(13)/-0.15812 61441 90           D   -8/
9488      DATA AI1L1(14)/ 0.18162 09172              D  -10/
9489      DATA AI1L1(15)/ 0.64796 7659               D  -11/
9490      DATA AI1L1(16)/-0.54113 290                D  -12/
9491      DATA AI1L1(17)/-0.30831 1                  D  -14/
9492      DATA AI1L1(18)/ 0.30563 8                  D  -14/
9493      DATA AI1L1(19)/-0.9717                     D  -16/
9494      DATA AI1L1(20)/-0.1422                     D  -16/
9495      DATA AI1L1(21)/ 0.84                       D  -18/
9496      DATA AI1L1(22)/ 0.7                        D  -19/
9497      DATA AI1L1(23)/-0.1                        D  -19/
9498      DATA AI1L1A(0)/  1.99679 36189 67891 36501  D    0/
9499      DATA AI1L1A(1)/ -0.19066 32614 09686 132    D   -2/
9500      DATA AI1L1A(2)/ -0.36094 62241 01744 81     D   -3/
9501      DATA AI1L1A(3)/ -0.68418 47304 59982 0      D   -4/
9502      DATA AI1L1A(4)/ -0.12990 08228 50942 6      D   -4/
9503      DATA AI1L1A(5)/ -0.24715 21887 05765        D   -5/
9504      DATA AI1L1A(6)/ -0.47147 83969 1972         D   -6/
9505      DATA AI1L1A(7)/ -0.90208 19982 592          D   -7/
9506      DATA AI1L1A(8)/ -0.17304 58637 504          D   -7/
9507      DATA AI1L1A(9)/ -0.33232 36701 59           D   -8/
9508      DATA AI1L1A(10)/-0.63736 42173 5            D   -9/
9509      DATA AI1L1A(11)/-0.12180 23975 6            D   -9/
9510      DATA AI1L1A(12)/-0.23173 46832              D  -10/
9511      DATA AI1L1A(13)/-0.43906 8833               D  -11/
9512      DATA AI1L1A(14)/-0.82847 110                D  -12/
9513      DATA AI1L1A(15)/-0.15562 249                D  -12/
9514      DATA AI1L1A(16)/-0.29131 12                 D  -13/
9515      DATA AI1L1A(17)/-0.54396 5                  D  -14/
9516      DATA AI1L1A(18)/-0.10117 7                  D  -14/
9517      DATA AI1L1A(19)/-0.18767                    D  -15/
9518      DATA AI1L1A(20)/-0.3484                     D  -16/
9519      DATA AI1L1A(21)/-0.643                      D  -17/
9520      DATA AI1L1A(22)/-0.118                      D  -17/
9521      DATA AI1L1A(23)/-0.22                       D  -18/
9522      DATA AI1L1A(24)/-0.4                        D  -19/
9523      DATA AI1L1A(25)/-0.1                        D  -19/
9524C
9525      XLOW=CPUMIN
9526C
9527C   Start computation
9528C
9529      X = XVALUE
9530C
9531C   Error test
9532C
9533      IF ( X .LT. ZERO ) THEN
9534CCCCC    CALL ERRPRN(FNNAME,ERRMSG)
9535         WRITE(ICOUT,999)
9536         CALL DPWRST('XXX','BUG ')
9537         WRITE(ICOUT,101)X
9538         CALL DPWRST('XXX','BUG ')
9539         I1ML1 = ZERO
9540         RETURN
9541      ENDIF
9542  999 FORMAT(1X)
9543  101 FORMAT('***** ERROR FROM I1ML1--ARGUMENT MUST BE ',
9544     1        'NON-NEGATIVE, ARGUMENT = ',G15.7)
9545C
9546C   Compute the machine-dependent constants.
9547C
9548      XSQ = D1MACH(3)
9549      T = XSQ / ONEHUN
9550      IF ( X .LE. SIXTEN ) THEN
9551         DO 10 NTERM1 = 23 , 0 , -1
9552            IF ( ABS(AI1L1(NTERM1)) .GT. T ) GOTO 19
9553 10      CONTINUE
9554 19      XLOW = XSQ + XSQ
9555      ELSE
9556         DO 40 NTERM2 = 25 , 0 , -1
9557            IF ( ABS(AI1L1A(NTERM2)) .GT. T ) GOTO 49
9558 40      CONTINUE
9559 49      XHIGH = SQRT ( ATEHUN / XSQ )
9560      ENDIF
9561C
9562C   Code for x <= 16
9563C
9564      IF ( X .LE. SIXTEN ) THEN
9565         IF ( X .LT. XLOW ) THEN
9566            I1ML1 = X / TWO
9567            RETURN
9568         ELSE
9569            T = ( SIX * X - FORTY ) / ( X + FORTY )
9570            I1ML1 = CHEVAL(NTERM1,AI1L1,T) * X / TWO
9571            RETURN
9572         ENDIF
9573      ELSE
9574C
9575C   Code for x > 16
9576C
9577         IF ( X .GT. XHIGH ) THEN
9578            I1ML1 = TWOBPI
9579         ELSE
9580            XSQ = X * X
9581            T = ( ATEHUN - XSQ ) / ( TWO88 + XSQ )
9582            I1ML1 = CHEVAL(NTERM2,AI1L1A,T) * TWOBPI
9583         ENDIF
9584      ENDIF
9585      RETURN
9586      END
9587      SUBROUTINE IBCDF(X,ALPHA,BETA,CDF)
9588C
9589C     PURPOSE--THIS SUBROUTINE COMPUTES THE CUMULATIVE DISTRIBUTION
9590C              FUNCTION VALUE FOR THE INVERTED BETA DISTRIBUTION
9591C              WITH SHAPE PARAMETERS ALPHA AND BETA.
9592C              THIS DISTRIBUTION IS DEFINED FOR ALL X AND HAS
9593C              THE PROBABILITY DENSITY FUNCTION
9594C              IBPDF(X,A,B) = X**(ALPHA-1)/
9595C                             [BETA(ALPHA,BETA)*(1+X)**(ALPHA+BETA),
9596C                             X, ALPHA, BETA > 0
9597C              THE CUMULATIVE DISTRIBUTION IS COMPUTED BY
9598C              ALPHAMERICALLY INTEGRATING THE PDF FUNCTION.
9599C     INPUT  ARGUMENTS--X      = THE SINGLE PRECISION VALUE AT
9600C                                WHICH THE CUMULATIVE DISTRIBUTION
9601C                                FUNCTION IS TO BE EVALUATED.
9602C                     --ALPHA  = THE DEGREES OF FREEDOM PARAMETER
9603C                     --BETA   = THE SKEWNESS PARAMETER
9604C     OUTPUT ARGUMENTS--CDF    = THE SINGLE PRECISION PROBABILITY
9605C                                DENSITY FUNCTION VALUE.
9606C     OUTPUT--THE SINGLE PRECISION CUMULATIVE DISTRIBUTION
9607C             FUNCTION VALUE CDF FOR THE INVERTED BETA DISTRIBUTION
9608C             WITH SHAPE PARAMETERS ALPHA AND BETA.
9609C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
9610C     RESTRICTIONS--NONE.
9611C     OTHER DATAPAC   SUBROUTINES NEEDED--DQAGI.
9612C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE.
9613C     MODE OF INTERNAL OPERATIONS--DOUBLE PRECISION.
9614C     LANGUAGE--ANSI FORTRAN (1977)
9615C     REFERENCES--JOHNSON, KOTZ, AND BALAKRISHNAN, "CONTINUOUS
9616C                 UNIVARIATE DISTRIBUTIONS--VOLUME II", SECOND EDITION,
9617C                 JOHN WILEY, 1994.
9618C               --EVANS, HASTINGS, AND PEACOCK, "STATISTICAL
9619C                 DISTRIBUTIONS", THIRD EDITION, JOHN WILEY, 2000.
9620C     WRITTEN BY--JAMES J. FILLIBEN
9621C                 STATISTICAL ENGINEERING DIVISION
9622C                 INFORMATION TECHNOLOGY LABORATORY
9623C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
9624C                 GAITHERSBURG, MD 20899-8980
9625C                 PHONE--301-975-2855
9626C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
9627C           OF THE NATION INSTITUTE OF STANDARDS AND TECHNOLOGY.
9628C     LANGUAGE--ANSI FORTRAN (1977)
9629C     VERSION ALPHAMBER--2003.12
9630C     ORIGINAL VERSION--DECEMBER  2003.
9631C
9632C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
9633C
9634C---------------------------------------------------------------------
9635C
9636      INTEGER LIMIT
9637      INTEGER LENW
9638      PARAMETER(LIMIT=200)
9639      PARAMETER(LENW=4*LIMIT)
9640      INTEGER INF
9641      INTEGER NEVAL
9642      INTEGER IER
9643      INTEGER LAST
9644      INTEGER IWORK(LIMIT)
9645      REAL ALPHA
9646      REAL BETA
9647      REAL X
9648      REAL CDF
9649      DOUBLE PRECISION EPSABS
9650      DOUBLE PRECISION EPSREL
9651      DOUBLE PRECISION DCDF
9652      DOUBLE PRECISION DX
9653      DOUBLE PRECISION DA
9654      DOUBLE PRECISION ABSERR
9655      DOUBLE PRECISION WORK(LENW)
9656C
9657      DOUBLE PRECISION IBFUN
9658      EXTERNAL IBFUN
9659C
9660      DOUBLE PRECISION DALPHA
9661      DOUBLE PRECISION DBETA
9662      COMMON/IBCOM/DALPHA,DBETA
9663C
9664C-----COMMON----------------------------------------------------------
9665C
9666      INCLUDE 'DPCOP2.INC'
9667C
9668C-----DATA STATEMENTS-------------------------------------------------
9669C
9670C-----START POINT-----------------------------------------------------
9671C
9672C               ********************************************
9673C               **  STEP 1--                              **
9674C               **  CHECK THE INPUT ARGUMENTS FOR ERRORS  **
9675C               ********************************************
9676C
9677      CDF=0.0
9678      IF(ALPHA.LE.0.0)THEN
9679        WRITE(ICOUT,101)
9680        CALL DPWRST('XXX','BUG ')
9681        WRITE(ICOUT,102)
9682        CALL DPWRST('XXX','BUG ')
9683        WRITE(ICOUT,104)ALPHA
9684        CALL DPWRST('XXX','BUG ')
9685        GOTO9000
9686      ENDIF
9687      IF(BETA.LE.0.0)THEN
9688        WRITE(ICOUT,103)
9689        CALL DPWRST('XXX','BUG ')
9690        WRITE(ICOUT,102)
9691        CALL DPWRST('XXX','BUG ')
9692        WRITE(ICOUT,104)BETA
9693        CALL DPWRST('XXX','BUG ')
9694        GOTO9000
9695      ENDIF
9696      IF(X.LE.0.0)THEN
9697        WRITE(ICOUT,106)
9698        CALL DPWRST('XXX','BUG ')
9699        WRITE(ICOUT,104)X
9700        CALL DPWRST('XXX','BUG ')
9701        GOTO9000
9702      ENDIF
9703  101 FORMAT('***** ERROR--THE FIRST SHAPE PARAMETER, ALPHA, TO THE')
9704  102 FORMAT('      IBCDF ROUTINE IS NON-POSITIVE.')
9705  103 FORMAT('***** ERROR--THE SECOND SHAPE PARAMETER, BETA, TO THE')
9706  104 FORMAT('      THE VALUE OF THE ARGUMENT IS ',E15.7,' ******')
9707  106 FORMAT('***** ERROR--THE FIRST ARGUMENT TO THE IBCDF ROUTINE ',
9708     1       'IS NON-POSITIVE.')
9709C
9710C
9711C               ************************************
9712C               **  STEP 1--                      **
9713C               **  COMPUTE THE DENSITY FUNCTION  **
9714C               ************************************
9715C
9716      INF=+1
9717      EPSABS=1.0D-7
9718      EPSREL=1.0D-7
9719      IER=0
9720      IKEY=3
9721      CDF=0.0D0
9722C
9723      DA=1.0D-7
9724      DX=DBLE(X)
9725      DALPHA=DBLE(ALPHA)
9726      DBETA=DBLE(BETA)
9727C
9728CCCCC REPLACE WITH A CODE FOR DEFINITE INTEGRAL.
9729CCCCC CALL DQAGI(IBFUN,DX,INF,EPSABS,EPSREL,DCDF,ABSERR,NEVAL,
9730CCCCC1          IER,LIMIT,LENW,LAST,IWORK,WORK)
9731C
9732CCCCC DCDF=1.0D0 - DCDF
9733C
9734      CALL DQAG(IBFUN,DA,DX,EPSABS,EPSREL,IKEY,DCDF,ABSERR,NEVAL,
9735     1          IER,LIMIT,LENW,LAST,IWORK,WORK)
9736      CDF=REAL(DCDF)
9737C
9738      IF(IER.EQ.1)THEN
9739        WRITE(ICOUT,999)
9740  999   FORMAT(1X)
9741        CALL DPWRST('XXX','BUG ')
9742        WRITE(ICOUT,111)
9743  111   FORMAT('***** ERROR FROM IBCDF--')
9744        CALL DPWRST('XXX','BUG ')
9745        WRITE(ICOUT,113)
9746  113   FORMAT('      MAXIMUM NUMBER OF SUBDIVISIONS EXCEEDED.')
9747        CALL DPWRST('XXX','BUG ')
9748      ELSEIF(IER.EQ.2)THEN
9749        WRITE(ICOUT,999)
9750        CALL DPWRST('XXX','BUG ')
9751        WRITE(ICOUT,121)
9752  121   FORMAT('***** ERROR FROM IBCDF--')
9753        CALL DPWRST('XXX','BUG ')
9754        WRITE(ICOUT,123)
9755  123   FORMAT('      ROUNDOFF ERROR PREVENTS REQUESTED TOLERANCE ',
9756     1         'FROM BEING ACHIEVED.')
9757        CALL DPWRST('XXX','BUG ')
9758      ELSEIF(IER.EQ.3)THEN
9759        WRITE(ICOUT,999)
9760        CALL DPWRST('XXX','BUG ')
9761        WRITE(ICOUT,131)
9762  131   FORMAT('***** ERROR FROM IBCDF--')
9763        CALL DPWRST('XXX','BUG ')
9764        WRITE(ICOUT,133)
9765  133   FORMAT('      BAD INTEGRAND BEHAVIOUR DETECTED.')
9766        CALL DPWRST('XXX','BUG ')
9767      ELSEIF(IER.EQ.4)THEN
9768        WRITE(ICOUT,999)
9769        CALL DPWRST('XXX','BUG ')
9770        WRITE(ICOUT,141)
9771  141   FORMAT('***** ERROR FROM IBCDF--')
9772        CALL DPWRST('XXX','BUG ')
9773        WRITE(ICOUT,143)
9774  143   FORMAT('      INTEGRATION DID NOT CONVERGE.')
9775        CALL DPWRST('XXX','BUG ')
9776      ELSEIF(IER.EQ.5)THEN
9777        WRITE(ICOUT,999)
9778        CALL DPWRST('XXX','BUG ')
9779        WRITE(ICOUT,151)
9780  151   FORMAT('***** ERROR FROM IBCDF--')
9781        CALL DPWRST('XXX','BUG ')
9782        WRITE(ICOUT,153)
9783  153   FORMAT('      THE INTEGRATION IS PROBABLY DIVERGENT.')
9784        CALL DPWRST('XXX','BUG ')
9785      ELSEIF(IER.EQ.6)THEN
9786        WRITE(ICOUT,999)
9787        CALL DPWRST('XXX','BUG ')
9788        WRITE(ICOUT,161)
9789  161   FORMAT('***** ERROR FROM IBCDF--')
9790        CALL DPWRST('XXX','BUG ')
9791        WRITE(ICOUT,163)
9792  163   FORMAT('      INVALID INPUT TO THE INTEGRATION ROUTINE.')
9793        CALL DPWRST('XXX','BUG ')
9794      ENDIF
9795C
9796 9000 CONTINUE
9797      RETURN
9798      END
9799      DOUBLE PRECISION FUNCTION IBFUN(DX)
9800C
9801C     PURPOSE--THIS SUBROUTINE COMPUTES THE PROBABILITY DENSITY
9802C              FUNCTION VALUE FOR THE INVERTED BETA DISTRIBUTION
9803C              WITH SHAPE PARAMETERS ALPHA AND BETA.
9804C              THIS DISTRIBUTION IS DEFINED FOR X > 0 AND HAS
9805C              THE PROBABILITY DENSITY FUNCTION
9806C              IBPDF(X,A,B) = X**(ALPHA-1)/
9807C                             [BETA(ALPHA,BETA)*(1+X)**(ALPHA+BETA),
9808C                             X, ALPHA, BETA > 0
9809C              IDENTICAL TO IBPDF,
9810C              BUT DEFINE AS FUNCTION TO BE USED FOR INTEGRATION
9811C              CODE CALLED BY IBCDF.
9812C     INPUT  ARGUMENTS--DX     = THE DOUBLE PRECISION VALUE AT
9813C                                WHICH THE PROBABILITY DENSITY
9814C                                FUNCTION IS TO BE EVALUATED.
9815C     OUTPUT ARGUMENTS--IBFUN  = THE DOUBLE PRECISION PROBABILITY
9816C                                DENSITY FUNCTION VALUE.
9817C     OUTPUT--THE DOUBLE PRECISION PROBABILITY DENSITY
9818C             FUNCTION VALUE PDF FOR THE SKEW-T DISTRIBUTION
9819C             WITH SHAPE PARAMETERS ALPHA AND BETA.
9820C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
9821C     RESTRICTIONS--NONE.
9822C     OTHER DATAPAC   SUBROUTINES NEEDED--DLBETA.
9823C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE.
9824C     MODE OF INTERNAL OPERATIONS--DOUBLE PRECISION.
9825C     LANGUAGE--ANSI FORTRAN (1977)
9826C     REFERENCES--JOHNSON, KOTZ, AND BALAKRISHNAN, "CONTINUOUS
9827C                 UNIVARIATE DISTRIBUTIONS--VOLUME II", SECOND EDITION,
9828C                 JOHN WILEY, 1994.
9829C               --EVANS, HASTINGS, AND PEACOCK, "STATISTICAL
9830C                 DISTRIBUTIONS", THIRD EDITION, JOHN WILEY, 2000.
9831C     WRITTEN BY--JAMES J. FILLIBEN
9832C                 STATISTICAL ENGINEERING DIVISION
9833C                 INFORMATION TECHNOLOGY LABORATORY
9834C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
9835C                 GAITHERSBURG, MD 20899-8980
9836C                 PHONE--301-975-2855
9837C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
9838C           OF THE NATION INSTITUTE OF STANDARDS AND TECHNOLOGY.
9839C     LANGUAGE--ANSI FORTRAN (1977)
9840C     VERSION NUMBER--2003.12
9841C     ORIGINAL VERSION--DECEMBER  2003.
9842C
9843C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
9844C
9845C---------------------------------------------------------------------
9846C
9847      EXTERNAL DLBETA
9848C
9849      DOUBLE PRECISION DLBETA
9850      DOUBLE PRECISION DX
9851      DOUBLE PRECISION DPDF
9852      DOUBLE PRECISION DTERM1
9853      DOUBLE PRECISION DTERM2
9854      DOUBLE PRECISION DTERM3
9855C
9856      DOUBLE PRECISION DALPHA
9857      DOUBLE PRECISION DBETA
9858      COMMON/IBCOM/DALPHA,DBETA
9859C
9860C---------------------------------------------------------------------
9861C
9862      INCLUDE 'DPCOP2.INC'
9863C
9864C-----DATA STATEMENTS-------------------------------------------------
9865C
9866C-----START POINT-----------------------------------------------------
9867C
9868C               ************************************
9869C               **  STEP 1--                      **
9870C               **  COMPUTE THE DENSITY FUNCTION  **
9871C               ************************************
9872C
9873      DTERM1=(DALPHA-1.0D0)*DLOG(DX)
9874      DTERM2=DLBETA(DALPHA,DBETA)
9875      DTERM3=(DALPHA+DBETA)*DLOG(1.0D0+DX)
9876C
9877      DPDF=DTERM1 - DTERM2 - DTERM3
9878      IF(DPDF.LT.LOG(CPUMAX))THEN
9879        DPDF=DEXP(DPDF)
9880      ELSE
9881        WRITE(ICOUT,501)
9882        CALL DPWRST('XXX','BUG ')
9883        DPDF=LOG(CPUMAX)
9884      ENDIF
9885  501 FORMAT('***** WARNING FROM INVERTED BETA PDF--OVERFLOW ',
9886     1       'DETECTED.')
9887C
9888      IBFUN=DPDF
9889      RETURN
9890      END
9891      REAL FUNCTION IBFU2(X)
9892C
9893C     PURPOSE--IBPPF CALLS FZERO TO FIND A ROOT FOR THE PERCENT
9894C              POINT FUNCTION.  IBFU2 IS THE FUNCTION FOR WHICH
9895C              THE ZERO IS FOUND.  IT IS:
9896C                 P - IBCDF(X,LAMBDA)
9897C              WHERE P IS THE DESIRED PERCENT POINT.
9898C     INPUT  ARGUMENTS--X      = THE SINGLE PRECISION VALUE AT
9899C                                WHICH THE CUMULATIVE DISTRIBUTION
9900C                                FUNCTION IS TO BE EVALUATED.
9901C     OUTPUT--THE SINGLE PRECISION PROBABILITY DENSITY
9902C             FUNCTION VALUE IBFU2.
9903C     PRINTING--NONE.
9904C     RESTRICTIONS--NONE.
9905C     OTHER DATAPAC   SUBROUTINES NEEDED--IBCDF.
9906C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE.
9907C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
9908C     LANGUAGE--ANSI FORTRAN (1977)
9909C     REFERENCES--JOHNSON, KOTZ, AND BALAKRISHNAN, "CONTINUOUS
9910C                 UNIVARIATE DISTRIBUTIONS--VOLUME I", SECOND EDITION,
9911C                 JOHN WILEY, 1994, PAGE 454.
9912C               --AZZALINI HAS AUTHORED A NUMBER OF PAPERS ON THIS
9913C                 DISTRIBUTION.
9914C     WRITTEN BY--JAMES J. FILLIBEN
9915C                 STATISTICAL ENGINEERING DIVISION
9916C                 INFORMATION TECHNOLOGY LABORATORY
9917C                 NATION INSTITUTE OF STANDARDS AND TECHNOLOGY
9918C                 GAITHERSBURG, MD 20899-8980
9919C                 PHONE--301-975-2855
9920C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
9921C           OF THE NATION INSTITUTE OF STANDARDS AND TECHNOLOGY.
9922C     LANGUAGE--ANSI FORTRAN (1977)
9923C     VERSION NUMBER--2003.12
9924C     ORIGINAL VERSION--DECEMBER  2003.
9925C
9926C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
9927C
9928C---------------------------------------------------------------------
9929C
9930      REAL P
9931      COMMON/IB2COM/P
9932C
9933      DOUBLE PRECISION DALPHA
9934      DOUBLE PRECISION DBETA
9935      COMMON/IBCOM/DALPHA,DBETA
9936C
9937      INCLUDE 'DPCOP2.INC'
9938C
9939C-----START POINT-----------------------------------------------------
9940C
9941      CALL IBCDF(X,REAL(DALPHA),REAL(DBETA),CDF)
9942      IBFU2=P - CDF
9943C
9944      RETURN
9945      END
9946      SUBROUTINE IBPDF(X,ALPHA,BETA,PDF)
9947C
9948C     NOTE--INVERTED BETA PDF IS:
9949C              IBPDF(X,A,B) = X**(ALPHA-1)/
9950C                             [BETA(ALPHA,BETA)*(1+X)**(ALPHA+BETA),
9951C                             X > 0
9952C     WRITTEN BY--JAMES J. FILLIBEN
9953C                 STATISTICAL ENGINEERING DIVISION
9954C                 INFORMATION TECHNOLOGY LABORATORY
9955C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
9956C                 GAITHERSBURG, MD 20899-8980
9957C                 PHONE--301-975-2899
9958C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
9959C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
9960C     REFERENCES--JOHNSON, KOTZ, AND BALAKRISHNAN, "CONTINUOUS
9961C                 UNIVARIATE DISTRIBUTIONS--VOLUME II", SECOND EDITION,
9962C                 JOHN WILEY, 1994.
9963C               --EVANS, HASTINGS, AND PEACOCK, "STATISTICAL
9964C                 DISTRIBUTIONS", THIRD EDITION, JOHN WILEY, 2000.
9965C     LANGUAGE--ANSI FORTRAN (1977)
9966C     VERSION NUMBER--2003/5
9967C     ORIGINAL VERSION--MAY       2003.
9968C
9969C---------------------------------------------------------------------
9970C
9971      EXTERNAL DLBETA
9972      DOUBLE PRECISION DLBETA
9973C
9974      DOUBLE PRECISION DX
9975      DOUBLE PRECISION DALPHA
9976      DOUBLE PRECISION DBETA
9977      DOUBLE PRECISION DTERM1
9978      DOUBLE PRECISION DTERM2
9979      DOUBLE PRECISION DTERM3
9980      DOUBLE PRECISION DPDF
9981C
9982      INCLUDE 'DPCOP2.INC'
9983C
9984C-----START POINT-----------------------------------------------------
9985C
9986      PDF=0.0
9987      IF(ALPHA.LE.0.0)THEN
9988        WRITE(ICOUT,101)
9989        CALL DPWRST('XXX','BUG ')
9990        WRITE(ICOUT,102)
9991        CALL DPWRST('XXX','BUG ')
9992        WRITE(ICOUT,104)ALPHA
9993        CALL DPWRST('XXX','BUG ')
9994        GOTO9000
9995      ENDIF
9996      IF(BETA.LE.0.0)THEN
9997        WRITE(ICOUT,103)
9998        CALL DPWRST('XXX','BUG ')
9999        WRITE(ICOUT,102)
10000        CALL DPWRST('XXX','BUG ')
10001        WRITE(ICOUT,104)BETA
10002        CALL DPWRST('XXX','BUG ')
10003        GOTO9000
10004      ENDIF
10005      IF(X.LE.0.0)THEN
10006        WRITE(ICOUT,106)
10007        CALL DPWRST('XXX','BUG ')
10008        WRITE(ICOUT,104)X
10009        CALL DPWRST('XXX','BUG ')
10010        GOTO9000
10011      ENDIF
10012  101 FORMAT('***** ERROR--THE FIRST SHAPE PARAMETER, ALPHA, TO THE')
10013  102 FORMAT('      IBPDF ROUTINE IS NON-POSITIVE.')
10014  103 FORMAT('***** ERROR--THE SECOND SHAPE PARAMETER, BETA, TO THE')
10015  104 FORMAT('      THE VALUE OF THE ARGUMENT IS ',E15.7,' ******')
10016  106 FORMAT('***** ERROR--THE FIRST ARGUMENT TO THE IBPDF ROUTINE ',
10017     1       'IS NON-POSITIVE.')
10018C
10019      DX=DBLE(X)
10020      DALPHA=DBLE(ALPHA)
10021      DBETA=DBLE(BETA)
10022C
10023      DTERM1=(DALPHA-1.0D0)*LOG(DX)
10024      DTERM2=DLBETA(DALPHA,DBETA)
10025      DTERM3=(DALPHA+DBETA)*LOG(1.0D0+DX)
10026C
10027      DPDF=DTERM1 - DTERM2 - DTERM3
10028      IF(DPDF.LT.LOG(CPUMAX))THEN
10029        DPDF=DEXP(DPDF)
10030      ELSE
10031        WRITE(ICOUT,501)
10032        CALL DPWRST('XXX','BUG ')
10033        DPDF=LOG(CPUMAX)
10034      ENDIF
10035  501 FORMAT('***** WARNING FROM INVERTED BETA PDF--OVERFLOW ',
10036     1       'DETECTED.')
10037      PDF=REAL(DPDF)
10038C
10039 9000 CONTINUE
10040      RETURN
10041      END
10042      SUBROUTINE IBPPF(P,ALPHA,BETA,PPF)
10043C
10044C     PURPOSE--THIS SUBROUTINE COMPUTES THE PERCENT POINT
10045C              FUNCTION VALUE FOR THE INVERTED BETA DISTRIBUTION
10046C              WITH SHAPE PARAMETERS ALPHA AND BETA.
10047C              THIS DISTRIBUTION IS DEFINED FOR POSITIVE X AND THE
10048C              PERCENT POINT FUNCTION IS COMPUTED BY
10049C              NUMERICALLY INVERTING THE CDF FUNCTION.
10050C     INPUT  ARGUMENTS--P      = THE SINGLE PRECISION VALUE AT
10051C                                WHICH THE PERCENT POINT
10052C                                FUNCTION IS TO BE EVALUATED.
10053C                     --ALPHA  = THE FIRST SHAPE PARAMETER
10054C                     --BETA   = THE SECOND SHAPE PARAMETER
10055C     OUTPUT ARGUMENTS--PPF    = THE SINGLE PRECISION CUMULATIVE
10056C                                DISTRIBUTION FUNCTION VALUE.
10057C     OUTPUT--THE SINGLE PRECISION PERCENT POINT
10058C             FUNCTION VALUE PPF.
10059C     PRINTING--NONE.
10060C     RESTRICTIONS--NONE.
10061C     OTHER DATAPAC   SUBROUTINES NEEDED--FZERO.
10062C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE.
10063C     MODE OF INTERNAL OPERATIONS--DOUBLE PRECISION.
10064C     LANGUAGE--ANSI FORTRAN (1977)
10065C     REFERENCES--JOHNSON, KOTZ, AND BALAKRISHNAN, "CONTINUOUS
10066C                 UNIVARIATE DISTRIBUTIONS--VOLUME II", SECOND EDITION,
10067C                 JOHN WILEY, 1994.
10068C               --EVANS, HASTINGS, AND PEACOCK, "STATISTICAL
10069C                 DISTRIBUTIONS", THIRD EDITION, JOHN WILEY, 2000.
10070C     WRITTEN BY--JAMES J. FILLIBEN
10071C                 STATISTICAL ENGINEERING DIVISION
10072C                 INFORMATION TECHNOLOGY LABORATORY
10073C                 NATION INSTITUTE OF STANDARDS AND TECHNOLOGY
10074C                 GAITHERSBURG, MD 20899-8980
10075C                 PHONE--301-975-2855
10076C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
10077C           OF THE NATION INSTITUTE OF STANDARDS AND TECHNOLOGY.
10078C     LANGUAGE--ANSI FORTRAN (1977)
10079C     VERSION ALPHAMBER--2003.12
10080C     ORIGINAL VERSION--DECEMBER  2003.
10081C
10082C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
10083C
10084C---------------------------------------------------------------------
10085C
10086      REAL PPF
10087C
10088      REAL IBFU2
10089      EXTERNAL IBFU2
10090C
10091      REAL P2
10092      COMMON/IB2COM/P2
10093C
10094      DOUBLE PRECISION DALPHA
10095      DOUBLE PRECISION DBETA
10096      COMMON/IBCOM/DALPHA,DBETA
10097C
10098      INCLUDE 'DPCOP2.INC'
10099C
10100C-----START POINT-----------------------------------------------------
10101C
10102C               ********************************************
10103C               **  STEP 1--                              **
10104C               **  CHECK THE INPUT ARGUMENTS FOR ERRORS  **
10105C               ********************************************
10106C
10107      PPF=0.0
10108      IF(ALPHA.LE.0.0)THEN
10109        WRITE(ICOUT,101)
10110  101   FORMAT('***** ERROR--THE FIRST SHAPE PARAMETER, ALPHA, TO THE')
10111        CALL DPWRST('XXX','BUG ')
10112        WRITE(ICOUT,102)
10113  102   FORMAT('      IBPPF ROUTINE IS NON-POSITIVE.')
10114        CALL DPWRST('XXX','BUG ')
10115        WRITE(ICOUT,104)ALPHA
10116        CALL DPWRST('XXX','BUG ')
10117        GOTO9000
10118      ELSEIF(BETA.LE.0.0)THEN
10119        WRITE(ICOUT,103)
10120  103   FORMAT('***** ERROR--THE SECOND SHAPE PARAMETER, BETA, TO THE')
10121        CALL DPWRST('XXX','BUG ')
10122        WRITE(ICOUT,102)
10123        CALL DPWRST('XXX','BUG ')
10124        WRITE(ICOUT,104)BETA
10125  104   FORMAT('      THE VALUE OF THE ARGUMENT IS ',G15.7,'.')
10126        CALL DPWRST('XXX','BUG ')
10127        GOTO9000
10128      ELSEIF(P.LT.0.0.OR.P.GE.1.0)THEN
10129         WRITE(ICOUT,61)
10130   61    FORMAT('***** ERROR--THE FIRST ARGUMENT TO IBPPF')
10131         CALL DPWRST('XXX','BUG ')
10132         WRITE(ICOUT,62)
10133   62    FORMAT('      IS OUTSIDE THE ALLOWABLE (0,1) INTERVAL.')
10134         CALL DPWRST('XXX','BUG ')
10135         WRITE(ICOUT,63)P
10136   63    FORMAT('      VALUE OF ARGUMENT = ',G15.7,'.')
10137         CALL DPWRST('XXX','BUG ')
10138         GOTO9000
10139      ENDIF
10140C
10141      IF(P.EQ.0.0)THEN
10142        PPF=0.0
10143        GOTO9000
10144      ENDIF
10145C
10146C  STEP 1: FIND BRACKETING INTERVAL.  LOWER BOUND IS ZERO.  START WITH
10147C          10 AS GUESS FOR UPPER BOUND.  MULTIPLY BY 10 UNTIL
10148C          BRACKETING INTERVAL FOUND.
10149C
10150      XLOW=0.0000001
10151      XUP2=10.0
10152  200 CONTINUE
10153      CALL IBCDF(XUP2,ALPHA,BETA,PTEMP)
10154      IF(PTEMP.GT.P)THEN
10155        XUP=XUP2
10156      ELSE
10157        XUP2=XUP2*10.0
10158        IF(XUP2.GT.CPUMAX/100.)THEN
10159          WRITE(ICOUT,201)
10160  201     FORMAT('***** ERROR FROM IBPPF--UNABLE TO FIND A ',
10161     1           'BRACKETING INTERVAL')
10162          CALL DPWRST('XXX','BUG ')
10163          GOTO9000
10164        ENDIF
10165        GOTO200
10166      ENDIF
10167C
10168      AE=1.E-6
10169      RE=1.E-6
10170      P2=P
10171      DALPHA=DBLE(ALPHA)
10172      DBETA=DBLE(BETA)
10173      CALL FZERO(IBFU2,XLOW,XUP,XUP,RE,AE,IFLAG)
10174C
10175      PPF=XLOW
10176C
10177      IF(IFLAG.EQ.2)THEN
10178C
10179C  NOTE: SUPPRESS THIS MESSAGE FOR NOW.
10180CCCCC   WRITE(ICOUT,999)
10181  999   FORMAT(1X)
10182CCCCC   CALL DPWRST('XXX','BUG ')
10183CCCCC   WRITE(ICOUT,111)
10184CC111   FORMAT('***** WARNING FROM IBPPF--')
10185CCCCC   CALL DPWRST('XXX','BUG ')
10186CCCCC   WRITE(ICOUT,113)
10187CC113   FORMAT('      PPF VALUE MAY NOT BE COMPUTED TO DESIRED ',
10188CCCCC1         'TOLERANCE.')
10189CCCCC   CALL DPWRST('XXX','BUG ')
10190      ELSEIF(IFLAG.EQ.3)THEN
10191        WRITE(ICOUT,999)
10192        CALL DPWRST('XXX','BUG ')
10193        WRITE(ICOUT,121)
10194  121   FORMAT('***** WARNING FROM IBPPF--')
10195        CALL DPWRST('XXX','BUG ')
10196        WRITE(ICOUT,123)
10197  123   FORMAT('      PPF VALUE MAY BE NEAR A SINGULAR POINT.')
10198        CALL DPWRST('XXX','BUG ')
10199      ELSEIF(IFLAG.EQ.4)THEN
10200        WRITE(ICOUT,999)
10201        CALL DPWRST('XXX','BUG ')
10202        WRITE(ICOUT,131)
10203  131   FORMAT('***** ERROR FROM IBPPF--')
10204        CALL DPWRST('XXX','BUG ')
10205        WRITE(ICOUT,133)
10206  133   FORMAT('      APPROPRIATE BRACKETING INTERVAL NOT FOUND.')
10207        CALL DPWRST('XXX','BUG ')
10208      ELSEIF(IFLAG.EQ.5)THEN
10209        WRITE(ICOUT,999)
10210        CALL DPWRST('XXX','BUG ')
10211        WRITE(ICOUT,141)
10212  141   FORMAT('***** WARNING FROM IBPPF--')
10213        CALL DPWRST('XXX','BUG ')
10214        WRITE(ICOUT,143)
10215  143   FORMAT('      MAXIMUM ITERATIONS EXCEEDED.')
10216        CALL DPWRST('XXX','BUG ')
10217      ENDIF
10218C
10219 9000 CONTINUE
10220      RETURN
10221      END
10222      SUBROUTINE IBRAN(N,ALPHA,BETA,ISEED,X)
10223C
10224C     PURPOSE--THIS SUBROUTINE GENERATES A RANDOM SAMPLE OF SIZE N
10225C              FROM THE INVERTED BETA DISTRIBUTION
10226C              WITH SINGLE PRECISION SHAPE PARAMETERS = ALPHA AND BETA.
10227C              THE PROTOTYPE INVERTED BETA DISTRIBUTION USED
10228C              HEREIN CAN BE EXPRESSED AS THE RATIO OF TWO INDEPENDENT
10229C              GAMMA DISTRIBUTIONS WITH SHAPE PARAMETERS ALPHA AND
10230C              BETA, RESPECTIVELY.
10231C     INPUT  ARGUMENTS--N      = THE DESIRED INTEGER NUMBER
10232C                                OF RANDOM NUMBERS TO BE
10233C                                GENERATED.
10234C                     --ALPHA  = THE SINGLE PRECISION VALUE OF THE
10235C                                FIRST  SHAPE PARAMETER.
10236C                                ALPHA SHOULD BE GREATER THAN 0.0.
10237C                     --BETA   = THE SINGLE PRECISION VALUE OF THE
10238C                                SECOND SHAPE PARAMETER.
10239C                                BETA  SHOULD BE GREATER THAN 0.0.
10240C     OUTPUT ARGUMENTS--X      = A SINGLE PRECISION VECTOR
10241C                                (OF DIMENSION AT LEAST N)
10242C                                INTO WHICH THE GENERATED
10243C                                RANDOM SAMPLE WILL BE PLACED.
10244C     OUTPUT--A RANDOM SAMPLE OF SIZE N
10245C             FROM THE INVERTED BETA DISTRIBUTION
10246C             WITH SHAPE PARAMETER VALUES = ALPHA AND BETA.
10247C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
10248C     RESTRICTIONS--THERE IS NO RESTRICTION ON THE MAXIMUM VALUE
10249C                   OF N FOR THIS SUBROUTINE.
10250C                 --ALPHA SHOULD BE GREATER THAN
10251C                   OR EQUAL TO 0.0.
10252C                 --BETA  SHOULD BE GREATER THAN
10253C                   OR EQUAL TO 0.0.
10254C     OTHER DATAPAC   SUBROUTINES NEEDED--UNIRAN, GAMRAN.
10255C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE
10256C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
10257C     LANGUAGE--ANSI FORTRAN (1977)
10258C     REFERENCES--EVANS, HASTINGS AND PEACOCK, "STATISTICAL
10259C                 DISTRIBUTIONS--THIRD EDITION", WILEY, 2000.
10260C                 PAGES 41-42.
10261C     WRITTEN BY--JAMES J. FILLIBEN
10262C                 STATISTICAL ENGINEERING DIVISION
10263C                 INFORMATION TECHNOLOGY LABORATORY
10264C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
10265C                 GAITHERSBURG, MD 20899-8980
10266C                 PHONE--301-975-2899
10267C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
10268C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
10269C     LANGUAGE--ANSI FORTRAN (1966)
10270C               EXCEPTION--HOLLARITH STRINGS IN FORMAT STATEMENTS
10271C                          DENOTED BY QUOTES RATHER THAN NH.
10272C     VERSION NUMBER--2003.5
10273C     ORIGINAL VERSION--MAY       2003.
10274C
10275C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
10276C
10277C---------------------------------------------------------------------
10278C
10279      DIMENSION X(*)
10280      DIMENSION XG1(1)
10281      DIMENSION XG2(1)
10282C
10283C-----COMMON----------------------------------------------------------
10284C
10285      INCLUDE 'DPCOP2.INC'
10286C
10287C-----START POINT-----------------------------------------------------
10288C
10289C     CHECK THE INPUT ARGUMENTS FOR ERRORS
10290C
10291      IF(N.LT.1)THEN
10292        WRITE(ICOUT, 5)
10293        CALL DPWRST('XXX','BUG ')
10294        WRITE(ICOUT,47)N
10295        CALL DPWRST('XXX','BUG ')
10296        GOTO9000
10297      ELSEIF(ALPHA.LE.0.0)THEN
10298        WRITE(ICOUT,16)
10299        CALL DPWRST('XXX','BUG ')
10300        WRITE(ICOUT,46)ALPHA
10301        CALL DPWRST('XXX','BUG ')
10302        GOTO9000
10303      ELSEIF(BETA.LT.0.0)THEN
10304        WRITE(ICOUT,26)
10305        CALL DPWRST('XXX','BUG ')
10306        WRITE(ICOUT,46)BETA
10307        CALL DPWRST('XXX','BUG ')
10308        GOTO9000
10309      ENDIF
10310    5 FORMAT('***** ERROR--THE NUMBER OF REQUESTED INVERTED ',
10311     1'BETA RANDOM NUMBERS IS NON-POSITIVE.')
10312   16 FORMAT('***** ERROR--THE FIRST SHAPE PARAMETER FOR THE ',
10313     1'INVERTED BETA IS LESS THAN 0.0 *****')
10314   26 FORMAT('***** ERROR--THE SECOND SHAPE PARAMETER FOR THE ',
10315     1'INVERTED BETA IS LESS THAN 0.0 *****')
10316   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',G15.7,' *****')
10317   47 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',I8,' *****')
10318C
10319C     GENERATE N BETA RANDOM NUMBERS BY USING THE FACT THAT THE
10320C     INVERTED BETA IS A RATIO OF TWO INDEPENDENT GAMMA VARIATES.
10321C
10322      NTEMP=1
10323      DO100I=1,N
10324C
10325        CALL GAMRAN(NTEMP,ALPHA,ISEED,XG1)
10326        CALL GAMRAN(NTEMP,BETA,ISEED,XG2)
10327        X(I)=0.0
10328        IF(XG2(1).GT.0.0)X(I)=XG1(1)/XG2(1)
10329C
10330  100 CONTINUE
10331C
10332 9000 CONTINUE
10333      RETURN
10334      END
10335      INTEGER FUNCTION IDAMAX(N,DX,INCX)
10336C***BEGIN PROLOGUE  IDAMAX
10337C***DATE WRITTEN   791001   (YYMMDD)
10338C***REVISION DATE  820801   (YYMMDD)
10339C***CATEGORY NO.  D1A2
10340C***KEYWORDS  BLAS,DOUBLE PRECISION,LINEAR ALGEBRA,MAXIMUM COMPONENT,
10341C             VECTOR
10342C***AUTHOR  LAWSON, C. L., (JPL)
10343C           HANSON, R. J., (SNLA)
10344C           KINCAID, D. R., (U. OF TEXAS)
10345C           KROGH, F. T., (JPL)
10346C***PURPOSE  Find largest component of d.p. vector
10347C***DESCRIPTION
10348C
10349C                B L A S  Subprogram
10350C    Description of Parameters
10351C
10352C     --Input--
10353C        N  number of elements in input vector(s)
10354C       DX  double precision vector with N elements
10355C     INCX  storage spacing between elements of DX
10356C
10357C     --Output--
10358C   IDAMAX  smallest index (zero if N .LE. 0)
10359C
10360C     Find smallest index of maximum magnitude of double precision DX.
10361C     IDAMAX =  first I, I = 1 to N, to minimize  ABS(DX(1-INCX+I*INCX)
10362C***REFERENCES  LAWSON C.L., HANSON R.J., KINCAID D.R., KROGH F.T.,
10363C                 *BASIC LINEAR ALGEBRA SUBPROGRAMS FOR FORTRAN USAGE*,
10364C                 ALGORITHM NO. 539, TRANSACTIONS ON MATHEMATICAL
10365C                 SOFTWARE, VOLUME 5, NUMBER 3, SEPTEMBER 1979, 308-323
10366C***ROUTINES CALLED  (NONE)
10367C***END PROLOGUE  IDAMAX
10368C
10369      DOUBLE PRECISION DX(*),DMAX,XMAG
10370C***FIRST EXECUTABLE STATEMENT  IDAMAX
10371      IDAMAX = 0
10372      IF(N.LE.0) RETURN
10373      IDAMAX = 1
10374      IF(N.LE.1)RETURN
10375      IF(INCX.EQ.1)GOTO 20
10376C
10377C        CODE FOR INCREMENTS NOT EQUAL TO 1.
10378C
10379      DMAX = DABS(DX(1))
10380      NS = N*INCX
10381      II = 1
10382          DO 10 I = 1,NS,INCX
10383          XMAG = DABS(DX(I))
10384          IF(XMAG.LE.DMAX) GO TO 5
10385          IDAMAX = II
10386          DMAX = XMAG
10387    5     II = II + 1
10388   10     CONTINUE
10389      RETURN
10390C
10391C        CODE FOR INCREMENTS EQUAL TO 1.
10392C
10393   20 DMAX = DABS(DX(1))
10394      DO 30 I = 2,N
10395          XMAG = DABS(DX(I))
10396          IF(XMAG.LE.DMAX) GO TO 30
10397          IDAMAX = I
10398          DMAX = XMAG
10399   30 CONTINUE
10400      RETURN
10401      END
10402      SUBROUTINE IGACDF(X,ALPHA,CDF)
10403C
10404C     PURPOSE--THIS SUBROUTINE COMPUTES THE CUMULATIVE DISTRIBUTION
10405C              FUNCTION VALUE FOR THE INVERTED GAMMA DISTRIBUTION
10406C              WITH POSITIVE SHAPE PARAMETER ALPHA.
10407C              THIS DISTRIBUTION IS DEFINED FOR ALL POSITIVE X.
10408C              THE PROBABILITY DENSITY FUNCTION IS GIVEN
10409C              IN THE REFERENCES BELOW.
10410C              THE CDF FOR THE STANDARD FORM OF THE DISTRIBUTION IS
10411C                  F(X,ALPHA) = GAMMAIP(1/X,ALPHA)
10412C              WHERE GAMMAIP = GAMMAI(ALPHA,X)/GAMMA(ALPHA).
10413C              THE CDF IS CAN BE COMPUTED WITH THE SLATEC ROUTINE
10414C              DGAMIC.
10415C     INPUT  ARGUMENTS--X      = THE SINGLE PRECISION VALUE AT
10416C                                WHICH THE CUMULATIVE DISTRIBUTION
10417C                                FUNCTION IS TO BE EVALUATED.
10418C                                X SHOULD BE NON-NEGATIVE.
10419C                     --ALPHA  = A POSITIVE SHAPE PARAMETER
10420C     OUTPUT ARGUMENTS--CDF    = THE SINGLE PRECISION CUMULATIVE
10421C                                DISTRIBUTION FUNCTION VALUE.
10422C     OUTPUT--THE SINGLE PRECISION CUMULATIVE DISTRIBUTION
10423C             FUNCTION VALUE CDF FOR THE INVERTED GAMMA DISTRIBUTION
10424C             WITH SHAPE PARAMETER ALPHA.
10425C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
10426C     RESTRICTIONS--X SHOULD BE NON-NEGATIVE.
10427C                 --ALPHA SHOULD BE A POSITIVE NUMBER.
10428C     OTHER DATAPAC   SUBROUTINES NEEDED--GAMMIP.
10429C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE.
10430C     MODE OF INTERNAL OPERATIONS--DOUBLE PRECISION.
10431C     LANGUAGE--ANSI FORTRAN (1977)
10432C     REFERENCES--EVANS, HASTINGS, AND PEACOCK, "STATISTICAL
10433C                DISTRIBUTIONS", THIRD EDITION, WILEY, 2000,
10434C                GAMMA CHAPTER.
10435C     WRITTEN BY--JAMES J. FILLIBEN
10436C                 STATISTICAL ENGINEERING DIVISION
10437C                 INFORMATION TECHNOLOGY LABORATORY
10438C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
10439C                 GAITHERSBURG, MD 20899-8980
10440C                 PHONE--301-975-2855
10441C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
10442C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
10443C     LANGUAGE--ANSI FORTRAN (1977)
10444C     VERSION NUMBER--2004/6
10445C     ORIGINAL VERSION--JUNE      2004. PREVIOUSLY IMPLEMENTED
10446C                                       AS SPECIAL CASE OF GGDCDF
10447C
10448C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
10449C
10450C---------------------------------------------------------------------
10451C
10452      DOUBLE PRECISION DX
10453      DOUBLE PRECISION DALPHA
10454      DOUBLE PRECISION DCDF
10455      DOUBLE PRECISION DGAMIP
10456C
10457C-----COMMON----------------------------------------------------------
10458C
10459      INCLUDE 'DPCOMC.INC'
10460      INCLUDE 'DPCOP2.INC'
10461C
10462C-----DATA STATEMENTS-------------------------------------------------
10463C
10464C-----START POINT-----------------------------------------------------
10465C
10466C     CHECK THE INPUT ARGUMENTS FOR ERRORS
10467C
10468      IF(X.LE.0.0)THEN
10469        WRITE(ICOUT,4)
10470        CALL DPWRST('XXX','BUG ')
10471        WRITE(ICOUT,46)X
10472        CALL DPWRST('XXX','BUG ')
10473        PDF=0.0
10474        GOTO9999
10475      ENDIF
10476      IF(ALPHA.LE.0)THEN
10477        WRITE(ICOUT,15)
10478        CALL DPWRST('XXX','BUG ')
10479        WRITE(ICOUT,46)ALPHA
10480        CALL DPWRST('XXX','BUG ')
10481        PDF=0.0
10482        GOTO9999
10483      ENDIF
10484    4 FORMAT('***** ERROR--THE FIRST INPUT ARGUMENT ',
10485     1'TO THE IGACDF SUBROUTINE IS NON-POSITIVE *****')
10486   15 FORMAT('***** ERROR--THE SECOND INPUT ARGUMENT TO THE ',
10487     1'IGACDF SUBROUTINE IS NON-POSITIVE *****')
10488   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',E15.8,' *****')
10489C
10490C
10491      IF(X.LE.R1MACH(1))THEN
10492        CDF=0.0
10493        RETURN
10494      ENDIF
10495C
10496      DX=DBLE(X)
10497      DALPHA=DBLE(ALPHA)
10498C
10499      DCDF=1.0D0 - DGAMIP(DALPHA,1.0D0/DX)
10500      CDF=REAL(DCDF)
10501C
10502 9999 CONTINUE
10503      RETURN
10504      END
10505      SUBROUTINE IGAPDF(X,ALPHA,PDF)
10506C
10507C     PURPOSE--THIS SUBROUTINE COMPUTES THE PROBABILITY DENSITY
10508C              FUNCTION VALUE FOR THE INVERTED GAMMA DISTRIBUTION
10509C              WITH POSITIVE SHAPE PARAMETER ALPHA.
10510C              THIS DISTRIBUTION IS DEFINED FOR ALL POSITIVE X.
10511C              THE PDF FOR THE STANDARD FORM OF THE DISTRIBUTION IS
10512C                  F(X,ALPHA) = X**(-(ALPHA+1))*EXP(-1/X)/GAMMA(ALPHA)
10513C     INPUT  ARGUMENTS--X      = THE SINGLE PRECISION VALUE AT
10514C                                WHICH THE PROBABILITY DENSITY
10515C                                FUNCTION IS TO BE EVALUATED.
10516C                                X SHOULD BE NON-NEGATIVE.
10517C                     --ALPHA  = A POSITIVE SHAPE PARAMETER
10518C     OUTPUT ARGUMENTS--PDF    = THE SINGLE PRECISION PROBABILITY
10519C                                DENSITY FUNCTION VALUE.
10520C     OUTPUT--THE SINGLE PRECISION PROBABILITY DENSITY
10521C             FUNCTION VALUE PDF FOR THE INVERTED GAMMA DISTRIBUTION
10522C             WITH SHAPE PARAMETER ALPHA.
10523C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
10524C     RESTRICTIONS--X SHOULD BE NON-NEGATIVE.
10525C                 --ALPHA AND X SHOULD BE POSITIVE NUMBERS.
10526C     LANGUAGE--ANSI FORTRAN (1977)
10527C     REFERENCES--EVANS, HASTINGS, AND PEACOCK, "STATISTICAL
10528C                DISTRIBUTIONS", THIRD EDITION, WILEY, 2000,
10529C                GAMMA CHAPTER.
10530C     WRITTEN BY--JAMES J. FILLIBEN
10531C                 STATISTICAL ENGINEERING DIVISION
10532C                 INFORMATION TECHNOLOGY LABORATORY
10533C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
10534C                 GAITHERSBURG, MD 20899-8980
10535C                 PHONE--301-975-2855
10536C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
10537C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
10538C     LANGUAGE--ANSI FORTRAN (1977)
10539C     VERSION NUMBER--2004/6
10540C     ORIGINAL VERSION--JUNE      2004. PREVIOUSLY COMPUTED USING
10541C                                       GENERALIZED GAMMA WITH C=-1
10542C
10543C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
10544C
10545C---------------------------------------------------------------------
10546C
10547      DOUBLE PRECISION DX
10548      DOUBLE PRECISION DALPHA
10549      DOUBLE PRECISION DTERM1
10550      DOUBLE PRECISION DTERM2
10551      DOUBLE PRECISION DTERM3
10552      DOUBLE PRECISION DTERM4
10553      DOUBLE PRECISION DPDF
10554      DOUBLE PRECISION DLNGAM
10555C
10556C-----COMMON----------------------------------------------------------
10557C
10558      INCLUDE 'DPCOMC.INC'
10559      INCLUDE 'DPCOP2.INC'
10560C
10561C-----DATA STATEMENTS-------------------------------------------------
10562C
10563C-----START POINT-----------------------------------------------------
10564C
10565C     CHECK THE INPUT ARGUMENTS FOR ERRORS
10566C
10567      IF(X.LE.0.0)THEN
10568        WRITE(ICOUT,4)
10569        CALL DPWRST('XXX','BUG ')
10570        WRITE(ICOUT,46)X
10571        CALL DPWRST('XXX','BUG ')
10572        PDF=0.0
10573        GOTO9999
10574      ENDIF
10575      IF(ALPHA.LE.0)THEN
10576        WRITE(ICOUT,15)
10577        CALL DPWRST('XXX','BUG ')
10578        WRITE(ICOUT,46)ALPHA
10579        CALL DPWRST('XXX','BUG ')
10580        PDF=0.0
10581        GOTO9999
10582      ENDIF
10583    4 FORMAT('***** ERROR--THE FIRST INPUT ARGUMENT ',
10584     1'TO THE IGAPDF SUBROUTINE IS NON-POSITIVE *****')
10585   15 FORMAT('***** ERROR--THE SECOND INPUT ARGUMENT TO THE ',
10586     1'IGAPDF SUBROUTINE IS NON-POSITIVE *****')
10587   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',E15.8,' *****')
10588C
10589      IF(X.LE.R1MACH(1))THEN
10590        PDF=0.0
10591        RETURN
10592      ENDIF
10593C
10594      DX=DBLE(X)
10595      DALPHA=DBLE(ALPHA)
10596C
10597      DTERM1=-(DALPHA+1.0D0)*DLOG(DX)
10598      DTERM2=-1.0D0/DX
10599      DTERM3=DLNGAM(DALPHA)
10600      DTERM4=DTERM1+DTERM2-DTERM3
10601      DPDF=0.0D0
10602      IF(DTERM4.GE.-80.0D0)DPDF=DEXP(DTERM4)
10603      PDF=REAL(DPDF)
10604C
10605 9999 CONTINUE
10606      RETURN
10607      END
10608      SUBROUTINE IGAPPF(P,ALPHA,PPF)
10609C
10610C     PURPOSE   --PERCENT POINT FUNCTION FOR THE INVERTED GAMMA
10611C                 DISTRIBUTION.  USES A BISECTION METHOD.
10612C     WRITTEN BY--JAMES J. FILLIBEN
10613C                 STATISTICAL ENGINEERING DIVISION
10614C                 INFORMATION TECHNOLOGY LABORATORY
10615C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
10616C                 GAITHERSBURG, MD 20899-8980
10617C                 PHONE--301-975-2855
10618C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
10619C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
10620C     LANGUAGE--ANSI FORTRAN (1977)
10621C     VERSION NUMBER--2004/6
10622C     ORIGINAL VERSION--JUNE      2004. PREVIOUSLY IMPLEMENTED AS
10623C                                       SPECIAL CASE OF GGDPPF
10624C
10625C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
10626C
10627C---------------------------------------------------------------------
10628C
10629      DOUBLE PRECISION DP
10630      DOUBLE PRECISION DALPHA
10631      DOUBLE PRECISION EPS
10632      DOUBLE PRECISION SIG
10633      DOUBLE PRECISION ZERO
10634      DOUBLE PRECISION DMEAN
10635      DOUBLE PRECISION DSD
10636      DOUBLE PRECISION XL
10637      DOUBLE PRECISION XR
10638      DOUBLE PRECISION XINC
10639      DOUBLE PRECISION X
10640      DOUBLE PRECISION FXL
10641      DOUBLE PRECISION FXR
10642      DOUBLE PRECISION P1
10643      DOUBLE PRECISION FCS
10644      DOUBLE PRECISION XRML
10645      DOUBLE PRECISION DCDF
10646      DOUBLE PRECISION CDFL
10647      DOUBLE PRECISION CDFR
10648      DOUBLE PRECISION DGAMIP
10649C
10650      INCLUDE 'DPCOP2.INC'
10651C
10652      DATA EPS /0.0001D0/
10653      DATA SIG /1.0D-5/
10654      DATA ZERO /0.0D0/
10655      DATA MAXIT /5000/
10656C
10657C-----START POINT-----------------------------------------------------
10658C
10659C     CHECK THE INPUT ARGUMENTS FOR ERRORS
10660C
10661      IF(P.LT.0.0.OR.P.GE.1.0)THEN
10662        WRITE(ICOUT,1)
10663        CALL DPWRST('XXX','BUG ')
10664        WRITE(ICOUT,46)P
10665        CALL DPWRST('XXX','BUG ')
10666        PPF=0.0
10667        GOTO9999
10668      ENDIF
10669C
10670      IF(ALPHA.LE.0.0)THEN
10671        WRITE(ICOUT,15)
10672        CALL DPWRST('XXX','BUG ')
10673        WRITE(ICOUT,46)ALPHA
10674        CALL DPWRST('XXX','BUG ')
10675        PDF=0.0
10676        GOTO9999
10677      ELSEIF(ALPHA.LT.0.1)THEN
10678        WRITE(ICOUT,25)
10679        CALL DPWRST('XXX','BUG ')
10680        WRITE(ICOUT,46)ALPHA
10681        CALL DPWRST('XXX','BUG ')
10682        PDF=0.0
10683        GOTO9999
10684      ENDIF
10685    1 FORMAT('***** ERROR--THE FIRST ARGUMENT TO IGAPPF ',
10686     1       'IS OUTSIDE THE ALLOWABLE (0,1] INTERVAL.')
10687   15 FORMAT('***** ERROR--THE SECOND ARGUMENT TO IGAPPF ',
10688     1       'IS NON-POSITIVE.')
10689   25 FORMAT('***** ERROR--THE SECOND ARGUMENT TO IGAPPF ',
10690     1       'IS < 0.1')
10691   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',G15.7)
10692C
10693      IF(P.EQ.0.)THEN
10694        PPF=0.
10695        GOTO9999
10696      ENDIF
10697C
10698C  FIND BRACKETING INTERVAL.
10699C
10700      DP=DBLE(P)
10701      DALPHA=DBLE(ALPHA)
10702C
10703      XL=0.0D0
10704      IF(ALPHA.GT.1.0)THEN
10705        DMEAN=1.0D0/(DALPHA-1.0D0)
10706      ELSE
10707        IF(ALPHA.GE.0.9)THEN
10708          DMEAN=10.0
10709        ELSEIF(ALPHA.GE.0.5)THEN
10710          DMEAN=50.0
10711        ELSEIF(ALPHA.GE.0.1)THEN
10712          DMEAN=200.0
10713          IF(P.GT.0.75)DMEAN=100000.
10714        ELSE
10715          DMEAN=500.0
10716          IF(P.GT.0.75)DMEAN=1000000.
10717        ENDIF
10718      ENDIF
10719      IF(ALPHA.GT.2.0)THEN
10720        DSD=DSQRT(1.0D0/((DALPHA-1.0D0)**2*(DALPHA-2.0)))
10721      ELSEIF(ALPHA.GE.0.9)THEN
10722        DSD=3.0
10723      ELSEIF(ALPHA.GE.0.5)THEN
10724        DSD=10.0
10725      ELSEIF(ALPHA.GE.0.1)THEN
10726        IF(P.LE.0.75)THEN
10727          DSD=1000.0
10728        ELSE
10729          DSD=10000.0
10730        ENDIF
10731      ELSE
10732        IF(P.LE.0.75)THEN
10733          DSD=1000.0
10734        ELSE
10735          DSD=5000.0
10736        ENDIF
10737      ENDIF
10738C
10739      XR=DMEAN
10740      XINC=DSD
10741      ICOUNT=0
10742      MAXCNT=20000
10743C
10744   91 CONTINUE
10745      IF(XL.LE.0.0D0)THEN
10746        CDFL=0.0D0
10747      ELSE
10748        CDFL=1.0D0 - DGAMIP(DALPHA,1.0D0/XL)
10749      ENDIF
10750      IF(XR.LE.0.0D0)XR=XL+DMEAN
10751      CDFR=1.0D0 - DGAMIP(DALPHA,1.0D0/XR)
10752      IF(CDFL.LT.DP .AND. CDFR.LT.DP)THEN
10753        XL=XR
10754        XR=XL+XINC
10755      ELSEIF(CDFL.GT.DP .AND. CDFR.GT.DP)THEN
10756        XL=XL-XINC
10757        IF(XL.LT.0.0D0)XL=0.0D0
10758      ELSE
10759        GOTO99
10760      ENDIF
10761      ICOUNT=ICOUNT+1
10762      IF(ICOUNT.GT.MAXCNT)THEN
10763        WRITE(ICOUT,96)
10764        CALL DPWRST('XXX','BUG ')
10765        PPF=0.0
10766        GOTO9999
10767      ENDIF
10768   96 FORMAT('***** ERROR--IGAPPF UNABLE TO FIND BRACKETING ',
10769     *       'INTERVAL.')
10770      GOTO91
10771C
10772C  BISECTION METHOD
10773C
10774   99 CONTINUE
10775      IC = 0
10776      FXL = -DP
10777      FXR = 1.0D0 - DP
10778  105 CONTINUE
10779      X = (XL+XR)*0.5D0
10780      DCDF=1.0D0 - DGAMIP(DALPHA,1.0D0/X)
10781      P1=DCDF
10782      PPF=REAL(X)
10783      FCS = P1 - DP
10784      IF(FCS*FXL.GT.ZERO)GOTO110
10785      XR = X
10786      FXR = FCS
10787      GOTO115
10788  110 CONTINUE
10789      XL = X
10790      FXL = FCS
10791  115 CONTINUE
10792      XRML = XR - XL
10793      IF(XRML.LE.SIG .AND. ABS(FCS).LE.EPS)GOTO9999
10794      IC = IC + 1
10795      IF(IC.LE.MAXIT)GOTO105
10796      WRITE(ICOUT,130)
10797      CALL DPWRST('XXX','BUG ')
10798  130 FORMAT('***** ERROR--IGAPPF ROUTINE DID NOT CONVERGE.')
10799      GOTO9999
10800C
10801 9999 CONTINUE
10802      RETURN
10803      END
10804      SUBROUTINE IGARAN(N,GAMMA,ISEED,X)
10805C
10806C     PURPOSE--THIS SUBROUTINE GENERATES A RANDOM SAMPLE OF SIZE N
10807C              FROM THE INVERTED GAMMA DISTRIBUTION
10808C              WITH TAIL LENGTH PARAMETER VALUE = GAMMA.
10809C     INPUT  ARGUMENTS--N      = THE DESIRED INTEGER NUMBER
10810C                                OF RANDOM NUMBERS TO BE
10811C                                GENERATED.
10812C                     --GAMMA  = THE SINGLE PRECISION VALUE OF THE
10813C                                TAIL LENGTH PARAMETER.
10814C                                GAMMA SHOULD BE POSITIVE.
10815C     OUTPUT ARGUMENTS--X      = A SINGLE PRECISION VECTOR
10816C                                (OF DIMENSION AT LEAST N)
10817C                                INTO WHICH THE GENERATED
10818C                                RANDOM SAMPLE WILL BE PLACED.
10819C     OUTPUT--A RANDOM SAMPLE OF SIZE N
10820C             FROM THE INVERTED GAMMA DISTRIBUTION
10821C             WITH TAIL LENGTH PARAMETER VALUE = GAMMA.
10822C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
10823C     RESTRICTIONS--THERE IS NO RESTRICTION ON THE MAXIMUM VALUE
10824C                   OF N FOR THIS SUBROUTINE.
10825C                 --GAMMA SHOULD BE POSITIVE.
10826C     OTHER DATAPAC   SUBROUTINES NEEDED--UNIRAN.
10827C     FORTRAN LIBRARY SUBROUTINES NEEDED--LOG.
10828C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
10829C     LANGUAGE--ANSI FORTRAN (1977)
10830C     REFERENCES--XX
10831C               --JOHNSON AND KOTZ, CONTINUOUS UNIVARIATE
10832C                 DISTRIBUTIONS--1, 2ND. ED., 1994.
10833C     WRITTEN BY--JAMES J. FILLIBEN
10834C                 STATISTICAL ENGINEERING DIVISION
10835C                 INFORMATION TECHNOLOGY LABORATORY
10836C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
10837C                 GAITHERSBURG, MD 20899-8980
10838C                 PHONE--301-975-2855
10839C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
10840C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
10841C     LANGUAGE--ANSI FORTRAN (1966)
10842C               EXCEPTION--HOLLERITH STRINGS IN FORMAT STATEMENTS
10843C                          DENOTED BY QUOTES RATHER THAN NH.
10844C     VERSION NUMBER--2001.10
10845C     ORIGINAL VERSION--OCTOBER   2001.
10846C     UPDATED  VERSION--JANUARY   2005. BUG IF ROUTINE CALLED MORE
10847C                                       THAN ONCE, RESET AA AND AAA
10848C                                       AND STORE IN COMMON
10849C
10850C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
10851C
10852C---------------------------------------------------------------------
10853C
10854      DIMENSION X(*)
10855C
10856      COMMON/SGAMM/AA,AAA
10857C
10858C-----COMMON----------------------------------------------------------
10859C
10860      INCLUDE 'DPCOP2.INC'
10861C
10862C-----START POINT-----------------------------------------------------
10863C
10864C     CHECK THE INPUT ARGUMENTS FOR ERRORS
10865C
10866      IF(N.LT.1)THEN
10867        WRITE(ICOUT, 5)
10868        CALL DPWRST('XXX','BUG ')
10869        WRITE(ICOUT,47)N
10870        CALL DPWRST('XXX','BUG ')
10871        GOTO9000
10872      ENDIF
10873      IF(GAMMA.LE.0.0)THEN
10874        WRITE(ICOUT,15)
10875        CALL DPWRST('XXX','BUG ')
10876        WRITE(ICOUT,46)GAMMA
10877        CALL DPWRST('XXX','BUG ')
10878        GOTO9000
10879      ENDIF
10880    5 FORMAT('***** FATAL ERROR--THE 1ST INPUT ARGUMENT TO THE ',
10881     1'IGARAN SUBROUTINE IS NON-POSITIVE *****')
10882   15 FORMAT('***** FATAL ERROR--THE 2ND INPUT ARGUMENT TO THE ',
10883     1'IGARAN SUBROUTINE IS NON-POSITIVE *****')
10884   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',E15.8,' *****')
10885   47 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',I8,' *****')
10886C
10887C     GENERATE N UNIFORM (0,1) RANDOM NUMBERS;
10888C
10889CCCCC CALL UNIRAN(N,ISEED,X)
10890      AA=0.0
10891      AAA=0.0
10892C
10893C     GENERATE N INVERTED GAMMA DISTRIBUTION RANDOM NUMBERS
10894C     USING THE PERCENT POINT FUNCTION TRANSFORMATION METHOD.
10895C
10896C     NOTE 6/2004: USE RELATIONSHIP TO GAMMA DISTRIBUTION.
10897C
10898CCCCC C=-1.0
10899      DO100I=1,N
10900        ATEMP=SGAMMA(ISEED,GAMMA)
10901        X(I)=1.0/ATEMP
10902CCCCC   CALL GGDPPF(X(I),GAMMA,C,XTEMP)
10903CCCCC   X(I)=XTEMP
10904  100 CONTINUE
10905C
10906 9000 CONTINUE
10907      RETURN
10908      END
10909      SUBROUTINE IGCDF(DX,DGAMMA,DMU,DCDF)
10910C
10911C     PURPOSE--THIS SUBROUTINE COMPUTES THE CUMULATIVE DISTRIBUTION
10912C              FUNCTION VALUE FOR THE INVERSE GAUSSIAN DISTRIBUTION
10913C              WITH TAIL LENGTH PARAMETER = GAMMA AND SHAPE PARAMETER
10914C              MU (ALTHOUGH MU IS ESSENTIALLY A SCALE PARAMETER, IT IS
10915C              NOT A SCALE PARAMETER IN THE TECHNICAL SENSE THAT THE
10916C              FOLLOWING RELATIONSHIP
10917C
10918C                  f(X;LOC,SCALE) = f((X-LOC)/SCALE;0,1)/SCALE
10919C
10920C              DOES NOT HOLD. THEREFORE, WE REFER TO IT AS A SHAPE
10921C              PARAMETER.
10922C
10923C              THE STANDARD FORM OF THE DISTRIBUTION IS DEFINED FOR ALL
10924C              NON-NEGATIVE X AND HAS CUMULATIVE DISTRIBUTION FUNCTION
10925C              (PAGE 247 OF VOLUME 4 OF THE OF ENCYCLOPEDIA OF
10926C              STATISTICAL SCIENCES.
10927C
10928C                  F(X) = NORCDF(SQRT(GAMMA/X)*(-1 + (X/MU))) +
10929C                         EXP(2*GAMMA/MU)*NORCDF(SQRT(GAMMA/X)*(1 + (X/MU)))
10930C
10931C              THE PARAMETERIZATION DESCRIBED ABOVE WILL BE REFERRED TO
10932C              AS THE "TWEEDIE" PARAMETERIZATION.  NOTE THAT WHAT WE
10933C              CALL GAMMA IS CALLED LAMBDA IN MANY REFERENCES.  A
10934C              RE-PARAMETERIZATION, WHICH WE CALL THE CHAN PARAMETERIZATION,
10935C              USES
10936C
10937C                 SIGMA = SQRT(MU**3/GAMMA)
10938C
10939C     NOTE--THE INVERSE GAUSSIAN DISTRIBUTION--
10940C           1) GOES FROM 0 TO INFINITY
10941C           2) HAS MEAN = MU
10942C           3) HAS STANDARD DEVIATION = SQRT((MU**3)/GAMMA) = SIGMA
10943C           4) HAS SHAPE PARAMETER = GAMMA
10944C           5) IS HIGHLY-SKEWED AND LONG-TAILED FOR SMALL GAMMA
10945C           6) IS SYMMETRIC AND MODERATE-TAILED FOR LARGE GAMMA
10946C           7) APPROACHES NORMALITY AS GAMMA APPROACHES INFINITY
10947C     INPUT  ARGUMENTS--X      = THE DOUBLE PRECISION VALUE AT
10948C                                WHICH THE CUMULATIVE DISTRIBUTION
10949C                                FUNCTION IS TO BE EVALUATED.
10950C                                X SHOULD BE NON-NEGATIVE.
10951C                     --GAMMA  = THE FIRST SHAPE PARAMETER,
10952C                                GAMMA SHOULD BE POSITIVE.
10953C                     --AMU    = THE SECOND SHAPE PARAMETER,
10954C                                AMU SHOULD BE POSITIVE.
10955C     OUTPUT ARGUMENTS--CDF    = THE DOUBLE PRECISION CUMULATIVE
10956C                                DISTRIBUTION FUNCTION VALUE.
10957C     OUTPUT--THE DOUBLE PRECISION CUMULATIVE DISTRIBUTION FUNCTION
10958C             VALUE CDF FOR THE INVERSE GAUSSIAN DISTRIBUTION WITH
10959C             WITH TAIL LENGTH PARAMETER = GAMMA AND SHAP PARAMETER MU.
10960C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
10961C     RESTRICTIONS--X SHOULD BE NON-NEGATIVE.
10962C                 --GAMMA AND AMU SHOULD BE POSITIVE.
10963C     OTHER DATAPAC   SUBROUTINES NEEDED--NODCDF.
10964C     FORTRAN LIBRARY SUBROUTINES NEEDED--DEXP.
10965C     MODE OF INTERNAL OPERATIONS--DOUBLE PRECISION.
10966C     LANGUAGE--ANSI FORTRAN (1977)
10967C     REFERENCES--KOTZ AND JOHNSON, "ENCYCLOPEDIA OF STATISTICAL SCIENCES",
10968C                 VOLUME 4, PP. 246-249.
10969C              --COHEN AND WHITTEN, "PARAMETER ESTIMATION IN RELIABILITY
10970C                AND LIFE SPAN MODELS", MARCEL DEKKER, INC., CHAPTER 5 AND
10971C                PP. 360-361.
10972C     WRITTEN BY--JAMES J. FILLIBEN
10973C                 STATISTICAL ENGINEERING DIVISION
10974C                 INFORMATION TECHNOLOGY LABORATORY
10975C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
10976C                 GAITHERSBURG, MD 20899-8980
10977C                 PHONE--301-975-2855
10978C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
10979C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
10980C     LANGUAGE--ANSI FORTRAN (1977)
10981C     VERSION NUMBER--90.6
10982C     ORIGINAL VERSION--MAY       1990.
10983C     UPDATED         --JANUARY   1995. NEW CDF DEFINITION & REWRITTEN
10984C     UPDATED         --DECEMBER  1998. USE DOUBLE PRECISION
10985C     UPDATED         --OCTOBER   2001. BUG FIX.  MISSING SOME
10986C                                       DOUBLE PRECISION DECLARATIONS
10987C     UPDATED         --DECEMBER  2003. GENERAL CASE FOR MU (I.E.,
10988C                                       DON'T ASSUME MU=1)
10989C     UPDATED         --APRIL     2014. MAKE ARGUMENTS DOUBLE PRECISION
10990C     UPDATED         --APRIL     2014. SUPPORT CHAN PARAMETERIZATION
10991C
10992C---------------------------------------------------------------------
10993C
10994      DOUBLE PRECISION DX
10995      DOUBLE PRECISION DMU
10996      DOUBLE PRECISION DGAMMA
10997      DOUBLE PRECISION DCDF
10998      DOUBLE PRECISION DTERM1
10999      DOUBLE PRECISION DTERM2
11000      DOUBLE PRECISION DTERM3
11001CCCCC OCTOBER 2001.  ADD FOLLOWING 3 LINES
11002      DOUBLE PRECISION DTERM4
11003      DOUBLE PRECISION DTERM5
11004      DOUBLE PRECISION DTERM6
11005      DOUBLE PRECISION DTRM12
11006      DOUBLE PRECISION DTRM14
11007      DOUBLE PRECISION DPI
11008C
11009      INCLUDE 'DPCOST.INC'
11010      INCLUDE 'DPCOP2.INC'
11011C
11012C-----START POINT-----------------------------------------------------
11013C
11014C     CHECK THE INPUT ARGUMENTS FOR ERRORS
11015C
11016      DCDF=0.0D0
11017C
11018      IF(DGAMMA.LE.0.0D0)THEN
11019         WRITE(ICOUT,51)
11020   51    FORMAT('***** ERROR--THE FIRST SHAPE PARAMETER TO IGCDF IS ',
11021     1          'NON-POSITIVE.')
11022         CALL DPWRST('XXX','BUG ')
11023         WRITE(ICOUT,52)DGAMMA
11024   52    FORMAT('***** THE VALUE OF THE ARGUMENT IS ',G15.7)
11025         CALL DPWRST('XXX','BUG ')
11026         GOTO9000
11027      ELSEIF(DMU.LE.0.0D0)THEN
11028         WRITE(ICOUT,71)
11029   71    FORMAT('***** ERROR--THE SECOND SHAPE PARAMETER TO IGCDF IS ',
11030     1          'NON-POSITIVE.')
11031         CALL DPWRST('XXX','BUG ')
11032         WRITE(ICOUT,52)DMU
11033         CALL DPWRST('XXX','BUG ')
11034         GOTO9000
11035      ENDIF
11036C
11037C     CHECK FOR CHAN PARAMETERIZATION: GAMMA = MU**3/SIGMA**2
11038C
11039      IF(IGAUDF.EQ.'CHAN')THEN
11040        DGAMMA=DMU**3/DGAMMA**2
11041      ENDIF
11042C
11043      IF(DX.GT.0.0D0)THEN
11044         DPI=3.141592653589793238462643383279503D0
11045         DTERM1=DSQRT(DGAMMA/DX)
11046         DTERM2=(-1.0D0+DX/DMU)
11047         DTERM3=2.0D0*DGAMMA/DMU
11048         DTERM4=(1.0D0+DX/DMU)
11049         DTRM12=DTERM1*DTERM2
11050         DTRM14=(-DTERM1*DTERM4)
11051         CALL NODCDF(DTRM12,DTERM5)
11052         CALL NODCDF(DTRM14,DTERM6)
11053         DCDF=DTERM5+DEXP(DTERM3)*DTERM6
11054      ENDIF
11055C
11056 9000 CONTINUE
11057      RETURN
11058      END
11059      SUBROUTINE IGCHA(DX,DGAMMA,DMU,DHAZ)
11060C
11061C     PURPOSE--THIS SUBROUTINE COMPUTES THE CUMULATIVE HAZARD
11062C              FUNCTION VALUE FOR THE INVERSE GAUSSIAN DISTRIBUTION
11063C              WITH TAIL LENGTH PARAMETER = GAMMA AND SHAPE PARAMETER
11064C              MU (ALTHOUGH MU IS ESSENTIALLY A SCALE PARAMETER, IT IS
11065C              NOT A SCALE PARAMETER IN THE TECHNICAL SENSE THAT THE
11066C              FOLLOWING RELATIONSHIP
11067C
11068C                  f(X;LOC,SCALE) = f((X-LOC)/SCALE;0,1)/SCALE
11069C
11070C              DOES NOT HOLD. THEREFORE, WE REFER TO IT AS A SHAPE
11071C              PARAMETER.
11072C
11073C              WE COMPUTE THE CUMULATIVE HAZARD FUNCTION IN TERMS OF THE
11074C              CDF FUNCTION.
11075C
11076C              THE DEFAULT PARAMETERIZATION WILL BE REFERRED TO
11077C              AS THE "TWEEDIE" PARAMETERIZATION.  NOTE THAT WHAT WE
11078C              CALL GAMMA IS CALLED LAMBDA IN MANY REFERENCES.  A
11079C              RE-PARAMETERIZATION, WHICH WE CALL THE CHAN PARAMETERIZATION,
11080C              USES
11081C
11082C                 SIGMA = SQRT(MU**3/GAMMA)
11083C
11084C     INPUT  ARGUMENTS--X      = THE DOUBLE PRECISION VALUE AT WHICH THE
11085C                                CUMULATIVE HAZARD FUNCTION IS TO BE
11086C                                EVALUATED.  X SHOULD BE NON-NEGATIVE.
11087C                     --GAMMA  = THE FIRST SHAPE PARAMETER,
11088C                                GAMMA SHOULD BE POSITIVE.
11089C                     --AMU    = THE SECOND SHAPE PARAMETER,
11090C                                AMU SHOULD BE POSITIVE.
11091C     OUTPUT ARGUMENTS--HAZ    = THE DOUBLE PRECISION CUMULATIVE HAZARD
11092C                                FUNCTION VALUE.
11093C     OUTPUT--THE DOUBLE PRECISION CUMULATIVE HAZARD FUNCTION VALUE HAZ
11094C             FOR THE INVERSE GAUSSIAN DISTRIBUTION.
11095C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
11096C     RESTRICTIONS--X SHOULD BE POSITIVE.
11097C                 --GAMMA AND MU SHOULD BE POSITIVE.
11098C     OTHER DATAPAC   SUBROUTINES NEEDED--IGCDF.
11099C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE.
11100C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
11101C     LANGUAGE--ANSI FORTRAN (1977)
11102C     REFERENCES--KOTZ AND JOHNSON, "ENCYCLOPEDIA OF STATISTICAL SCIENCES",
11103C                 VOLUME 4, PP. 246-249.
11104C              --COHEN AND WHITTEN, "PARAMETER ESTIMATION IN RELIABILITY
11105C                AND LIFE SPAN MODELS", MARCEL DEKKER, INC., CHAPTER 5 AND
11106C                PP. 360-361.
11107C     WRITTEN BY--JAMES J. FILLIBEN
11108C                 STATISTICAL ENGINEERING DIVISION
11109C                 INFORMATION TECHNOLOGY LABORATORY
11110C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
11111C                 GAITHERSBURG, MD 20899-8980
11112C                 PHONE--301-975-2855
11113C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
11114C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
11115C     LANGUAGE--ANSI FORTRAN (1977)
11116C     VERSION NUMBER--98.4
11117C     ORIGINAL VERSION--APRIL     1998.
11118C     UPDATED         --DECEMBER  2003.
11119C     UPDATED         --APRIL     2014. CONVERT TO DOUBLE PRECISION
11120C     UPDATED         --APRIL     2014. SUPPORT FOR CHAN PARAMETERIZATION
11121C
11122C---------------------------------------------------------------------
11123C
11124      DOUBLE PRECISION DX
11125      DOUBLE PRECISION DGAMMA
11126      DOUBLE PRECISION DMU
11127      DOUBLE PRECISION DHAZ
11128      DOUBLE PRECISION DCDF
11129C
11130      INCLUDE 'DPCOP2.INC'
11131C
11132C-----START POINT---------------------------------------------------
11133C
11134C     CHECK THE INPUT ARGUMENTS FOR ERRORS
11135C
11136      DHAZ=0.0D0
11137      IF(DGAMMA.LE.0.0D0)THEN
11138         WRITE(ICOUT,51)
11139   51    FORMAT('***** ERROR--THE FIRST SHAPE PARAMETER TO IGCHA IS ',
11140     1          'NON-POSITIVE.')
11141         CALL DPWRST('XXX','BUG ')
11142         WRITE(ICOUT,52)DGAMMA
11143   52    FORMAT('***** THE VALUE OF THE ARGUMENT IS ',G15.7)
11144         CALL DPWRST('XXX','BUG ')
11145         GOTO9000
11146      ELSEIF(DMU.LE.0.0D0)THEN
11147         WRITE(ICOUT,71)
11148   71    FORMAT('***** ERROR--THE SECOND SHAPE PARAMETER TO IGCHA IS ',
11149     1          'NON-POSITIVE.')
11150         CALL DPWRST('XXX','BUG ')
11151         WRITE(ICOUT,52)DMU
11152         CALL DPWRST('XXX','BUG ')
11153         GOTO9000
11154      ELSEIF(DX.LT.0.0D0)THEN
11155         WRITE(ICOUT,61)
11156   61    FORMAT('***** ERROR--THE FIRST ARGUMENT TO IGCHA IS ',
11157     1          'NON-POSITIVE.')
11158         CALL DPWRST('XXX','BUG ')
11159         WRITE(ICOUT,52)DX
11160         CALL DPWRST('XXX','BUG ')
11161         GOTO9000
11162      ENDIF
11163C
11164      IF(DX.EQ.0.0D0)GOTO9000
11165C
11166      CALL IGCDF(DX,DGAMMA,DMU,DCDF)
11167      DCDF=1.0D0 - DCDF
11168      IF(DCDF.GT.0.0D0)THEN
11169        DHAZ=-DLOG(DCDF)
11170      ELSE
11171        WRITE(ICOUT,162)DX
11172  162   FORMAT('***** FOR THE VALUE OF THE ARGUMENT ',G15.7,
11173     1         ' THE CDF IS ESSENTIALLY 0, CUMULATIVE HAZARD SET TO 0.')
11174        CALL DPWRST('XXX','BUG ')
11175        DHAZ=0.0D0
11176      ENDIF
11177C
11178 9000 CONTINUE
11179      RETURN
11180      END
11181      SUBROUTINE IGHAZ(DX,DGAMMA,DMU,DHAZ)
11182C
11183C     PURPOSE--THIS SUBROUTINE COMPUTES THE HAZARD
11184C              FUNCTION VALUE FOR THE INVERSE GAUSSIAN DISTRIBUTION
11185C              WITH TAIL LENGTH PARAMETER = GAMMA AND SHAPE PARAMETER
11186C              MU (ALTHOUGH MU IS ESSENTIALLY A SCALE PARAMETER, IT IS
11187C              NOT A SCALE PARAMETER IN THE TECHNICAL SENSE THAT THE
11188C              FOLLOWING RELATIONSHIP
11189C
11190C                  f(X;LOC,SCALE) = f((X-LOC)/SCALE;0,1)/SCALE
11191C
11192C              DOES NOT HOLD. THEREFORE, WE REFER TO IT AS A SHAPE
11193C              PARAMETER.
11194C
11195C              WE COMPUTE THE HAZARD FUNCTION IN TERMS OF THE PDF AND
11196C              CDF FUNCTIONS.
11197C
11198C              THE DEFAULT PARAMETERIZATION WILL BE REFERRED TO
11199C              AS THE "TWEEDIE" PARAMETERIZATION.  NOTE THAT WHAT WE
11200C              CALL GAMMA IS CALLED LAMBDA IN MANY REFERENCES.  A
11201C              RE-PARAMETERIZATION, WHICH WE CALL THE CHAN PARAMETERIZATION,
11202C              USES
11203C
11204C                 SIGMA = SQRT(MU**3/GAMMA)
11205C
11206C     INPUT  ARGUMENTS--X      = THE DOUBLE PRECISION VALUE AT WHICH THE
11207C                                HAZARD FUNCTION IS TO BE EVALUATED.
11208C                                X SHOULD BE NON-NEGATIVE.
11209C                     --GAMMA  = THE FIRST SHAPE PARAMETER,
11210C                                GAMMA SHOULD BE POSITIVE.
11211C                     --AMU    = THE SECOND SHAPE PARAMETER,
11212C                                AMU SHOULD BE POSITIVE.
11213C     OUTPUT ARGUMENTS--HAZ    = THE DOUBLE PRECISION HAZARD FUNCTION
11214C                                VALUE.
11215C     OUTPUT--THE DOUBLE PRECISION HAZARD FUNCTION VALUE HAZ FOR THE
11216C             INVERSE GAUSSIAN DISTRIBUTION.
11217C     PURPOSE--THIS SUBROUTINE COMPUTES THE HAZARD
11218C              FUNCTION VALUE FOR THE INVERSE GAUSSIAN DISTRIBUTION
11219C              WITH TAIL LENGTH PARAMETER = GAMMA
11220C              AND SHAPE PARAMETER = MU.
11221C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
11222C     RESTRICTIONS--X SHOULD BE POSITIVE.
11223C                 --GAMMA AND MU SHOULD BE POSITIVE.
11224C     OTHER DATAPAC   SUBROUTINES NEEDED--IGPDF AND IGCDF.
11225C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE.
11226C     MODE OF INTERNAL OPERATIONS--DOUBLE PRECISION.
11227C     LANGUAGE--ANSI FORTRAN (1977)
11228C     REFERENCES--KOTZ AND JOHNSON, "ENCYCLOPEDIA OF STATISTICAL SCIENCES",
11229C                 VOLUME 4, PP. 246-249.
11230C              --COHEN AND WHITTEN, "PARAMETER ESTIMATION IN RELIABILITY
11231C                AND LIFE SPAN MODELS", MARCEL DEKKER, INC., CHAPTER 5 AND
11232C                PP. 360-361.
11233C     WRITTEN BY--JAMES J. FILLIBEN
11234C                 STATISTICAL ENGINEERING DIVISION
11235C                 INFORMATION TECHNOLOGY LABORATORY
11236C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
11237C                 GAITHERSBURG, MD 20899-8980
11238C                 PHONE--301-975-2855
11239C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
11240C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
11241C     LANGUAGE--ANSI FORTRAN (1977)
11242C     VERSION NUMBER--98.4
11243C     ORIGINAL VERSION--APRIL     1998.
11244C     UPDATED  VERSION--DECEMBER  2003.
11245C     UPDATED         --APRIL     2014. CONVERT TO DOUBLE PRECISION
11246C     UPDATED         --APRIL     2014. SUPPORT FOR CHAN PARAMETERIZATION
11247C
11248C---------------------------------------------------------------------
11249C
11250      DOUBLE PRECISION DX
11251      DOUBLE PRECISION DGAMMA
11252      DOUBLE PRECISION DMU
11253      DOUBLE PRECISION DHAZ
11254      DOUBLE PRECISION DCDF
11255      DOUBLE PRECISION DPDF
11256C
11257      INCLUDE 'DPCOP2.INC'
11258C
11259C-----START POINT-----------------------------------------------------
11260C
11261C     CHECK THE INPUT ARGUMENTS FOR ERRORS
11262C
11263      DHAZ=0.0D0
11264      IF(DGAMMA.LE.0.0D0)THEN
11265         WRITE(ICOUT,51)
11266   51    FORMAT('***** ERROR--THE FIRST SHAPE PARAMETER TO IGHAZ IS ',
11267     1          'NON-POSITIVE.')
11268         CALL DPWRST('XXX','BUG ')
11269         WRITE(ICOUT,52)DGAMMA
11270   52    FORMAT('***** THE VALUE OF THE ARGUMENT IS ',G15.7)
11271         CALL DPWRST('XXX','BUG ')
11272         GOTO9000
11273      ELSEIF(DMU.LE.0.0D0)THEN
11274         WRITE(ICOUT,71)
11275   71    FORMAT('***** ERROR--THE SECOND SHAPE PARAMETER TO IGHAZ IS ',
11276     1          'NON-POSITIVE.')
11277         CALL DPWRST('XXX','BUG ')
11278         WRITE(ICOUT,52)DMU
11279         CALL DPWRST('XXX','BUG ')
11280         GOTO9000
11281      ELSEIF(DX.LT.0.0D0)THEN
11282         WRITE(ICOUT,61)
11283   61    FORMAT('***** ERROR--THE FIRST ARGUMENT TO IGHAZ IS ',
11284     1          'NON-POSITIVE.')
11285         CALL DPWRST('XXX','BUG ')
11286         WRITE(ICOUT,52)DX
11287         CALL DPWRST('XXX','BUG ')
11288         GOTO9000
11289      ENDIF
11290C
11291      IF(DX.EQ.0.0D0)GOTO9000
11292C
11293      CALL IGPDF(DX,DGAMMA,DMU,DPDF)
11294      CALL IGCDF(DX,DGAMMA,DMU,DCDF)
11295      DCDF=1.0D0 - DCDF
11296      IF(DCDF.GT.0.0D0)THEN
11297        DHAZ=DPDF/DCDF
11298      ELSE
11299        WRITE(ICOUT,162)DX
11300  162   FORMAT('***** FOR THE VALUE OF THE ARGUMENT, ',
11301     1         G15.7,', THE CDF IS ESSENTIALLY 0, HAZARD SET TO 0.')
11302        CALL DPWRST('XXX','BUG ')
11303      ENDIF
11304C
11305 9000 CONTINUE
11306      RETURN
11307      END
11308      SUBROUTINE IGLI1(Y,N,ICASPL,ALOC,AMU,GAMMA,
11309     1                 ALIK,AIC,AICC,BIC,
11310     1                 ISUBRO,IBUGA3,IERROR)
11311C
11312C     PURPOSE--THIS ROUTINE COMPUTES THE LIKELIHOOD FUNCTION FOR
11313C              THE INVERSE GUASSIAN DISTRIBUTION.  THIS IS
11314C              FOR THE RAW DATA CASE (I.E., NO GROUPING AND NO CENSORING).
11315C
11316C              IT IS ASSUMED THAT BASIC ERROR CHECKING HAS ALREADY BEEN
11317C              PERFORMED.
11318C
11319C     WRITTEN BY--ALAN HECKERT
11320C                 STATISTICAL ENGINEERING DIVISION
11321C                 INFORMATION TECHNOLOGY LABORATORY
11322C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
11323C                 GAITHERSBURG, MD 20899-8980
11324C                 PHONE--301-975-2899
11325C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
11326C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
11327C     LANGUAGE--ANSI FORTRAN (1977)
11328C     VERSION NUMBER--2014/4
11329C     ORIGINAL VERSION--APRIL     2014.
11330C
11331C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
11332C
11333      CHARACTER*4 ICASPL
11334      CHARACTER*4 ISUBRO
11335      CHARACTER*4 IBUGA3
11336      CHARACTER*4 IERROR
11337C
11338      CHARACTER*4 IWRITE
11339C
11340      CHARACTER*4 ISUBN1
11341      CHARACTER*4 ISUBN2
11342      CHARACTER*4 ISTEPN
11343C
11344      DOUBLE PRECISION DX
11345      DOUBLE PRECISION DLOC
11346      DOUBLE PRECISION DMU
11347      DOUBLE PRECISION DG
11348      DOUBLE PRECISION DN
11349      DOUBLE PRECISION DNP
11350      DOUBLE PRECISION DLIK
11351      DOUBLE PRECISION DSUM1
11352      DOUBLE PRECISION DSUM2
11353      DOUBLE PRECISION DTERM1
11354      DOUBLE PRECISION DTERM3
11355      DOUBLE PRECISION DPI
11356C
11357C---------------------------------------------------------------------
11358C
11359      DIMENSION Y(*)
11360C
11361C-----COMMON----------------------------------------------------------
11362C
11363      INCLUDE 'DPCOP2.INC'
11364C
11365      DATA DPI/3.14159265358979D+00/
11366C
11367C-----START POINT-----------------------------------------------------
11368C
11369      ISUBN1='IGLI'
11370      ISUBN2='1   '
11371      IERROR='NO'
11372C
11373      ALIK=CPUMIN
11374      AIC=CPUMIN
11375      AICC=CPUMIN
11376      BIC=CPUMIN
11377C
11378      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'GLI1')THEN
11379        WRITE(ICOUT,999)
11380  999   FORMAT(1X)
11381        CALL DPWRST('XXX','WRIT')
11382        WRITE(ICOUT,51)
11383   51   FORMAT('**** AT THE BEGINNING OF IGLI1--')
11384        CALL DPWRST('XXX','WRIT')
11385        WRITE(ICOUT,52)IBUGA3,ISUBRO,ICASPL
11386   52   FORMAT('IBUGA3,ISUBRO,ICASPL = ',2(A4,2X),A4)
11387        CALL DPWRST('XXX','WRIT')
11388        WRITE(ICOUT,55)N,ALOC,AMU,GAMMA
11389   55   FORMAT('N,ALOC,AMU,GAMMA = ',I8,3G15.7)
11390        CALL DPWRST('XXX','WRIT')
11391        DO56I=1,MIN(N,100)
11392          WRITE(ICOUT,57)I,Y(I)
11393   57     FORMAT('I,Y(I) = ',I8,G15.7)
11394          CALL DPWRST('XXX','WRIT')
11395   56   CONTINUE
11396      ENDIF
11397C
11398C               ******************************************
11399C               **  STEP 1--                            **
11400C               **  COMPUTE LIKELIHOOD FUNCTION         **
11401C               ******************************************
11402C
11403      ISTEPN='1'
11404      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'GLI1')
11405     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
11406C
11407      IERROR='NO'
11408      IWRITE='OFF'
11409      IF(ICASPL.EQ.'2IGA')ALOC=0.0
11410C
11411C     LOG-LIKELIHOOD FUNCTION IS:
11412C
11413C     (N/2)*LOG(GAMMA/(2*PI)) -
11414C     (3/2)*SUM[i=1 to N][LOG(Y(i) - LOC)] -
11415C     (GAMMA/(2*MU**2))*SUM[i=1 to N][(Y(i)-LOC-MU)**2/(Y(i)-LOC)]
11416C
11417      DN=DBLE(N)
11418      DLOC=DBLE(ALOC)
11419      DMU=DBLE(AMU)
11420      DG=DBLE(GAMMA)
11421C
11422      DTERM1=(DN/2.0D0)*DLOG(DG/(2.0D0*DPI))
11423      DSUM1=0.0D0
11424      DSUM2=0.0D0
11425C
11426      DO1010I=1,N
11427        DX=DBLE(Y(I))
11428        DSUM1=DSUM1 + DLOG(DX-DLOC)
11429        DSUM2=DSUM2 + (DX-DLOC-DMU)**2/(DX-DLOC)
11430 1010 CONTINUE
11431C
11432      DLIK=DTERM1 - 1.5D0*DSUM1 - (DG/(2.0D0*DMU**2))*DSUM2
11433      ALIK=REAL(DLIK)
11434      DNP=2.0D0
11435      IF(ICASPL.EQ.'3IGA')DNP=3.0
11436      AIC=REAL(-2.0D0*DLIK + 2.0D0*DNP)
11437      DTERM3=(2.0D0*DNP*(DNP+1.0D0))/(DN-DNP-1.0D0)
11438      AICC=REAL(-2.0D0*DLIK + 2.0D0*DNP + DTERM3)
11439      BIC=REAL(-2.0D0*DLIK + DNP*LOG(DN))
11440C
11441      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'GLI1')THEN
11442        WRITE(ICOUT,999)
11443        CALL DPWRST('XXX','WRIT')
11444        WRITE(ICOUT,9011)
11445 9011   FORMAT('**** AT THE END OF IGLI1--')
11446        CALL DPWRST('XXX','WRIT')
11447        WRITE(ICOUT,9013)DSUM1,DSUM2,DTERM1
11448 9013   FORMAT('DSUM1,DSUM2,DTERM1 = ',3G15.7)
11449        CALL DPWRST('XXX','WRIT')
11450        WRITE(ICOUT,9014)ALIK,AIC,AICC,BIC
11451 9014   FORMAT('ALIK,AIC,AICC,BIC = ',4G15.7)
11452        CALL DPWRST('XXX','WRIT')
11453      ENDIF
11454C
11455      RETURN
11456      END
11457      SUBROUTINE IGLI2(Y,X,N,NTOT,ICASPL,ALOC,AMU,GAMMA,
11458     1                 ALIK,AIC,AICC,BIC,
11459     1                 ISUBRO,IBUGA3,IERROR)
11460C
11461C     PURPOSE--THIS ROUTINE COMPUTES THE LIKELIHOOD FUNCTION FOR THE
11462C              INVERSE GUASSIAN DISTRIBUTION FOR GROUPED DATA WITH
11463C              EQUAL BIN SIZES (I.E., X DENOTES THE BIN MID-POINTS) AND
11464C              NO  CENSORING.
11465C
11466C              IT IS ASSUMED THAT BASIC ERROR CHECKING HAS ALREADY BEEN
11467C              PERFORMED.
11468C
11469C     WRITTEN BY--ALAN HECKERT
11470C                 STATISTICAL ENGINEERING DIVISION
11471C                 INFORMATION TECHNOLOGY LABORATORY
11472C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
11473C                 GAITHERSBURG, MD 20899-8980
11474C                 PHONE--301-975-2899
11475C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
11476C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
11477C     LANGUAGE--ANSI FORTRAN (1977)
11478C     VERSION NUMBER--2014/4
11479C     ORIGINAL VERSION--APRIL     2014.
11480C
11481C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
11482C
11483      CHARACTER*4 ICASPL
11484      CHARACTER*4 ISUBRO
11485      CHARACTER*4 IBUGA3
11486      CHARACTER*4 IERROR
11487C
11488      CHARACTER*4 IWRITE
11489C
11490      CHARACTER*4 ISUBN1
11491      CHARACTER*4 ISUBN2
11492      CHARACTER*4 ISTEPN
11493C
11494      DOUBLE PRECISION DX
11495      DOUBLE PRECISION DW
11496      DOUBLE PRECISION DLOC
11497      DOUBLE PRECISION DMU
11498      DOUBLE PRECISION DGAMMA
11499      DOUBLE PRECISION DN
11500      DOUBLE PRECISION DNP
11501      DOUBLE PRECISION DLIK
11502      DOUBLE PRECISION DTERM3
11503      DOUBLE PRECISION DPDF
11504C
11505C---------------------------------------------------------------------
11506C
11507      DIMENSION Y(*)
11508      DIMENSION X(*)
11509C
11510C-----COMMON----------------------------------------------------------
11511C
11512      INCLUDE 'DPCOP2.INC'
11513C
11514C-----START POINT-----------------------------------------------------
11515C
11516      ISUBN1='IGL2'
11517      ISUBN2='1   '
11518      IERROR='NO'
11519C
11520      ALIK=CPUMIN
11521      AIC=CPUMIN
11522      AICC=CPUMIN
11523      BIC=CPUMIN
11524C
11525      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'GLI2')THEN
11526        WRITE(ICOUT,999)
11527  999   FORMAT(1X)
11528        CALL DPWRST('XXX','WRIT')
11529        WRITE(ICOUT,51)
11530   51   FORMAT('**** AT THE BEGINNING OF IGLI2--')
11531        CALL DPWRST('XXX','WRIT')
11532        WRITE(ICOUT,52)IBUGA3,ISUBRO,ICASPL
11533   52   FORMAT('IBUGA3,ISUBRO,ICASPL = ',2(A4,2X),A4)
11534        CALL DPWRST('XXX','WRIT')
11535        WRITE(ICOUT,55)N,ALOC,AMU,GAMMA
11536   55   FORMAT('N,ALOC,AMU,GAMMA = ',I8,3G15.7)
11537        CALL DPWRST('XXX','WRIT')
11538        DO56I=1,MIN(N,100)
11539          WRITE(ICOUT,57)I,Y(I),X(I)
11540   57     FORMAT('I,Y(I),X(I) = ',I8,2G15.7)
11541          CALL DPWRST('XXX','WRIT')
11542   56   CONTINUE
11543      ENDIF
11544C
11545C               ******************************************
11546C               **  STEP 1--                            **
11547C               **  COMPUTE LIKELIHOOD FUNCTION         **
11548C               ******************************************
11549C
11550      ISTEPN='1'
11551      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'GLI2')
11552     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
11553C
11554      IERROR='NO'
11555      IWRITE='OFF'
11556      IF(ICASPL.EQ.'2IGA')ALOC=0.0
11557C
11558C     NOTE THAT THE INVERSE GAUSSIAN MAY SUPPORT AN OPTIONAL
11559C     LOCATION PARAMETER.  HOWEVER, THE SCALE PARAMETER IS NOT
11560C     TYPICALLY USED SINCE MU IS ESSENTIALLY A SCALE PARAMETER
11561C     (ALTHOUGH NOT IN THE STRICT TECHNICAL SENSE).  THE SCALE
11562C     PARAMETER IS NOT SUPPORTED HERE.
11563C
11564      DGAMMA=DBLE(GAMMA)
11565      DMU=DBLE(AMU)
11566      DLOC=DBLE(ALOC)
11567      DLIK=0.0D0
11568      DN=DBLE(NTOT)
11569C
11570      DO1010I=1,N
11571        IF(Y(I).LE.0.0)GOTO1010
11572        DX=DBLE(X(I)) - DLOC
11573        DW=DBLE(Y(I))
11574        CALL IGPDF(DX,DGAMMA,DMU,DPDF)
11575        IF(DPDF.LE.0.0D0)THEN
11576          IERROR='YES'
11577          GOTO9000
11578        ENDIF
11579        DLIK=DLIK + DLOG(DW*DPDF)
11580C
11581        IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'GLI2')THEN
11582          WRITE(ICOUT,1011)I,DX,DW,DPDF,DLIK
11583 1011     FORMAT('I,DX,DW,DPDF,DLIK = ',I8,4G15.7)
11584          CALL DPWRST('XXX','WRIT')
11585        ENDIF
11586C
11587 1010 CONTINUE
11588C
11589      ALIK=REAL(DLIK)
11590      DNP=2.0D0
11591      IF(ICASPL.EQ.'3IGA')DNP=3.0
11592      AIC=REAL(-2.0D0*DLIK + 2.0D0*DNP)
11593      DTERM3=(2.0D0*DNP*(DNP+1.0D0))/(DN-DNP-1.0D0)
11594      AICC=REAL(-2.0D0*DLIK + 2.0D0*DNP + DTERM3)
11595      BIC=REAL(-2.0D0*DLIK + DNP*LOG(DN))
11596C
11597 9000 CONTINUE
11598      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'GLI2')THEN
11599        WRITE(ICOUT,999)
11600        CALL DPWRST('XXX','WRIT')
11601        WRITE(ICOUT,9011)
11602 9011   FORMAT('**** AT THE END OF IGLI2--')
11603        CALL DPWRST('XXX','WRIT')
11604        WRITE(ICOUT,9014)ALIK,AIC,AICC,BIC
11605 9014   FORMAT('ALIK,AIC,AICC,BIC = ',4G15.7)
11606        CALL DPWRST('XXX','WRIT')
11607      ENDIF
11608C
11609      RETURN
11610      END
11611      SUBROUTINE IGML1(Y,N,PSTAMV,
11612     1                 XMEAN,XSD,XMIN,XSKEW,
11613     1                 ALOCML,AMUML,SIGMML,GAMMML,
11614     1                 ISUBRO,IBUGA3,IERROR)
11615C
11616C     PURPOSE--THIS ROUTINE COMPUTES MAXIMUM LIKELIHOOD ESTIMATES
11617C              FOR THE 3-PARAMETER INVERSE GAUSSIAN DISTRIBUTION.
11618C
11619C              THIS IS FOR THE UNCENSORED, UPGROUPED CASE.
11620C
11621C              NOTE THAT THERE ARE SEVERAL PARAMETERIZATIONS OF THE
11622C              INVERSE GAUSSIAN DISTRIBUTION.
11623C
11624C              1) DATAPLOT USES THE TWEEDIE PARAMETERIZATION.  THIS
11625C                 PARAMETERIZATION HAS SHAPE PARAMETERS MU AND GAMMA
11626C                 (COHEN CALLS THE GAMMA PARAMETER LAMBDA) AND A
11627C                 THRESHOLD (LOCATION) PARAMETER.  COHEN USES GAMMA
11628C                 FOR THE THRESHOLD PARAMETER.
11629C
11630C              2) THE COHEN ALGORITHM ESTIMATES THE PARAMETERS BASED
11631C                 ON THE CHAN RE-PARAMETERIZATION:
11632C
11633C                    GAMMA = LAMBDA
11634C                          = MU**3/SIGMA**2
11635C
11636C                 THE COHEN/WHITTEN ALGORITHM GIVEN HERE ESTIMATES THE
11637C                 LOCATION PARAMETER, MU, AND SIGMA.  NOTE THAT GAMMA
11638C                 CAN BE COMPUTED FROM THE MU AND SIGMA.
11639C
11640C                 NOTE THAT NO ESTIMATION WILL BE PERFORMED FOR THE
11641C                 CASE WHERE THE SKEWNESS PARAMETER IS NEGATIVE.
11642C
11643C     REFERENCE--COHEN AND WHITTEN, "PARAMETER ESTIMATION IN RELIABILITY
11644C                AND LIFE SPAN MODELS", MARCEL DEKKER, INC., CHAPTER 5 AND
11645C                PP. 360-361.
11646C     WRITTEN BY--ALAN HECKERT
11647C                 STATISTICAL ENGINEERING DIVISION
11648C                 INFORMATION TECHNOLOGY LABORATORY
11649C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
11650C                 GAITHERSBURG, MD 20899-8980
11651C                 PHONE--301-975-2899
11652C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
11653C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
11654C     LANGUAGE--ANSI FORTRAN (1977)
11655C     VERSION NUMBER--2014/4
11656C     ORIGINAL VERSION--APRIL     2014
11657C
11658C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
11659C
11660      REAL Y(*)
11661C
11662      DOUBLE PRECISION AMOM(3)
11663      DOUBLE PRECISION VML(5)
11664      DOUBLE PRECISION TL
11665      DOUBLE PRECISION TU
11666      DOUBLE PRECISION T
11667      DOUBLE PRECISION FL
11668      DOUBLE PRECISION FU
11669      DOUBLE PRECISION F
11670      DOUBLE PRECISION EPS
11671      DOUBLE PRECISION DN
11672      DOUBLE PRECISION BOUND
11673      DOUBLE PRECISION STEP
11674      DOUBLE PRECISION S1
11675      DOUBLE PRECISION S2
11676      DOUBLE PRECISION S3
11677C
11678      CHARACTER*4 ISUBRO
11679      CHARACTER*4 IBUGA3
11680      CHARACTER*4 IERROR
11681C
11682      CHARACTER*4 ISUBN1
11683      CHARACTER*4 ISUBN2
11684      CHARACTER*4 ISTEPN
11685      CHARACTER*40 IDIST
11686C
11687C-----COMMON----------------------------------------------------------
11688C
11689      INCLUDE 'DPCOP2.INC'
11690C
11691C-----START POINT-----------------------------------------------------
11692C
11693      ISUBN1='IGML'
11694      ISUBN2='1   '
11695      IERROR='NO'
11696C
11697      ALOCML=CPUMIN
11698      AMUML=CPUMIN
11699      SIGMML=CPUMIN
11700      GAMMML=CPUMIN
11701C
11702      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'GML1')THEN
11703        WRITE(ICOUT,999)
11704  999   FORMAT(1X)
11705        CALL DPWRST('XXX','WRIT')
11706        WRITE(ICOUT,51)
11707   51   FORMAT('**** AT THE BEGINNING OF IGML1--')
11708        CALL DPWRST('XXX','WRIT')
11709        WRITE(ICOUT,52)IBUGA3,ISUBRO,N,PSTAMV
11710   52   FORMAT('IBUGA3,ISUBRO,N,PSTAMV = ',2(A4,2X),I8,G15.7)
11711        CALL DPWRST('XXX','WRIT')
11712        DO55I=1,N
11713          WRITE(ICOUT,54)I,Y(I)
11714   54     FORMAT('I,Y(I) = ',I8,G15.7)
11715          CALL DPWRST('XXX','WRIT')
11716   55   CONTINUE
11717      ENDIF
11718C
11719C               ******************************************
11720C               **  STEP 1--                            **
11721C               **  CARRY OUT CALCULATIONS FOR THE      **
11722C               **  INVERSE GAUSSIAN ML     ESTIMATES   **
11723C               ******************************************
11724C
11725      ISTEPN='1'
11726      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'GML1')
11727     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
11728C
11729      IFLAG=0
11730      IDIST='INVERSE GAUSSIAN'
11731      CALL SUMRAW(Y,N,IDIST,IFLAG,
11732     1            XMEAN,XVAR,XSD,XMIN,XMAX,
11733     1            ISUBRO,IBUGA3,IERROR)
11734      AMOM(1)=DBLE(XMEAN)
11735      AMOM(2)=DBLE(XSD)
11736      AMOM(3)=DBLE(XSKEW)
11737C
11738      IF(XSKEW.LE.0.0)THEN
11739        WRITE(ICOUT,999)
11740        CALL DPWRST('XXX','WRIT')
11741        WRITE(ICOUT,101)
11742  101   FORMAT('***** ERROR IN INVERSE GAUSSIAN MLE ESTIMATION--')
11743        CALL DPWRST('XXX','WRIT')
11744        WRITE(ICOUT,112)
11745  112   FORMAT('      THE SAMPLE SKEWNESS IS NON-POSTIVE.')
11746        CALL DPWRST('XXX','WRIT')
11747        WRITE(ICOUT,113)XSKEW
11748  113   FORMAT('      SKEWNESS = ',G15.7)
11749        CALL DPWRST('XXX','WRIT')
11750        IERROR='YES'
11751        GOTO9000
11752      ELSEIF(N.LT.5)THEN
11753        WRITE(ICOUT,999)
11754        CALL DPWRST('XXX','WRIT')
11755        WRITE(ICOUT,101)
11756        CALL DPWRST('XXX','WRIT')
11757        WRITE(ICOUT,122)
11758  122   FORMAT('      THE SAMPLE SIZE IS LESS THAN FIVE.')
11759        CALL DPWRST('XXX','WRIT')
11760        WRITE(ICOUT,123)N
11761  123   FORMAT('      SAMPLE SIZE  = ',I8)
11762        CALL DPWRST('XXX','WRIT')
11763        IERROR='YES'
11764        GOTO9000
11765      ENDIF
11766C
11767C               ******************************************
11768C               **  STEP 2--                            **
11769C               **  ML     ESTIMATES                    **
11770C               ******************************************
11771C
11772      ISTEPN='2'
11773      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'GML1')
11774     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
11775C
11776C     IN CODE BELOW:
11777C
11778C        VML(1) = ESTIMATE OF LOCATION
11779C        VML(2) = ESTIMATE OF MU
11780C        VML(3) = ESTIMATE OF SIGMA
11781C        VML(4) = ESTIMATE OF MEAN
11782C               = LOC + MU
11783C        VML(5) = A3 (THIRD STANDARD MOMENT)
11784C               = 3*SIGMA/MU
11785C     CODE FROM PAGE 360-361 OF COHEN AND WHITTEN
11786C
11787      IERR=0
11788      EPS=0.1D-08
11789      DN=DBLE(N)
11790C
11791C     PLACE A LOWER BOUND ON THE LOCATION PARAMETER AND SET THE INITIAL
11792C     GUESS TO THE MINIMUM MINUS AN EPSILON (THIS WILL ALSO BE THE UPPER
11793C     BOUND.
11794C
11795      BOUND=DBLE(XMIN) - 30.0D0*AMOM(2)
11796      STEP=AMOM(2)/50.0D0
11797      TU=DBLE(XMIN) - EPS
11798      S1=0.0D0
11799      S2=0.0D0
11800      S3=0.0D0
11801      DO211I=1,N
11802        DX=DBLE(Y(I))
11803        S3=S3 + (DX-AMOM(1))**2/(DX-TU)
11804        S2=S2 + 1.0D0/(DX-TU)
11805        S1=S1 + 1.0D0/(DX-TU)**2
11806  211 CONTINUE
11807      FU=3.0D0*S3*S2/DN + DN - (AMOM(1)-TU)**2*S1
11808C
11809C     LOCATE A LOWER BOUND FOR THE LOCATION AND CHECK THAT IT IS IN
11810C     THE INTERVAL (TL,TU).
11811C
11812      TL=XMIN
11813      FL=FU
11814C
11815  300 CONTINUE
11816      IF(FL*FU.GT.0.0D0)THEN
11817        TL=TL-STEP
11818        IF(TL.LT.BOUND)THEN
11819          IERROR='YES'
11820          WRITE(ICOUT,999)
11821          CALL DPWRST('XXX','WRIT')
11822          WRITE(ICOUT,101)
11823          CALL DPWRST('XXX','WRIT')
11824          WRITE(ICOUT,322)
11825  322     FORMAT('      UNABLE TO FIND BRACKETING INTERVAL FOR THE ',
11826     1           'LOCATION PARMETER.')
11827          CALL DPWRST('XXX','WRIT')
11828          GOTO9000
11829        ELSE
11830          S1=0.0D0
11831          S2=0.0D0
11832          S3=0.0D0
11833          DO311I=1,N
11834            DX=DBLE(Y(I))
11835            S3=S3 + (DX-AMOM(1))**2/(DX-TL)
11836            S2=S2 + 1.0D0/(DX-TL)
11837            S1=S1 + 1.0D0/(DX-TL)**2
11838  311     CONTINUE
11839          FL=3.0D0*S3*S2/DN + DN - (AMOM(1)-TL)**2*S1
11840          GOTO300
11841        ENDIF
11842      ELSE
11843C
11844C       USE BINARY SEARCH TO FIND THE ESTIMATE OF THE LOCATION PARAMETER.
11845C
11846  400   CONTINUE
11847        T=(TU+TL)/2.0D0
11848        S1=0.0D0
11849        S2=0.0D0
11850        S3=0.0D0
11851        DO411I=1,N
11852          DX=DBLE(Y(I))
11853          S3=S3 + (DX-AMOM(1))**2/(DX-T)
11854          S2=S2 + 1.0D0/(DX-T)
11855          S1=S1 + 1.0D0/(DX-T)**2
11856  411   CONTINUE
11857        F=3.0D0*S3*S2/DN + DN - (AMOM(1)-T)**2*S1
11858        IF(DABS(T-TL).GT.EPS)THEN
11859          IF(F*FL.LT.0.0D0)THEN
11860            TU=T
11861          ELSE
11862            TL=T
11863            FL=F
11864          ENDIF
11865          GOTO400
11866        ELSE
11867          VML(2)=(AMOM(1) - T)
11868          VML(3)=DSQRT(VML(2)/DN*S3)
11869          VML(1)=T
11870          VML(4)=VML(2)+ VML(1)
11871          VML(5)=3.0D0*VML(3)/VML(2)
11872        ENDIF
11873      ENDIF
11874C
11875      ALOCML=REAL(VML(1))
11876      AMUML=REAL(VML(2))
11877      SIGMML=REAL(VML(3))
11878      GAMMML=REAL(VML(2)**3/VML(3)**2)
11879C
11880 9000 CONTINUE
11881      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'GML1')THEN
11882        WRITE(ICOUT,999)
11883        CALL DPWRST('XXX','WRIT')
11884        WRITE(ICOUT,9011)
11885 9011   FORMAT('**** AT THE END OF IGML1--')
11886        CALL DPWRST('XXX','WRIT')
11887        WRITE(ICOUT,9012)ALOCML,AMUML,SIGMML,GAMMML
11888 9012   FORMAT('ALOCML,AMUML,SIGMML,GAMMML = ',4G15.7)
11889        CALL DPWRST('XXX','WRIT')
11890      ENDIF
11891C
11892      RETURN
11893      END
11894      SUBROUTINE IGML5(ALOC,AMU,SIGMA,GAMMA,N,ICASAN,IGAUDF,COV,
11895     1                 XTEMP,ITEMP,MAXNXT,
11896     1                 ISUBRO,IBUGA3,IERROR)
11897C
11898C     PURPOSE--THIS ROUTINE COMPUTES THE PARAMETER VARIANCE-COVARIANCE
11899C              MATRIX FOR THE 3-PARAMETER INVERSE GAUSSIAN DISTRIBUTION.
11900C
11901C              NOTE THAT THERE ARE 2 COMMON PARAMETERIZATIONS FOR THE
11902C              IVERSE GAUSSIAN DISTRIBUTION.
11903C
11904C              FOR THE CHAN/COHEN AND WHITEN PARAMETERIZATION:
11905C
11906C              THE EXPECTED INFORMATION MATRIX IS OBTAINED FROM THE
11907C              FOLLOWING QUANTITIES (3-PARAMETER CASE):
11908C
11909C                 I(1,1) = (N/SIGMA**2)*[7*A3**4*((A3**2/9) + 1)/54 +
11910C                          (A3**2/2) + 1]
11911C                 I(1,2) = (N/SIGMA**2)*((A3/2)*((A3**2/9) + 1) + 1)
11912C                 I(1,3) = -(N/SIGMA**2)*A3*((A3**2/9) + 1)
11913C                 I(2,2) = (N/SIGMA**2)*((A3**2/2) + 1)
11914C                 I(2,3) = -(N/SIGMA**2)*A3
11915C                 I(3,3) = 2*N/SIGMA**2
11916C
11917C              WHERE A3 = 3*SIGMA/MU
11918C
11919C              THE PARAMETER VARIANCE-COVARIANCE MATRIX IS THE
11920C              INVERSE OF THE INFORMATION MATRIX.
11921C
11922C              FOR THE ORIGINAL TWEEDIE PARAMETERIZATION, THE COVARIANCE
11923C              MATRIX TERMS ARE SIGMA(I,J)/D WHERE
11924C
11925C                 SIGMA(1,1) = 0.5/(GAMMA*MU**3)
11926C                 SIGMA(1,2) = -0.5/(GAMMA*MU**3)
11927C                 SIGMA(1,3) = -1.5*((1/MU**4) + 1/(GAMMA*MU**3))
11928C                 SIGMA(2,3) = 1.5*((1/MU**4) + 1/(GAMMA*MU**3))
11929C                 SIGMA(2,2) = 0.5*MU**3/GAMMA + 0.75/(GAMMA**3*MU) +
11930C                              3/GAMMA**4
11931C                 SIGMA(3,3) = 4.5*GAMMA/MU**5 + 10.5/MU**4 +
11932C                              10.5/(GAMMA*MU**3)
11933C
11934C                 D=0.75/(GAMMA**2*MU**4) + 3/(GAMMA**3*MU**3)
11935C
11936C
11937C     REFERENCE--COHEN AND WHITTEN (1988), "PARAMETER ESTIMATION IN
11938C                RELIABILITY AND LIFE SPAN MODELS", MARCEL DEKKER, INC.,
11939C                CHAPTER 5.
11940C              --CHENG AND AMIN (1981), "MAXIMUM LIKELIHOOD ESTIMATION
11941C                OF PARAMETERS IN THE INVERSE GAUSSIAN DISTRIBUTION,
11942C                WITH UNKNOWN ORIGIN", TECHNOMETRICS, VOL. 23, NO. 3,
11943C                PP. 257-263.
11944C     WRITTEN BY--ALAN HECKERT
11945C                 STATISTICAL ENGINEERING DIVISION
11946C                 INFORMATION TECHNOLOGY LABORATORY
11947C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
11948C                 GAITHERSBURG, MD 20899-8980
11949C                 PHONE--301-975-2899
11950C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
11951C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
11952C     LANGUAGE--ANSI FORTRAN (1977)
11953C     VERSION NUMBER--2014/4
11954C     ORIGINAL VERSION--APRIL     2014
11955C
11956      REAL XTEMP(*)
11957      REAL FISH(3,3)
11958      REAL COV(3,3)
11959C
11960      INTEGER ITEMP(*)
11961C
11962      CHARACTER*4 ICASAN
11963      CHARACTER*4 IGAUDF
11964      CHARACTER*4 ISUBRO
11965      CHARACTER*4 IBUGA3
11966      CHARACTER*4 IERROR
11967C
11968      DOUBLE PRECISION DN
11969      DOUBLE PRECISION DLOC
11970      DOUBLE PRECISION DSIGMA
11971      DOUBLE PRECISION DMU
11972      DOUBLE PRECISION DTERM1
11973      DOUBLE PRECISION DTERM2
11974      DOUBLE PRECISION A3
11975C
11976      CHARACTER*4 IWRITE
11977      CHARACTER*4 ISUBN1
11978      CHARACTER*4 ISUBN2
11979      CHARACTER*4 ISTEPN
11980C
11981C-----COMMON----------------------------------------------------------
11982C
11983      INCLUDE 'DPCOP2.INC'
11984C
11985C-----START POINT-----------------------------------------------------
11986C
11987      ISUBN1='IGML'
11988      ISUBN2='5   '
11989      IWRITE='OFF'
11990      IERROR='NO'
11991C
11992      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'IML5')THEN
11993        WRITE(ICOUT,999)
11994  999   FORMAT(1X)
11995        CALL DPWRST('XXX','WRIT')
11996        WRITE(ICOUT,51)
11997   51   FORMAT('**** AT THE BEGINNING OF IGML5--')
11998        CALL DPWRST('XXX','WRIT')
11999        WRITE(ICOUT,52)IBUGA3,ISUBRO,ICASAN,IGAUDF,N
12000   52   FORMAT('IBUGA3,ISUBRO,ICASAN,IGAUDF,N = ',4(A4,2X),I8)
12001        CALL DPWRST('XXX','WRIT')
12002        WRITE(ICOUT,54)ALOC,SIGMA,AMU,GAMMA
12003   54   FORMAT('ALOC,SIGMA,AMU,GAMMA = ',4G15.7)
12004        CALL DPWRST('XXX','WRIT')
12005      ENDIF
12006C
12007C               ******************************************
12008C               **  STEP 1--                            **
12009C               **  CARRY OUT CALCULATIONS              **
12010C               **  FOR VARIANCE-COVARIANCE MATRIX      **
12011C               ******************************************
12012C
12013      ISTEPN='1'
12014      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'IML5')
12015     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
12016C
12017      DO101J=1,3
12018        DO103I=1,3
12019          FISH(I,J)=CPUMIN
12020          COV(I,J)=CPUMIN
12021  103   CONTINUE
12022  101 CONTINUE
12023C
12024      DN=REAL(N)
12025      DLOC=DBLE(ALOC)
12026      DSIGMA=DBLE(SIGMA)
12027      DMU=DBLE(AMU)
12028      DGAMMA=DBLE(GAMMA)
12029      A3=3.0D0*DSIGMA/DMU
12030C
12031C     CHAN PARAMETERIZATION
12032C
12033      IF(IGAUDF.EQ.'CHAN')THEN
12034C
12035C       2-PARAMETER CASE
12036C
12037        IF(ICASAN.EQ.'2IGA')THEN
12038          DTERM1=DSIGMA**2/DN
12039          COV(1,1)=REAL(DTERM1)
12040          COV(2,2)=REAL((DTERM1/2.0D0)*((A3**2/2.0D0) + 1.0D0))
12041          COV(1,2)=REAL(DTERM1*A3/2.0D0)
12042          COV(2,1)=COV(1,2)
12043          GOTO9000
12044        ENDIF
12045C
12046C     3-PARAMETER CASE
12047C
12048        DTERM1=DN/DSIGMA**2
12049        DTERM2=7.0D0*A3**4*((A3**2/9.0D0) + 1.0D0)/54.0D0 +
12050     1         (A3**2/2.0D0) + 1.0D0
12051        FISH(1,1)=REAL(DTERM1*DTERM2)
12052        DTERM2=(A3**2/2.0D0)*((A3**2/9.0D0) + 1.0D0) + 1.0D0
12053        FISH(1,2)=REAL(DTERM1*DTERM2)
12054        DTERM2=A3*((A3**2/9.0D0) + 1.0D0)
12055        FISH(1,3)=REAL(-DTERM1*DTERM2)
12056        FISH(2,2)=REAL(DTERM1*((A3**2/2.0D0) + 1.0D0))
12057        FISH(2,3)=REAL(-DTERM1*A3)
12058        FISH(3,3)=REAL(2.0D0*DTERM1)
12059        FISH(2,1)=FISH(1,2)
12060        FISH(3,1)=FISH(1,3)
12061        FISH(3,2)=FISH(2,3)
12062C
12063        IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'IML5')THEN
12064          DO120I=1,3
12065            WRITE(ICOUT,121)FISH(I,1),FISH(I,2),FISH(I,3)
12066  121       FORMAT('FISH(I,1),FISH(I,2),FISH(I,3) = ',3G15.7)
12067            CALL DPWRST('XXX','WRIT')
12068  120     CONTINUE
12069        ENDIF
12070C
12071        CALL SGECO(FISH,3,3,ITEMP,RCOND,XTEMP)
12072        IJOB=1
12073        CALL SGEDI(FISH,3,3,ITEMP,XTEMP,XTEMP(MAXNXT/2),IJOB)
12074        DO130J=1,3
12075          DO135I=1,3
12076            COV(I,J)=FISH(I,J)
12077  135     CONTINUE
12078  130   CONTINUE
12079C
12080C     TWEEDIE PARAMETERIZATION
12081C
12082      ELSE
12083        DTERM2=DGAMMA*DMU**3
12084        D=0.75D0/(DGAMMA**2*DMU**4) + 3.0D0/(DGAMMA**3*DMU**3)
12085C
12086        DTERM1=0.5D0/DTERM2
12087        COV(1,1)=REAL(DTERM1/D)
12088        DTERM1=-0.5D0/DTERM2
12089        COV(1,2)=REAL(DTERM1/D)
12090        DTERM1=-1.5D0*((1.0D0/DMU**4) + (1.0D0/DTERM2))
12091        COV(1,3)=REAL(DTERM1/D)
12092        DTERM1=1.5D0*((1.0D0/DMU**4) + (1.0D0/DTERM2))
12093        COV(2,3)=REAL(DTERM1/D)
12094        DTERM1=(0.5D0/DTERM2) + 0.75D0/(DGAMMA**3*DMU) +
12095     1         3.0D0/DGAMMA**4
12096        COV(2,2)=REAL(DTERM1/D)
12097        DTERM1=(4.5D0/(DGAMMA*DMU**5)) + (10.5D0/DMU**4) +
12098     1         (10.5D0/DTERM2)
12099        COV(3,3)=REAL(DTERM1/D)
12100        COV(2,1)=COV(1,2)
12101        COV(3,1)=COV(1,3)
12102        COV(3,2)=COV(2,3)
12103C
12104      ENDIF
12105C
12106 9000 CONTINUE
12107      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'GML5')THEN
12108        WRITE(ICOUT,999)
12109        CALL DPWRST('XXX','WRIT')
12110        WRITE(ICOUT,9011)
12111 9011   FORMAT('**** AT THE END OF IGML5--')
12112        CALL DPWRST('XXX','WRIT')
12113        WRITE(ICOUT,9012)RCOND
12114 9012   FORMAT('RCOND = ',G15.7)
12115        CALL DPWRST('XXX','WRIT')
12116        DO9020I=1,3
12117          WRITE(ICOUT,9021)COV(I,1),COV(I,2),COV(I,3)
12118 9021     FORMAT('COV(I,1),COV(I,2),COV(I,3) = ',3G15.7)
12119          CALL DPWRST('XXX','WRIT')
12120 9020   CONTINUE
12121      ENDIF
12122C
12123      RETURN
12124      END
12125      SUBROUTINE IGMO1(XMEAN,XSD,XMIN,XSKEW,N,PSTAMV,
12126     1                 ALOCMO,AMUMO,SIGMMO,GAMMMO,
12127     1                 ALOCMM,AMUMM,SIGMMM,GAMMMM,
12128     1                 ISUBRO,IBUGA3,IERROR)
12129C
12130C     PURPOSE--THIS ROUTINE COMPUTES MOMENT AND MODIFIED MOMENT
12131C              ESTIMATES FOR THE 3-PARAMETER INVERSE GAUSSIAN
12132C              DISTRIBUTION.  THE INPUT VALUES ARE:
12133C
12134C                 XMEAN   - THE SAMPLE MEAN
12135C                 XSD     - THE SAMPLE STANDARD DEVIATION
12136C                 XSKEW   - THE SAMPLE SKEWNESS
12137C                 XMIN    - THE SAMPLE MINIMUM
12138C
12139C              THIS IS FOR THE UNCENSORED CASE.
12140C
12141C              NOTE THAT THERE ARE SEVERAL PARAMETERIZATIONS OF THE
12142C              INVERSE GAUSSIAN DISTRIBUTION.
12143C
12144C              1) DATAPLOT USES THE TWEEDIE PARAMETERIZATION.  THIS
12145C                 PARAMETERIZATION HAS SHAPE PARAMETERS MU AND GAMMA
12146C                 (COHEN CALLS THE GAMMA PARAMETER LAMBDA) AND A
12147C                 THRESHOLD (LOCATION) PARAMETER.  COHEN USES GAMMA
12148C                 FOR THE THRESHOLD PARAMETER.
12149C
12150C              2) THE COHEN ALGORITHM ESTIMATES THE PARAMETERS BASED
12151C                 ON THE CHAN RE-PARAMETERIZATION:
12152C
12153C                    GAMMA = LAMBDA
12154C                          = MU**3/SIGMA**2
12155C
12156C                 THE COHEN/WHITTEN ALGORITHM GIVEN HERE ESTIMATES THE
12157C                 LOCATION PARAMETER, MU, AND SIGMA.  NOTE THAT GAMMA
12158C                 CAN BE COMPUTED FROM THE MU AND SIGMA.
12159C
12160C                 NOTE THAT NO ESTIMATION WILL BE PERFORMED FOR THE
12161C                 CASE WHERE THE SKEWNESS PARAMETER IS NEGATIVE.
12162C
12163C     REFERENCE--COHEN AND WHITTEN, "PARAMETER ESTIMATION IN RELIABILITY
12164C                AND LIFE SPAN MODELS", MARCEL DEKKER, INC., CHAPTER 5 AND
12165C                PP. 357-359.
12166C     WRITTEN BY--ALAN HECKERT
12167C                 STATISTICAL ENGINEERING DIVISION
12168C                 INFORMATION TECHNOLOGY LABORATORY
12169C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
12170C                 GAITHERSBURG, MD 20899-8980
12171C                 PHONE--301-975-2899
12172C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
12173C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
12174C     LANGUAGE--ANSI FORTRAN (1977)
12175C     VERSION NUMBER--2014/4
12176C     ORIGINAL VERSION--APRIL     2014
12177C
12178C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
12179C
12180      DOUBLE PRECISION AMOM(3)
12181      DOUBLE PRECISION VMOM(5)
12182      DOUBLE PRECISION VMMOM(5)
12183      DOUBLE PRECISION A3
12184      DOUBLE PRECISION A3L
12185      DOUBLE PRECISION A3U
12186      DOUBLE PRECISION FL
12187      DOUBLE PRECISION FU
12188      DOUBLE PRECISION F
12189      DOUBLE PRECISION EPS
12190      DOUBLE PRECISION DN
12191      DOUBLE PRECISION DNN
12192      DOUBLE PRECISION Z
12193      DOUBLE PRECISION P1
12194      DOUBLE PRECISION P2
12195      DOUBLE PRECISION VAL
12196      DOUBLE PRECISION VAL1
12197C
12198      CHARACTER*4 ISUBRO
12199      CHARACTER*4 IBUGA3
12200      CHARACTER*4 IERROR
12201C
12202      CHARACTER*4 ISUBN1
12203      CHARACTER*4 ISUBN2
12204      CHARACTER*4 ISTEPN
12205C
12206C-----COMMON----------------------------------------------------------
12207C
12208      INCLUDE 'DPCOP2.INC'
12209C
12210C-----START POINT-----------------------------------------------------
12211C
12212      ISUBN1='IGMO'
12213      ISUBN2='1   '
12214      IERROR='NO'
12215C
12216      ALOCMO=CPUMIN
12217      AMUMO=CPUMIN
12218      SIGMMO=CPUMIN
12219      GAMMMO=CPUMIN
12220      ALOCMM=CPUMIN
12221      AMUMM=CPUMIN
12222      SIGMMM=CPUMIN
12223      GAMMMM=CPUMIN
12224C
12225      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'GMO1')THEN
12226        WRITE(ICOUT,999)
12227  999   FORMAT(1X)
12228        CALL DPWRST('XXX','WRIT')
12229        WRITE(ICOUT,51)
12230   51   FORMAT('**** AT THE BEGINNING OF IGMO1--')
12231        CALL DPWRST('XXX','WRIT')
12232        WRITE(ICOUT,52)IBUGA3,ISUBRO
12233   52   FORMAT('IBUGA3,ISUBRO = ',A4,2X,A4)
12234        CALL DPWRST('XXX','WRIT')
12235        WRITE(ICOUT,54)XMEAN,XSD,XMIN,XSKEW
12236   54   FORMAT('XMEAN,XSD,XMIN,XSKEW = ',4G15.7)
12237        CALL DPWRST('XXX','WRIT')
12238      ENDIF
12239C
12240C               ******************************************
12241C               **  STEP 1--                            **
12242C               **  CARRY OUT CALCULATIONS FOR THE      **
12243C               **  INVERSE GAUSSIAN MOMENT ESTIMATES   **
12244C               ******************************************
12245C
12246      ISTEPN='1'
12247      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'GMO1')
12248     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
12249C
12250      IF(XMEAN.EQ.CPUMIN .OR. XMEAN.EQ.PSTAMV)THEN
12251        WRITE(ICOUT,999)
12252        CALL DPWRST('XXX','WRIT')
12253        WRITE(ICOUT,101)
12254  101   FORMAT('***** ERROR IN GAMMA MOMENT ESTIMATION--')
12255        CALL DPWRST('XXX','WRIT')
12256        WRITE(ICOUT,102)
12257  102   FORMAT('      THE SAMPLE MEAN IS UNDEFINED.')
12258        CALL DPWRST('XXX','WRIT')
12259        IERROR='YES'
12260        GOTO9000
12261      ELSEIF(XSD.EQ.CPUMIN .OR. XSD.EQ.PSTAMV .OR. XSD.LE.0.0)THEN
12262        WRITE(ICOUT,999)
12263        CALL DPWRST('XXX','WRIT')
12264        WRITE(ICOUT,101)
12265        CALL DPWRST('XXX','WRIT')
12266        WRITE(ICOUT,107)
12267  107   FORMAT('      THE SAMPLE STANDARD DEVIATION IS UNDEFINED OR ',
12268     1         'NON-POSITIVE.')
12269        CALL DPWRST('XXX','WRIT')
12270        IERROR='YES'
12271        GOTO9000
12272      ELSEIF(XSKEW.LE.0.0)THEN
12273        WRITE(ICOUT,999)
12274        CALL DPWRST('XXX','WRIT')
12275        WRITE(ICOUT,101)
12276        CALL DPWRST('XXX','WRIT')
12277        WRITE(ICOUT,112)
12278  112   FORMAT('      THE SAMPLE SKEWNESS IS NON-POSTIVE.')
12279        CALL DPWRST('XXX','WRIT')
12280        WRITE(ICOUT,113)XSKEW
12281  113   FORMAT('      SKEWNESS = ',G15.7)
12282        CALL DPWRST('XXX','WRIT')
12283        IERROR='YES'
12284        GOTO9000
12285      ELSEIF(N.LT.5)THEN
12286        WRITE(ICOUT,999)
12287        CALL DPWRST('XXX','WRIT')
12288        WRITE(ICOUT,101)
12289        CALL DPWRST('XXX','WRIT')
12290        WRITE(ICOUT,122)
12291  122   FORMAT('      THE SAMPLE SIZE IS LESS THAN FIVE.')
12292        CALL DPWRST('XXX','WRIT')
12293        WRITE(ICOUT,123)N
12294  123   FORMAT('      SAMPLE SIZE  = ',I8)
12295        CALL DPWRST('XXX','WRIT')
12296        IERROR='YES'
12297        GOTO9000
12298      ENDIF
12299C
12300C               ******************************************
12301C               **  STEP 2--                            **
12302C               **  MOMENT ESTIMATES                    **
12303C               ******************************************
12304C
12305      ISTEPN='2'
12306      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'GMO1')
12307     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
12308C
12309C     IN CODE BELOW:
12310C
12311C        VMOM(1) = ESTIMATE OF LOCATION
12312C        VMOM(2) = ESTIMATE OF MU
12313C        VMOM(3) = ESTIMATE OF SIGMA
12314C        VMOM(4) = ESTIMATE OF MEAN
12315C                = LOC + MU
12316C        VMOM(5) = A3 (THIRD STANDARD MOMENT)
12317C                = 3*SIGMA/MU
12318C     CODE FROM PAGE 357 OF COHEN AND WHITTEN
12319C
12320      AMOM(1)=DBLE(XMEAN)
12321      AMOM(2)=DBLE(XSD)
12322      AMOM(3)=DBLE(XSKEW)
12323C
12324      VMOM(3)=AMOM(2)
12325      VMOM(2)=3.0D0*VMOM(3)/AMOM(3)
12326      VMOM(1)=AMOM(1) - VMOM(2)
12327      VMOM(4)=VMOM(1) + VMOM(2)
12328      VMOM(5)=3.0D0*VMOM(3)/VMOM(2)
12329C
12330      ALOCMO=REAL(VMOM(1))
12331      AMUMO=REAL(VMOM(2))
12332      SIGMMO=REAL(VMOM(3))
12333      GAMMMO=REAL(VMOM(2)**3/VMOM(3)**2)
12334C
12335C     IN CODE BELOW:
12336C
12337C        VMMOM(1) = ESTIMATE OF LOCATION
12338C        VMMOM(2) = ESTIMATE OF MU
12339C        VMMOM(3) = ESTIMATE OF SIGMA
12340C        VMMOM(4) = ESTIMATE OF MEAN
12341C                 = LOC + MU
12342C        VMMOM(5) = A3 (THIRD STANDARD MOMENT)
12343C                 = 3*SIGMA/MU
12344C
12345C     COMPUTE MODIFIED MOMENT ESTIMATORS USING CODE FOUND ON
12346C     PP. 358-359 OF COHEN/WHITTEN BOOK.
12347C
12348C     IF XMIN PARAMETER NOT GIVEN, THEN SKIP THIS CASE.
12349C
12350      IF(XMIN.EQ.CPUMIN)THEN
12351        WRITE(ICOUT,999)
12352        CALL DPWRST('XXX','WRIT')
12353        WRITE(ICOUT,101)
12354        CALL DPWRST('XXX','WRIT')
12355        WRITE(ICOUT,212)
12356  212   FORMAT('      MINIMUM VALUE NOT SPECIFIED.  MODIFIED ',
12357     1         'MOMENTS WILL NOT BE COMPUTED.')
12358        CALL DPWRST('XXX','WRIT')
12359        IERROR='YES'
12360        GOTO9000
12361      ENDIF
12362C
12363      IERR=0
12364      EPS=0.1D-08
12365      DN=DBLE(N)
12366      DNN=1.0D0/(DN+1.0D0)
12367C
12368C     FIND THE STANDARDIZED FIRST ORDER STATISTIC
12369C
12370      Z=(DBLE(XMIN) - AMOM(1))/AMOM(2)
12371C
12372C     SET THE UPPER AND LOWER BOUND ON A3
12373C
12374      A3U=3.0D0*AMOM(2)/(AMOM(1)-DBLE(XMIN))
12375      A3L=0.18D0
12376C
12377C     CALCULATE FUNCTION AT UPPER AND LOWER BOUNDS, A3U
12378C
12379      FU=-DNN
12380      VAL=Z/DSQRT(1.0D0 + A3L*Z/3.0D0)
12381      CALL NODCDF(VAL,P1)
12382      VAL1=-VAL - 6.0D0/(A3L*DSQRT(1.0D0+A3L*Z/3.0D0))
12383      CALL NODCDF(VAL1,P2)
12384      FL=(P1+DEXP(18.D0/A3L**2)*P2)-DNN
12385C
12386C     DETERMINE IF THERE EXISTS AN A3 IN THE INTERVAL (A3L,A3U)
12387C     THAT SATISFIES THE EQUATION
12388C
12389      IF(FL*FU.GT.0.0D0)THEN
12390        IERROR='YES'
12391        WRITE(ICOUT,999)
12392        CALL DPWRST('XXX','WRIT')
12393        WRITE(ICOUT,101)
12394        CALL DPWRST('XXX','WRIT')
12395        WRITE(ICOUT,222)
12396  222   FORMAT('      NO MODIFIED MOMENT ESTIMATOR FOUND.')
12397        CALL DPWRST('XXX','WRIT')
12398        GOTO9000
12399      ELSE
12400C
12401C       USE BINARY SEARCH TO FIND THE SOLUTUION OF THE MODIFIED
12402C       MOMENTS EQUATION.
12403C
12404        F=FL
12405300     CONTINUE
12406        A3=(A3U+A3L)/2.0D0
12407        IF(DABS(A3-A3L).GT.EPS)THEN
12408          VAL=Z/DSQRT(1.0D0 + A3*Z/3.0D0)
12409          CALL NODCDF(VAL,P1)
12410          VAL1=-VAL - 6.0D0/(A3*DSQRT(1.0D0+A3*Z/3.0D0))
12411          CALL NODCDF(VAL1,P2)
12412          F=(P1+DEXP(18.D0/A3**2)*P2)-DNN
12413          IF(F*FL.LT.0.0D0)THEN
12414            A3U=A3
12415          ELSE
12416            A3L=A3
12417            FL=F
12418          ENDIF
12419          A3=(A3U+A3L)/2.0D0
12420          GOTO300
12421        ELSE
12422          VMMOM(1)=AMOM(1) - 3.0D0*AMOM(2)/A3
12423          VMMOM(2)=3.0D0*AMOM(2)/A3
12424          VMMOM(3)=AMOM(2)
12425          VMMOM(4)=VMMOM(1)+ VMMOM(2)
12426          VMMOM(5)=A3
12427        ENDIF
12428      ENDIF
12429C
12430      ALOCMM=REAL(VMMOM(1))
12431      AMUMM=REAL(VMMOM(2))
12432      SIGMMM=REAL(VMMOM(3))
12433      GAMMMM=REAL(VMMOM(2)**3/VMMOM(3)**2)
12434C
12435 9000 CONTINUE
12436      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'GMO1')THEN
12437        WRITE(ICOUT,999)
12438        CALL DPWRST('XXX','WRIT')
12439        WRITE(ICOUT,9011)
12440 9011   FORMAT('**** AT THE END OF IGMO1--')
12441        CALL DPWRST('XXX','WRIT')
12442        WRITE(ICOUT,9012)ALOCMO,AMUMO,SIGMMO,GAMMMO
12443 9012   FORMAT('ALOCMO,AMUMO,SIGMMO,GAMMMO = ',4G15.7)
12444        CALL DPWRST('XXX','WRIT')
12445        WRITE(ICOUT,9013)ALOCMM,AMUMM,SIGMMM,GAMMMM
12446 9013   FORMAT('ALOCMM,AMUMM,SIGMMM,GAMMMM = ',4G15.7)
12447        CALL DPWRST('XXX','WRIT')
12448      ENDIF
12449C
12450      RETURN
12451      END
12452      SUBROUTINE IGPDF(DX,DGAMMA,DMU,DPDF)
12453C
12454C     PURPOSE--THIS SUBROUTINE COMPUTES THE PROBABILITY DENSITY FUNCTION
12455C              VALUE FOR THE INVERSE GAUSSIAN DISTRIBUTION
12456C              WITH TAIL LENGTH PARAMETER = GAMMA AND SHAPE PARAMETER
12457C              MU.  ALTHOUGH MU IS ESSENTIALLY A SCALE PARAMETER, IT IS
12458C              NOT A SCALE PARAMETER IN THE TECHNICAL SENSE THAT THE
12459C              FOLLOWING RELATIONSHIP
12460C
12461C                  f(X;LOC,SCALE) = f((X-LOC)/SCALE;0,1)/SCALE
12462C
12463C              DOES NOT HOLD. THEREFORE, WE REFER TO IT AS A SHAPE
12464C              PARAMETER.
12465C
12466C              THE STANDARD FORM OF THE DISTRIBUTION IS DEFINED FOR ALL
12467C              NON-NEGATIVE X AND HAS THE PROBABILITY DENSITY  FUNCTION
12468C              (PAGE 246 OF VOLUME 4 OF THE OF ENCYCLOPEDIA OF
12469C              STATISTICAL SCIENCES):
12470C
12471C                  f(X) = SQRT(GAMMA/(2*PI*X**3))*
12472C                         EXP((-GAMMA/(2*MU**2))*(X-MU)**2/X)
12473C
12474C              THE PARAMETERIZATION DESCRIBED ABOVE WILL BE REFERRED TO
12475C              AS THE "TWEEDIE" PARAMETERIZATION.  NOTE THAT WHAT WE
12476C              CALL GAMMA IS CALLED LAMBDA IN MANY REFERENCES.  A
12477C              RE-PARAMETERIZATION, WHICH WE CALL THE CHAN PARAMETERIZATION,
12478C              USES
12479C
12480C                 SIGMA = SQRT(MU**3/GAMMA)
12481C
12482C     NOTE--THE INVERSE GAUSSIAN DISTRIBUTION--
12483C           1) GOES FROM 0 TO INFINITY
12484C           2) HAS MEAN = MU
12485C           3) HAS STANDARD DEVIATION = SQRT((MU**3)/GAMMA) = SIGMA
12486C           4) HAS SHAPE PARAMETER = GAMMA
12487C           5) IS HIGHLY-SKEWED AND LONG-TAILED FOR SMALL GAMMA
12488C           6) IS SYMMETRIC AND MODERATE-TAILED FOR LARGE GAMMA
12489C           7) APPROACHES NORMALITY AS GAMMA APPROACHES INFINITY
12490C     INPUT  ARGUMENTS--X      = THE DOUBLE PRECISION VALUE AT
12491C                                WHICH THE PROBABILITY DENSITY
12492C                                FUNCTION IS TO BE EVALUATED.
12493C                                X SHOULD BE NON-NEGATIVE.
12494C                     --GAMMA  = THE FIRST SHAPE PARAMETER,
12495C                                GAMMA SHOULD BE POSITIVE.
12496C                     --AMU    = THE SECOND SHAPE PARAMETER,
12497C                                AMU SHOULD BE POSITIVE.
12498C     OUTPUT ARGUMENTS--CDF    = THE DOUBLE PRECISION PROBABILITY
12499C                                DENSITY FUNCTION VALUE.
12500C     OUTPUT--THE DOUBLE PRECISION PROBABILITY DENSITY FUNCTION
12501C             VALUE CDF FOR THE INVERSE GAUSSIAN DISTRIBUTION WITH
12502C             WITH TAIL LENGTH PARAMETER = GAMMA AND SHAP PARAMETER MU.
12503C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
12504C     RESTRICTIONS--X, GAMMA, M SHOULD BE POSITIVE.
12505C     OTHER DATAPAC   SUBROUTINES NEEDED--NONE.
12506C     FORTRAN LIBRARY SUBROUTINES NEEDED--EXP.
12507C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
12508C     LANGUAGE--ANSI FORTRAN (1977)
12509C     REFERENCES--KOTZ AND JOHNSON, "ENCYCLOPEDIA OF STATISTICAL SCIENCES",
12510C                 VOLUME 4, PP. 246-249.
12511C              --COHEN AND WHITTEN, "PARAMETER ESTIMATION IN RELIABILITY
12512C                AND LIFE SPAN MODELS", MARCEL DEKKER, INC., CHAPTER 5 AND
12513C                PP. 360-361.
12514C     WRITTEN BY--JAMES J. FILLIBEN
12515C                 STATISTICAL ENGINEERING DIVISION
12516C                 INFORMATION TECHNOLOGY LABORATORY
12517C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
12518C                 GAITHERSBURG, MD 20899-8980
12519C                 PHONE--301-975-2899
12520C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
12521C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
12522C     LANGUAGE--ANSI FORTRAN (1977)
12523C     VERSION NUMBER--90.6
12524C     ORIGINAL VERSION--MAY       1990.
12525C     UPDATED         --JANUARY   1995. NEW PDF DEFINITION AND
12526C                                       REWRITTEN
12527C     UPDATED         --DECEMBER  2003. USE GENERAL VALUE OF MU
12528C                                       INSTEAD OF ASSUMING MU=1
12529C     UPDATED         --APRIL     2014. CONVERT TO DOUBLE PRECISION
12530C     UPDATED         --APRIL     2014. SUPPORT FOR CHAN PARAMETERIZATION
12531C
12532C-------------------------------------------------------------------
12533C
12534      DOUBLE PRECISION DX
12535      DOUBLE PRECISION DGAMMA
12536      DOUBLE PRECISION DMU
12537      DOUBLE PRECISION DPI
12538      DOUBLE PRECISION DTERM1
12539      DOUBLE PRECISION DTERM2
12540      DOUBLE PRECISION DTERM3
12541      DOUBLE PRECISION DLOW
12542      DOUBLE PRECISION DPDF
12543C
12544      INCLUDE 'DPCOST.INC'
12545      INCLUDE 'DPCOP2.INC'
12546C
12547      DATA DPI / 3.1415926535 8979323846 2643383279 503 D0 /
12548C
12549C-----START POINT-----------------------------------------------------
12550C
12551C     CHECK THE INPUT ARGUMENTS FOR ERRORS
12552C
12553      DPDF=0.0D0
12554      IF(DGAMMA.LE.0.0D0)THEN
12555        WRITE(ICOUT,51)
12556   51   FORMAT('***** ERROR--THE FIRST SHAPE PARAMETER TO IGPDF IS ',
12557     1         'NON-POSITIVE.')
12558        CALL DPWRST('XXX','BUG ')
12559        WRITE(ICOUT,52)DGAMMA
12560   52   FORMAT('***** THE VALUE OF THE ARGUMENT IS ',G15.7)
12561        CALL DPWRST('XXX','BUG ')
12562        GOTO9000
12563      ELSEIF(DMU.LE.0.0D0 .AND. IGAUDF.NE.'STAN')THEN
12564        WRITE(ICOUT,71)
12565   71   FORMAT('***** ERROR--THE SECOND SHAPE PARAMETER TO IGPDF IS ',
12566     1         'NON-POSITIVE.')
12567        CALL DPWRST('XXX','BUG ')
12568        WRITE(ICOUT,52)DMU
12569        CALL DPWRST('XXX','BUG ')
12570        GOTO9000
12571      ENDIF
12572C
12573      IF(IGAUDF.EQ.'STAN')THEN
12574        DLOW=-3.0D0/DGAMMA
12575        IF(DX.LE.DLOW)THEN
12576          WRITE(ICOUT,81)
12577   81     FORMAT('***** ERROR--THE FIRST ARGUMENT TO IGPDF IS ',
12578     1           'LESS THAN -3/SHAPE.')
12579          CALL DPWRST('XXX','BUG ')
12580          WRITE(ICOUT,52)DX
12581          CALL DPWRST('XXX','BUG ')
12582          WRITE(ICOUT,53)DLOW
12583   53     FORMAT('      THE VALUE OF -3/SHAPE IS ',G15.7)
12584          CALL DPWRST('XXX','BUG ')
12585          GOTO9000
12586        ENDIF
12587      ELSE
12588        IF(DX.LT.0.0D0)THEN
12589          WRITE(ICOUT,61)
12590   61     FORMAT('***** ERROR--THE FIRST ARGUMENT TO IGPDF IS ',
12591     1           'NON-POSITIVE.')
12592          CALL DPWRST('XXX','BUG ')
12593          WRITE(ICOUT,52)DX
12594          CALL DPWRST('XXX','BUG ')
12595          GOTO9000
12596        ENDIF
12597      ENDIF
12598C
12599C     CHECK FOR:
12600C
12601C          1. CHAN PARAMETERIZATION: GAMMA = MU**3/SIGMA**2
12602C
12603C          2. CHAN "STANDARD" PARAMETERIZATION
12604C
12605C             f(X;alpha) = (1/SQRT(2*PI))*(3/(3+ALPHA*X))**(3/2)*
12606C                          EXP((-X**2/2)*(3/(3+ALPHA*X)))
12607C                          X > -3/ALPHA
12608C
12609      IF(IGAUDF.EQ.'STAN')THEN
12610        DTERM1=(3.0D0/(3.0D0 + DGAMMA*DX))**1.5D0*
12611     1         (1.0D0/DSQRT(2.0D0*DPI))
12612        DTERM2=DEXP(-(DX**2/2.0D0)*(3.0D0/(3.0D0+DGAMMA*DX)))
12613        DPDF=DTERM1*DTERM2
12614        GOTO9000
12615      ELSEIF(IGAUDF.EQ.'CHAN')THEN
12616        DGAMMA=DMU**3/DGAMMA**2
12617      ENDIF
12618C
12619      IF(DX.EQ.0.0D0)GOTO9000
12620C
12621      DTERM1=0.5D0*DLOG(DGAMMA/(2.0D0*DPI*DX**3))
12622      DTERM2=(-DGAMMA/(2.0D0*DMU*DMU*DX))
12623      DTERM3=(DX-DMU)**2
12624      DPDF=DTERM1 + DTERM2*DTERM3
12625      DPDF=DEXP(DPDF)
12626C
12627 9000 CONTINUE
12628      RETURN
12629      END
12630      SUBROUTINE IGPPF(DP,DGAMMA,DMU,DPPF)
12631C
12632C     PURPOSE--THIS SUBROUTINE COMPUTES THE PERCENT POINT FUNCTION
12633C              VALUE FOR THE INVERSE GAUSSIAN DISTRIBUTION WITH TAIL
12634C              LENGTH PARAMETER = GAMMA AND SHAPE PARAMETER MU.
12635C              ALTHOUGH MU IS ESSENTIALLY A SCALE PARAMETER, IT IS
12636C              NOT A SCALE PARAMETER IN THE TECHNICAL SENSE THAT THE
12637C              FOLLOWING RELATIONSHIP
12638C
12639C                  f(X;LOC,SCALE) = f((X-LOC)/SCALE;0,1)/SCALE
12640C
12641C              DOES NOT HOLD. THEREFORE, WE REFER TO IT AS A SHAPE
12642C              PARAMETER.
12643C
12644C              THE STANDARD FORM OF THE DISTRIBUTION IS DEFINED FOR ALL
12645C              NON-NEGATIVE X AND HAS CUMULATIVE DISTRIBUTION FUNCTION
12646C              (PAGE 247 OF VOLUME 4 OF THE OF ENCYCLOPEDIA OF
12647C              STATISTICAL SCIENCES.
12648C
12649C                  F(X) = NORCDF(SQRT(GAMMA/X)*(-1 + (X/MU))) +
12650C                         EXP(2*GAMMA/MU)*NORCDF(SQRT(GAMMA/X)*(1 + (X/MU)))
12651C
12652C              THE PERCENT POINT FUNCTION IS COMPUTED BY NUMERICALLY
12653C              INVERTING THE CDF FUNCTION.
12654C
12655C              THE PARAMETERIZATION DESCRIBED ABOVE WILL BE REFERRED TO
12656C              AS THE "TWEEDIE" PARAMETERIZATION.  NOTE THAT WHAT WE
12657C              CALL GAMMA IS CALLED LAMBDA IN MANY REFERENCES.  A
12658C              RE-PARAMETERIZATION, WHICH WE CALL THE CHAN PARAMETERIZATION,
12659C              USES
12660C
12661C                 SIGMA = SQRT(MU**3/GAMMA)
12662C
12663C     INPUT  ARGUMENTS--P      = THE DOUBLE PRECISION VALUE AT
12664C                                WHICH THE PERCENT POINT
12665C                                FUNCTION IS TO BE EVALUATED.
12666C                     --GAMMA  = THE FIRST SHAPE PARAMETER,
12667C                                GAMMA SHOULD BE POSITIVE.
12668C                     --AMU    = THE SECOND SHAPE PARAMETER,
12669C                                AMU SHOULD BE POSITIVE.
12670C     OUTPUT ARGUMENTS--PPF    = THE DOUBLE PRECISION PERCENT POINT
12671C                                FUNCTION VALUE.
12672C     OUTPUT--THE DOUBLE PRECISION PERCENT POINT FUNCTION
12673C             VALUE PPF FOR THE INVERSE GAUSSIAN DISTRIBUTION WITH
12674C             WITH TAIL LENGTH PARAMETER = GAMMA AND SHAPE PARAMETER MU.
12675C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
12676C     RESTRICTIONS--P SHOULD BE BETWEEN 0.0 (INCLUSIVELY) AND 1.0 (EXCLUSIVELY).
12677C                 --GAMMA AND MU SHOULD BE POSITIVE
12678C     OTHER DATAPAC   SUBROUTINES NEEDED--IGCDF, NORCDF
12679C     FORTRAN LIBRARY SUBROUTINES NEEDED--
12680C     MODE OF INTERNAL OPERATIONS--DOUBLE PRECISION.
12681C     LANGUAGE--ANSI FORTRAN (1977)
12682C     REFERENCES--KOTZ AND JOHNSON, "ENCYCLOPEDIA OF STATISTICAL SCIENCES",
12683C                 VOLUME 4, PP. 246-249.
12684C              --COHEN AND WHITTEN, "PARAMETER ESTIMATION IN RELIABILITY
12685C                AND LIFE SPAN MODELS", MARCEL DEKKER, INC., CHAPTER 5 AND
12686C                PP. 360-361.
12687C     WRITTEN BY--JAMES J. FILLIBEN
12688C                 STATISTICAL ENGINEERING DIVISION
12689C                 INFORMATION TECHNOLOGY LABORATORY
12690C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
12691C                 GAITHERSBURG, MD 20899-8980
12692C                 PHONE--301-975-2855
12693C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
12694C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
12695C     LANGUAGE--ANSI FORTRAN (1977)
12696C     VERSION NUMBER--90.6
12697C     ORIGINAL VERSION--MAY       1990.
12698C     UPDATED         --JANUARY   1995. NEW CDF DEFINITION & REWRITTEN
12699C     UPDATED         --DECEMBER  2003. SUPPORT FOR MU NOT EQUAL 1
12700C     UPDATED         --APRIL     2014. CONVERT TO DOUBLE PRECISION
12701C     UPDATED         --APRIL     2014. SUPPORT FOR CHAN PARAMETERIZATION
12702C
12703C---------------------------------------------------------------------
12704C
12705      DOUBLE PRECISION DP
12706      DOUBLE PRECISION DGAMMA
12707      DOUBLE PRECISION DMU
12708      DOUBLE PRECISION DPPF
12709      DOUBLE PRECISION DX
12710      DOUBLE PRECISION TOL
12711      DOUBLE PRECISION DSD
12712      DOUBLE PRECISION XMIN
12713      DOUBLE PRECISION XMAX
12714      DOUBLE PRECISION XLOW
12715      DOUBLE PRECISION XUP
12716      DOUBLE PRECISION XMID
12717      DOUBLE PRECISION XDEL
12718      DOUBLE PRECISION PCALC
12719C
12720      INCLUDE 'DPCOST.INC'
12721      INCLUDE 'DPCOP2.INC'
12722C
12723C-----START POINT-----------------------------------------------------
12724C
12725C     CHECK THE INPUT ARGUMENTS FOR ERRORS
12726C
12727      DPPF=0.0D0
12728      IF(DGAMMA.LE.0.0D0)THEN
12729         WRITE(ICOUT,51)
12730   51    FORMAT('***** ERROR--THE FIRST SHAPE PARAMETER TO IGPPF IS ',
12731     1          'NON-POSITIVE.')
12732         CALL DPWRST('XXX','BUG ')
12733         WRITE(ICOUT,52)DGAMMA
12734   52    FORMAT('***** THE VALUE OF THE ARGUMENT IS ',G15.7)
12735         CALL DPWRST('XXX','BUG ')
12736         GOTO9000
12737      ELSEIF(DMU.LE.0.0D0)THEN
12738         WRITE(ICOUT,71)
12739   71    FORMAT('***** ERROR--THE SECOND SHAPE PARAMETER TO IGPPF IS ',
12740     1          'NON-POSITIVE.')
12741         CALL DPWRST('XXX','BUG ')
12742         WRITE(ICOUT,52)DMU
12743         CALL DPWRST('XXX','BUG ')
12744         GOTO9000
12745      ELSEIF(DP.LT.0.0D0 .OR. DP.GE.1.0D0)THEN
12746         WRITE(ICOUT,61)
12747   61    FORMAT('***** ERROR--THE FIRST ARGUMENT TO IGPPF IS OUTSIDE')
12748         CALL DPWRST('XXX','BUG ')
12749         WRITE(ICOUT,62)
12750   62    FORMAT('      THE ALLOWABLE [0,1) INTERVAL.')
12751         CALL DPWRST('XXX','BUG ')
12752         WRITE(ICOUT,52)DP
12753         CALL DPWRST('XXX','BUG ')
12754         GOTO9000
12755      ENDIF
12756C
12757      IF(DP.EQ.0.0D0)GOTO9000
12758C
12759C     CHECK FOR CHAN PARAMETERIZATION: GAMMA = MU**3/SIGMA**2
12760C
12761      IF(IGAUDF.EQ.'CHAN')THEN
12762        DGAMMA=DMU**3/DGAMMA**2
12763      ENDIF
12764C
12765      TOL=0.0000000001D0
12766      MAXIT=500
12767      XMIN=0.0D0
12768C
12769C     FROM THE KARLIN-STUDDEN INEQUALITY (PATEL/KAPADIA/OWEN, P. 30)
12770C     (BUT TRUE ONLY FOR X >= 1.5*MU)
12771C     FOR THE PROTOTYPE INVERSE GAUSSIAN DISTRIBUTION,
12772C     MU = MU (AND HERE MU = 1)
12773CCCCC XMAX=10.0**30
12774C
12775      DSD=DSQRT(DMU**3/DGAMMA)
12776      XMAX=DMU/(2.0D0*(1.0D0-DP))
12777C
12778      XLOW=XMIN
12779      XUP=XMAX
12780C
12781CCCCC HOPEFULLY, SAM SAUNDERS CAN GIVE ME A BETTER
12782CCCCC FIRST APPROXIMATION TO G(P) THAN MY 1.0   !
12783CCCCC XMID=1.0
12784C
12785      XMID=DMU
12786      ICOUNT=0
12787C
12788  200 CONTINUE
12789      DX=XMID
12790      CALL IGCDF(DX,DGAMMA,DMU,PCALC)
12791C
12792      IF(PCALC.EQ.DP)THEN
12793        DPPF=XMID
12794        GOTO9000
12795      ELSEIF(PCALC.GT.DP)THEN
12796C
12797  220   CONTINUE
12798        XUP=XMID
12799        DX=XMID/2.0D0
12800        IF(DX.GT.XLOW)THEN
12801          XMID=DX
12802          CALL IGCDF(DX,DGAMMA,DMU,PCALC)
12803          IF(PCALC.EQ.DP)THEN
12804            DPPF=XMID
12805            GOTO9000
12806          ENDIF
12807          IF(PCALC.GT.DP)GOTO220
12808          XLOW=DX
12809        ENDIF
12810        XMID=(XLOW+XUP)/2.0D0
12811C
12812      ELSE
12813C
12814  210   CONTINUE
12815        XLOW=XMID
12816        DX=XMID*2.0D0
12817        IF(DX.LT.XUP)THEN
12818          XMID=DX
12819          CALL IGCDF(DX,DGAMMA,DMU,PCALC)
12820          IF(PCALC.EQ.DP)THEN
12821            DPPF=XMID
12822            GOTO9000
12823          ENDIF
12824          IF(PCALC.LT.DP)GOTO210
12825          XUP=DX
12826        ENDIF
12827        XMID=(XLOW+XUP)/2.0D0
12828      ENDIF
12829C
12830      XDEL=DABS(XMID-XLOW)
12831      ICOUNT=ICOUNT+1
12832      IF(XDEL.LT.TOL .OR. ICOUNT.GT.MAXIT)THEN
12833        DPPF=XMID
12834        GOTO9000
12835      ENDIF
12836      GOTO200
12837C
12838 9000 CONTINUE
12839      RETURN
12840      END
12841      SUBROUTINE IGRAN(N,GAMMA,AMU,ISEED,X)
12842C
12843C     PURPOSE--THIS SUBROUTINE GENERATES A RANDOM SAMPLE OF SIZE N
12844C              FROM THE INVERSE GAUSSIAN DISTRIBUTION
12845C              WITH SHAPE PARAMETER VALUE = GAMMA
12846C              AND LOCATION PARAMETER MU = 1.
12847C              THE PROTOTYPE INVERSE GAUSSIAN DISTRIBUTION USED
12848C              HEREIN IS DEFINED FOR ALL POSITIVE X,
12849C              AND HAS THE PROBABILITY DENSITY FUNCTION
12850C              AS GIVEN IN VOLUME 4, PAGE 246, BOTTOM
12851C              OF ENCYCLOPEDIA OF STATISTICAL SCIENCES
12852C                 WITH MU = 1
12853C     NOTE--THE GENERAL INVERSE GAUSSIAN DISTRIBUTION--
12854C              GOES FROM 0 TO INFINITY
12855C              HAS MEAN = MU (HERE = 1)
12856C              HAS STANDARD DEVIATION = SQRT((MU**3)/GAMMA)
12857C              HAS SHAPE PARAMETER = GAMMA
12858C              IS HIGHLY-SKEWED AND LONG-TAILED FOR SMALL GAMMA
12859C              IS SYMMETRIC AND MODERATE-TAILED FOR KARGE GAMMA
12860C              APPROACHES NORMALITY AS GAMMA APPROACHES INFINITY
12861C     NOTE--TO OBTAIN THE PDF FOR GENERAL MU,
12862C           COMPUTE THE PDF FOR X AROUND 1, AND THEN
12863C           SIMPLY SCALE UP THE HORIZONTAL AXIS X BY THE DESIRED MU
12864C           AS IN Y2 = MU*Y
12865C     INPUT  ARGUMENTS--N      = THE DESIRED INTEGER NUMBER
12866C                                OF RANDOM NUMBERS TO BE
12867C                                GENERATED.
12868C                     --GAMMA  = THE SINGLE PRECISION VALUE OF THE
12869C                                TAIL LENGTH PARAMETER.
12870C                                GAMMA SHOULD BE POSITIVE.
12871C     OUTPUT ARGUMENTS--X      = A SINGLE PRECISION VECTOR
12872C                                (OF DIMENSION AT LEAST N)
12873C                                INTO WHICH THE GENERATED
12874C                                RANDOM SAMPLE WILL BE PLACED.
12875C     OUTPUT--A RANDOM SAMPLE OF SIZE N
12876C             FROM THE INVERSE GAUSSIAN DISTRIBUTION
12877C             WITH TAIL LENGTH PARAMETER VALUE = GAMMA.
12878C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
12879C     RESTRICTIONS--THERE IS NO RESTRICTION ON THE MAXIMUM VALUE
12880C                   OF N FOR THIS SUBROUTINE.
12881C                 --GAMMA SHOULD BE POSITIVE.
12882C     OTHER DATAPAC   SUBROUTINES NEEDED--UNIRAN.
12883C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE HEREIN.
12884C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
12885C     LANGUAGE--ANSI FORTRAN (1977)
12886C     REFERENCES--KOTZ & JOHNSON, ENCYCLOPEDIA OF STAT SCIENCES
12887C                 VOLUME 4, PAGE 247, COLUMN 1 (FOR CDF).
12888C     WRITTEN BY--JAMES J. FILLIBEN
12889C                 STATISTICAL ENGINEERING DIVISION
12890C                 INFORMATION TECHNOLOGY LABORATORY
12891C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
12892C                 GAITHERSBURG, MD 20899-8980
12893C                 PHONE--301-975-2855
12894C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
12895C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
12896C     LANGUAGE--ANSI FORTRAN (1966)
12897C     VERSION NUMBER--90.6
12898C     ORIGINAL VERSION--MAY       1990.
12899C     UPDATED         --JANUARY   1995. NEW CDF DEFINITION & REWRITTEN
12900C     UPDATED         --NOVEMBER  2003. USE MICHEAL/SCHUCANY/HAAS
12901C                                       METHOD (FROM JAMES GENTLE
12902C                                       "RANDOM NUMBER GENERATION AND
12903C                                       MONTE CARLO METHODS", SECOND
12904C                                       EDITION, SPRINGER-VARLANG,
12905C                                       2003, P. 193.
12906C     UPDATED         --APRIL     2014. SUPPORT CHAN PARAMETERIZATION
12907C
12908C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
12909C
12910C---------------------------------------------------------------------
12911C
12912      DIMENSION X(*)
12913C
12914C---------------------------------------------------------------------
12915C
12916      INCLUDE 'DPCOST.INC'
12917      INCLUDE 'DPCOP2.INC'
12918C
12919C-----START POINT-----------------------------------------------------
12920C
12921C     CHECK THE INPUT ARGUMENTS FOR ERRORS
12922C
12923      IF(N.LT.1)THEN
12924         WRITE(ICOUT,51)
12925   51    FORMAT('***** ERROR--THE REQUESTED NUMBER OF INVERSE ',
12926     1          'GAUSSIAN RANDOM NUMBERS IS NON-POSITIVE.')
12927         CALL DPWRST('XXX','BUG ')
12928         WRITE(ICOUT,52)N
12929   52    FORMAT('***** THE VALUE OF THE ARGUMENT IS ',I8)
12930         CALL DPWRST('XXX','BUG ')
12931         GOTO9000
12932      ELSEIF(GAMMA.LE.0.0)THEN
12933         WRITE(ICOUT,61)
12934   61    FORMAT('***** ERROR--THE GAMMA SHAPE PARAMETER FOR THE ',
12935     1          'INVERSE GAUSSIAN')
12936         CALL DPWRST('XXX','BUG ')
12937         WRITE(ICOUT,62)
12938   62    FORMAT('      RANDOM NUMBERS IS NON-POSITIVE.')
12939         CALL DPWRST('XXX','BUG ')
12940         WRITE(ICOUT,63)GAMMA
12941   63    FORMAT('***** THE VALUE OF THE ARGUMENT IS ',G15.7)
12942         CALL DPWRST('XXX','BUG ')
12943         GOTO9000
12944      ELSEIF(AMU.LE.0.0)THEN
12945         WRITE(ICOUT,71)
12946   71    FORMAT('***** ERROR--THE MU SHAPE PARAMETER FOR THE',
12947     1          ' INVERSE GAUSSIAN')
12948         CALL DPWRST('XXX','BUG ')
12949         WRITE(ICOUT,72)
12950   72    FORMAT('      RANDOM NUMBERS IS NON-POSITIVE.')
12951         CALL DPWRST('XXX','BUG ')
12952         WRITE(ICOUT,63)AMU
12953         CALL DPWRST('XXX','BUG ')
12954         GOTO9000
12955      ENDIF
12956C
12957C     CHECK FOR CHAN PARAMETERIZATION: GAMMA = MU**3/SIGMA**2
12958C
12959      IF(IGAUDF.EQ.'CHAN')THEN
12960        GAMMA=AMU**3/GAMMA**2
12961      ENDIF
12962C
12963C     GENERATE N UNIFORM (0,1) RANDOM NUMBERS;
12964C
12965CCCCC CALL UNIRAN(N,ISEED,X)
12966C
12967C     GENERATE N INVERSE GAUSSIAN DISTRIBUTION RANDOM NUMBERS
12968C     USING THE PERCENT POINT FUNCTION TRANSFORMATION METHOD.
12969C
12970CCCCC DO100I=1,N
12971CCCCC XI=X(I)
12972CCCCC CALL IGPPF(XI,GAMMA,X(I))
12973C 100 CONTINUE
12974C
12975C     MICHEAL/SCHUCANY/HAAS ALGORITHM.
12976C
12977C     GENERATE N NORMAL (0,1) RANDOM NUMBERS;
12978C
12979      CALL NORRAN(N,ISEED,X)
12980C
12981      NTEMP=1
12982      DO100I=1,N
12983        Y=X(I)*X(I)
12984        X1=AMU + AMU*AMU*Y/(2.0*GAMMA) -
12985     1     (AMU/(2.0*GAMMA))*SQRT(4.0*AMU*GAMMA*Y + AMU*AMU*Y*Y)
12986        CALL UNIRAN(NTEMP,ISEED,X(I))
12987        U=X(I)
12988        IF(U.LE.AMU/(AMU+X1))THEN
12989          X(I)=X1
12990        ELSE
12991          X(I)=AMU*AMU/X1
12992        ENDIF
12993  100 CONTINUE
12994C
12995 9000 CONTINUE
12996      RETURN
12997      END
12998      SUBROUTINE IMTQL2(NM,N,D,E,Z,IERR)
12999C***BEGIN PROLOGUE  IMTQL2
13000C***DATE WRITTEN   760101   (YYMMDD)
13001C***REVISION DATE  830518   (YYMMDD)
13002C***CATEGORY NO.  D4A5,D4C2A
13003C***KEYWORDS  EIGENVALUES,EIGENVECTORS,EISPACK
13004C***AUTHOR  SMITH, B. T., ET AL.
13005C***PURPOSE  Computes eigenvalues and eigenvectors of symmetric
13006C            tridiagonal matrix using implicit QL method.
13007C***DESCRIPTION
13008C
13009C     This subroutine is a translation of the ALGOL procedure IMTQL2,
13010C     NUM. MATH. 12, 377-383(1968) by Martin and Wilkinson,
13011C     as modified in NUM. MATH. 15, 450(1970) by Dubrulle.
13012C     HANDBOOK FOR AUTO. COMP., VOL.II-LINEAR ALGEBRA, 241-248(1971).
13013C
13014C     This subroutine finds the eigenvalues and eigenvectors
13015C     of a SYMMETRIC TRIDIAGONAL matrix by the implicit QL method.
13016C     The eigenvectors of a FULL SYMMETRIC matrix can also
13017C     be found if  TRED2  has been used to reduce this
13018C     full matrix to tridiagonal form.
13019C
13020C     On INPUT
13021C
13022C        NM must be set to the row dimension of two-dimensional
13023C          array parameters as declared in the calling program
13024C          dimension statement.
13025C
13026C        N is the order of the matrix.
13027C
13028C        D contains the diagonal elements of the input matrix.
13029C
13030C        E contains the subdiagonal elements of the input matrix
13031C          in its last N-1 positions.  E(1) is arbitrary.
13032C
13033C        Z contains the transformation matrix produced in the
13034C          reduction by  TRED2, if performed.  If the eigenvectors
13035C          of the tridiagonal matrix are desired, Z must contain
13036C          the identity matrix.
13037C
13038C      On OUTPUT
13039C
13040C        D contains the eigenvalues in ASCENDING order.  If an
13041C          error exit is made, the eigenvalues are correct but
13042C          UNORDERED for indices 1,2,...,IERR-1.
13043C
13044C        E has been destroyed.
13045C
13046C        Z contains orthonormal eigenvectors of the symmetric
13047C          tridiagonal (or full) matrix.  If an error exit is made,
13048C          Z contains the eigenvectors associated with the stored
13049C          eigenvalues.
13050C
13051C        IERR is set to
13052C          ZERO       for normal return,
13053C          J          if the J-th eigenvalue has not been
13054C                     determined after 30 iterations.
13055C
13056C     Calls PYTHAG(A,B) for sqrt(A**2 + B**2).
13057C
13058C     Questions and comments should be directed to B. S. Garbow,
13059C     APPLIED MATHEMATICS DIVISION, ARGONNE NATIONAL LABORATORY
13060C     ------------------------------------------------------------------
13061C***REFERENCES  B. T. SMITH, J. M. BOYLE, J. J. DONGARRA, B. S. GARBOW,
13062C                 Y. IKEBE, V. C. KLEMA, C. B. MOLER, *MATRIX EIGEN-
13063C                 SYSTEM ROUTINES - EISPACK GUIDE*, SPRINGER-VERLAG,
13064C                 1976.
13065C***ROUTINES CALLED  PYTHAG
13066C***END PROLOGUE  IMTQL2
13067C
13068      INTEGER I,J,K,L,M,N,II,NM,MML,IERR
13069      REAL D(N),E(N),Z(NM,N)
13070      REAL B,C,F,G,P,R,S,S1,S2
13071      REAL PYTHAG
13072C
13073C***FIRST EXECUTABLE STATEMENT  IMTQL2
13074      IERR = 0
13075      IF (N .EQ. 1) GO TO 1001
13076C
13077      DO 100 I = 2, N
13078        E(I-1) = E(I)
13079  100 CONTINUE
13080C
13081      E(N) = 0.0E0
13082C
13083      DO 240 L = 1, N
13084         J = 0
13085C     .......... LOOK FOR SMALL SUB-DIAGONAL ELEMENT ..........
13086  105    DO 110 M = L, N
13087            IF (M .EQ. N) GO TO 120
13088            S1 = ABS(D(M)) + ABS(D(M+1))
13089            S2 = S1 + ABS(E(M))
13090            IF (S2 .EQ. S1) GO TO 120
13091  110    CONTINUE
13092C
13093  120    P = D(L)
13094         IF (M .EQ. L) GO TO 240
13095         IF (J .EQ. 30) GO TO 1000
13096         J = J + 1
13097C     .......... FORM SHIFT ..........
13098         G = (D(L+1) - P) / (2.0E0 * E(L))
13099         R = PYTHAG(G,1.0E0)
13100         G = D(M) - P + E(L) / (G + SIGN(R,G))
13101         S = 1.0E0
13102         C = 1.0E0
13103         P = 0.0E0
13104         MML = M - L
13105C     .......... FOR I=M-1 STEP -1 UNTIL L DO -- ..........
13106         DO 200 II = 1, MML
13107            I = M - II
13108            F = S * E(I)
13109            B = C * E(I)
13110            IF (ABS(F) .LT. ABS(G)) GO TO 150
13111            C = G / F
13112            R = SQRT(C*C+1.0E0)
13113            E(I+1) = F * R
13114            S = 1.0E0 / R
13115            C = C * S
13116            GO TO 160
13117  150       S = F / G
13118            R = SQRT(S*S+1.0E0)
13119            E(I+1) = G * R
13120            C = 1.0E0 / R
13121            S = S * C
13122  160       G = D(I+1) - P
13123            R = (D(I) - G) * S + 2.0E0 * C * B
13124            P = S * R
13125            D(I+1) = G + P
13126            G = C * R - B
13127C     .......... FORM VECTOR ..........
13128            DO 180 K = 1, N
13129               F = Z(K,I+1)
13130               Z(K,I+1) = S * Z(K,I) + C * F
13131               Z(K,I) = C * Z(K,I) - S * F
13132  180       CONTINUE
13133C
13134  200    CONTINUE
13135C
13136         D(L) = D(L) - P
13137         E(L) = G
13138         E(M) = 0.0E0
13139         GO TO 105
13140  240 CONTINUE
13141C     .......... ORDER EIGENVALUES AND EIGENVECTORS ..........
13142      DO 300 II = 2, N
13143         I = II - 1
13144         K = I
13145         P = D(I)
13146C
13147         DO 260 J = II, N
13148            IF (D(J) .GE. P) GO TO 260
13149            K = J
13150            P = D(J)
13151  260    CONTINUE
13152C
13153         IF (K .EQ. I) GO TO 300
13154         D(K) = D(I)
13155         D(I) = P
13156C
13157         DO 280 J = 1, N
13158            P = Z(J,I)
13159            Z(J,I) = Z(J,K)
13160            Z(J,K) = P
13161  280    CONTINUE
13162C
13163  300 CONTINUE
13164C
13165      GO TO 1001
13166C     .......... SET ERROR -- NO CONVERGENCE TO AN
13167C                EIGENVALUE AFTER 30 ITERATIONS ..........
13168 1000 IERR = L
13169 1001 RETURN
13170      END
13171      SUBROUTINE INITDA(IBUGIN)
13172C
13173C     PURPOSE--THIS IS SUBROUTING INITDA.
13174C              (THE   DA    AT THE END OF    INITDA   STANDS FOR   DATA)
13175C              THIS SUBROUTINE INITIALIZES DATA VARIABLES
13176C     WRITTEN BY--JAMES J. FILLIBEN
13177C                 STATISTICAL ENGINEERING DIVISION
13178C                 INFORMATION TECHNOLOGY LABORATORY
13179C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
13180C                 GAITHERSBURG, MD 20899-8980
13181C                 PHONE--301-975-2855
13182C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
13183C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
13184C     LANGUAGE--ANSI FORTRAN (1977)
13185C     VERSION NUMBER--82/7
13186C     ORIGINAL VERSION--NOVEMBER  1980.
13187C     UPDATED         --AUGUST    1981.
13188C     UPDATED         --MAY       1982.
13189C     UPDATED         --FEBRUARY  1989.  SOFT-CODING (ALAN)
13190C     UPDATED         --JULY      1989.  MAXCP1/2/3/4/5/6
13191C     UPDATED         --JANUARY   1998.  ADD MAXROM, MAXCOM
13192C
13193C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
13194C
13195      CHARACTER*4 IBLANK
13196      CHARACTER*4 IBUGIN
13197C
13198C---------------------------------------------------------------------
13199C
13200C-----COMMON----------------------------------------------------------
13201C
13202      INCLUDE 'DPCOPA.INC'
13203      INCLUDE 'DPCODA.INC'
13204CCCCC THE FOLLOWING LINE WAS ADDED JULY 1989
13205      INCLUDE 'DPCOM2.INC'
13206      INCLUDE 'DPCOP2.INC'
13207C
13208C-----START POINT-----------------------------------------------------
13209C
13210      IF(IBUGIN.EQ.'OFF')GOTO99
13211      WRITE(ICOUT,90)
13212   90 FORMAT(1X)
13213      CALL DPWRST('XXX','BUG ')
13214      WRITE(ICOUT,95)
13215   95 FORMAT('***** AT THE BEGINNING OF INITDA--')
13216      CALL DPWRST('XXX','BUG ')
13217   99 CONTINUE
13218C
13219      IBLANK=' '
13220      IZERO=0
13221      ZERO=0.0
13222C
13223C               *****************************************************
13224C               **  INITIALIZE                                     **
13225C               **  THE MAXIMUM TOTAL NUMBER OF OBSERVATIONS, AND  **
13226C               **  THE TOTAL NUMBER OF OBSERVATIONS               **
13227C               *****************************************************
13228C
13229CCCCC MAXNK=10000
13230      MAXNK=MAXOBW
13231      NK=0
13232C
13233C               ************************************************************
13234C               **  INITIALIZE                                            **
13235C               **  THE MAXIMUM NUMBER OF OBSERVATIONS PER VARIABLE, AND  **
13236C               **  THE NUMBER OF OBSERVATIONS PER VARIABLE               **
13237C               ************************************************************
13238C
13239CCCCC IDEMXN=1000        ALAN HAS THIS ON THE CYBER
13240      IDEMXN=MAXOBV
13241      MAXN=IDEMXN
13242      N=0
13243C
13244C               ********************************************
13245C               **  INITIALIZE                            **
13246C               **  THE MAXIMUM NUMBER OF VARIABLES, AND  **
13247C               **  THE NUMBER OF VARIABLES (COLUMNS)     **
13248C               ********************************************
13249C
13250CCCCC IDEMXC=10
13251CCCCC IDEMXC=MAXNK/IDEMXN   ALAN HAS THIS ON THE CYBER
13252      IDEMXC=MAXOBW/MAXOBV
13253      MAXCOL=IDEMXC
13254      NUMCOL=0
13255C
13256CCCCC THE FOLLOWING 6 LINES WERE ADDED JULY 1989
13257      MAXCP1=MAXCOL+1
13258      MAXCP2=MAXCOL+2
13259      MAXCP3=MAXCOL+3
13260      MAXCP4=MAXCOL+4
13261      MAXCP5=MAXCOL+5
13262      MAXCP6=MAXCOL+6
13263C
13264C               ****************************************************************
13265C               **  INITIALIZE
13266C               **  THE MAXIMUM TOTAL NUMBER OF CHARACTERS FOR ALL FUNCTIONS, AN
13267C               **  THE TOTAL NUMBER OF CHARACTERS FOR ALL FUNCTIONS
13268C               ****************************************************************
13269C
13270CCCCC MAXCHF=1000
13271      MAXCHF=MAXF1
13272      NUMCHF=0
13273C
13274C               ********************************************
13275C               **  INITIALIZE                            **
13276C               **  THE MAXIMUM NUMBER OF FUNCTIONS, AND  **
13277C               **  THE NUMBER OF FUNCTIONS               **
13278C               ********************************************
13279C
13280CCCCC MAXFUN=100
13281      MAXFUN=MAXFN2
13282      NUMFUN=0
13283C
13284C               **********************************************
13285C               **  INITIALIZE THE MAXIMUM TOTAL NUMBER OF  **
13286C               **  CHARACTERS (THAT WILL BE PRINTED)       **
13287C               **  (IN THE    STATUS    COMMAND OUTPUT)    **
13288C               **  FOR THE LAST MODEL FITTED.              **
13289C               **********************************************
13290C
13291CCCCC MAXCHM=200
13292      MAXCHM=MAXF3
13293      NUMCHM=0
13294C
13295C               **********************************************
13296C               **  INITIALIZE                              **
13297C               **  THE MAXIMUM NUMBER OF CONSTRAINTS, AND  **
13298C               **  THE NUMBER OF CONSTRAINTS               **
13299C               **********************************************
13300C
13301      MAXCON=100
13302      NUMCON=0
13303C
13304CCCCC FOLLOWING SECTION ADDED JANUARY 1998.
13305C               **********************************************
13306C               **  INITIALIZE                              **
13307C               **  THE MAXIMUM NUMBER OF ROWS AND COLUMNS  **
13308C               **  IN A MATRIX                             **
13309C               **********************************************
13310C
13311      MAXCOM=100
13312      MAXROM=INT((46.0*REAL(MAXOBV)/3.0)/100.0)
13313C
13314C               *******************************
13315C               **  EXIT AND RETURN TO MAIN  **
13316C               *******************************
13317C
13318      IF(IBUGIN.EQ.'OFF')GOTO9090
13319      WRITE(ICOUT,999)
13320  999 FORMAT(1X)
13321      CALL DPWRST('XXX','BUG ')
13322      WRITE(ICOUT,9911)
13323 9911 FORMAT('***** AT THE END       OF INITDA--')
13324      CALL DPWRST('XXX','BUG ')
13325      WRITE(ICOUT,9012)MAXN,N
13326 9012 FORMAT('MAXN,N = ',2I8)
13327      CALL DPWRST('XXX','BUG ')
13328      WRITE(ICOUT,9013)MAXCOL,NUMCOL
13329 9013 FORMAT('MAXCOL,NUMCOL = ',2I8)
13330      CALL DPWRST('XXX','BUG ')
13331      WRITE(ICOUT,9014)MAXNK,NK
13332 9014 FORMAT('MAXNK,NK      = ',2I8)
13333      CALL DPWRST('XXX','BUG ')
13334      WRITE(ICOUT,9015)MAXCHF,NUMCHF
13335 9015 FORMAT('MAXCHF,NUMCHF = ',2I8)
13336      CALL DPWRST('XXX','BUG ')
13337      WRITE(ICOUT,9016)MAXCHM,NUMCHM
13338 9016 FORMAT('MAXCHM,NUMCHM = ',2I8)
13339      CALL DPWRST('XXX','BUG ')
13340      WRITE(ICOUT,9017)MAXCON,NUMCON
13341 9017 FORMAT('MAXCON,NUMCON = ',2I8)
13342      CALL DPWRST('XXX','BUG ')
13343      WRITE(ICOUT,9021)MAXOBV,MAXOBW
13344 9021 FORMAT('MAXOBV,MAXOBW = ',2I8)
13345      CALL DPWRST('XXX','BUG ')
13346 9090 CONTINUE
13347C
13348      RETURN
13349      END
13350      SUBROUTINE INITDB
13351C
13352C     PURPOSE--THIS IS SUBROUTING INITDB.
13353C              (THE   DB    AT THE END OF    INITDB   STANDS FOR   DEBUGGI
13354C              THIS SUBROUTINE INITIALIZES DEBUGGING VARIABLES AND PARAMETERS
13355C     WRITTEN BY--JAMES J. FILLIBEN
13356C                 STATISTICAL ENGINEERING DIVISION
13357C                 INFORMATION TECHNOLOGY LABORATORY
13358C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
13359C                 GAITHERSBURG, MD 20899-8980
13360C                 PHONE--301-975-2855
13361C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
13362C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
13363C     LANGUAGE--ANSI FORTRAN (1977)
13364C     VERSION NUMBER--82/7
13365C     ORIGINAL VERSION--NOVEMBER  1980.
13366C     UPDATED         --AUGUST    1981.
13367C     UPDATED         --MAY       1982.
13368C
13369C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
13370C
13371C-----COMMON----------------------------------------------------------
13372C
13373      INCLUDE 'DPCOMC.INC'
13374      INCLUDE 'DPCODB.INC'
13375      INCLUDE 'DPCOP2.INC'
13376C
13377C-----START POINT-----------------------------------------------------
13378C
13379      IF(IBUGIN.EQ.'OFF')GOTO90
13380      WRITE(ICOUT,999)
13381  999 FORMAT(1X)
13382      CALL DPWRST('XXX','BUG ')
13383      WRITE(ICOUT,51)
13384   51 FORMAT('***** AT THE BEGINNING OF INITDB--')
13385      CALL DPWRST('XXX','BUG ')
13386      WRITE(ICOUT,52)
13387   52 FORMAT('      NOTE--SINCE    IBUGIN   WILL BE SET TO    OFF ')
13388      CALL DPWRST('XXX','BUG ')
13389      WRITE(ICOUT,53)
13390   53 FORMAT('      WITHIN THIS SUBROUTINE, THERE WILL BE ')
13391      CALL DPWRST('XXX','BUG ')
13392      WRITE(ICOUT,54)
13393   54 FORMAT('      NO MESSAGE AT THE END OF THIS SUBROUTINE.')
13394      CALL DPWRST('XXX','BUG ')
13395   90 CONTINUE
13396C
13397C               ***********************************************
13398C               **  INITIALIZE THE BUG VECTOR                **
13399C               **  (THE VECTOR WHERE THE BUG PARAMETERS     **
13400C               **  ARE PLACED)                              **
13401C               ***********************************************
13402C
13403      MAXBUG=100
13404      NUMBUG=0
13405C
13406      DO100I=1,MAXBUG
13407      IH1BUG(I)='OFF'
13408CCCCC IH1BUG(I)='ON'
13409  100 CONTINUE
13410C
13411C               *******************************
13412C               **  EXIT AND RETURN TO MAIN  **
13413C               *******************************
13414C
13415      IF(IBUGIN.EQ.'OFF')GOTO9999
13416      WRITE(ICOUT,9990)
13417 9990 FORMAT(1X)
13418      CALL DPWRST('XXX','BUG ')
13419      WRITE(ICOUT,9995)
13420 9995 FORMAT('***** AT THE END       OF INITDB--')
13421      CALL DPWRST('XXX','BUG ')
13422 9999 CONTINUE
13423C
13424      RETURN
13425      END
13426      SUBROUTINE INITDE(IBUGIN)
13427C
13428C     PURPOSE--THIS IS SUBROUTING INITDE.
13429C              (THE   DE    AT THE END OF    INITDE
13430C              STANDS FOR DESIGN OF EXPERIMENTS
13431C              THIS SUBROUTINE INITIALIZES DESIGN-OF-EXPERIMENT
13432C              PARAMETERS
13433C     WRITTEN BY--JAMES J. FILLIBEN
13434C                 STATISTICAL ENGINEERING DIVISION
13435C                 INFORMATION TECHNOLOGY LABORATORY
13436C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
13437C                 GAITHERSBURG, MD 20899-8980
13438C                 PHONE--301-975-2855
13439C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
13440C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
13441C     LANGUAGE--ANSI FORTRAN (1977)
13442C     VERSION NUMBER--89/6
13443C     ORIGINAL VERSION--MAY 1989.
13444C     UPDATED         --AUGUST    1993. BUG FIX
13445C
13446C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
13447C
13448      CHARACTER*4 IBUGIN
13449CCCCC AUGUST 1993.  COMPILE ERROR ON RS-6000, ADD FOLLOWING LINE
13450      CHARACTER*4 ITEXT
13451C
13452C-----COMMON----------------------------------------------------------
13453C
13454      INCLUDE 'DPCODE.INC'
13455      INCLUDE 'DPCOP2.INC'
13456C
13457C-----START POINT-----------------------------------------------------
13458C
13459      IF(IBUGIN.EQ.'OFF')GOTO99
13460      WRITE(ICOUT,90)
13461   90 FORMAT(1X)
13462      CALL DPWRST('XXX','BUG ')
13463      WRITE(ICOUT,95)
13464   95 FORMAT('***** AT THE BEGINNING OF INITDE--')
13465      CALL DPWRST('XXX','BUG ')
13466   99 CONTINUE
13467C
13468C               ***********************************************
13469C               **  SET THE DESIGN OF EXPERIMENT SETTINGS    **
13470C               **     IDEXDE = DEPTH INTO INTERACTION TERMS **
13471C               **              1 = MAIN EFFECTS ONLY        **
13472C               **              2 = UP TO 2-TERM INTERACTIONS**
13473C               **              ETC.                         **
13474C               **     DEXWID = WIDTH ON THE PLOT ACROSS     **
13475C               **              ALL LEVELS WITHIN A FACTOR   **
13476C               **     IDEXHA = HORIZONTAL AXIS VARIABLE     **
13477C               **              DEFAULT = 'FACT'             **
13478C               **              CAN ALSO HAVE 'TERM'         **
13479C               ***********************************************
13480C
13481      IDEDED=1
13482      DEFDEW=0.4
13483      IDEFHA='FACT'
13484C
13485      IDEXDE=1
13486      DEXWID=0.4
13487      IDEXHA='FACT'
13488C
13489C               **************************************************
13490C               **  INITIALIZE EXPERIMENTAL SIMULATION SETTINGS **
13491C               **************************************************
13492
13493C               **************************************************
13494C               **  INITIALIZE EXPERIMENTAL SIMULATION SETTINGS **
13495C               **     GMEAN     = GRAND MEAN                   **
13496C               **     NUMB      = TOTAL NUMBER OF COEFFICIENTS **(EXCLUDING GRA
13497C               **     INDEXB(.) = INDEX FOR COEFFICIENTS (EXCLU**DING GRAND MEA
13498C               **     B(.)      = COEFFICIENTS (EXCLUDING GRAND** MEAN)
13499C               **     GSD       = GENERAL STANDARD DEVIATION   **
13500C               **               = SD OF ERROR IN Y = GRAND MEAN** + ERROR
13501C               **     NUMS      = XX                           **
13502C               **     BMINT     = INTERCEPT FOR GRAND MEAN DRIF**T IN TIME
13503C               **     BMSLOP    = SLOPE     FOR GRAND MEAN DRIF**T IN TIME
13504C               **     DSINT     = INTERCEPT FOR SD         DRIF**T IN TIME
13505C               **     DSSLOP    = SLOPE     FOR SD         DRIF**T IN TIME
13506C               **************************************************
13507C
13508      ISIMID=0
13509      IAUTH='BOXB'
13510      ITEXT='TECH'
13511      IPAGE=17
13512C
13513      GMEAN=71.25
13514      NUMB=7
13515      INDEXB(1)=1
13516      INDEXB(2)=2
13517      INDEXB(3)=3
13518      INDEXB(4)=12
13519      INDEXB(5)=13
13520      INDEXB(6)=23
13521      INDEXB(7)=123
13522      B(1)=23.0
13523      B(2)=(-5.0)
13524      B(3)=1.5
13525      B(4)=1.5
13526      B(5)=10.0
13527      B(6)=0.0
13528      B(7)=0.5
13529C
13530CCCCC GSD=0.1
13531      GSD=0.0
13532      NUMS=0
13533C
13534      BMINT=0.0
13535      BMSLOP=0.0
13536C
13537      DSINT=0.0
13538      DSSLOP=0.0
13539C
13540C               *******************************
13541C               **  EXIT AND RETURN TO MAIN  **
13542C               *******************************
13543C
13544      IF(IBUGIN.EQ.'OFF')GOTO9999
13545      WRITE(ICOUT,9990)
13546 9990 FORMAT(1X)
13547      CALL DPWRST('XXX','BUG ')
13548      WRITE(ICOUT,9995)
13549 9995 FORMAT('***** AT THE END       OF INITDE--')
13550      CALL DPWRST('XXX','BUG ')
13551 9999 CONTINUE
13552C
13553      RETURN
13554      END
13555      FUNCTION INITDS (OS, NOS, ETA)
13556C***BEGIN PROLOGUE  INITDS
13557C***PURPOSE  Determine the number of terms needed in an orthogonal
13558C            polynomial series so that it meets a specified accuracy.
13559C***LIBRARY   SLATEC (FNLIB)
13560C***CATEGORY  C3A2
13561C***TYPE      DOUBLE PRECISION (INITS-S, INITDS-D)
13562C***KEYWORDS  CHEBYSHEV, FNLIB, INITIALIZE, ORTHOGONAL POLYNOMIAL,
13563C             ORTHOGONAL SERIES, SPECIAL FUNCTIONS
13564C***AUTHOR  Fullerton, W., (LANL)
13565C***DESCRIPTION
13566C
13567C  Initialize the orthogonal series, represented by the array OS, so
13568C  that INITDS is the number of terms needed to insure the error is no
13569C  larger than ETA.  Ordinarily, ETA will be chosen to be one-tenth
13570C  machine precision.
13571C
13572C             Input Arguments --
13573C   OS     double precision array of NOS coefficients in an orthogonal
13574C          series.
13575C   NOS    number of coefficients in OS.
13576C   ETA    single precision scalar containing requested accuracy of
13577C          series.
13578C
13579C***REFERENCES  (NONE)
13580C***ROUTINES CALLED  XERMSG
13581C***REVISION HISTORY  (YYMMDD)
13582C   770601  DATE WRITTEN
13583C   890531  Changed all specific intrinsics to generic.  (WRB)
13584C   890831  Modified array declarations.  (WRB)
13585C   891115  Modified error message.  (WRB)
13586C   891115  REVISION DATE from Version 3.2
13587C   891214  Prologue converted to Version 4.0 format.  (BAB)
13588C   900315  CALLs to XERROR changed to CALLs to XERMSG.  (THJ)
13589C***END PROLOGUE  INITDS
13590      DOUBLE PRECISION OS(*)
13591C
13592C-----COMMON----------------------------------------------------------
13593C
13594      INCLUDE 'DPCOP2.INC'
13595C
13596C***FIRST EXECUTABLE STATEMENT  INITDS
13597      IF (NOS .LT. 1) THEN
13598        WRITE(ICOUT,11)
13599   11   FORMAT('***** ERROR FROM INITDS.  THE NUMBER OF ')
13600        CALL DPWRST('XXX','BUG ')
13601        WRITE(ICOUT,12)
13602   12   FORMAT('      COEFFICIENTS IS LESS THAN 1.')
13603        CALL DPWRST('XXX','BUG ')
13604        INITDS = 0
13605        RETURN
13606      ENDIF
13607C
13608      ERR = 0.
13609      DO 10 II = 1,NOS
13610        I = NOS + 1 - II
13611        ERR = ERR + ABS(REAL(OS(I)))
13612        IF (ERR.GT.ETA) GO TO 20
13613   10 CONTINUE
13614C
13615   20 IF (I .EQ. NOS) THEN
13616      WRITE(ICOUT,21)
13617 21   FORMAT('***** ERROR FROM INITDS.  CHEBYSHEV SERIES TOO ')
13618      CALL DPWRST('XXX','BUG ')
13619      WRITE(ICOUT,22)
13620 22   FORMAT('      SHORT FOR SPECIFIED ACCURACY.             *****')
13621      CALL DPWRST('XXX','BUG ')
13622      ENDIF
13623      INITDS = I
13624C
13625      RETURN
13626      END
13627      BLOCK DATA INITD1
13628C
13629C     PURPOSE--THIS IS BLOCK DATA ROUTINE INITD20
13630C              THIS INITIALIZES THE REAL DATA ARRAYS (ONCE).  USE BLOCK
13631C              DATA FOR SPEED (DONE AT LOAD TIME, NOT AT RUN TIME)
13632C              THIS SUBROUTINE INITIALIZES DATA VARIABLES
13633C     WRITTEN BY--JAMES J. FILLIBEN
13634C                 STATISTICAL ENGINEERING DIVISION
13635C                 INFORMATION TECHNOLOGY LABORATORY
13636C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
13637C                 GAITHERSBURG, MD 20899-8980
13638C                 PHONE--301-975-2855
13639C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
13640C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
13641C     LANGUAGE--ANSI FORTRAN (1977)
13642C     VERSION NUMBER--82/7
13643C     UPDATED         --OCTOBER   1993.  DIFFERENT SYNTAX (SGI VERSION
13644C                                        BOMBS ON OLD SYNTAX)
13645C
13646C---------------------------------------------------------------------
13647C
13648C-----COMMON----------------------------------------------------------
13649C
13650      INCLUDE 'DPCOPA.INC'
13651      INCLUDE 'DPCODA.INC'
13652C
13653C-----START POINT-----------------------------------------------------
13654C
13655CCCCC DATA (ISUB(I),I=1,MAXOBV) /MAXOBV*0/
13656CCCCC DATA (I1DATA(I),I=1,100) /100*0/
13657C
13658CCCCC DATA (PARLIM(I),I=1,100) /100*0./
13659C
13660      DATA ISUB /MAXOBV*0/
13661      DATA I1DATA /100*0/
13662C
13663      DATA PARLIM /100*0./
13664C
13665      END
13666      BLOCK DATA INITD2
13667C
13668C     PURPOSE--THIS IS BLOCK DATA ROUTINE INITD20
13669C              THIS INITIALIZES THE REAL DATA ARRAYS (ONCE).  USE BLOCK
13670C              DATA FOR SPEED (DONE AT LOAD TIME, NOT AT RUN TIME)
13671C              THIS SUBROUTINE INITIALIZES DATA VARIABLES
13672C     WRITTEN BY--JAMES J. FILLIBEN
13673C                 STATISTICAL ENGINEERING DIVISION
13674C                 INFORMATION TECHNOLOGY LABORATORY
13675C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
13676C                 GAITHERSBURG, MD 20899-8980
13677C                 PHONE--301-975-2855
13678C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
13679C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
13680C     LANGUAGE--ANSI FORTRAN (1977)
13681C     VERSION NUMBER--82/7
13682C     ORIGINAL VERSION--OCTOBER   1991.
13683C     UPDATED         --OCTOBER   1993.  DIFFERENT SYNTAX (SGI VERSION
13684C                                        BOMBS ON OLD SYNTAX)
13685C
13686C---------------------------------------------------------------------
13687C
13688C-----COMMON----------------------------------------------------------
13689C
13690      INCLUDE 'DPCOPA.INC'
13691      INCLUDE 'DPCODA.INC'
13692C
13693C-----START POINT-----------------------------------------------------
13694C
13695CCCCC DATA (PRED(I),I=1,MAXOBV) /MAXOBV*0./
13696CCCCC DATA (RES(I),I=1,MAXOBV) /MAXOBV*0./
13697C
13698      DATA PRED /MAXOBV*0./
13699      DATA RES /MAXOBV*0./
13700C
13701      END
13702      BLOCK DATA INITD3
13703C
13704C     PURPOSE--THIS IS BLOCK DATA ROUTINE INITD21
13705C              THIS INITIALIZES THE REAL DATA ARRAYS (ONCE).  USE BLOCK
13706C              DATA FOR SPEED (DONE AT LOAD TIME, NOT AT RUN TIME)
13707C              THIS SUBROUTINE INITIALIZES DATA VARIABLES
13708C     WRITTEN BY--JAMES J. FILLIBEN
13709C                 STATISTICAL ENGINEERING DIVISION
13710C                 INFORMATION TECHNOLOGY LABORATORY
13711C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
13712C                 GAITHERSBURG, MD 20899-8980
13713C                 PHONE--301-975-2855
13714C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
13715C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
13716C     LANGUAGE--ANSI FORTRAN (1977)
13717C     VERSION NUMBER--82/7
13718C     ORIGINAL VERSION--OCTOBER   1991.
13719C     UPDATED         --OCTOBER   1993.  DIFFERENT SYNTAX (SGI VERSION
13720C                                        BOMBS ON OLD SYNTAX)
13721C
13722C---------------------------------------------------------------------
13723C
13724C-----COMMON----------------------------------------------------------
13725C
13726      INCLUDE 'DPCOPA.INC'
13727      INCLUDE 'DPCODA.INC'
13728C
13729C-----START POINT-----------------------------------------------------
13730C
13731CCCCC DATA (X(I),I=1,MAXPOP) /MAXPOP*0./
13732      DATA X /MAXPOP*0./
13733C
13734      END
13735      BLOCK DATA INITD4
13736C
13737C     PURPOSE--THIS IS BLOCK DATA ROUTINE INITD22
13738C              THIS INITIALIZES THE REAL DATA ARRAYS (ONCE).  USE BLOCK
13739C              DATA FOR SPEED (DONE AT LOAD TIME, NOT AT RUN TIME)
13740C              THIS SUBROUTINE INITIALIZES DATA VARIABLES
13741C     WRITTEN BY--JAMES J. FILLIBEN
13742C                 STATISTICAL ENGINEERING DIVISION
13743C                 INFORMATION TECHNOLOGY LABORATORY
13744C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
13745C                 GAITHERSBURG, MD 20899-8980
13746C                 PHONE--301-975-2855
13747C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
13748C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
13749C     LANGUAGE--ANSI FORTRAN (1977)
13750C     VERSION NUMBER--82/7
13751C     ORIGINAL VERSION--OCTOBER   1991.
13752C     UPDATED         --OCTOBER   1993.  DIFFERENT SYNTAX (SGI VERSION
13753C                                        BOMBS ON OLD SYNTAX)
13754C
13755C---------------------------------------------------------------------
13756C
13757C-----COMMON----------------------------------------------------------
13758C
13759      INCLUDE 'DPCOPA.INC'
13760      INCLUDE 'DPCODA.INC'
13761C
13762C-----START POINT-----------------------------------------------------
13763C
13764C
13765CCCCC DATA (YPLOT(I),I=1,MAXPOP) /MAXPOP*0./
13766      DATA YPLOT /MAXPOP*0./
13767C
13768      END
13769      BLOCK DATA INITD5
13770C
13771C     PURPOSE--THIS IS BLOCK DATA ROUTINE INITD23
13772C              THIS INITIALIZES THE REAL DATA ARRAYS (ONCE).  USE BLOCK
13773C              DATA FOR SPEED (DONE AT LOAD TIME, NOT AT RUN TIME)
13774C              THIS SUBROUTINE INITIALIZES DATA VARIABLES
13775C     WRITTEN BY--JAMES J. FILLIBEN
13776C                 STATISTICAL ENGINEERING DIVISION
13777C                 INFORMATION TECHNOLOGY LABORATORY
13778C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
13779C                 GAITHERSBURG, MD 20899-8980
13780C                 PHONE--301-975-2855
13781C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
13782C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
13783C     LANGUAGE--ANSI FORTRAN (1977)
13784C     VERSION NUMBER--82/7
13785C     ORIGINAL VERSION--OCTOBER   1991.
13786C     UPDATED         --OCTOBER   1993.  DIFFERENT SYNTAX (SGI VERSION
13787C                                        BOMBS ON OLD SYNTAX)
13788C
13789C---------------------------------------------------------------------
13790C
13791C-----COMMON----------------------------------------------------------
13792C
13793      INCLUDE 'DPCOPA.INC'
13794      INCLUDE 'DPCODA.INC'
13795C
13796C-----START POINT-----------------------------------------------------
13797C
13798CCCCC DATA ((AMATR1(I,J),I=1,100),J=1,100) /10000*0./
13799      DATA AMATR1 /10000*0./
13800C
13801      END
13802      BLOCK DATA INITD6
13803C
13804C     PURPOSE--THIS IS BLOCK DATA ROUTINE INITD21
13805C              THIS INITIALIZES THE REAL DATA ARRAYS (ONCE).  USE BLOCK
13806C              DATA FOR SPEED (DONE AT LOAD TIME, NOT AT RUN TIME)
13807C              THIS SUBROUTINE INITIALIZES DATA VARIABLES
13808C     WRITTEN BY--JAMES J. FILLIBEN
13809C                 STATISTICAL ENGINEERING DIVISION
13810C                 INFORMATION TECHNOLOGY LABORATORY
13811C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
13812C                 GAITHERSBURG, MD 20899-8980
13813C                 PHONE--301-975-2855
13814C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
13815C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
13816C     LANGUAGE--ANSI FORTRAN (1977)
13817C     VERSION NUMBER--82/7
13818C     ORIGINAL VERSION--OCTOBER   1991.
13819C     UPDATED         --OCTOBER   1993.  DIFFERENT SYNTAX (SGI VERSION
13820C                                        BOMBS ON OLD SYNTAX)
13821C
13822C---------------------------------------------------------------------
13823C
13824C-----COMMON----------------------------------------------------------
13825C
13826      INCLUDE 'DPCOPA.INC'
13827      INCLUDE 'DPCODA.INC'
13828C
13829C-----START POINT-----------------------------------------------------
13830C
13831CCCCC DATA (X3D(I),I=1,MAXPOP) /MAXPOP*0./
13832      DATA X3D /MAXPOP*0./
13833C
13834      END
13835      BLOCK DATA INID7A
13836C
13837C     PURPOSE--THIS IS BLOCK DATA ROUTINE INID7A
13838C              THIS INITIALIZES THE REAL DATA ARRAY D(.).
13839C              BLOCK DATA IS USED FOR SPEED
13840C              SINCE DONE AT LOAD TIME--NOT AT RUN TIME.
13841C     WRITTEN BY--JAMES J. FILLIBEN
13842C                 STATISTICAL ENGINEERING DIVISION
13843C                 INFORMATION TECHNOLOGY LABORATORY
13844C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
13845C                 GAITHERSBURG, MD 20899-8980
13846C                 PHONE--301-975-2855
13847C     LANGUAGE--ANSI FORTRAN (1977)
13848C     VERSION NUMBER--92/10
13849C     ORIGINAL VERSION--SEPTEMBER 1992.
13850C
13851C-----COMMON----------------------------------------------------------
13852C
13853      INCLUDE 'DPCOPA.INC'
13854      INCLUDE 'DPCODA.INC'
13855C
13856C-----START POINT-----------------------------------------------------
13857C
13858CCCCC DATA (D(I),I=1,MAXPOP) /MAXPOP*0./
13859      DATA D /MAXPOP*0./
13860C
13861      END
13862      BLOCK DATA INID7B
13863C
13864C     PURPOSE--THIS IS BLOCK DATA ROUTINE INID7B
13865C              THIS INITIALIZES THE REAL DATA ARRAY DSIZE(.).
13866C              BLOCK DATA IS USED FOR SPEED
13867C              SINCE DONE AT LOAD TIME--NOT AT RUN TIME.
13868C     WRITTEN BY--JAMES J. FILLIBEN
13869C                 STATISTICAL ENGINEERING DIVISION
13870C                 INFORMATION TECHNOLOGY LABORATORY
13871C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
13872C                 GAITHERSBURG, MD 20899-8980
13873C                 PHONE--301-975-2855
13874C     LANGUAGE--ANSI FORTRAN (1977)
13875C     VERSION NUMBER--92/10
13876C     ORIGINAL VERSION--SEPTEMBER 1992.
13877C
13878C-----COMMON----------------------------------------------------------
13879C
13880      INCLUDE 'DPCOPA.INC'
13881      INCLUDE 'DPCODA.INC'
13882C
13883C-----START POINT-----------------------------------------------------
13884C
13885CCCCC DATA (DSIZE(I),I=1,MAXPOP) /MAXPOP*0./
13886      DATA DSIZE /MAXPOP*0./
13887C
13888      END
13889      BLOCK DATA INID7C
13890C
13891C     PURPOSE--THIS IS BLOCK DATA ROUTINE INID7C
13892C              THIS INITIALIZES THE REAL DATA ARRAY DSYMB(.).
13893C              BLOCK DATA IS USED FOR SPEED
13894C              SINCE DONE AT LOAD TIME--NOT AT RUN TIME.
13895C     WRITTEN BY--JAMES J. FILLIBEN
13896C                 STATISTICAL ENGINEERING DIVISION
13897C                 INFORMATION TECHNOLOGY LABORATORY
13898C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
13899C                 GAITHERSBURG, MD 20899-8980
13900C                 PHONE--301-975-2855
13901C     LANGUAGE--ANSI FORTRAN (1977)
13902C     VERSION NUMBER--92/10
13903C     ORIGINAL VERSION--SEPTEMBER 1992.
13904C     UPDATED         --OCTOBER   1993.  DIFFERENT SYNTAX (SGI VERSION
13905C                                        BOMBS ON OLD SYNTAX)
13906C
13907C-----COMMON----------------------------------------------------------
13908C
13909      INCLUDE 'DPCOPA.INC'
13910      INCLUDE 'DPCODA.INC'
13911C
13912C-----START POINT-----------------------------------------------------
13913C
13914CCCCC DATA (DSYMB(I),I=1,MAXPOP) /MAXPOP*0./
13915      DATA DSYMB /MAXPOP*0./
13916C
13917      END
13918      BLOCK DATA INID7D
13919C
13920C     PURPOSE--THIS IS BLOCK DATA ROUTINE INID7D
13921C              THIS INITIALIZES THE REAL DATA ARRAY DCOLOR(.).
13922C              BLOCK DATA IS USED FOR SPEED
13923C              SINCE DONE AT LOAD TIME--NOT AT RUN TIME.
13924C     WRITTEN BY--JAMES J. FILLIBEN
13925C                 STATISTICAL ENGINEERING DIVISION
13926C                 INFORMATION TECHNOLOGY LABORATORY
13927C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
13928C                 GAITHERSBURG, MD 20899-8980
13929C                 PHONE--301-975-2855
13930C     LANGUAGE--ANSI FORTRAN (1977)
13931C     VERSION NUMBER--92/10
13932C     ORIGINAL VERSION--SEPTEMBER 1992.
13933C     UPDATED         --OCTOBER   1993.  DIFFERENT SYNTAX (SGI VERSION
13934C                                        BOMBS ON OLD SYNTAX)
13935C
13936C-----COMMON----------------------------------------------------------
13937C
13938      INCLUDE 'DPCOPA.INC'
13939      INCLUDE 'DPCODA.INC'
13940C
13941C-----START POINT-----------------------------------------------------
13942C
13943CCCCC DATA (DCOLOR(I),I=1,MAXPOP) /MAXPOP*0./
13944      DATA DCOLOR /MAXPOP*0./
13945C
13946      END
13947      BLOCK DATA INID7E
13948C
13949C     PURPOSE--THIS IS BLOCK DATA ROUTINE INID7E
13950C              THIS INITIALIZES THE REAL DATA ARRAY DFILL(.).
13951C              BLOCK DATA IS USED FOR SPEED
13952C              SINCE DONE AT LOAD TIME--NOT AT RUN TIME.
13953C     WRITTEN BY--JAMES J. FILLIBEN
13954C                 STATISTICAL ENGINEERING DIVISION
13955C                 INFORMATION TECHNOLOGY LABORATORY
13956C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
13957C                 GAITHERSBURG, MD 20899-8980
13958C                 PHONE--301-975-2855
13959C     LANGUAGE--ANSI FORTRAN (1977)
13960C     VERSION NUMBER--92/10
13961C     ORIGINAL VERSION--SEPTEMBER 1992.
13962C     UPDATED         --OCTOBER   1993.  DIFFERENT SYNTAX (SGI VERSION
13963C                                        BOMBS ON OLD SYNTAX)
13964C
13965C-----COMMON----------------------------------------------------------
13966C
13967      INCLUDE 'DPCOPA.INC'
13968      INCLUDE 'DPCODA.INC'
13969C
13970C-----START POINT-----------------------------------------------------
13971C
13972CCCCC DATA (DFILL(I),I=1,MAXPOP) /MAXPOP*0./
13973      DATA DFILL /MAXPOP*0./
13974C
13975      END
13976      BLOCK DATA INITD8
13977C
13978C     PURPOSE--THIS IS BLOCK DATA ROUTINE INITD22
13979C              THIS INITIALIZES THE REAL DATA ARRAYS (ONCE).  USE BLOCK
13980C              DATA FOR SPEED (DONE AT LOAD TIME, NOT AT RUN TIME)
13981C              THIS SUBROUTINE INITIALIZES DATA VARIABLES
13982C     WRITTEN BY--JAMES J. FILLIBEN
13983C                 STATISTICAL ENGINEERING DIVISION
13984C                 INFORMATION TECHNOLOGY LABORATORY
13985C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
13986C                 GAITHERSBURG, MD 20899-8980
13987C                 PHONE--301-975-2855
13988C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
13989C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
13990C     LANGUAGE--ANSI FORTRAN (1977)
13991C     VERSION NUMBER--82/7
13992C     ORIGINAL VERSION--OCTOBER   1991.
13993C     UPDATED         --OCTOBER   1993.  DIFFERENT SYNTAX (SGI VERSION
13994C                                        BOMBS ON OLD SYNTAX)
13995C
13996C---------------------------------------------------------------------
13997C
13998C-----COMMON----------------------------------------------------------
13999C
14000      INCLUDE 'DPCOPA.INC'
14001      INCLUDE 'DPCODA.INC'
14002C
14003C-----START POINT-----------------------------------------------------
14004C
14005C
14006CCCCC DATA (X2PLOT(I),I=1,MAXPOP) /MAXPOP*0./
14007      DATA X2PLOT /MAXPOP*0./
14008C
14009      END
14010      BLOCK DATA INITD9
14011C
14012C     PURPOSE--THIS IS BLOCK DATA ROUTINE INITD22
14013C              THIS INITIALIZES THE REAL DATA ARRAYS (ONCE).  USE BLOCK
14014C              DATA FOR SPEED (DONE AT LOAD TIME, NOT AT RUN TIME)
14015C              THIS SUBROUTINE INITIALIZES DATA VARIABLES
14016C     WRITTEN BY--JAMES J. FILLIBEN
14017C                 STATISTICAL ENGINEERING DIVISION
14018C                 INFORMATION TECHNOLOGY LABORATORY
14019C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
14020C                 GAITHERSBURG, MD 20899-8980
14021C                 PHONE--301-975-2855
14022C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
14023C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
14024C     LANGUAGE--ANSI FORTRAN (1977)
14025C     VERSION NUMBER--82/7
14026C     ORIGINAL VERSION--OCTOBER   1991.
14027C     UPDATED         --OCTOBER   1993.  DIFFERENT SYNTAX (SGI VERSION
14028C                                        BOMBS ON OLD SYNTAX)
14029C
14030C---------------------------------------------------------------------
14031C
14032C-----COMMON----------------------------------------------------------
14033C
14034      INCLUDE 'DPCOPA.INC'
14035      INCLUDE 'DPCODA.INC'
14036C
14037C-----START POINT-----------------------------------------------------
14038C
14039C
14040CCCCC DATA (XPLOT(I),I=1,MAXPOP) /MAXPOP*0./
14041      DATA XPLOT /MAXPOP*0./
14042C
14043      END
14044      BLOCK DATA INITDZ
14045C
14046C     PURPOSE--THIS IS BLOCK DATA ROUTINE INITD22
14047C              THIS INITIALIZES THE REAL DATA ARRAYS (ONCE).  USE BLOCK
14048C              DATA FOR SPEED (DONE AT LOAD TIME, NOT AT RUN TIME)
14049C              THIS SUBROUTINE INITIALIZES DATA VARIABLES
14050C     WRITTEN BY--JAMES J. FILLIBEN
14051C                 STATISTICAL ENGINEERING DIVISION
14052C                 INFORMATION TECHNOLOGY LABORATORY
14053C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
14054C                 GAITHERSBURG, MD 20899-8980
14055C                 PHONE--301-975-2855
14056C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
14057C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
14058C     LANGUAGE--ANSI FORTRAN (1977)
14059C     VERSION NUMBER--82/7
14060C     ORIGINAL VERSION--OCTOBER   1991.
14061C     UPDATED         --OCTOBER   1993.  DIFFERENT SYNTAX (SGI VERSION
14062C                                        BOMBS ON OLD SYNTAX)
14063C
14064C---------------------------------------------------------------------
14065C
14066C-----COMMON----------------------------------------------------------
14067C
14068      INCLUDE 'DPCOPA.INC'
14069      INCLUDE 'DPCODA.INC'
14070C
14071C-----START POINT-----------------------------------------------------
14072C
14073C
14074CCCCC DATA (TAGPLO(I),I=1,MAXPOP) /MAXPOP*0./
14075      DATA TAGPLO /MAXPOP*0./
14076C
14077      END
14078      SUBROUTINE INITH2(IHNAME,IHNAM2,IUSE,IN,IVSTAR,IVSTOP,
14079     1IVALUE,VALUE,NUMNAM,MAXN,MAXCOL,IBUGIN)
14080C
14081C     PURPOSE--ENTER INFORMATION ABOUT THE
14082C              PRED (= PREDICTED VALUES) VECTOR AND
14083C              RES  (= RESIDUALS       ) VECTOR
14084C              INTO THE HOUEKEEPING TABLES.
14085C     WRITTEN BY--JAMES J. FILLIBEN
14086C                 STATISTICAL ENGINEERING DIVISION
14087C                 INFORMATION TECHNOLOGY LABORATORY
14088C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
14089C                 GAITHERSBURG, MD 20899-8980
14090C                 PHONE--301-975-2855
14091C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
14092C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
14093C     LANGUAGE--ANSI FORTRAN (1977)
14094C     VERSION NUMBER--82/7
14095C     ORIGINAL VERSION--NOVEMBER  1980.
14096C     UPDATED         --AUGUST    1981.
14097C     UPDATED         --MAY       1982.
14098C
14099C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
14100C
14101      CHARACTER*4 IHNAME
14102      CHARACTER*4 IHNAM2
14103      CHARACTER*4 IUSE
14104      CHARACTER*4 IBUGIN
14105C
14106C---------------------------------------------------------------------
14107C
14108      DIMENSION IHNAME(*)
14109      DIMENSION IHNAM2(*)
14110      DIMENSION IUSE(*)
14111      DIMENSION IN(*)
14112      DIMENSION IVSTAR(*)
14113      DIMENSION IVSTOP(*)
14114      DIMENSION IVALUE(*)
14115      DIMENSION VALUE(*)
14116C
14117C-----COMMON----------------------------------------------------------
14118C
14119      INCLUDE 'DPCOP2.INC'
14120C
14121C-----START POINT-----------------------------------------------------
14122C
14123      IF(IBUGIN.EQ.'OFF')GOTO90
14124      WRITE(ICOUT,999)
14125  999 FORMAT(1X)
14126      CALL DPWRST('XXX','BUG ')
14127      WRITE(ICOUT,51)
14128   51 FORMAT('***** AT THE BEGINNING OF INITH2--')
14129      CALL DPWRST('XXX','BUG ')
14130      WRITE(ICOUT,52)NUMNAM,MAXCOL,MAXN,CPUMAX
14131   52 FORMAT('NUMNAM,MAXCOL,MAXN,CPUMAX = ',3I8,E15.7)
14132      CALL DPWRST('XXX','BUG ')
14133   90 CONTINUE
14134C
14135      NUMNAM=NUMNAM+1
14136      IHNAME(NUMNAM)='PRED'
14137      IHNAM2(NUMNAM)='    '
14138      IUSE(NUMNAM)='V'
14139      IVALUE(NUMNAM)=MAXCOL+1
14140      VALUE(NUMNAM)=IVALUE(NUMNAM)
14141      IN(NUMNAM)=MAXN
14142      N=IN(NUMNAM)
14143      ICOLVJ=IVALUE(NUMNAM)
14144      IVSTAR(NUMNAM)=MAXN*(ICOLVJ-1)+1
14145      IVSTOP(NUMNAM)=MAXN*(ICOLVJ-1)+N
14146C
14147      NUMNAM=NUMNAM+1
14148      IHNAME(NUMNAM)='RES'
14149      IHNAM2(NUMNAM)='    '
14150      IUSE(NUMNAM)='V'
14151      IVALUE(NUMNAM)=MAXCOL+2
14152      VALUE(NUMNAM)=IVALUE(NUMNAM)
14153      IN(NUMNAM)=MAXN
14154      N=IN(NUMNAM)
14155      ICOLVJ=IVALUE(NUMNAM)
14156      IVSTAR(NUMNAM)=MAXN*(ICOLVJ-1)+1
14157      IVSTOP(NUMNAM)=MAXN*(ICOLVJ-1)+N
14158C
14159      NUMNAM=NUMNAM+1
14160      IHNAME(NUMNAM)='INFI'
14161      IHNAM2(NUMNAM)='NITY'
14162      IUSE(NUMNAM)='P'
14163      VALUE(NUMNAM)=CPUMAX
14164CCCCC ITEMP=2**(NUMBPW-2)
14165CCCCC ITEMP2=ITEMP-1
14166CCCCC IVALUE(NUMNAM)=ITEMP2+ITEMP
14167      IVALUE(NUMNAM)=999999
14168      IN(NUMNAM)=1
14169C
14170      NUMNAM=NUMNAM+1
14171      IHNAME(NUMNAM)='PI  '
14172      IHNAM2(NUMNAM)='    '
14173      IUSE(NUMNAM)='P'
14174      VALUE(NUMNAM)=3.1415926535898
14175      IVALUE(NUMNAM)=INT(VALUE(NUMNAM))
14176      IN(NUMNAM)=1
14177C
14178      NUMNAM=NUMNAM+1
14179      IHNAME(NUMNAM)='YPLO'
14180      IHNAM2(NUMNAM)='T   '
14181      IUSE(NUMNAM)='V'
14182      IVALUE(NUMNAM)=MAXCOL+3
14183      VALUE(NUMNAM)=INT(IVALUE(NUMNAM))
14184      IN(NUMNAM)=MAXN
14185      N=IN(NUMNAM)
14186      ICOLVJ=IVALUE(NUMNAM)
14187      IVSTAR(NUMNAM)=MAXN*(ICOLVJ-1)+1
14188      IVSTOP(NUMNAM)=MAXN*(ICOLVJ-1)+N
14189C
14190      NUMNAM=NUMNAM+1
14191      IHNAME(NUMNAM)='XPLO'
14192      IHNAM2(NUMNAM)='T   '
14193      IUSE(NUMNAM)='V'
14194      IVALUE(NUMNAM)=MAXCOL+4
14195      VALUE(NUMNAM)=IVALUE(NUMNAM)
14196      IN(NUMNAM)=MAXN
14197      N=IN(NUMNAM)
14198      ICOLVJ=IVALUE(NUMNAM)
14199      IVSTAR(NUMNAM)=MAXN*(ICOLVJ-1)+1
14200      IVSTOP(NUMNAM)=MAXN*(ICOLVJ-1)+N
14201C
14202      NUMNAM=NUMNAM+1
14203      IHNAME(NUMNAM)='X2PL'
14204      IHNAM2(NUMNAM)='OT  '
14205      IUSE(NUMNAM)='V'
14206      IVALUE(NUMNAM)=MAXCOL+5
14207      VALUE(NUMNAM)=IVALUE(NUMNAM)
14208      IN(NUMNAM)=MAXN
14209      N=IN(NUMNAM)
14210      ICOLVJ=IVALUE(NUMNAM)
14211      IVSTAR(NUMNAM)=MAXN*(ICOLVJ-1)+1
14212      IVSTOP(NUMNAM)=MAXN*(ICOLVJ-1)+N
14213C
14214      NUMNAM=NUMNAM+1
14215      IHNAME(NUMNAM)='TAGP'
14216      IHNAM2(NUMNAM)='LOT '
14217      IUSE(NUMNAM)='V'
14218      IVALUE(NUMNAM)=MAXCOL+6
14219      VALUE(NUMNAM)=IVALUE(NUMNAM)
14220      IN(NUMNAM)=MAXN
14221      N=IN(NUMNAM)
14222      ICOLVJ=IVALUE(NUMNAM)
14223      IVSTAR(NUMNAM)=MAXN*(ICOLVJ-1)+1
14224      IVSTOP(NUMNAM)=MAXN*(ICOLVJ-1)+N
14225C
14226C               *****************
14227C               **  STEP 90--  **
14228C               **  EXIT       **
14229C               *****************
14230      IF(IBUGIN.EQ.'OFF')GOTO9090
14231      WRITE(ICOUT,999)
14232      CALL DPWRST('XXX','BUG ')
14233      WRITE(ICOUT,9011)
14234 9011 FORMAT('***** AT THE END       OF INITH2--')
14235      CALL DPWRST('XXX','BUG ')
14236      WRITE(ICOUT,9012)NUMNAM,MAXCOL,MAXN,CPUMAX
14237 9012 FORMAT('NUMNAM,MAXCOL,MAXN,CPUMAX = ',3I8,E15.7)
14238      CALL DPWRST('XXX','BUG ')
14239 9090 CONTINUE
14240C
14241      RETURN
14242      END
14243      SUBROUTINE INITL (P, X, N0, N, MU, SIGMA,
14244     1                  FUNC, DEVIAT, IFAULT)
14245C
14246C       ALGORITHM AS 95.1 APPL. STATIST. (1976) VOL.25, NO.1
14247C
14248C       COMPUTES ROUGH LEAST SQUARES ESTIMATES OF MU AND SIGMA
14249C       ( FOR DEFINITION OF MU AND SIGMA SEE SUBROUTINE CURVE ).
14250C
14251C       THIS IS JUST USED TO FIND STARTING VALUES FOR "CURVE"
14252C       ROUTINE (WHICH IS USED TO ESTIMATE LOCATION/SCALE FOR
14253C       GROUPED DATA WHEN THE DISTRIBUTION HAS NO SHAPE
14254C       PARAMETERS).
14255C
14256      INTEGER P
14257      REAL MU, ONE, ZERO
14258      DIMENSION X(P), N(P)
14259C
14260      EXTERNAL FUNC
14261      EXTERNAL DEVIAT
14262C
14263      DATA ONE/1.0/
14264      DATA ZERO/0.0/
14265C
14266C       ERROR EXIT IF P TOO SMALL
14267C
14268      IF (P.LT.2) THEN
14269         IFAULT = 1
14270         GOTO9000
14271      ENDIF
14272      IFAULT = 0
14273C
14274C       COMPUTE AND FLOAT SUM OF FREQUENCIES
14275C
14276      NSUM = N0
14277      DO 10 I = 1, P
14278        NSUM = NSUM + N(I)
14279 10   CONTINUE
14280      XNSUM = FLOAT(NSUM)
14281C
14282C       ZERO ACCUMULATORS
14283C
14284      NPAR = N0
14285      XBAR = ZERO
14286      YBAR = ZERO
14287      SXX = ZERO
14288      SXY = ZERO
14289      SW = ZERO
14290C
14291C       COMPUTE WEIGHTED MEANS XAR, YBAR, AND CORRECTED SUMS
14292C       OF X*X AND X*Y.
14293C
14294      DO 30 I = 1, P
14295C
14296C       NULL FREQUENCIES AT EITHER END OF THE RANGE ARE
14297C       ZERO WEIGHTED
14298C
14299        IF (NPAR.EQ.0 .OR. NPAR.EQ.NSUM) GO TO 20
14300        PROB = REAL(NPAR)/XNSUM
14301        Y = DEVIAT(PROB)
14302        CALL FUNC (Y, DUMMY, DFY)
14303        DX = X(I) - XBAR
14304        DY = Y - YBAR
14305        W = DFY*DFY/(PROB*(ONE - PROB))
14306        SW = SW + W
14307        FAC = W/SW
14308        XBAR = XBAR + FAC*DX
14309        YBAR = YBAR + FAC*DY
14310        FAC = W*DX*(ONE - FAC)
14311        SXX = SXX + FAC*DX
14312        SXY = SXY + FAC*DY
14313 20     NPAR = NPAR + N(I)
14314 30   CONTINUE
14315      SIGMA = SXX/SXY
14316      MU = XBAR - SIGMA*YBAR
14317C
14318 9000 CONTINUE
14319      RETURN
14320      END
14321      SUBROUTINE INITOD(IBUGIN)
14322C
14323C     PURPOSE--THIS IS SUBROUTING INITOD.
14324C              (THE   OD    AT THE END OF    INITOD   STANDS FOR   OUTPUT
14325C              THIS SUBROUTINE INITIALIZES OUTPUT DEVICE VARIABLES AND PARAMETER
14326C     WRITTEN BY--JAMES J. FILLIBEN
14327C                 STATISTICAL ENGINEERING DIVISION
14328C                 INFORMATION TECHNOLOGY LABORATORY
14329C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
14330C                 GAITHERSBURG, MD 20899-8980
14331C                 PHONE--301-975-2855
14332C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
14333C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
14334C     LANGUAGE--ANSI FORTRAN (1977)
14335C     VERSION NUMBER--82.6
14336C     ORIGINAL VERSION--SEPTEMBER 1980.
14337C     UPDATED         --AUGUST    1981.
14338C     UPDATED         --MARCH     1982.
14339C     UPDATED         --MAY       1982.
14340C     UPDATED         --FEBRUARY  1989.  SOFT-CODE SETTINGS (ALAN)
14341C     UPDATED         --FEBRUARY  1989.  DEVICE ... OFFSET (ALAN)
14342C     UPDATED         --FEBRUARY  1989.  DEVICE-DEPENDENT COMMON (ALAN)
14343C     UPDATED         --MARCH     1990.  X11 DEVICE COMMON
14344C     UPDATED         --MAY       1990.  DEVICE DEPENDENT COMMON UPDATES
14345C     UPDATED         --NOVEMBER  1990.  POSTSCRIPT MARGINS (ALAN)
14346C     UPDATED         --JANUARY   1991.  DEFINE REGIS COLOR TABLES (ALAN)
14347C     UPDATED         --MAY       1991.  TURBO-C SETTINGS (JJF)
14348C     UPDATED         --MAY       1991.  COSMETIC BLOCKING (JJF)
14349C     UPDATED         --OCTOBER   1991.  ADDED POSTSCRIPT SPACE (ALAN)
14350C     UPDATED         --MAY       1992.  POSTCRIPT INITIAL BLANK PAGE
14351C     UPDATED         --MAY       1992.  ADD IBM/TURBOC COMMENT LINES
14352C     UPDATED         --MAY       1992.  (RE)ADD ICOMLI AND NCOMLI
14353C     UPDATED         --MAY       1992.  IDCODE(.) TO AVOID UNDEF. IN PLOTG2
14354C     UPDATED         --JUNE      1992.ICOMLI/NCOMLI => PLOTFC/NPLOTF
14355C     UPDATED         --JULY      1992.TCPLFI & TCTEFI: OFF => CLOS
14356C     UPDATED         --SEPTEMBER 1993. DECLARE DUMMY ISUBRO
14357C     UPDATED         --JUNE      1994. HARDWARE FILL SWITCHES
14358C     UPDATED         --FEBRUARY  1996. MOVE CALL TCINCO BACK TO MAIN
14359C     UPDATED         --JULY      1996. LAHEY DEVICE DRIVER
14360C     UPDATED         --JULY      1996. DEVICE ... FONT
14361C     UPDATED         --NOVEMBER  1996. MICROSOFT QWIN DEVICE DRIVER
14362C     UPDATED         --APRIL     1997. CHANGE IX11PM DEFAULT
14363C     UPDATED         --APRIL     1997. ADD DPCOPM
14364C     UPDATED         --OCTOBER   1997. IX11W2
14365C     UPDATED         --DECEMBER  1997. IGENFA
14366C     UPDATED         --FEBRUARY  1998. IPRNTR
14367C     UPDATED         --MARCH     2002. SVG DEVICE
14368C     UPDATED         --SEPTEMBER 2007. AQUATERM VALUES
14369C     UPDATED         --MARCH     2008. GD VALUES
14370C     UPDATED         --APRIL     2009. UNIX LIBPLOT VALUES
14371C     UPDATED         --JANUARY   2014. CAIRO VALUES
14372C     UPDATED         --JULY      2015. ISVGBU
14373C     UPDATED         --OCTOBER   2015. IQWNFL
14374C     UPDATED         --DECEMBER  2015. ICNTD2, ICNTD3
14375C     UPDATED         --DECEMBER  2018. PDSCAL
14376C
14377C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
14378C
14379      CHARACTER*4 IBUGIN
14380C
14381CCCCC THE FOLLOWING LINE WAS ADDED    SEPTEMBER 1993
14382      CHARACTER*4 ISUBRO
14383C
14384C-----COMMON----------------------------------------------------------
14385C
14386      INCLUDE 'DPCOPA.INC'
14387      INCLUDE 'DPCOSU.INC'
14388      INCLUDE 'DPCOPC.INC'
14389      INCLUDE 'DPCODV.INC'
14390      INCLUDE 'DPCOST.INC'
14391CCCCC THE FOLLOWING INCLUDE STATEMENT WAS INSERTED FEBRUARY 1989
14392      INCLUDE 'DPCOGR.INC'
14393CCCCC THE FOLLOWING INCLUDE STATEMENT WAS INSERTED APRIL 1997
14394      INCLUDE 'DPCOPM.INC'
14395C
14396      COMMON/QUICKW5/IQWNFL
14397C
14398C-----COMMON VARIABLES (GENERAL)--------------------------------------
14399C
14400      INCLUDE 'DPCOP2.INC'
14401C
14402C-----START POINT-----------------------------------------------------
14403C
14404CCCCC THE FOLLOWING LINE WAS ADDED    SEPTEMBER 1993
14405CCCCC TO ALLOW AN ARGUMENT MATCH      SEPTEMBER 1993
14406CCCCC IN THE CALL TO TCINCO(ISUBRO)   SEPTEMBER 1993
14407      ISUBRO='DUMM'
14408C
14409      IF(IBUGIN.EQ.'ON')THEN
14410        WRITE(ICOUT,999)
14411  999   FORMAT(1X)
14412        CALL DPWRST('XXX','BUG ')
14413        WRITE(ICOUT,51)
14414   51   FORMAT('***** AT THE BEGINNING OF INITOD--')
14415        CALL DPWRST('XXX','BUG ')
14416      ENDIF
14417C
14418C               ****************************************
14419C               **  TREAT THE NUMBER OF DEVICES CASE  **
14420C               ****************************************
14421C
14422CCCCC THE FOLLOWING SINGLE LINE FIX WAS INSERTED FEBRUARY 1989
14423CCCCC MAXDEV=10
14424      MAXDEV=MAXDV
14425      NUMDEV=1
14426C
14427C               **********************************************
14428C               **  TREAT THE DEVICE ... MANUFACTURER CASE  **
14429C               **********************************************
14430C
14431      IDEFMA='TEKT'
14432      IDEFMO='4014'
14433      IDEFM2='    '
14434      IDEFM3='    '
14435C
14436      DO1110I=1,MAXDEV
14437        IDMANU(I)='    '
14438        IDMODE(I)='    '
14439        IDMOD2(I)='    '
14440        IDMOD3(I)='    '
14441 1110 CONTINUE
14442C
14443      IDMANU(1)=IDEFMA
14444      IDMODE(1)=IDEFMO
14445      IDMOD2(1)=IDEFM2
14446      IDMOD3(1)=IDEFM3
14447C
14448C               **************************************
14449C               **  TREAT THE DEVICE ... POWER CASE **
14450C               **************************************
14451C
14452      IDEFPO='ON'
14453C
14454      DO1210I=1,MAXDEV
14455        IDPOWE(I)='OFF'
14456 1210 CONTINUE
14457C
14458      IDPOWE(1)=IDEFPO
14459C
14460C     2015/12: INITIALIZE DEVICE COUNTERS
14461C
14462      ICNTD2=0
14463      ICNTD3=0
14464C
14465C               ********************************************
14466C               **  TREAT THE DEVICE ... CONTINUOUS CASE  **
14467C               ********************************************
14468C
14469      IDEFCN='ON'
14470C
14471      DO1310I=1,MAXDEV
14472        IDCONT(I)='ON'
14473 1310 CONTINUE
14474C
14475      IDCONT(1)=IDEFCN
14476C
14477C               ********************************************
14478C               **  TREAT THE DEVICE ... COLOR      CASE  **
14479C               ********************************************
14480C
14481      IDEFDC='OFF'
14482C
14483      DO1410I=1,MAXDEV
14484        IDCOLO(I)='OFF'
14485 1410 CONTINUE
14486C
14487      IDCOLO(1)=IDEFDC
14488C
14489C               *************************************************
14490C               **  TREAT THE DEVICE ... PICTURE POINTS CASE   **
14491C               *************************************************
14492C
14493      IDEFVP=3124
14494      IDEFHP=4096
14495CCCCC IDEFVP=781
14496CCCCC IDEFHP=1024
14497C
14498      DO1510I=1,MAXDEV
14499        IDNVPP(I)=(-999)
14500        IDNHPP(I)=(-999)
14501 1510 CONTINUE
14502C
14503      IDNVPP(1)=IDEFVP
14504      IDNHPP(1)=IDEFHP
14505C
14506C               ********************************************
14507C               **  TREAT THE DEVICE ... UNIT NUMBER CASE **
14508C               ********************************************
14509C
14510CCCCC IDEFUN=6
14511CCCCC THE FOLLOWING SINGLE LINE FIX WAS INSERTED FEBRUARY 1989
14512CCCCC IDEFUN=IPR
14513      IDEFUN=IPRGR
14514C
14515      DO1610I=1,MAXDEV
14516        IDUNIT(I)=IDEFUN
14517CCCCC THE FOLLOWING LINE WAS ADDED TO AVOID PLOTG2 UNDEFINED ERROR MAY 1992
14518CCCCC THE FOLLOWING LINE WAS CHANGED FROM CHAR TO INT   OCTOBER 1992
14519CCCCC IDCODE(I)='JUNK'
14520      IDCODE(I)=0
14521 1610 CONTINUE
14522C
14523C               **************************************************************
14524C               **  TREAT THE DEVICE ... OFFSET      CASE    FEBRUARY 1989  **
14525C               **************************************************************
14526C
14527CCCCC IDEFUN=6
14528      IDEFOV=0
14529      IDEFOH=0
14530C
14531      DO1620I=1,MAXDEV
14532        IDNVOF(I)=IDEFOV
14533        IDNHOF(I)=IDEFOH
14534 1620 CONTINUE
14535C
14536C               ********************************************
14537C               **  TREAT THE DEVICE ... BAUD RATE CASE   **
14538C               ********************************************
14539C
14540      IDEFBA=1200
14541C
14542      DO1710I=1,MAXDEV
14543      IDBAUD(I)=IDEFBA
14544 1710 CONTINUE
14545CCCCC ADD FOLLOWING SECTION JULY 1996.
14546C
14547C               ********************************************
14548C               **  TREAT THE DEVICE ... FONT       CASE  **
14549C               ********************************************
14550C
14551      IDEFFN='OFF'
14552C
14553      DO1810I=1,MAXDEV
14554        IDFONT(I)=IDEFFN
14555        PDSCAL(I)=1.0
14556 1810 CONTINUE
14557C
14558C               ********************************************
14559C               **  TREAT THE HARDCOPY             CASE   **
14560C               ********************************************
14561C
14562      ICOPSW='OFF'
14563      NUMCOP=1
14564C
14565C               ********************************************
14566C               **  TREAT THE SET PRINTER          CASE   **
14567C               ********************************************
14568C
14569      IPRNTR=' '
14570      NCPRNT=0
14571C
14572C               *********************************************
14573C               **  TREAT THE FILE CASE                    **
14574C               **  (FILE, CALCOMP, VERSATEC, ZETA, ETC.)  **
14575C               *********************************************
14576C
14577C               *******************************
14578C               **  TREAT THE METAFILE CASE  **
14579C               *******************************
14580C
14581C               **************************************************************
14582C               **  TREAT THE DEVICE-DEPENDENT COMMON CASE    FEBRUARY 1989 **
14583C               **************************************************************
14584C
14585C----------CALCOMP----------
14586C
14587      ICALSW='OFF'
14588      ICALCL=4
14589      ICALCC=-999
14590      PCALTH=0.05
14591C  FOLLOWING LINES ADDED FOR CALCOMP MAY, 1990.
14592      ICALPF='OFF'
14593      ICALPM(1)='BLAC'
14594      ICALPM(2)='RED'
14595      ICALPM(3)='BLUE'
14596      ICALPM(4)='GREE'
14597      ICALPM(5)='BLAC'
14598      ICALPM(6)='RED'
14599      ICALPM(7)='BLUE'
14600      ICALPM(8)='GREE'
14601      ICALPM(9)='BLAC'
14602      ICALPM(10)='RED'
14603      ICALPM(11)='BLUE'
14604      ICALPM(12)='GREE'
14605      ICALPM(13)='BLAC'
14606      ICALPM(14)='RED'
14607      ICALPM(15)='BLUE'
14608      ICALPM(16)='GREE'
14609C
14610CCCCC ADD LAHEY DEVICE INITIALIZATION JULY 1996.
14611C----------CALCOMP----------
14612C
14613      ILAHSW='OFF'
14614      ILAHPA='OFF'
14615      ILAHGR='DIRE'
14616      ILAHCL='OFF'
14617      ILAHSW='OFF'
14618      ILAHNC=8
14619      ILAHCC=-999
14620      PLAHTH=0.05
14621C  FOLLOWING LINES ADDED FOR LAHCOMP MAY, 1990.
14622      ILAHPF='OFF'
14623      ILAHPM(1)='BLAC'
14624      ILAHPM(2)='RED'
14625      ILAHPM(3)='BLUE'
14626      ILAHPM(4)='GREE'
14627      ILAHPM(5)='BLAC'
14628      ILAHPM(6)='RED'
14629      ILAHPM(7)='BLUE'
14630      ILAHPM(8)='GREE'
14631      ILAHPM(9)='BLAC'
14632      ILAHPM(10)='RED'
14633      ILAHPM(11)='BLUE'
14634      ILAHPM(12)='GREE'
14635      ILAHPM(13)='BLAC'
14636      ILAHPM(14)='RED'
14637      ILAHPM(15)='BLUE'
14638      ILAHPM(16)='GREE'
14639C
14640CCCCC ADD MICROSOFT QWIN DEVICE INITIALIZATION NOVEMBER 1996.
14641C----------QUICK-WIN----------
14642C
14643      IQWNF2=15
14644      IQWNBC=0
14645      IQWNFC='TEXT'
14646CCCCC MARCH 2002: SET COLOR MODE IN MSFORT.F (ALLOW TO BE SET
14647CCCCC VIA COMMAND LINE ARGUMENT
14648CCCCC IQWNCL='VGA'
14649      IQWNFZ='COURIER'
14650      IQWNPF='OFF'
14651      IQWNPM(1)='BLAC'
14652      IQWNPM(2)='RED'
14653      IQWNPM(3)='BLUE'
14654      IQWNPM(4)='GREE'
14655      IQWNPM(5)='BLAC'
14656      IQWNPM(6)='RED'
14657      IQWNPM(7)='BLUE'
14658      IQWNPM(8)='GREE'
14659      IQWNPM(9)='BLAC'
14660      IQWNPM(10)='RED'
14661      IQWNPM(11)='BLUE'
14662      IQWNPM(12)='GREE'
14663      IQWNPM(13)='BLAC'
14664      IQWNPM(14)='RED'
14665      IQWNPM(15)='BLUE'
14666      IQWNPM(16)='GREE'
14667C
14668      IQWNFL=0
14669C
14670CCCCC ADD LAHEY WINTERACTOR DEVICE INITIALIZATION NOVEMBER 1996.
14671C----------QUICK-WIN----------
14672C
14673      IWINFN='FIXE'
14674      IWINCL='RGB'
14675      IWINHP=600
14676      IWINVP=450
14677C
14678C----------ZETA----------
14679C
14680      IZETSW='OFF'
14681      IZETCL=4
14682      IZETCC=-999
14683      PZETTH=0.05
14684C  FOLLOWING LINES ADDED FOR ZETA MAY, 1990.
14685      IZETPF='OFF'
14686      IZETPM(1)='BLAC'
14687      IZETPM(2)='RED'
14688      IZETPM(3)='BLUE'
14689      IZETPM(4)='GREE'
14690      IZETPM(5)='BLAC'
14691      IZETPM(6)='RED'
14692      IZETPM(7)='BLUE'
14693      IZETPM(8)='GREE'
14694      IZETPM(9)='BLAC'
14695      IZETPM(10)='RED'
14696      IZETPM(11)='BLUE'
14697      IZETPM(12)='GREE'
14698      IZETPM(13)='BLAC'
14699      IZETPM(14)='RED'
14700      IZETPM(15)='BLUE'
14701      IZETPM(16)='GREE'
14702C
14703C----------HP PCL----------
14704C
14705      IPCLLM=60
14706      IPCLRM=60
14707      IPCLTM=50
14708      IPCLBM=100
14709      IPC2LM=50
14710      IPC2RM=100
14711      IPC2TM=60
14712      IPC2BM=60
14713      PCLPPI=300.
14714      IPCLFN='COUR'
14715      IPCLFC='COUR'
14716C
14717C----------QUIC----------
14718C
14719      IQUILM=85
14720      IQUIRM=25
14721      IQUITM=100
14722      IQUIBM=25
14723      IQU2LM=70
14724      IQU2RM=25
14725      IQU2TM=60
14726      IQU2BM=25
14727      QUIPPI=300.
14728      IQUIFN=10
14729      IQUIFC=10
14730C
14731C----------POSTSCRIPT----------
14732C
14733      PSTPPI=300.
14734C  NOVEMBER, 1990.  MARGIN DEFAULTS CHANGED (PREVIOUSLY HARDCODED TO 75, SET
14735C  TO 1/4 INCH PLUS A SMALL FUDGE FACTOR).
14736      IDEFMG=INT(PSTPPI/4.0)+10
14737      IPSTLM=IDEFMG
14738      IPSTRM=IDEFMG
14739      IPSTTM=IDEFMG
14740      IPSTBM=IDEFMG
14741      IPS2LM=IDEFMG
14742      IPS2RM=IDEFMG
14743      IPS2TM=IDEFMG
14744      IPS2BM=IDEFMG
14745CCCCC IPSTFN='TROM'
14746CCCCC IPSTFC='TROM'
14747CCCCC ABOVE TWO LINES FIXED JULY 1989
14748      IPSTFN='HELB'
14749      IPSTFC='HELB'
14750      IPSTPS=12
14751      IPSTPC=12
14752CCCCC JUNE 1994.  FOLLOWING LINE ADDED.
14753      IPSTFS='ON'
14754C  FOLLOWING LINES ADDED OCTOBER 1991
14755C  MAKE POSTSCRIPT FONTS TABLE DRIVEN FOR EASIER UPDATING
14756      IPSTSP='OFF'
14757      IPSTMF=34
14758      IPSTT1( 1)='TROM'
14759      IPSTT2( 1)='Times-Roman'
14760      IPSTT1( 2)='TITA'
14761      IPSTT2( 2)='Times-Italic'
14762      IPSTT1( 3)='TBOL'
14763      IPSTT2( 3)='Times-Bold'
14764      IPSTT1( 4)='TBIT'
14765      IPSTT2( 4)='Times-BoldItalic'
14766      IPSTT1( 5)='HELV'
14767      IPSTT2( 5)='Helvetica'
14768      IPSTT1( 6)='HELO'
14769      IPSTT2( 6)='Helvetica-Oblique'
14770      IPSTT1( 7)='HELB'
14771      IPSTT2( 7)='Helvetica-Bold'
14772      IPSTT1( 8)='HEBO'
14773      IPSTT2( 8)='Helvetica-BoldOblique'
14774      IPSTT1( 9)='COUR'
14775      IPSTT2( 9)='Courier'
14776      IPSTT1(10)='COBL'
14777      IPSTT2(10)='Courier-Oblique'
14778      IPSTT1(11)='CBOL'
14779      IPSTT2(11)='Courier-Bold'
14780      IPSTT1(12)='CBOB'
14781      IPSTT2(12)='Courier-BoldOblique'
14782      IPSTT1(13)='AGBK'
14783      IPSTT2(13)='AvantGarde-Book'
14784      IPSTT1(14)='AGBO'
14785      IPSTT2(14)='AvantGarde-BookOblique'
14786      IPSTT1(15)='AGDE'
14787      IPSTT2(15)='AvantGarde-Demi'
14788      IPSTT1(16)='AGDO'
14789      IPSTT2(16)='AvantGarde-DemiOblique'
14790      IPSTT1(17)='BKDE'
14791      IPSTT2(17)='Bookman-Demi'
14792      IPSTT1(18)='BKDI'
14793      IPSTT2(18)='Bookman-DemiItalic'
14794      IPSTT1(19)='BKLT'
14795      IPSTT2(19)='Bookman-Light'
14796      IPSTT1(20)='BKLI'
14797      IPSTT2(20)='Bookman-LightItalic'
14798      IPSTT1(21)='HELN'
14799      IPSTT2(21)='Helvetica-Narrow'
14800      IPSTT1(22)='HENB'
14801      IPSTT2(22)='Helvetica-Narrow-Bold'
14802      IPSTT1(23)='HNBO'
14803      IPSTT2(23)='Helvetica-Narrow-BoldOblique'
14804      IPSTT1(24)='HENO'
14805      IPSTT2(24)='Helvetica-Narrow-Oblique'
14806      IPSTT1(25)='NCSR'
14807      IPSTT2(25)='NewCenturySchlbk-Roman'
14808      IPSTT1(26)='NCSB'
14809      IPSTT2(26)='NewCenturySchlbk-Bold'
14810      IPSTT1(27)='NCSI'
14811      IPSTT2(27)='NewCenturySchlbk-Italic'
14812      IPSTT1(28)='CSBI'
14813      IPSTT2(28)='NewCenturySchlbk-BoldItalic'
14814      IPSTT1(29)='PALR'
14815      IPSTT2(29)='Palatino-Roman'
14816      IPSTT1(30)='PALB'
14817      IPSTT2(30)='Palatino-Bold'
14818      IPSTT1(31)='PALI'
14819      IPSTT2(31)='Palatino-Italic'
14820      IPSTT1(32)='PABI'
14821      IPSTT2(32)='Palatino-BoldItalic'
14822      IPSTT1(33)='ZAPF'
14823      IPSTT2(33)='ZapfChancery-MediumItalic'
14824      IPSTT1(34)='SYMB'
14825      IPSTT2(34)='Symbol'
14826      DO910I=IPSTMF+1,100
14827      IPSTT1(I)=' '
14828      IPSTT2(I)=' '
14829 910  CONTINUE
14830C  END OF CHANGE
14831CCCCC THE FOLLOWING LINE WAS ADDED MAY 1992 (JJF)
14832CCCCC SEE ALSO DPCODV.INC          MAY 1992
14833      IPSTBP='OFF'
14834C
14835C----------SUN----------
14836C
14837CCCCC IVSNAM=0
14838      ISUNCL=0
14839      PSUNTH=0.1
14840C
14841C----------CGM----------
14842C
14843      ICGMSW='OFF'
14844C
14845C----------GENERAL----------
14846C
14847      IGENFA=1
14848C
14849C
14850C----------DEC REGIS----------
14851C
14852      PREGTH=0.1
14853CCCCC ABOVE COLOR DEFINITIONS FOR REGIS ADDED JANUARY, 1991.
14854      IRGHUE(1)= 260
14855      IRGHUE(2)= 280
14856      IRGHUE(3)=   0
14857      IRGHUE(4)=   0
14858      IRGHUE(5)= 300
14859      IRGHUE(6)=   0
14860      IRGHUE(7)=  40
14861      IRGHUE(8)= 300
14862      IRGHUE(9)=   0
14863      IRGHUE(10)=  0
14864      IRGHUE(11)= 30
14865      IRGHUE(12)=  0
14866      IRGHUE(13)=  0
14867      IRGHUE(14)=320
14868      IRGHUE(15)=330
14869      IRGHUE(16)=320
14870      IRGHUE(17)=150
14871      IRGHUE(18)=300
14872      IRGHUE(19)=120
14873      IRGHUE(20)=160
14874      IRGHUE(21)=180
14875      IRGHUE(22)=180
14876      IRGHUE(23)=240
14877      IRGHUE(24)=240
14878      IRGHUE(25)=180
14879      IRGHUE(26)=240
14880      IRGHUE(27)=240
14881      IRGHUE(28)=200
14882      IRGHUE(29)=240
14883      IRGHUE(30)=210
14884      IRGHUE(31)=240
14885      IRGHUE(32)=280
14886      IRGHUE(33)=270
14887      IRGHUE(34)=200
14888      IRGHUE(35)=300
14889      IRGHUE(36)=  0
14890      IRGHUE(37)=  0
14891      IRGHUE(38)=180
14892      IRGHUE(39)= 60
14893      IRGHUE(40)= 80
14894      IRGHUE(41)=120
14895      IRGHUE(42)= 60
14896      IRGHUE(43)= 40
14897      IRGHUE(44)= 20
14898      IRGHUE(45)=120
14899      IRGHUE(46)= 60
14900      IRGHUE(47)=120
14901      IRGHUE(48)=120
14902      IRGHUE(49)=100
14903      IRGHUE(50)= 90
14904      IRGHUE(51)= 80
14905      IRGHUE(52)=120
14906      IRGHUE(53)=160
14907      IRGHUE(54)=140
14908      IRGHUE(55)= 60
14909      IRGHUE(56)=300
14910      IRGHUE(57)=340
14911      IRGHUE(58)=300
14912      IRGHUE(59)= 60
14913      IRGHUE(60)= 60
14914      IRGHUE(61)=180
14915      IRGHUE(62)=  0
14916      IRGHUE(63)=180
14917      IRGHUE(64)=220
14918      IRGLGT(1)=  65
14919      IRGLGT(2)=  50
14920      IRGLGT(3)=   0
14921      IRGLGT(4)=  50
14922      IRGLGT(5)=  50
14923      IRGLGT(6)=  35
14924      IRGLGT(7)=  35
14925      IRGLGT(8)=  80
14926      IRGLGT(9)=  65
14927      IRGLGT(10)= 50
14928      IRGLGT(11)= 50
14929      IRGLGT(12)= 25
14930      IRGLGT(13)= 35
14931      IRGLGT(14)= 50
14932      IRGLGT(15)= 50
14933      IRGLGT(16)= 35
14934      IRGLGT(17)= 50
14935      IRGLGT(18)= 50
14936      IRGLGT(19)= 35
14937      IRGLGT(20)= 50
14938      IRGLGT(21)= 65
14939      IRGLGT(22)= 80
14940      IRGLGT(23)= 50
14941      IRGLGT(24)= 25
14942      IRGLGT(25)= 25
14943      IRGLGT(26)= 35
14944      IRGLGT(27)= 50
14945      IRGLGT(28)= 35
14946      IRGLGT(29)= 35
14947      IRGLGT(30)= 50
14948      IRGLGT(31)= 65
14949      IRGLGT(32)= 35
14950      IRGLGT(33)= 50
14951      IRGLGT(34)= 50
14952      IRGLGT(35)= 25
14953      IRGLGT(36)= 33
14954      IRGLGT(37)= 66
14955      IRGLGT(38)= 50
14956      IRGLGT(39)= 50
14957      IRGLGT(40)= 35
14958      IRGLGT(41)= 50
14959      IRGLGT(42)= 65
14960      IRGLGT(43)= 50
14961      IRGLGT(44)= 65
14962      IRGLGT(45)= 65
14963      IRGLGT(46)= 80
14964      IRGLGT(47)= 50
14965      IRGLGT(48)= 25
14966      IRGLGT(49)= 65
14967      IRGLGT(50)= 50
14968      IRGLGT(51)= 50
14969      IRGLGT(52)= 35
14970      IRGLGT(53)= 35
14971      IRGLGT(54)= 65
14972      IRGLGT(55)= 80
14973      IRGLGT(56)= 80
14974      IRGLGT(57)= 65
14975      IRGLGT(58)= 65
14976      IRGLGT(59)= 25
14977      IRGLGT(60)= 50
14978      IRGLGT(61)= 80
14979      IRGLGT(62)= 99
14980      IRGLGT(63)= 50
14981      IRGLGT(64)= 65
14982      IRGSAT(1)=  60
14983      IRGSAT(2)=  60
14984      IRGSAT(3)=   0
14985      IRGSAT(4)= 100
14986      IRGSAT(5)=  25
14987      IRGSAT(6)=  25
14988      IRGSAT(7)=  60
14989      IRGSAT(8)=  25
14990      IRGSAT(9)=  25
14991      IRGSAT(10)= 60
14992      IRGSAT(11)=100
14993      IRGSAT(12)= 25
14994      IRGSAT(13)= 60
14995      IRGSAT(14)= 60
14996      IRGSAT(15)=100
14997      IRGSAT(16)= 60
14998      IRGSAT(17)=100
14999      IRGSAT(18)=100
15000      IRGSAT(19)= 60
15001      IRGSAT(20)= 60
15002      IRGSAT(21)= 60
15003      IRGSAT(22)= 60
15004      IRGSAT(23)=100
15005      IRGSAT(24)= 25
15006      IRGSAT(25)= 25
15007      IRGSAT(26)= 60
15008      IRGSAT(27)= 60
15009      IRGSAT(28)= 60
15010      IRGSAT(29)= 25
15011      IRGSAT(30)=100
15012      IRGSAT(31)= 25
15013      IRGSAT(32)= 60
15014      IRGSAT(33)=100
15015      IRGSAT(34)= 60
15016      IRGSAT(35)= 25
15017      IRGSAT(36)=  0
15018      IRGSAT(37)=  0
15019      IRGSAT(38)= 25
15020      IRGSAT(39)=100
15021      IRGSAT(40)= 60
15022      IRGSAT(41)= 60
15023      IRGSAT(42)= 60
15024      IRGSAT(43)= 60
15025      IRGSAT(44)= 60
15026      IRGSAT(45)= 25
15027      IRGSAT(46)= 60
15028      IRGSAT(47)=100
15029      IRGSAT(48)= 25
15030      IRGSAT(49)= 60
15031      IRGSAT(50)=100
15032      IRGSAT(51)= 60
15033      IRGSAT(52)= 25
15034      IRGSAT(53)= 60
15035      IRGSAT(54)= 60
15036      IRGSAT(55)= 25
15037      IRGSAT(56)= 60
15038      IRGSAT(57)= 60
15039      IRGSAT(58)= 60
15040      IRGSAT(59)= 25
15041      IRGSAT(60)= 25
15042      IRGSAT(61)= 25
15043      IRGSAT(62)=  0
15044      IRGSAT(63)=100
15045      IRGSAT(64)= 60
15046C
15047C  VT-240 ALLOWS 4 ACTIVE COLOR MAPS.  RESERVE 0 FOR THE BACKGROUND COLOR
15048C  AND 1-3 FOR THE FOREGROUND COLORS.  I DON'T HAVE ANY VT-340 DOCUMENTATION
15049C  SO NOT SURE IF VT-340 ALLOWS MORE.  FOR NOW, SET MAXIMUM FOREGROUND COLORS
15050C  TO 3 (AND SET DEFAULT TO WHITE, YELLOW, AND RED (BACKGROUND IS BLUE).
15051C  NOTE: 340 ALLOWS 16 COLORS (BUT ONE RESERVED FOR BACKGROUND).
15052C
15053      IREGMC=3
15054      IREGPM(1)=62
15055      IREGPM(2)=63
15056      IREGPM(3)=47
15057      IREGPM(4)=3
15058      IREGPM(5)=23
15059      IREGPM(6)=18
15060      IREGPM(7)=4
15061      IREGPM(8)=41
15062      IREGPM(9)=59
15063      IREGPM(10)=39
15064      IREGPM(11)=64
15065      IREGPM(12)=54
15066      IREGPM(13)=20
15067      IREGPM(14)=51
15068      IREGPM(15)=37
15069      IREGPM(16)=35
15070C  END CHANGE
15071C
15072C----------HP 2622------------
15073C
15074      P262TH=0.1
15075C
15076C----------HP 7221------------
15077C
15078      P722TH=0.1
15079C
15080C----------HP-GL--------------
15081C
15082      PHPGTH=0.1
15083C ADDED FOLLOWING LINES FOR HP MAY, 1990.
15084      IHPGSW='OFF'
15085      IHPGPF='OFF'
15086      IHPGCL=4
15087      IHPGPM(1)='BLAC'
15088      IHPGPM(2)='RED'
15089      IHPGPM(3)='BLUE'
15090      IHPGPM(4)='GREE'
15091      IHPGPM(5)='BLAC'
15092      IHPGPM(6)='RED'
15093      IHPGPM(7)='BLUE'
15094      IHPGPM(8)='GREE'
15095      IHPGPM(9)='BLAC'
15096      IHPGPM(10)='RED'
15097      IHPGPM(11)='BLUE'
15098      IHPGPM(12)='GREE'
15099      IHPGPM(13)='BLAC'
15100      IHPGPM(14)='RED'
15101      IHPGPM(15)='BLUE'
15102      IHPGPM(16)='GREE'
15103C
15104C----------TEKTRONIX----------
15105C
15106      PTEKTH=0.1
15107C
15108C----------GENERAL------------
15109C
15110C  ADDED FOLLOWING LINES JANUARY, 1990 (PREVIOUSLY DONE IN MAIN)
15111CCCCC JANUARY 1995.  MODIFY DEFAULT FOR FRONTEND
15112CCCCC IJUSSW='OFF'
15113      IJUSSW='ON'
15114      IRFLSW='OFF'
15115      IFNTSW='OFF'
15116      IPTHSW='OFF'
15117      PPENSW=0.1
15118C
15119C----------X11 CASE-----------
15120C
15121C  ADDED FOLLOWING LINES MARCH, 1990 FOR X11
15122      IX11CS='BUTT'
15123      IX11JS='MITER'
15124CCCCC CHANGE DEFAULT.  APRIL 1997
15125CCCCC IX11PM='OFF'
15126      IX11PM='ON'
15127      IX11FN='8X13'
15128      IX11OF='OFF'
15129      IX11PA='OFF '
15130      IX11DN='DEFAULT'
15131CCCCC JUNE 1994.  FOLLOWING LINE ADDED.
15132      IX11FS='ON'
15133C
15134CCCCC ADD FOLLOWING SECTION.  APRIL 1997
15135      NUMPXM=0
15136      ICURPM=0
15137      IPXMFL='OFF'
15138      IPXMFB='pixmap.'
15139      IPXMNC=7
15140      DO1010I=1,MAXPM
15141      IPXMFN(I)=' '
15142      IPXMCM(I)=' '
15143 1010 CONTINUE
15144CCCCC ADD FOLLOWING SECTION.  OCTOBER 1997
15145      IX11W2=' '
15146C
15147C----------TURBO-C FOR IBM-PC-------------
15148C
15149CCCCC THE INITIALIZATION OF THE TURBO-C DRIVER FOR IBM-PC  MAY 1993
15150CCCCC WAS MOVED TO    TCINCO.FOR    WITHIN    TCDRIV.FOR   MAY 1993
15151CCCCC THE CALL TO TCINCO WAS MOVED BACK TO MAIN      FEBRUARY 1996
15152CCCCC CALL TCINCO(ISUBRO)
15153C
15154CCCCC ADD LAHEY WINTERACTOR DEVICE INITIALIZATION NOVEMBER 1996.
15155C
15156C----------SVG (SCALABLE VECTOR GRAPHICS)------
15157C
15158      ISVGOS='OFF'
15159      ISVGCS='PIXE'
15160      ISVGCA='BUTT'
15161      ISVGJS='MITE'
15162      ISVGFS='EVEN'
15163      ISVGSS='INTE'
15164      ISVGST='norm'
15165      ISVGFW='bold'
15166CCCCC ISVGFN='sans-serif'
15167      ISVGFN='Arial,sans-serif'
15168      ISVGSS='INTE'
15169      ISVGSN='dataplot.css'
15170      ISVGCN=0
15171      ISVGLN=0
15172      ISVGUR='NULL'
15173      ISVGBU='NONE'
15174C
15175C----------CAIRO LIBRARY----------------------
15176C
15177      ICAICA='BUTT'
15178      ICAIJS='MITE'
15179      ICAIFS='ON'
15180C
15181      ICAIFN='Sans'
15182      ICAISL='NORM'
15183      ICAIFW='BOLD'
15184      ICAIBP='OFF'
15185C
15186      CAIPPI=600.
15187C
15188C----------LATEX-------------------------------
15189C
15190      ILATOS='OFF'
15191      ILATCO='OFF'
15192      ILATFS='OFF'
15193      ILATLT='HARD'
15194C
15195C----------AQUATERM CASE-----------
15196C
15197C  ADDED FOLLOWING LINES SEPTEMBER, 2007 FOR AQUATERM
15198C
15199      IAQUCS='BUTT'
15200      IAQUJS='MITER'
15201      IAQUFN='Helvetica'
15202      IAQUOF='OFF'
15203      IAQUFS='ON'
15204C
15205C----------GD (JPEG/PNG/GIF) CASE-----------
15206C
15207C  ADDED FOLLOWING LINES MARCH, 2008 FOR GD
15208C
15209      IGDFN='Null'
15210      IGDCO='FIXE'
15211C
15212C----------LIBPLOT CASE-----------
15213C
15214C  ADDED FOLLOWING LINES APRIL, 2009 FOR UNIX LIBPLOT LIBRARY
15215C
15216      ILPLCS='BUTT'
15217      ILPLJS='MITER'
15218      ILPLFN='Helvetica'
15219      ILPLPA='OFF'
15220      ILPLFS='OFF'
15221      ILPLXS=570
15222      ILPLYS=570
15223      PLPLRO=0.0
15224C
15225C               *******************************
15226C               **  EXIT AND RETURN TO MAIN  **
15227C               *******************************
15228C
15229      IF(IBUGIN.EQ.'ON')THEN
15230        WRITE(ICOUT,999)
15231        CALL DPWRST('XXX','BUG ')
15232        WRITE(ICOUT,9011)
15233 9011   FORMAT('***** AT THE END       OF INITOD--')
15234        CALL DPWRST('XXX','BUG ')
15235        WRITE(ICOUT,9012)MAXDEV,NUMDEV
15236 9012   FORMAT('MAXDEV,NUMDEV = ',2I8)
15237        CALL DPWRST('XXX','BUG ')
15238        WRITE(ICOUT,9013)IDEFMA,IDEFMO,IDEFM2,IDEFM3
15239 9013   FORMAT('IDEFMA,IDEFMO,IDEFM2,IDEFM3 = ',3(A4,2X),A4)
15240        CALL DPWRST('XXX','BUG ')
15241        WRITE(ICOUT,9014)IDEFPO,IDEFCN,IDEFDC
15242 9014   FORMAT('IDEFPO,IDEFCN,IDEFDC = ',A4,2X,A4,2X,A4)
15243        CALL DPWRST('XXX','BUG ')
15244        WRITE(ICOUT,9015)IDEFVP,IDEFHP,IDEFUN
15245 9015   FORMAT('IDEFVP,IDEFHP,IDEFUN = ',3I8)
15246        CALL DPWRST('XXX','BUG ')
15247        WRITE(ICOUT,9016)ICOPSW,NUMCOP
15248 9016   FORMAT('ICOPSW,NUMCOP = ',A4,I8)
15249        CALL DPWRST('XXX','BUG ')
15250        WRITE(ICOUT,9017)IDMANU(1)
15251 9017   FORMAT('IDMANU(1) = ',A4)
15252        CALL DPWRST('XXX','BUG ')
15253      ENDIF
15254C
15255      RETURN
15256      END
15257      SUBROUTINE INITSU(IBUGIN)
15258C
15259C     PURPOSE--THIS IS SUBROUTING INITSU.
15260C              (THE   SU    AT THE END OF    INITSU   STANDS FOR   SUPPORT
15261C              THIS SUBROUTINE INITIALIZES SUPPORT VARIABLES AND PARAMETERS
15262C     WRITTEN BY--JAMES J. FILLIBEN
15263C                 STATISTICAL ENGINEERING DIVISION
15264C                 INFORMATION TECHNOLOGY LABORATORY
15265C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
15266C                 GAITHERSBURG, MD 20899-8980
15267C                 PHONE--301-975-2855
15268C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
15269C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
15270C     LANGUAGE--ANSI FORTRAN (1977)
15271C     VERSION NUMBER--82.6
15272C     ORIGINAL VERSION--NOVEMBER  1980.
15273C     UPDATED         --MARCH     1981.
15274C     UPDATED         --AUGUST    1981.
15275C     UPDATED         --MAY       1982.
15276C     UPDATED         --MAY       1990.  COMMENT CHARACTER
15277C     UPDATED         --AUGUST    1992.  VECTOR PLOT PARAMETERS
15278C     UPDATED         --OCTOBER   1992.  CHANGE ICOMFL TO ICOMSW
15279C     UPDATED         --NOVEMBER  1992.  ANDREWS PLOT PARAM. (ALAN)
15280C     UPDATED         --MAY       1993.  MINMAX FOR EV1/EV2/WEIB DIST.
15281C     UPDATED         --JULY      1993.  FRACTAL ITERATIONS, FRACTAL
15282C                                        TYPE, PRINCIPLE COMPONENT TYPE
15283C     UPDATED         --JANUARY   1994.  WEIB MINMAX TO DPCOS2.INC
15284C     UPDATED         --FEBRUARY  1994.  DEFAULT FOR FITSD
15285C     UPDATED         --JUNE      1994.  OPTIMIZATION TOLERANCE
15286C     UPDATED         --FEBRUARY  1995.  OPTIMIZATION METHOD
15287C     UPDATED         --JULY      1995.  FIT ADDITIVE CONSTANT
15288C     UPDATED         --APRIL     1997.  SET NETSCAPE <OLD/NEW>
15289C     UPDATED         --APRIL     1997.  SET CONTROL CHART <DATA/PRIOR>
15290C     UPDATED         --APRIL     1997.  SET CONTROL CHART WEIGHT <CENTER/RIGHT>
15291C     UPDATED         --AUGUST    1997.  3 SWITCHES FOR RECIPE
15292C     UPDATED         --APRIL     1998.  RECIPE FIT FACTORS
15293C     UPDATED         --MAY       1998.  KAPLAN-MEIER <RELI/CDF>
15294C     UPDATED         --MAY       1998.  CENSORING TYPE <1/2>
15295C     UPDATED         --JUNE      1998.  MATRIX SCALE <NONE/SD/RANGE/Z-SC>
15296C     UPDATED         --SEPTEMBER 1998.  PERCENT POINT PLOT BINNED/UNBINNED
15297C     UPDATED         --SEPTEMBER 1998.  QUANTILE-QUANTILE PLOT BINNED/UNBINNED
15298C     UPDATED         --MARCH     1999.  SET WEB HANDBOOK
15299C     UPDATED         --SEPTEMBER 1999.  SET SCATTER PLOT MATRIX OPTIONS
15300C     UPDATED         --NOVEMBER  1999.  SET PARAMETER EXPANSION OPTION
15301C     UPDATED         --JANUARY   2000.  SET SORT DIRECTION
15302C     UPDATED         --OCTOBER   2000.  SET MANDEL PAULE
15303C     UPDATED         --MARCH     2001.  SET SUPERSCRIPT HORI SCALE
15304C     UPDATED         --MARCH     2001.  SET SUPERSCRIPT VERT SCALE
15305C     UPDATED         --APRIL     2001.  SET ORTHOGONAL DISTANCE
15306C                                            TRUST REGION RADIUS
15307C     UPDATED         --APRIL     2001.  SET ORTHOGONAL DISTANCE
15308C                                            STOP TOLERANCE
15309C     UPDATED         --APRIL     2001.  SET ORTHOGONAL DISTANCE
15310C                                            PARAMETER TOLERANCE
15311C     UPDATED         --APRIL     2001.  SET ORTHOGONAL DISTANCE
15312C                                            PRINT OPTION
15313C     UPDATED         --JULY      2001.  SET KERNEL DENSITY OPTIONS
15314C     UPDATED         --MARCH     2002.  SET BOX PLOT WIDTH
15315C     UPDATED         --MAY       2002.  SET RANDOM NUMBER GENERATOR
15316C     UPDATED         --JUNE      2002.  SET NUMBER OF CP
15317C     UPDATED         --JUNE      2002.  ICAPTY
15318C     UPDATED         --JULY      2002.  SET COVARIANCE TYPE
15319C     UPDATED         --JULY      2002.  SET CORRELATION TYPE
15320C     UPDATED         --JULY      2002.  SET FILE TYPE QUOTE
15321C     UPDATED         --JULY      2002.  SET BOOTSTRAP FIT METHOD
15322C     UPDATED         --NOVEMBER  2002.  SET QWIN SYSTEM
15323C     UPDATED         --NOVEMBER  2002.  SET GHOSTVIEW PRINTER ON
15324C     UPDATED         --NOVEMBER  2002.  SET GHOSTVIEW PATH
15325C     UPDATED         --JANUARY   2003.  SET GHOSTSCRIPT PATH
15326C     UPDATED         --JANUARY   2003.  SET POSTSCRIPT BOUNDING BOX
15327C     UPDATED         --JANUARY   2003.  SET POSTSCRIPT CONVERT
15328C     UPDATED         --JANUARY   2003.  SET HTML HEADER FILE
15329C     UPDATED         --JANUARY   2003.  SET HTML FOOTER FILE
15330C     UPDATED         --FEBRUARY  2003.  SET MAXIMUM RECORD LENGTH
15331C     UPDATED         --FEBRUARY  2003.  SET AUTOCOREELATION LAG ZERO
15332C     UPDATED         --MARCH     2003.  SET PARALLEL COORDINATES
15333C                                        STANDARDIZE
15334C     UPDATED         --MARCH     2003.  SET BOOTSTRAP GROUPS
15335C     UPDATED         --SEPTEMBER 2003.  SET TABLE TITLE
15336C     UPDATED         --SEPTEMBER 2003.  SET TABLE BORDER
15337C     UPDATED         --SEPTEMBER 2003.  SET TABLE SPACING
15338C     UPDATED         --SEPTEMBER 2003.  SET TABLE WIDTH
15339C     UPDATED         --SEPTEMBER 2003.  SET TABLE HEIGHT
15340C     UPDATED         --JANUARY   2004.  SET READ VARIABLE LABEL
15341C     UPDATED         --JANUARY   2004.  SET CONVERT CHARACTER
15342C     UPDATED         --JANUARY   2004.  SET READ DELIMITER
15343C     UPDATED         --JANUARY   2004.  SET READ MISSING VALUE
15344C     UPDATED         --JUNE      2004.  SET DEFAULT POSTSCRIPT COLOR
15345C     UPDATED         --JUNE      2004.  SET ASYMMETRIC LAPLACE
15346C                                        DEFINITION
15347C     UPDATED         --JULY      2004.  SET GOMPERTZ-MAKEHAM
15348C                                        DEFINITION
15349C     UPDATED         --AUGUST    2004.  GIVE MINMAX DEFAULT VALUE
15350C     UPDATED         --AUGUST    2004.  SET BESSEL I FUNCTION
15351C                                        DEFINITION
15352C     UPDATED         --AUGUST    2004.  SET BESSEL K FUNCTION
15353C                                        DEFINITION
15354C     UPDATED         --SEPTEMBER 2004.  SET PROBABILITY PLOT DATA
15355C                                        POINTS
15356C     UPDATED         --SEPTEMBER 2004.  SET PPCC PLOT DATA POINTS
15357C     UPDATED         --SEPTEMBER 2004.  SET PPCC PLOT AXIS POINTS
15358C     UPDATED         --SEPTEMBER 2004.  SET PPCC PLOT AXIS ORDER
15359C     UPDATED         --SEPTEMBER 2004.  SET HISTOGRAM CLASS WIDTH
15360C     UPDATED         --SEPTEMBER 2004.  SET ASH WEIGHTING
15361C     UPDATED         --OCTOBER   2004.  SET READ PAD MISSING COLUMNS
15362C     UPDATED         --OCTOBER   2004.  SET READ SUBSET
15363C     UPDATED         --OCTOBER   2004.  SET CENSORED PROBABILITY PLOT
15364C     UPDATED         --OCTOBER   2004.  SET CENSORED PPCC PLOT
15365C     UPDATED         --OCTOBER   2004.  SET MAXIMUM LIKELIHOOD PERCENTILES
15366C     UPDATED         --OCTOBER   2004.  SET EXPONENTIAL BIAS CORRECTED
15367C     UPDATED         --NOVEMBER  2004.  SET WEIBULL BIAS CORRECTED
15368C     UPDATED         --NOVEMBER  2004.  SET GUMBELL BIAS CORRECTED
15369C     UPDATED         --NOVEMBER  2004.  SET MATRIX CORRELATION DIRECTION
15370C     UPDATED         --NOVEMBER  2004.  SET MATRIX COVARIANCE DIRECTION
15371C     UPDATED         --DECEMBER  2004.  SET GUI
15372C     UPDATED         --DECEMBER  2004.  SET MAXIMUM LIKELIHOOD RELIABILITY
15373C     UPDATED         --FEBRUARY  2005.  SET DISTRIBUTIONAL BOOTSTRAP
15374C     UPDATED         --FEBRUARY  2005.  SET RTF POINT SIZE
15375C     UPDATED         --FEBRUARY  2005.  SET RTF FIXED FONT
15376C     UPDATED         --FEBRUARY  2005.  SET RTF PROPORTIONAL FONT
15377C     UPDATED         --MARCH     2005.  SET LINE PRINTER COLUMNS
15378C     UPDATED         --APRIL     2005.  SET DECIMAL POINT
15379C     UPDATED         --APRIL     2005.  SET PEAKS OVER THRESHOLD
15380C                                            METHOD
15381C     UPDATED         --APRIL     2005.  SET PEAKS OVER THRESHOLD
15382C                                            DISTRIBUTION
15383C     UPDATED         --APRIL     2005.  SET PEAKS OVER THRESHOLD
15384C                                            ITERATIONS
15385C     UPDATED         --APRIL     2005.  SET PEAKS OVER THRESHOLD
15386C                                            NUMBER POINTS
15387C     UPDATED         --APRIL     2005.  SET PEAKS OVER THRESHOLD
15388C                                            INITIAL THRESHOLD
15389C     UPDATED         --APRIL     2005.  SET PEAKS OVER THRESHOLD
15390C                                            INCREMENT
15391C     UPDATED         --APRIL     2005.  SET PEAKS OVER THRESHOLD
15392C                                            PERIOD
15393C     UPDATED         --APRIL     2005.  SET PEAKS OVER THRESHOLD
15394C                                            TOLERANCE
15395C     UPDATED         --APRIL     2005.  SET PEAKS OVER THRESHOLD
15396C                                            LOAD FACTOR
15397C     UPDATED         --APRIL     2005.  SET PEAKS OVER THRESHOLD
15398C                                            X AXIS
15399C     UPDATED         --MAY       2005.  SET FRECHET BIAS CORRECTION
15400C     UPDATED         --JULY      2005.  SET LOG GAMMA DEFINITION
15401C     UPDATED         --JULY      2005.  SET SKEW NORMAL DEFINITION
15402C     UPDATED         --SEPTEMBER 2005.  IMACSC
15403C     UPDATED         --SEPTEMBER 2005.  NMACAG
15404C     UPDATED         --SEPTEMBER 2005.  IMACAR
15405C     UPDATED         --JANUARY   2006.  ICAPSC
15406C     UPDATED         --FEBRUARY  2006.  IGLDDF
15407C     UPDATED         --MAY       2006.  IPPCBW
15408C     UPDATED         --MAY       2006.  IBGEDF
15409C     UPDATED         --JUNE      2006.  IFORFM
15410C     UPDATED         --JUNE      2006.  10 SWITCHES FOR CONSENSUS
15411C                                        MEAN (IMPACM - IFAICM)
15412C     UPDATED         --JULY      2006.  IGETDF
15413C     UPDATED         --JULY      2006.  PCHSLM
15414C     UPDATED         --AUGUST    2006.  ICONDF
15415C     UPDATED         --OCTOBER   2006.  I4PLDI
15416C     UPDATED         --OCTOBER   2006.  PMAXLO
15417C     UPDATED         --JANUARY   2007.  IGOMDF
15418C     UPDATED         --JANUARY   2007.  IKATDF
15419C     UPDATED         --FEBRUARY  2007.  IBINCC, PBINTH
15420C     UPDATED         --MARCH     2007.  PFISEX
15421C     UPDATED         --MARCH     2007.  PFISPC
15422C     UPDATED         --MARCH     2007.  PFISEM
15423C     UPDATED         --APRIL     2007.  IERRFA
15424C     UPDATED         --APRIL     2007.  PSTAMV
15425C     UPDATED         --MAY       2007.  IBTAGN
15426C     UPDATED         --MAY       2007.  IPOILV
15427C     UPDATED         --SEPTEMBER 2007.  IERRST
15428C     UPDATED         --APRIL     2008.  PCTAMV
15429C     UPDATED         --APRIL     2008.  ICTAMV
15430C     UPDATED         --APRIL     2008.  IBINTA
15431C     UPDATED         --MAY       2008.  PFLUFL
15432C     UPDATED         --MAY       2008.  PFLUCL
15433C     UPDATED         --MAY       2008.  IFLUWI
15434C     UPDATED         --JULY      2008.  IGIGDF
15435C     UPDATED         --AUGUST    2008.  IMERMA
15436C     UPDATED         --AUGUST    2008.  IMERCA
15437C     UPDATED         --SEPTEMBER 2008.  ICTAFO
15438C     UPDATED         --OCTOBER   2008.  PSTRIN
15439C     UPDATED         --NOVEMBER  2008.  ISTRPL
15440C     UPDATED         --JANUARY   2009.  FEEDBACK SAVE SWITCH
15441C     UPDATED         --FEBRUARY  2009.  ICTALT
15442C     UPDATED         --FEBRUARY  2009.  ISTRSP
15443C     UPDATED         --MARCH     2009.  ICONDH, ICONDV
15444C     UPDATED         --MARCH     2009.  ISTAFO
15445C     UPDATED         --MARCH     2009.  ISTASM
15446C     UPDATED         --MARCH     2009.  IFORWI, IFORWR, MAXNWI
15447C     UPDATED         --APRIL     2009.  IBPLSC
15448C     UPDATED         --APRIL     2009.  PBPLCO
15449C     UPDATED         --APRIL     2009.  ILATPS
15450C     UPDATED         --APRIL     2009.  IDATMV
15451C     UPDATED         --APRIL     2009.  IREALI
15452C     UPDATED         --JUNE      2009.  IMERC2
15453C     UPDATED         --JUNE      2009.  ICCTOF
15454C     UPDATED         --JUNE      2009.  ICCTG1 - ICCTG6
15455C     UPDATED         --JULY      2009.  ILODCV
15456C     UPDATED         --JULY      2009.  IPROAD
15457C     UPDATED         --JULY      2009.  IHTMCW, IHTMFT
15458C     UPDATED         --SEPTEMBER 2009.  IKSCVM, IADCVM
15459C     UPDATED         --SEPTEMBER 2009.  IFLUUN
15460C     UPDATED         --SEPTEMBER 2009.  ICONWC
15461C     UPDATED         --SEPTEMBER 2009.  PTPLXI
15462C     UPDATED         --SEPTEMBER 2009.  PTPLYI
15463C     UPDATED         --SEPTEMBER 2009.  ITPLDI
15464C     UPDATED         --SEPTEMBER 2009.  IFLUDI
15465C     UPDATED         --OCTOBER   2009.  IGOFFS
15466C     UPDATED         --DECEMBER  2009.  ITPLUN, ITPLNI
15467C     UPDATED         --JANUARY   2010.  IFLUCD, ITPLCD
15468C     UPDATED         --JANUARY   2010.  IHSTEB, IHSTOU
15469C     UPDATED         --APRIL     2010.  IFLUBP
15470C     UPDATED         --APRIL     2010.  IDATNN
15471C     UPDATED         --MAY       2010.  IDS2CM, IDS3CM, IFA2CM,
15472C                                        IFA3CM, ILPLCM
15473C     UPDATED         --JUNE      2010.  ITPLSO, ITPLSR, ITPLSC
15474C     UPDATED         --JUNE      2010.  ITPLRM, ITPLCM
15475C     UPDATED         --JUNE      2010.  IFLUSO, IFLUSR, IFLUSC
15476C     UPDATED         --JULY      2010.  IDFTTY
15477C     UPDATED         --SEPTEMBER 2010.  IBFWTY
15478C     UPDATED         --SEPTEMBER 2010.  IBOOPE
15479C     UPDATED         --OCTOBER   2010.  IMOVDI, IMOVEP
15480C     UPDATED         --OCTOBER   2010.  IBFWLI, IEEWLI
15481C     UPDATED         --NOVEMBER  2010.  IMATVA, IVARMA
15482C     UPDATED         --DECEMBER  2010.  IHOMLO, IHOMSC, IHOMCT
15483C     UPDATED         --JANUARY   2011.  IBFICR, IBFIME
15484C     UPDATED         --FEBRUARY  2011.  IKRUGS, ILEVGS
15485C     UPDATED         --APRIL     2011.  ITTEVA
15486C     UPDATED         --JUNE      2011.  PMTEQU
15487C     UPDATED         --AUGUST    2011.  IBOODP
15488C     UPDATED         --AUGUST    2011.  IBOOCI
15489C     UPDATED         --AUGUST    2011.  IPSTVW
15490C     UPDATED         --OCTOBER   2011.  ICMPSO, ICMPDA
15491C     UPDATED         --OCTOBER   2011.  IBOOSM, PBOOSM
15492C     UPDATED         --DECEMBER  2011.  ICHAOF
15493C     UPDATED         --FEBRUARY  2012.  IPIEBI
15494C     UPDATED         --FEBRUARY  2012.  IKRUMC
15495C     UPDATED         --FEBRUARY  2012.  IISOLA
15496C     UPDATED         --FEBRUARY  2012.  IRLPLA
15497C     UPDATED         --APRIL     2012.  IBPLFI
15498C     UPDATED         --APRIL     2012.  PBPLWI
15499C     UPDATED         --APRIL     2012.  IBPLLA
15500C     UPDATED         --APRIL     2012.  ICAPFE
15501C     UPDATED         --JUNE      2012.  ICHADY
15502C     UPDATED         --JUNE      2012.  ICHARO
15503C     UPDATED         --JULY      2012.  ILODST
15504C     UPDATED         --JULY      2012.  ILODTA
15505C     UPDATED         --AUGUST    2012.  ILODPC
15506C     UPDATED         --SEPTEMBER 2012.  IFIETY
15507C     UPDATED         --OCTOBER   2012.  IMEMCM, ITRMCM
15508C     UPDATED         --DECEMBER  2012.  IBPLBG
15509C     UPDATED         --DECEMBER  2012.  PTOLDF
15510C     UPDATED         --JANUARY   2013.  IBFIFO
15511C     UPDATED         --MARCH     2013.  IKTATA
15512C     UPDATED         --MARCH     2013.  IRCRTA
15513C     UPDATED         --MARCH     2013.  PCMTYB
15514C     UPDATED         --MARCH     2013.  IWEIGL
15515C     UPDATED         --MARCH     2013.  ICSTSV
15516C     UPDATED         --APRIL     2013.  ISKWDF
15517C     UPDATED         --APRIL     2013.  IWEIML, IWEIMO, IWEIMM
15518C     UPDATED         --APRIL     2013.  IPERDI
15519C     UPDATED         --APRIL     2013.  IFLUBD
15520C     UPDATED         --JUNE      2013.  ICMET1, ICMET2, ICMET3
15521C                                        ICMET4, ICMET5
15522C     UPDATED         --JUNE      2013.  PBFILL, PBFIUL
15523C     UPDATED         --JULY      2013.  PBFIXV, IBFITY, IDTYPR
15524C     UPDATED         --AUGUST    2013.  IRGBMX
15525C     UPDATED         --AUGUST    2013.  IMCCR1
15526C     UPDATED         --DECEMBER  2013.  IGSTVR
15527C     UPDATED         --MARCH     2014.  IBINME, I3WEME, P3WEMI
15528C     UPDATED         --MARCH     2014.  ICMETB
15529C     UPDATED         --APRIL     2014.  I3LNME, P3LNMI
15530C     UPDATED         --APRIL     2014.  I3GAME, P3GAMI
15531C     UPDATED         --APRIL     2014.  IGAUDF
15532C     UPDATED         --JUNE      2014.  IFITAU
15533C     UPDATED         --JULY      2014.  INPLAX
15534C     UPDATED         --AUGUST    2014.  ILATRS
15535C     UPDATED         --SEPTEMBER 2014.  ICIRCR
15536C     UPDATED         --SEPTEMBER 2014.  IWEIEP
15537C     UPDATED         --SEPTEMBER 2014.  IWEILM
15538C     UPDATED         --OCTOBER   2014.  IGEVML
15539C     UPDATED         --OCTOBER   2014.  IAVABN
15540C     UPDATED         --OCTOBER   2014.  IAVANM
15541C     UPDATED         --OCTOBER   2014.  ISEADI
15542C     UPDATED         --NOVEMBER  2014.  ICLISK, ICLILL, PCLIDE
15543C     UPDATED         --DECEMBER  2014.  IX11CB
15544C     UPDATED         --FEBRUARY  2015.  I691TR, I691HC, I691KC, I691PS
15545C     UPDATED         --MARCH     2015.  ISPX1L
15546C     UPDATED         --MARCH     2015.  ISPMDS
15547C     UPDATED         --APRIL     2015.  ICNKPD
15548C     UPDATED         --APRIL     2015.  I691DS, I691GL, ISPLRL
15549C     UPDATED         --MAY       2015.  IHKCPT, IHKCLM
15550C     UPDATED         --MAY       2015.  IHKCGP
15551C     UPDATED         --MAY       2015.  IHKCM1, IHKCM2, IHKCL1, IHKCL2
15552C     UPDATED         --MAY       2015.  IMOVGR
15553C     UPDATED         --JUNE      2015.  ITWOYA, ITWOFI, ITWOAV, ITWOAN
15554C     UPDATED         --JUNE      2015.  ITWOAD, ITWODE
15555C     UPDATED         --JUNE      2015.  ITWFPT, ITWFLM
15556C     UPDATED         --JUNE      2015.  ITWFGP
15557C     UPDATED         --JUNE      2015.  ITWFM1, ITWFM2, ITWFL1, ITWFL2
15558C     UPDATED         --SEPTEMBER 2015.  IOPTMM
15559C     UPDATED         --OCTOBER   2015.  IERRWA, IJSREP, ILOOSU
15560C     UPDATED         --NOVEMBER  2015.  IWEBSE, IDEVO3
15561C     UPDATED         --DECEMBER  2015.  IFRALI
15562C     UPDATED         --DECEMBER  2015.  IDV2SP
15563C     UPDATED         --DECEMBER  2015.  IDV3NC
15564C     UPDATED         --DECEMBER  2015.  ICAPSP, ICAPCU
15565C     UPDATED         --DECEMBER  2015.  ISTDIN, PSTDSL, ISTDCN
15566C     UPDATED         --MAY       2016.  IQUOST
15567C     UPDATED         --JUNE      2016.  IVNMEX
15568C     UPDATED         --JUNE      2016.  ISTADS
15569C     UPDATED         --JUNE      2016.  IHSTMC
15570C     UPDATED         --JUNE      2016.  IHSTOP
15571C     UPDATED         --JUNE      2016.  IBXPDI
15572C     UPDATED         --JUNE      2016.  ISRESI
15573C     UPDATED         --JUNE      2016.  IDATDL
15574C     UPDATED         --JUNE      2016.  ITIMDL
15575C     UPDATED         --JUNE      2016.  IRDIPA
15576C     UPDATED         --JUNE      2016.  IQQNPR
15577C     UPDATED         --JUNE      2016.  I2SNPR
15578C     UPDATED         --JUNE      2016.  ICTAGR
15579C     UPDATED         --JUNE      2016.  IQQBOO
15580C     UPDATED         --JULY      2016.  ISREVN
15581C     UPDATED         --JULY      2016.  IWRIHE
15582C     UPDATED         --JULY      2016.  ISRER1, ISRER2, ISRER3
15583C     UPDATED         --SEPTEMBER 2016.  IRESN1,IRESN2, NUMNRE
15584C     UPDATED         --SEPTEMBER 2016.  ICORAV, ICORPV, ICORDG
15585C     UPDATED         --OCTOBER   2016.  IPSVCL
15586C     UPDATED         --NOVEMBER  2016.  PBPLJI
15587C     UPDATED         --NOVEMBER  2016.  ICSCSB
15588C     UPDATED         --DECEMBER  2016.  ICVACI
15589C     UPDATED         --JANUARY   2017.  ICMTYB
15590C     UPDATED         --JANUARY   2017.  IHYPSW
15591C     UPDATED         --JANUARY   2017.  IWSAUN
15592C     UPDATED         --FEBRUARY  2017.  "TAB" SETTINGS
15593C     UPDATED         --MARCH     2017.  IHUBCM
15594C     UPDATED         --MARCH     2017.  IKMEIN, IKMESI, IKMESC
15595C                                        IKMERL
15596C     UPDATED         --APRIL     2017.  ICMPM1, ICMPM2, ICMPM3
15597C     UPDATED         --APRIL     2017.  INMCRL, INMCTI, INMCSC
15598C     UPDATED         --APRIL     2017.  IREACD, IREADS, IREACM
15599C                                        IREAPM, IREAMC
15600C     UPDATED         --JUNE      2017.  ICVTTE
15601C     UPDATED         --JULY      2017.  IBAPPE, IBAPST
15602C     UPDATED         --JULY      2017.  PPPLLA
15603C     UPDATED         --JULY      2017.  PNKDEF
15604C     UPDATED         --AUGUST    2017.  ISRPDI
15605C     UPDATED         --AUGUST    2017.  IKMDSC, IKMDDI, IKMDPR
15606C     UPDATED         --AUGUST    2017.  IKMDNS, IKMDNS, IKMDRN
15607C     UPDATED         --AUGUST    2017.  IKMDTY, IKMDPN
15608C     UPDATED         --AUGUST    2017.  IAGNTY, IAGNME, IAGNMS
15609C     UPDATED         --AUGUST    2017.  IAGNSC, IAGNDI, IAGNPR
15610C     UPDATED         --AUGUST    2017.  IAGNBA
15611C     UPDATED         --AUGUST    2017.  IFANTY, IFANMS
15612C     UPDATED         --AUGUST    2017.  IFANSC, IFANDI, IFANPR
15613C     UPDATED         --NOVEMBER  2017.  IBI2ME
15614C     UPDATED         --DECEMBER  2017.  IBONSD, IBONAD
15615C     UPDATED         --JANUARY   2018.  IBONSD, IDPADI, IDPAID
15616C     UPDATED         --FEBRUARY  2018.  IDPAUN
15617C     UPDATED         --FEBRUARY  2018.  ICHKLE
15618C     UPDATED         --FEBRUARY  2018.  ISPMXT, ISPMXL, ISPMYT, ISPMYL
15619C     UPDATED         --APRIL     2018.  IWBSDP, ICLEWT, ILINSY
15620C     UPDATED         --APRIL     2018.  IHYPCL, ICOMCL
15621C     UPDATED         --MAY       2018.  IMACCL, NMACCL
15622C     UPDATED         --MAY       2018.  ITOLGC, PTOLDF, ITOLME, ITOLM2
15623C     UPDATED         --JUNE      2018.  IRWLCO
15624C     UPDATED         --JULY      2018.  ISREC1, ISREC2, ISREC3, ISREC4
15625C     UPDATED         --JULY      2018.  IKDEPF, IKDERN
15626C     UPDATED         --JULY      2018.  ISREGL
15627C     UPDATED         --JULY      2018.  ISREVT
15628C     UPDATED         --AUGUST    2018.  CHANGE DEFAULT VALUE FOR
15629C                                        READ DELIMITER TO A SPACE
15630C                                        RATHER THAN A COMMA
15631C     UPDATED         --AUGUST    2018.  ISRENP
15632C     UPDATED         --SEPTEMBER 2018.  IFEEWR, IWRDDL, ISUBSK
15633C     UPDATED         --NOVEMBER  2018.  CHANGE DEFAULTS FOR
15634C                                        IBPLSC, PBPLCO
15635C     UPDATED         --JANUARY   2019.  IPYTPA, NCPYTH, IPYTVR
15636C     UPDATED         --JANUARY   2019.  ISUBFM
15637C     UPDATED         --JANUARY   2019.  ISJUCH
15638C     UPDATED         --FEBRUARY  2019.  ITABNC
15639C     UPDATED         --FEBRUARY  2019.  PWRTGA
15640C     UPDATED         --FEBRUARY  2019.  ICLIRC
15641C     UPDATED         --FEBRUARY  2019.  IDEXIN
15642C     UPDATED         --MARCH     2019.  ISYSPR
15643C     UPDATED         --MARCH     2019.  ISYSHI
15644C     UPDATED         --MARCH     2019.  IEDITR
15645C     UPDATED         --APRIL     2019.  IAUXDP
15646C     UPDATED         --APRIL     2019.  IREAAS
15647C     UPDATED         --JULY      2019.  IBXPSK
15648C     UPDATED         --AUGUST    2019.  I1PTOC
15649C     UPDATED         --SEPTEMBER 2019.  IGRPCA, IGRPRE, IGRPLN
15650C     UPDATED         --SEPTEMBER 2019.  IGRPNM, IGRPFN, IGRPEM
15651C     UPDATED         --SEPTEMBER 2019.  ICATMO
15652C     UPDATED         --SEPTEMBER 2019.  IDIRRE, IDIRPA, IDIRLL
15653C     UPDATED         --SEPTEMBER 2019.  IDIRSO
15654C     UPDATED         --SEPTEMBER 2019.  ISTRVA, ISTRCS, IRATME
15655C     UPDATED         --OCTOBER   2019.  IDAVTA, ISKOTA, IKUOTA
15656C     UPDATED         --OCTOBER   2019.  IREAPC, IHEALI, ITAILI
15657C     UPDATED         --OCTOBER   2019.  PGRUSD, PGRUDF, IGRUTA
15658C     UPDATED         --NOVEMBER  2019.  IRLXLE, IOUTLN
15659C     UPDATED         --NOVEMBER  2019.  IRRRPA
15660C     UPDATED         --NOVEMBER  2019.  IBROHE, IBROWI
15661C     UPDATED         --NOVEMBER  2019.  ILSTVW, ILSTNW, ILSTLA,
15662C                                        IHELNW, IEXCVW, IWORVW
15663C     UPDATED         --DECEMBER  2019.  IPDFVW
15664C     UPDATED         --DECEMBER  2019.  IHOMPA
15665C     UPDATED         --JANUARY   2020.  IIPLJI
15666C     UPDATED         --FEBRUARY  2020.  ICSVWR
15667C     UPDATED         --FEBRUARY  2020.  IINSOW
15668C     UPDATED         --FEBRUARY  2020.  IEXCSH
15669C     UPDATED         --MARCH     2020.  ISEAD2
15670C     UPDATED         --MARCH     2020.  ISEAD3
15671C     UPDATED         --APRIL     2020.  BEST FIT <DIST> <ON/OFF>
15672C     UPDATED         --APRIL     2020.  ISEAD4, ISEAD5, ISEAD6
15673C     UPDATED         --APRIL     2020.  IEXCR1, IEXCR2,
15674C                                        IEXCC1, IEXCC2
15675C
15676C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
15677C
15678      CHARACTER*4 IBUGIN
15679C
15680C---------------------------------------------------------------------
15681C
15682C-----COMMON----------------------------------------------------------
15683C
15684      CHARACTER*1 IBASLC
15685C
15686      INCLUDE 'DPCOPA.INC'
15687      INCLUDE 'DPCOMC.INC'
15688      INCLUDE 'DPCOHK.INC'
15689      INCLUDE 'DPCODG.INC'
15690      INCLUDE 'DPCOSU.INC'
15691CCCCC THE FOLLOWING LINE (FOR WEIBULL MINMAX) WAS ADDED JANUARY 1994
15692      INCLUDE 'DPCOS2.INC'
15693      INCLUDE 'DPCOGR.INC'
15694CCCCC THE FOLLOWING LINE (FOR SET NETSCAPE) WAS ADDED APRIL 1997
15695      INCLUDE 'DPCOST.INC'
15696      INCLUDE 'DPCOHO.INC'
15697C
15698      CHARACTER*4 IFEESV
15699      COMMON/IFEED/IFEESV
15700C
15701      CHARACTER*40 IHTMFZ
15702      COMMON/HTMC1/IHTMFZ,NCFON1
15703C
15704      INTEGER ILNCNT
15705      COMMON/LINNUM/ILNCNT
15706C
15707      CHARACTER*80 PROFIL
15708      CHARACTER*80 P86FIL
15709      CHARACTER*80 APPDAT
15710      CHARACTER*80 COMNAM
15711      CHARACTER*80 UPROFI
15712      CHARACTER*80 DEFPRI
15713      CHARACTER*20 USRNAM
15714      CHARACTER*20 ISHELL
15715      CHARACTER*4  WINBIT
15716      COMMON/SYSVAR/PROFIL,P86FIL,APPDAT,COMNAM,UPROFI,USRNAM,DEFPRI,
15717     1              WINBIT,ISHELL
15718      COMMON/SYSVA2/NCPROF,NCP86F,NCAPPD,NCCOMP,NCUPRO,NCUSER,NCPRIN,
15719     1              NCSHEL
15720C
15721C
15722C-----COMMON VARIABLES (GENERAL)--------------------------------------
15723C
15724      INCLUDE 'DPCOP2.INC'
15725C
15726C-----START POINT-----------------------------------------------------
15727C
15728      IF(IBUGIN.EQ.'OFF')GOTO90
15729      WRITE(ICOUT,999)
15730  999 FORMAT(1X)
15731      CALL DPWRST('XXX','BUG ')
15732      WRITE(ICOUT,55)
15733   55 FORMAT('***** AT THE BEGINNING OF INITSU--')
15734      CALL DPWRST('XXX','BUG ')
15735   90 CONTINUE
15736C
15737C               ******************************
15738C               **  TREAT THE ADD     CASE  **
15739C               **  TREAT THE CALL    CASE  **
15740C               **  TREAT THE EXECUTE CASE  **
15741C               **  TREAT THE RUN     CASE  **
15742C               ******************************
15743C
15744C
15745C               ****************************
15746C               **  TREAT THE ANGLE CASE  **
15747C               ****************************
15748C     THESE HAVE BEEN COMMENTED OUT BECAUSE
15749C     THE ANGLE WILL BE SET IN SUBROUTINE INITDG
15750C
15751CCCCC DEFANG=0.0
15752CCCCC ANGLE=DEFANG
15753C
15754C               **********************************
15755C               **  TREAT THE ANGLE UNITS CASE  **
15756C               **********************************
15757C     THESE HAVE BEEN COMMENTED OUT BECAUSE
15758C     THE ANGLE UNITS WILL BE SET IN SUBROUTINE INITDG
15759C
15760CCCCC IDEANU='RADI'
15761CCCCC IANGLU=IDEANU
15762C
15763C               ***************************
15764C               **  TREAT THE BAUD CASE  **
15765C               ***************************
15766C
15767CCCCC IDEFBA=1200
15768C     IDEFBA IS SET IN SUBROUTINE INITOD
15769C     BECAUSE MAININ CALLS INITOD BEFORE CALLING INITSU
15770      IBAUD=IDEFBA
15771      IGBAUD=IBAUD
15772C
15773C               **************************************
15774C               **  TREAT THE CLASS ... LOWER CASE  **
15775C               **************************************
15776C
15777      CLLIMI(1)=CPUMIN
15778      CLLIMI(3)=CPUMIN
15779C
15780C               **************************************
15781C               **  TREAT THE CLASS ... UPPER CASE  **
15782C               **************************************
15783C
15784      CLLIMI(2)=CPUMAX
15785      CLLIMI(4)=CPUMAX
15786C
15787C               **************************************
15788C               **  TREAT THE CLASS ... WIDTH CASE  **
15789C               **************************************
15790C
15791      CLWIDT(1)=CPUMIN
15792      CLWIDT(2)=CPUMIN
15793C
15794C               ********************************************
15795C               **  TREAT THE MAXIMUM RECORD LENGTH CASE  **
15796C               **  NOTE: THIS SHOULD COME BEFORE COLUMN  **
15797C               **        LIMITS CASE                     **
15798C               ********************************************
15799C
15800      IDEFRL=255
15801      NUMRCM=IDEFRL
15802C
15803C               ************************************
15804C               **  TREAT THE COLUMN LIMITS CASE  **
15805C               ************************************
15806C
15807      IDEFC1=1
15808CCCCC IDEFC2=132
15809      IDEFC2=IDEFRL
15810      IFCOL1=IDEFC1
15811      IFCOL2=IDEFC2
15812      DO3010I=1,50
15813        IFCOLL(I)=-1
15814        IFCOLU(I)=-1
15815 3010 CONTINUE
15816C
15817C               ******************************
15818C               **  TREAT THE COMMENT CASE  **
15819C               ******************************
15820C
15821C               ***************************
15822C               **  TREAT THE COPY CASE  **
15823C               ***************************
15824C
15825C
15826C               **********************************
15827C               **  TREAT THE CURSOR SIZE CASE  **
15828C               **********************************
15829C
15830      DEFCSZ=1.0
15831      ACURSZ=DEFCSZ
15832C
15833C               ******************************
15834C               **  TREAT THE DEGREES CASE  **
15835C               ******************************
15836C
15837C
15838C               ********************************
15839C               **  TREAT THE DIMENSION CASE  **
15840C               ********************************
15841C
15842C               **********************************
15843C               **  TREAT THE ERASE DELAY CASE  **
15844C               **********************************
15845C
15846      DEFERD=1.0
15847      ERASDE=DEFERD
15848      AGERDE=ERASDE
15849C
15850C               **************************************
15851C               **  TREAT THE HARDCOPY DELAY CASE   **
15852C               **************************************
15853C
15854      DEFHAD=1.0
15855      HARDDE=DEFERD
15856      AGCODE=HARDDE
15857C
15858C               *****************************
15859C               **  TREAT THE DELETE CASE  **
15860C               *****************************
15861C
15862C
15863C               ***************************************
15864C               **  TREAT THE DOUBLE PRECISION CASE  **
15865C               ***************************************
15866C
15867C
15868C               ***************************
15869C               **  TREAT THE ECHO CASE  **
15870C               ***************************
15871C
15872      IECHO='OFF'
15873C
15874C               ****************************
15875C               **  TRE***** AT THE END   CASE  **
15876C               **  TREAT THE EXIT  CASE  **
15877C               **  TREAT THE HALT  CASE  **
15878C               **  TREAT THE STOP  CASE  **
15879C               ****************************
15880C
15881C
15882C               *******************************
15883C               **  TREAT THE ERASE CASE     **
15884C               **  TREAT THE PAGE CASE      **
15885C               **  TREAT THE NEW PAGE CASE  **
15886C               *******************************
15887C
15888C
15889C               *********************************************
15890C               **  TREAT THE DEMODULATION FREQUENCY CASE  **
15891C               *********************************************
15892C
15893      DEFDMF=-1.0
15894      DEMOFR=DEFDMF
15895C
15896C               ****************************
15897C               **  TREAT THE GRADS CASE  **
15898C               ****************************
15899C
15900C
15901C               ***************************
15902C               **  TREAT THE HELP CASE  **
15903C               ***************************
15904C
15905C
15906C               ***************************
15907C               **  TREAT THE HOST CASE  **
15908C               ***************************
15909C
15910      DO300I=1,10
15911      IDEFHO(I)='    '
15912  300 CONTINUE
15913C     NOTE--THE SPECIFICATION OF THE HOST
15914C           HAS BEEN MOVED TO THE MAIN ROUTINE.
15915C           SEARCH FOR    IHOST1=      AND IHOST2=
15916C           IN THE MAIN ROUTINE AND CHANGE IT TO YOUR HOST.
15917CCCCC IDEFHO(1)='VAX '
15918CCCCC IDEFHO(2)='11/7'
15919CCCCC IDEFHO(3)='80  '
15920CCCCC IDEFHO(4)='VMS '
15921CCCCC IDEFHO(5)='    '
15922C
15923      DO500I=1,10
15924      IHOST(I)=IDEFHO(I)
15925  500 CONTINUE
15926C
15927C               **************************************
15928C               **  TREAT THE FIT CONSTRAINTS CASE  **
15929C               **************************************
15930C
15931C               *********************************************
15932C               **  TREAT THE FIT STANDARD DEVIATION CASE  **
15933C               *********************************************
15934C
15935CCCCC CHANGE DEFAULT TO MATCH DPFIT2.  FEBRUARY 1994.
15936CCCCC DEFFSD=0.000005
15937      DEFFSD=0.0000001
15938      FITSD=DEFFSD
15939C
15940C               *************************************
15941C               **  TREAT THE FIT ITERATIONS CASE  **
15942C               *************************************
15943C
15944      IDEFNI=50
15945      IFITIT=IDEFNI
15946C
15947C               ********************************
15948C               **  TREAT THE FIT POWER CASE  **
15949C               ********************************
15950C
15951      DEFFPW=2.0
15952      FITPOW=DEFFPW
15953C
15954CCCCC THE FOLLOWING SECTION WAS ADDED       JULY 1995
15955C               **********************************************
15956C               **  TREAT THE FIT ADDITIVE CONSTANT CASE    **
15957C               **********************************************
15958C
15959      IFITAC='ON'
15960C
15961C
15962C               ****************************
15963C               **  TREAT THE KNOTS CASE  **
15964C               ****************************
15965C
15966      IKNOTS='OFF'
15967      IDEFK1='    '
15968      IDEFK2='    '
15969      IKNOT1=IDEFK1
15970      IKNOT2=IDEFK2
15971C
15972C               *******************************
15973C               **  TREAT THE MESSAGE  CASE  **
15974C               **  TREAT THE CONSOLE  CASE  **
15975C               **  TREAT THE OPERAT0R CASE  **
15976C               *******************************
15977C
15978C
15979C               ****************************
15980C               **  TREAT THE MACRO CASE  **
15981C               ****************************
15982C
15983C
15984C               ***************************
15985C               **  TREAT THE NAME CASE  **
15986C               ***************************
15987C
15988C
15989C               ****************************************
15990C               **  TREAT THE POLYNOMIAL DEGREE CASE  **
15991C               ****************************************
15992C
15993      IDEFDG=1
15994      IDEG=IDEFDG
15995C
15996C               ********************************
15997C               **  TREAT THE PRECISION CASE  **
15998C               ********************************
15999C
16000      IDEFPR='SING'
16001      IHMXPR='SING'
16002      IPREC=IDEFPR
16003C
16004C               ********************************
16005C               **  TREAT THE PRE-ERASE CASE  **
16006C               ********************************
16007C
16008      IPREER='ON'
16009C
16010C               *******************************
16011C               **  TREAT THE PRINTING CASE  **
16012C               *******************************
16013C
16014      IPRINT='ON'
16015      IPRIN2=IPRINT
16016C
16017C               ******************************************
16018C               **  TREAT THE QUADRUPLE PRECISION CASE  **
16019C               ******************************************
16020C
16021C
16022C               ******************************
16023C               **  TREAT THE RADIANS CASE  **
16024C               ******************************
16025C
16026C
16027C               ***************************
16028C               **  TREAT THE READ CASE  **
16029C               ***************************
16030C
16031C
16032C               ****************************
16033C               **  TREAT THE RESET CASE  **
16034C               ****************************
16035C
16036C
16037C               ******************************
16038C               **  TREAT THE RESTORE CASE  **
16039C               ******************************
16040C
16041C
16042C               *****************************
16043C               **  TREAT THE RETAIN CASE  **
16044C               **  TREAT THE PACK   CASE  **
16045C               *****************************
16046C
16047C               ********************************
16048C               **  TREAT THE RING BELL CASE  **
16049C               ********************************
16050C
16051C
16052C               *********************************
16053C               **  TREAT THE ROW LIMITS CASE  **
16054C               *********************************
16055C
16056      IDEFR1=1
16057      IDEFR2=I1MACH(9)
16058      IFROW1=IDEFR1
16059      IFROW2=IDEFR2
16060C
16061C               ***************************
16062C               **  TREAT THE SAVE CASE  **
16063C               ***************************
16064C
16065C
16066C               ******************************************
16067C               **  TREAT THE SEPARATOR CHARACTOR CASE  **
16068C               ******************************************
16069C
16070      IDEFTC=';'
16071      ITERCH=IDEFTC
16072C
16073C               ******************************************
16074C               **  TREAT THE CONTINUE  CHARACTER CASE  **
16075C               ******************************************
16076C
16077      IDEFCC='... '
16078      ICONCH=IDEFCC
16079C
16080C               ******************************************
16081C               **  TREAT THE COMMENT   CHARACTER CASE  **
16082C               ******************************************
16083C
16084      IDEFCZ='.   '
16085      ICOMCH=IDEFCZ
16086CCCCC THE FOLLOWING LINE WAS CHANGED OCTOBER 1992
16087CCCCC ICOMFL='OFF '
16088      ICOMSW='OFF '
16089CCCCC FOLLOWING BLOCK OF CODE ADDED AUGUST 1992.
16090C
16091C               ******************************************
16092C               **  TREAT THE VECTOR FORMAT       CASE  **
16093C               **  TREAT THE VECTOR ARROW        CASE  **
16094C               ******************************************
16095C
16096      IDEFVF='ANGL'
16097      IVCFMT=IDEFVF
16098      IDEFVA='FIXE'
16099      IVCARR=IDEFVA
16100      IDEFVO='CLOS'
16101      IVCOPN=IDEFVO
16102C
16103CCCCC FOLLOWING BLOCK OF CODE ADDED NOVEMBER 1992.
16104C
16105C               ******************************************
16106C               **  TREAT THE ANDREW INCREMENT    CASE  **
16107C               ******************************************
16108C
16109      DEFAIN=0.1
16110      ANDINC=DEFAIN
16111C
16112CCCCC FOLLOWING BLOCK OF CODE ADDED JULY 1993
16113C               ******************************************
16114C               **  TREAT THE FRACTAL ITERATIONS  CASE  **
16115C               **  TREAT THE FRACTAL TYPE        CASE  **
16116C               ******************************************
16117C
16118      IDEFFT='BARN'
16119      IFRATY=IDEFVF
16120      IDEFFI=MAXPOP
16121      IFRAIT=IDEFFI
16122C
16123CCCCC FOLLOWING BLOCK OF CODE ADDED JULY 1993
16124C               ***********************************************
16125C               **  TREAT THE PRINCIPLE COMPONENTS TYPE CASE **
16126C               ***********************************************
16127C
16128      IDEFPT='DACR'
16129      IPCMTY=IDEFPT
16130C
16131C               **********************************
16132C               **  TREAT THE SERIAL READ CASE  **
16133C               **********************************
16134C
16135C
16136C               ***************************************
16137C               **  TREAT THE SINGLE PRECISION CASE  **
16138C               ***************************************
16139C
16140C
16141C               ***************************
16142C               **  TREAT THE SKIP CASE  **
16143C               ***************************
16144C
16145      IDEFSK=0
16146      ISKIP=IDEFSK
16147C
16148C               *****************************
16149C               **  TREAT THE STATUS CASE  **
16150C               *****************************
16151C
16152C
16153C               **************************************
16154C               **  TREAT THE SUBSET MESSAGES CASE  **
16155C               **************************************
16156C
16157      ISUBMS='ON'
16158C
16159C               ****************************
16160C               **  TREAT THE TIME  CASE  **
16161C               **  TREAT THE CLOCK CASE  **
16162C               ****************************
16163C
16164      DO700I=1,10
16165      ICLOCK(I)=0
16166  700 CONTINUE
16167C
16168C               ***************************************
16169C               **  TREAT THE TRIPLE PRECISION CASE  **
16170C               ***************************************
16171C
16172C
16173C               ******************************
16174C               **  TREAT THE WEIGHTS CASE  **
16175C               ******************************
16176C
16177      IWEIGH='OFF'
16178      IDEFW1='    '
16179      IDEFW2='    '
16180      IWEIG1=IDEFW1
16181      IWEIG2=IDEFW2
16182C
16183C               ****************************
16184C               **  TREAT THE WRITE CASE  **
16185C               **  TREAT THE PRINT CASE  **
16186C               ****************************
16187C
16188C
16189C               ************************
16190C               **  TREAT THE . CASE  **
16191C               ************************
16192C
16193C               ***********************************
16194C               **  TREAT THE FILTER WIDTH CASE  **
16195C               ***********************************
16196C
16197      DEFFW=3.0
16198      FILWID=DEFFW
16199C
16200C               *******************************
16201C               **  TREAT THE FEEDBACK CASE  **
16202C               *******************************
16203C
16204      IFEEDB='ON'
16205      IFEED2=IFEEDB
16206C
16207C               ************************************
16208C               **  TREAT THE ROOT ACCURACY CASE  **
16209C               ************************************
16210C
16211      DEFRAC=0.000001
16212      ROOTAC=DEFRAC
16213C
16214C               *********************************************
16215C               **  TREAT THE OPTIMIZATION TOLERANCE CASE  **
16216C               *********************************************
16217C
16218      DEFOAC=0.00001
16219      OPTACC=DEFOAC
16220C
16221C               *********************************************
16222C               **  TREAT THE OPTIMIZATION METHOD    CASE  **
16223C               *********************************************
16224C
16225      IDEFOM='LINE'
16226      IOPTME=IDEFOM
16227      IDEFHS='FINI'
16228      IOPTHE=IDEFHS
16229C
16230CCCCC THE FOLLOWING SECTION WAS ADDED    MAY 1993
16231CCCCC AUGUST 2004: SET DEFAULT TO 1 (THIS IS THE MORE COMMON
16232CCCCC              CASE FOR THE WEIBULL DISTRIBUTION)
16233C
16234C               ***************************************
16235C               **  TREAT THE EV1/EV2/WEIBULL        **
16236C               **  DISTRIBUTION SPECIFICATION CASE  **
16237C               ***************************************
16238C
16239      MINMAX=0
16240CCCCC MINMAX=1
16241C
16242CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL 1997
16243C
16244C               ***************************************
16245C               **  TREAT THE SET NETSCAPE <OLD/NEW> **
16246C               **  CASE                             **
16247C               ***************************************
16248C
16249      INETSW='NEW'
16250C
16251CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL 1997
16252C
16253C               ***************************************
16254C               **  TREAT THE SET CONTROL CHART      **
16255C               **  <DATA/PRIOR> CASE                **
16256C               ***************************************
16257C
16258      ICCHPR='DATA'
16259C
16260CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL 1997
16261C
16262C               *******************************************
16263C               **  TREAT THE SET CONTROL CHART WEIGHTING *
16264C               **  <CENTER/RIGHT> CASE                  **
16265C               *******************************************
16266C
16267      ICCHWT='RIGH'
16268C
16269CCCCC THE FOLLOWING SECTION WAS ADDED    AUGUST 1997
16270C
16271C               *************************************************
16272C               **  TREAT THE RECIPE SATTERWAITE APPROXIMATION **
16273C               **  <ON/OFF> CASE                              **
16274C               *************************************************
16275C
16276      IDEFSA='ON'
16277      IRECSA=IDEFSA
16278C
16279CCCCC THE FOLLOWING SECTION WAS ADDED    AUGUST 1997
16280C
16281C               *************************************************
16282C               **  TREAT THE RECIPE OUTPUT                    **
16283C               **  <ON/OFF> CASE                              **
16284C               *************************************************
16285C
16286      IDEFTN='TOL'
16287      IRECTN=IDEFTN
16288C
16289CCCCC THE FOLLOWING SECTION WAS ADDED    AUGUST 1997
16290C
16291C               *************************************************
16292C               **  TREAT THE RECIPE PROBABILITY CONTENT <VAL> **
16293C               *************************************************
16294C
16295      DEFRPC=0.90
16296      RECIPC=DEFRPC
16297C
16298CCCCC THE FOLLOWING SECTION WAS ADDED    AUGUST 1997
16299C
16300C               *************************************************
16301C               **  TREAT THE RECIPE CONFIDENCE          <VAL> **
16302C               *************************************************
16303C
16304      DEFRCO=0.95
16305      RECICO=DEFRCO
16306C
16307CCCCC THE FOLLOWING SECTION WAS ADDED    AUGUST 1997
16308C
16309C               *************************************************
16310C               **  TREAT THE RECIPE DEGREE              <VAL> **
16311C               *************************************************
16312C
16313      DEFRDG=1.0
16314      RECIDG=DEFRDG
16315C
16316CCCCC THE FOLLOWING SECTION WAS ADDED    AUGUST 1997
16317C
16318C               *************************************************
16319C               **  TREAT THE RECIPE FACTORS             <VAL> **
16320C               *************************************************
16321C
16322      DEFRFA=0.
16323      RECIFA=DEFRFA
16324C
16325CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL 1998
16326C
16327C               *************************************************
16328C               **  TREAT THE RECIPE FACTORS             <VAL> **
16329C               *************************************************
16330C
16331      DEFRFF=0.
16332      RECIFF=DEFRFF
16333C
16334CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 1997
16335C
16336C               *************************************************
16337C               **  TREAT THE RECIPE SIMCOV REPLICATES   <VAL> **
16338C               *************************************************
16339C
16340      IDEFR7=10000
16341      IRECR1=IDEFR7
16342C
16343CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 1997
16344C
16345C               *************************************************
16346C               **  TREAT THE RECIPE SIMPVT REPLICATES   <VAL> **
16347C               *************************************************
16348C
16349      IDEFR8=10000
16350      IRECR2=IDEFR8
16351C
16352CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 1997
16353C
16354C               *************************************************
16355C               **  TREAT THE RECIPE CORRELATIONS        <VAL> **
16356C               *************************************************
16357C
16358      IDEFR9=11
16359      IRECC1=IDEFR9
16360C
16361CCCCC THE FOLLOWING SECTION WAS ADDED    MAY 1998
16362C
16363C               *******************************************
16364C               **  TREAT THE SET KAPLAN-MEIER           **
16365C               **  <RELI/CDF >    CASE                  **
16366C               *******************************************
16367C
16368      IKAPSW='RELI'
16369C
16370CCCCC THE FOLLOWING SECTION WAS ADDED    MAY 1998
16371C
16372C               *******************************************
16373C               **  TREAT THE SET CENSORING TYPE         **
16374C               **  <1/2 >    CASE                       **
16375C               *******************************************
16376C
16377      ICENTY='NONE'
16378C
16379CCCCC THE FOLLOWING SECTION WAS ADDED    JUNE 1998
16380C
16381C               *******************************************
16382C               **  TREAT THE SET MATRIX SCALE           **
16383C               **  <NONE/SD/RANGE/Z-SCORE>  CASE        **
16384C               *******************************************
16385C
16386      IMATSC='NONE'
16387C
16388CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 1998
16389C
16390C               *******************************************
16391C               **  TREAT THE SET PERCENT POINT PLOT     **
16392C               **  <BINNED/UNBINNED/INTERPOLATED> CASE  **
16393C               *******************************************
16394C
16395      IPPTBI='BINN'
16396C
16397CCCCC THE FOLLOWING SECTION WAS ADDED    FEBRUARY 2012
16398C
16399C               *******************************************
16400C               **  TREAT THE SET PIE CHART              **
16401C               **  <BINNED/UNBINNED/INTERPOLATED> CASE  **
16402C               *******************************************
16403C
16404      IPIEBI='BINN'
16405C
16406CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 1998
16407C
16408C               *******************************************
16409C               **  TREAT THE SET QUANTILE-QUANTILE PLOT **
16410C               **  <BINNED/UNBINNED/INTERPOLATED> CASE  **
16411C               *******************************************
16412C
16413      IQQPBI='BINN'
16414C
16415CCCCC THE FOLLOWING SECTION WAS ADDED    MARCH 1999
16416C
16417C               *******************************************
16418C               **  TREAT THE SET HANDBOOK URL           **
16419C               *******************************************
16420C
16421      NCHURL=41
16422      IHBURL(1:41)='https://www.itl.nist.gov/div898/handbook/'
16423C
16424CCCCC THE FOLLOWING SECTION WAS ADDED    JULY 1999
16425C
16426C               *******************************************
16427C               **  TREAT THE SET AUTOCORRELATION BAND   **
16428C               **  <WHITE NOISE/BOX-JENKINS>      CASE  **
16429C               *******************************************
16430C
16431      IAUTCP='WHIT'
16432C
16433CCCCC THE FOLLOWING SECTION WAS ADDED    FEBRUARY 2003
16434C
16435C               *******************************************
16436C               **  TREAT THE SET AUTOCORRELATION LAG    **
16437C               **  ZERO <ON/OFF>                  CASE  **
16438C               *******************************************
16439C
16440      IAUTL0='ON'
16441C
16442CCCCC THE FOLLOWING SECTION WAS ADDED    MARCH 2003
16443C
16444C               *******************************************
16445C               **  TREAT THE SET PARALLEL COORDINATES   **
16446C               **  STANDARDIZE <NONE/USCORE/ZSCORE> CASE**
16447C               *******************************************
16448C
16449      IPCCST='USCO'
16450C
16451CCCCC THE FOLLOWING SECTION WAS ADDED    MARCH 2003
16452C
16453C               *******************************************
16454C               **  TREAT THE SET BOOTSTRAP GROUPS       **
16455C               **  <INDEPENDENT/DEPENDENT>   CASE       **
16456C               *******************************************
16457C
16458      IBOOGR='INDE'
16459C
16460CCCCC THE FOLLOWING SECTION WAS ADDED    MAY 2003
16461C
16462C               *******************************************
16463C               **  TREAT THE SET MULTIVARIATE NORMAL    **
16464C               **  <SADMVN/RANMVN/KROMVN/SPHMVN>  CASE  **
16465C               *******************************************
16466C
16467      IMVNTY='SADM'
16468C
16469CCCCC THE FOLLOWING SECTION WAS ADDED    MARCH 2002
16470C
16471C               *******************************************
16472C               **  TREAT THE SET BOX PLOT WIDTH         **
16473C               **  <VARIABLE/FIXED>               CASE  **
16474C               *******************************************
16475C
16476      IBXPWI='VARI'
16477C
16478CCCCC THE FOLLOWING SECTION WAS ADDED    MARCH 2002
16479C
16480C               *******************************************
16481C               **  TREAT THE SET 4-PLOT MULTIPLOT       **
16482C               **  <ON/OFF>                       CASE  **
16483C               *******************************************
16484C
16485      I4PLMC='OFF'
16486C
16487CCCCC THE FOLLOWING SECTION WAS ADDED    MARCH 2002
16488C
16489C               *******************************************
16490C               **  TREAT THE SET 6-PLOT MULTIPLOT       **
16491C               **  <ON/OFF>                       CASE  **
16492C               *******************************************
16493C
16494      I6PLMC='OFF'
16495C
16496CCCCC THE FOLLOWING SECTION WAS ADDED    MAY 2002
16497C
16498C               *******************************************
16499C               **  TREAT THE SET RANDOM NUMBER GENERATOR**
16500C               **  <DATAPLOT/BLUE/RUNIF>          CASE  **
16501C               *******************************************
16502C
16503C     2018/05: CHANGE THE DEFAULT GENERATOR TO FIBONACCI-CONGRUENTIAL
16504CCCCC IRANAL='FIBO'
16505      IRANAL='FIBC'
16506C
16507CCCCC THE FOLLOWING SECTION WAS ADDED    JANUARY 2000
16508C
16509C               **************************************************
16510C               **  TREAT THE SET CROSS TABULATE PLOT DIMENSION **
16511C               **  <1/2>                          CASE         **
16512C               **************************************************
16513C
16514      ICTBDI='1'
16515C
16516CCCCC THE FOLLOWING SECTION WAS ADDED    JUNE 2016
16517C
16518C               **************************************************
16519C               **  TREAT THE SET VARIABLE LABEL EXPAND         **
16520C               **                <ON/OFF>         CASE         **
16521C               **************************************************
16522C
16523      IVNMEX='ON'
16524C
16525CCCCC THE FOLLOWING SECTION WAS ADDED    NOVEMBER 1999
16526C
16527C               *******************************************
16528C               **  TREAT THE SET PARAMETER EXPANSION    **
16529C               **  <NUMERIC/EXPONENTIAL>          CASE  **
16530C               *******************************************
16531C
16532      IEXPPA='NUME'
16533C
16534CCCCC THE FOLLOWING SECTION WAS ADDED    JANUARY 2000
16535C
16536C               *******************************************
16537C               **  TREAT THE SET SORT DIRECTION         **
16538C               **  <ASCENDING/DESCENDING>         CASE  **
16539C               *******************************************
16540C
16541      ISORDI='ASCE'
16542C
16543CCCCC THE FOLLOWING SECTION WAS ADDED    FEBRUARY 2000
16544C
16545C               ************************************************
16546C               **  TREAT THE SET DEX CONTOUR PLOT DIRECTION  **
16547C               **  <MINIMUMUN/MAXIMUM>             CASE      **
16548C               ************************************************
16549C
16550      IDCPDI='MAXI'
16551C
16552CCCCC THE FOLLOWING SECTION WAS ADDED    OCTOBER 2000
16553C
16554C               ****************************************************
16555C               **  TREAT THE SET MANDEL PAULE <MODIFIED/REGULAR> **
16556C               ****************************************************
16557C
16558      IMANPA='REGU'
16559C
16560CCCCC THE FOLLOWING SECTION WAS ADDED    MARCH 2001
16561C
16562C               ********************************************************
16563C               **  TREAT THE SET LOCATION STATISTIC                  **
16564C               **                <MEAN/MEDIAN/ MIDMEAN/TRIMMED MEAN> **
16565C               ********************************************************
16566C
16567      ISTALO='MEAN'
16568C
16569CCCCC THE FOLLOWING SECTION WAS ADDED    MARCH 2001
16570C
16571C               ****************************************************
16572C               **  TREAT THE SET SCALE    STATISTIC <SD/AAD/MAD> **
16573C               ****************************************************
16574C
16575      ISTASC='SD  '
16576C
16577CCCCC THE FOLLOWING SECTION WAS ADDED    MARCH 2001
16578C
16579C               ****************************************************
16580C               **  TREAT THE SET SUPERSCRIPT HORI SCALE <SIZE>   **
16581C               ****************************************************
16582C
16583      PSUPXS=0.5
16584C
16585CCCCC THE FOLLOWING SECTION WAS ADDED    MARCH 2001
16586C
16587C               ****************************************************
16588C               **  TREAT THE SET SUPERSCRIPT VERT SCALE <SIZE>   **
16589C               ****************************************************
16590C
16591      PSUPYS=0.5
16592C
16593CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL 2001
16594C
16595C               ****************************************************
16596C               **  TREAT THE SET ORTHOGONAL DISTANCE TRUST       **
16597C               **        REGION RADIUS  <VAL>                    **
16598C               ****************************************************
16599C
16600      PODRTF=-1.0
16601C
16602CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL 2001
16603C
16604C               ****************************************************
16605C               **  TREAT THE SET ORTHOGONAL DISTANCE STOP        **
16606C               **        TOLERANCE  <VAL>                        **
16607C               ****************************************************
16608C
16609      PODRST=-1.0
16610C
16611CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL 2001
16612C
16613C               ****************************************************
16614C               **  TREAT THE SET ORTHOGONAL DISTANCE             **
16615C               **        PARAMETER TOLERANCE  <VAL>              **
16616C               ****************************************************
16617C
16618      PODRPT=-1.0
16619C
16620CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL 2001
16621C
16622C               ****************************************************
16623C               **  TREAT THE SET ORTHOGONAL DISTANCE             **
16624C               **        PRINT OPTION <DEFAULT/FULL>             **
16625C               ****************************************************
16626C
16627      IODRPO='DEFA'
16628C
16629CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL 2001
16630C
16631C               ****************************************************
16632C               **  TREAT THE ORTHOGONAL DISTANCE DELTA VARIABLES **
16633C               ****************************************************
16634C
16635      DO7993I=1,20
16636        IODRD1(I)='OFF '
16637        IODRD2(I)='    '
16638        IODRD3(I)='OFF '
16639        IODRD4(I)='    '
16640        IODRE1(I)='ON  '
16641        IODRE2(I)='    '
16642        IWEIN1(I)='OFF '
16643        IWEIN2(I)='    '
16644 7993 CONTINUE
16645C
16646CCCCC THE FOLLOWING SECTION WAS ADDED    JULY 2001
16647C
16648C               ****************************************************
16649C               **  TREAT THE KERNEL DENSITY OPTIONS:             **
16650C               **        KERNEL DENSITY WINDOW  <VALUE>          **
16651C               **        KERNEL DENSITY POINTS  <VALUE>          **
16652C               **        KERNEL DENSITY TYPE    <FUNC>           **
16653C               ****************************************************
16654C
16655      IDEFKF='GAUS'
16656      IKDETY=IDEFKF
16657      IDEFKN=256
16658      IKDENP=IDEFKN
16659      DEFKWI=CPUMIN
16660      PKDEWI=DEFKWI
16661      IKDEPF='PDF'
16662      IKDERN=0
16663C
16664CCCCC THE FOLLOWING SECTION WAS ADDED    FEBRUARY 2000
16665C
16666C               ************************************************
16667C               **  TREAT THE SET DEX CONTOUR PLOT MODEL      **
16668C               **  <LINEAR/QUADRATIC>              CASE      **
16669C               ************************************************
16670C
16671      IDCPFI='LINE'
16672C
16673CCCCC THE FOLLOWING SECTION WAS ADDED    JUNE 2002
16674C
16675C               ************************************************
16676C               **  TREAT THE ICAPTY SWITCH                   **
16677C               ************************************************
16678C
16679      ICAPTY='TEXT'
16680C
16681CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 1999
16682C
16683C               ***********************************************
16684C               **  TREAT THE SET SCATTER PLOT MATRIX LABELS **
16685C               **  <ON/OFF>                           CASE  **
16686C               ***********************************************
16687C
16688      ISPMLA='ON'
16689C
16690CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 1999
16691C
16692C               ***********************************************
16693C               **  TREAT THE SET SCATTER PLOT MATRIX DIAGONAL*
16694C               **        <ON/OFF>                     CASE  **
16695C               ***********************************************
16696C
16697      ISPMDI='BLAN'
16698C
16699CCCCC THE FOLLOWING SECTION WAS ADDED    MARCH 2015
16700C
16701C               ***********************************************
16702C               **  TREAT THE SET SCATTER PLOT MATRIX SHADED **
16703C               **        DIAGONAL <ON/OFF>     CASE         **
16704C               ***********************************************
16705C
16706      ISPMDS='OFF'
16707C
16708CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 1999
16709C
16710C               ***********************************************
16711C               **  TREAT THE SET SCATTER PLOT MATRIX FIT    **
16712C               **  <NONE/LOWESS/LINEAR/QUADRATIC>     CASE  **
16713C               ***********************************************
16714C
16715      ISPMFI='NONE'
16716C
16717CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 1999
16718C
16719C               *******************************************************
16720C               **  TREAT THE SET SCATTER PLOT MATRIX LOWER DIAGONAL **
16721C               **  <ON/OFF>                           CASE          **
16722C               *******************************************************
16723C
16724      ISPMLD='ON'
16725C
16726CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 1999
16727C
16728C               *******************************************************
16729C               **  TREAT THE SET SCATTER PLOT MATRIX TAG            **
16730C               **  <ON/OFF>                           CASE          **
16731C               *******************************************************
16732C
16733      ISPMTA='OFF'
16734C
16735CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 1999
16736C
16737C               *******************************************************
16738C               **  TREAT THE SET SCATTER PLOT MATRIX PLOT TYPE      **
16739C               **  <PLOT/QQPLOT/BIHIST>               CASE          **
16740C               *******************************************************
16741C
16742      ISPMPT='PLOT'
16743C
16744CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 1999
16745C
16746C               *******************************************************
16747C               **  TREAT THE SET SCATTER PLOT MATRIX FRAME          **
16748C               **  <DEFAULT/USER>                     CASE          **
16749C               *******************************************************
16750C
16751      ISPMFR='DEFA'
16752C
16753CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 1999
16754C
16755C               *******************************************************
16756C               **  TREAT THE SET SCATTER PLOT MATRIX X AXIS         **
16757C               **  <LEFT/RIGHT/ALTERNATE>             CASE          **
16758C               *******************************************************
16759C
16760      ISPMXA='ALTE'
16761C
16762CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 1999
16763C
16764C               *******************************************************
16765C               **  TREAT THE SET SCATTER PLOT MATRIX Y AXIS         **
16766C               **  <LEFT/RIGHT/ALTERNATE>             CASE          **
16767C               *******************************************************
16768C
16769      ISPMYA='ALTE'
16770C
16771CCCCC THE FOLLOWING SECTION WAS ADDED    FEBRUARY 2018
16772C
16773C               *******************************************************
16774C               **  TREAT THE SET SCATTER PLOT MATRIX XTIC           **
16775C               **  <ON/OFF>                           CASE          **
16776C               *******************************************************
16777C
16778      ISPMXT='ON'
16779C
16780CCCCC THE FOLLOWING SECTION WAS ADDED    FEBRUARY 2018
16781C
16782C               *******************************************************
16783C               **  TREAT THE SET SCATTER PLOT MATRIX XTIC LABEL     **
16784C               **  <ON/OFF>                           CASE          **
16785C               *******************************************************
16786C
16787      ISPMXL='ON'
16788C
16789CCCCC THE FOLLOWING SECTION WAS ADDED    FEBRUARY 2018
16790C
16791C               *******************************************************
16792C               **  TREAT THE SET SCATTER PLOT MATRIX YTIC           **
16793C               **  <ON/OFF>                           CASE          **
16794C               *******************************************************
16795C
16796      ISPMYT='ON'
16797C
16798CCCCC THE FOLLOWING SECTION WAS ADDED    FEBRUARY 2018
16799C
16800C               *******************************************************
16801C               **  TREAT THE SET SCATTER PLOT MATRIX YTIC LABEL     **
16802C               **  <ON/OFF>                           CASE          **
16803C               *******************************************************
16804C
16805      ISPMYL='ON'
16806C
16807CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 1999
16808C
16809C               *******************************************************
16810C               **  TREAT THE SET SCATTER PLOT MATRIX STATISTIC TYPE **
16811C               **  <XXXX>                             CASE          **
16812C               *******************************************************
16813C
16814      ISPMST='MEAN'
16815      ISPMS2='    '
16816      ISPMS3='    '
16817      ISPMS4='    '
16818C
16819CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 1999
16820C
16821C               *******************************************************
16822C               **  TREAT THE SET SCATTER PLOT MATRIX LIMITS         **
16823C               **  <XXXX>                             CASE          **
16824C               *******************************************************
16825C
16826      DO8001I=1,25
16827        PSPLLL(I)=CPUMIN
16828        PSPLUL(I)=CPUMIN
16829        PSPLSL(I)=CPUMIN
16830        PSPLSU(I)=CPUMIN
16831 8001 CONTINUE
16832C
16833CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 1999
16834C
16835C               *******************************************************
16836C               **  TREAT THE SET MATRIX PLOT  TIC LABEL DISPLACEMENT**
16837C               **  <XXXX>                             CASE          **
16838C               *******************************************************
16839C
16840      PSPMTD=CPUMIN
16841      ISPMTD='NORM'
16842C
16843CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 1999
16844C
16845C               ***********************************************
16846C               **  TREAT THE SET SCATTER PLOT MATRIX CORRELAT*
16847C               **  <ON/OFF>                           CASE  **
16848C               ***********************************************
16849C
16850      ISPMCC='OFF'
16851C
16852CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 1999
16853C
16854C               ***********************************************
16855C               **  TREAT THE SET SCATTER PLOT MATRIX X2LABEL *
16856C               **  CASE  <CORR/....>                        **
16857C               ***********************************************
16858C
16859      ISPX2L='OFF'
16860      ISPX2P='DEFAULT'
16861      ISPX2S='DEFAULT'
16862C
16863CCCCC THE FOLLOWING SECTION WAS ADDED    MARCH 2015
16864C
16865C               ***********************************************
16866C               **  TREAT THE SET SCATTER PLOT MATRIX X1LABEL**
16867C               **  CASE <DEFAULT/FILLIBEN>                  **
16868C               ***********************************************
16869C
16870      ISPX1L='DEFA'
16871C
16872CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 1999
16873C
16874C               *******************************************************
16875C               **  TREAT THE SET CONDITIONING PLOT LABEL            **
16876C               **  <ON/OFF>                           CASE          **
16877C               *******************************************************
16878C
16879      ICPLLA='ON'
16880C
16881CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 1999
16882C
16883C               *******************************************************
16884C               **  TREAT THE SET CONDITIONING PLOT TAG              **
16885C               **  <ON/OFF>                           CASE          **
16886C               *******************************************************
16887C
16888      ICPLTA='OFF'
16889C
16890CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 1999
16891C
16892C               *******************************************************
16893C               **  TREAT THE SET CONDITIONING PLOT PLOT TYPE        **
16894C               **  <PLOT/HIST/PERC/RUNS/BOXN>         CASE          **
16895C               *******************************************************
16896C
16897      ICPLPT='PLOT'
16898C
16899CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 1999
16900C
16901C               *******************************************************
16902C               **  TREAT THE SET CONDITIONING PLOT FIT              **
16903C               **  <NONE/LOWESS/LINEAR/SMOOTH>        CASE          **
16904C               *******************************************************
16905C
16906      ICPLFI='NONE'
16907C
16908CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 1999
16909C
16910C               *******************************************************
16911C               **  TREAT THE SET CONDITIONING PLOT FRAME            **
16912C               **  <DEFAULT/USER>                     CASE          **
16913C               *******************************************************
16914C
16915      ICPLFR='DEFA'
16916C
16917CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 1999
16918C
16919C               *******************************************************
16920C               **  TREAT THE SET CONDITIONING PLOT MATRIX X AXIS    **
16921C               **  <LEFT/RIGHT/ALTERNATE>             CASE          **
16922C               *******************************************************
16923C
16924      ICPLXA='ALTE'
16925C
16926CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 1999
16927C
16928C               *******************************************************
16929C               **  TREAT THE SET CONDITIONING  PLOT MATRIX Y AXIS   **
16930C               **  <LEFT/RIGHT/ALTERNATE>             CASE          **
16931C               *******************************************************
16932C
16933      ICPLYA='ALTE'
16934C
16935CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 1999
16936C
16937C               *******************************************************
16938C               **  TREAT THE SET CONDITIONING PLOT PRE-SORT         **
16939C               **  <ON/OFF>                           CASE          **
16940C               *******************************************************
16941C
16942CCCCC THIS OPTION WAS REMOVED.
16943CCCCC ICPLPS='ON'
16944C
16945CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 1999
16946C
16947C               *******************************************************
16948C               **  TREAT THE SET CONDITIONING PLOT  STATISTIC TYPE  **
16949C               **  <XXXX>                             CASE          **
16950C               *******************************************************
16951C
16952      ICPLST='MEAN'
16953      ICPLS2='    '
16954      ICPLS3='    '
16955      ICPLS4='    '
16956C
16957CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 1999
16958C
16959C               *******************************************************
16960C               **  TREAT THE SET CONDITION    PLOT  NAME OF         **
16961C               **  PROBABILITY PLOT                   CASE          **
16962C               *******************************************************
16963C
16964      ICPLP1='    '
16965      ICPLP2='    '
16966      ICPLP3='    '
16967      ICPLP4='    '
16968      ICPLP5='    '
16969C
16970CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 1999
16971C
16972C               *******************************************************
16973C               **  TREAT THE SET CONDITION    PLOT  NAME OF         **
16974C               **  PPCC        PLOT                   CASE          **
16975C               *******************************************************
16976C
16977      ICPLC1='    '
16978      IcPLC2='    '
16979      ICPLC3='    '
16980      ICPLC4='    '
16981      ICPLC5='    '
16982C
16983CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 1999
16984C
16985C               *******************************************************
16986C               **  TREAT THE SET CONDITION PLOT CORRELATION         **
16987C               **  <ON/OFF>                           CASE          **
16988C               *******************************************************
16989C
16990      ICPLCC='OFF'
16991C
16992CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 1999
16993C
16994C               ***********************************************
16995C               **  TREAT THE SET CONDITION PLOT X2LABEL     **
16996C               **  <CORR/....>                        CASE  **
16997C               ***********************************************
16998C
16999      ICPX2L='OFF'
17000C
17001C
17002CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 1999
17003C
17004C               *******************************************************
17005C               **  TREAT THE SET CONDITION PLOT  RESPONSE VARIABLES **
17006C               **  <XXXX>                             CASE          **
17007C               *******************************************************
17008C
17009      PCPLRV=1.0
17010C
17011CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 1999
17012C
17013C               *******************************************************
17014C               **  TREAT THE SET CONDIT PLOT  TIC LABEL DISPLACEMENT**
17015C               **  <XXXX>                             CASE          **
17016C               *******************************************************
17017C
17018      PCPLTD=CPUMIN
17019      ICPLTD='NORM'
17020C
17021CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 1999
17022C
17023C               *******************************************************
17024C               **  TREAT THE SET CONDITION PLOT  TAG      VARIABLES **
17025C               **  <XXXX>                             CASE          **
17026C               *******************************************************
17027C
17028      PCPLTV=1.0
17029C
17030CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 1999
17031C
17032C               *******************************************************
17033C               **  TREAT THE SET CONDITION PLOT  LIMITS             **
17034C               **  <XXXX>                             CASE          **
17035C               *******************************************************
17036C
17037      DO8013I=1,25
17038        PCPXLL(I)=CPUMIN
17039        PCPXUL(I)=CPUMIN
17040        PCPYLL(I)=CPUMIN
17041        PCPYUL(I)=CPUMIN
17042 8013 CONTINUE
17043C
17044C
17045CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 1999
17046C
17047C               *******************************************************
17048C               **  TREAT THE SET FACTOR       PLOT LABEL            **
17049C               **  <ON/OFF>                           CASE          **
17050C               *******************************************************
17051C
17052      IFPLLA='ON'
17053C
17054CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 1999
17055C
17056C               *******************************************************
17057C               **  TREAT THE SET FACTOR  PLOT CORRELATION           **
17058C               **  <ON/OFF>                           CASE          **
17059C               *******************************************************
17060C
17061      IFPLCC='OFF'
17062C
17063CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 1999
17064C
17065C               *******************************************************
17066C               **  TREAT THE SET FACTOR       PLOT TAG              **
17067C               **  <ON/OFF>                           CASE          **
17068C               *******************************************************
17069C
17070      IFPLTA='OFF'
17071C
17072CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 1999
17073C
17074C               *******************************************************
17075C               **  TREAT THE SET FACTOR       PLOT PLOT TYPE        **
17076C               **  <PLOT/HIST/PERC/RUNS/BOXN>         CASE          **
17077C               *******************************************************
17078C
17079      IFPLPT='PLOT'
17080C
17081CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 1999
17082C
17083C               *******************************************************
17084C               **  TREAT THE SET FACTOR       PLOT FIT              **
17085C               **  <NONE/LOWESS/LINEAR/SMOOTH>        CASE          **
17086C               *******************************************************
17087C
17088      IFPLFI='NONE'
17089C
17090CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 1999
17091C
17092C               *******************************************************
17093C               **  TREAT THE SET FACTOR       PLOT FRAME            **
17094C               **  <DEFAULT/USER>                     CASE          **
17095C               *******************************************************
17096C
17097      IFPLFR='USER'
17098C
17099CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 1999
17100C
17101C               *******************************************************
17102C               **  TREAT THE SET FACTOR  PLOT MATRIX X AXIS         **
17103C               **  <LEFT/RIGHT/ALTERNATE>             CASE          **
17104C               *******************************************************
17105C
17106      IFPLXA='ALTE'
17107C
17108CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 1999
17109C
17110C               *******************************************************
17111C               **  TREAT THE SET FACTOR  PLOT MATRIX Y AXIS         **
17112C               **  <LEFT/RIGHT/ALTERNATE>             CASE          **
17113C               *******************************************************
17114C
17115      IFPLYA='ALTE'
17116C
17117CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 1999
17118C
17119C               *******************************************************
17120C               **  TREAT THE SET FACTOR       PLOT PRE-SORT         **
17121C               **  <ON/OFF>                           CASE          **
17122C               *******************************************************
17123C
17124CCCCC THIS OPTION WAS REMOVED.
17125CCCCC IFPLPS='ON'
17126C
17127CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 1999
17128C
17129C               *******************************************************
17130C               **  TREAT THE SET FACTOR       PLOT  STATISTIC TYPE  **
17131C               **  <XXXX>                             CASE          **
17132C               *******************************************************
17133C
17134      IFPLST='MEAN'
17135      IFPLS2='    '
17136      IFPLS3='    '
17137      IFPLS4='    '
17138C
17139CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 1999
17140C
17141C               *******************************************************
17142C               **  TREAT THE SET FACTOR    PLOT  RESPONSE VARIABLES **
17143C               **  <XXXX>                             CASE          **
17144C               *******************************************************
17145C
17146      PFPLRV=1.0
17147C
17148CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 1999
17149C
17150C               *******************************************************
17151C               **  TREAT THE SET FACTOR PLOT  TIC LABEL DISPLACEMENT**
17152C               **  <XXXX>                             CASE          **
17153C               *******************************************************
17154C
17155      PFPLTD=CPUMIN
17156      IFPLTD='NORM'
17157C
17158CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 1999
17159C
17160C               *******************************************************
17161C               **  TREAT THE SET FACTOR    PLOT  LIMITS             **
17162C               **  <XXXX>                             CASE          **
17163C               *******************************************************
17164C
17165      DO8003I=1,25
17166        PFPXLL(I)=CPUMIN
17167        PFPXUL(I)=CPUMIN
17168        PFPYLL(I)=CPUMIN
17169        PFPYUL(I)=CPUMIN
17170 8003 CONTINUE
17171C
17172CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 1999
17173C
17174C               *******************************************************
17175C               **  TREAT THE SET FACTOR       PLOT  CORRELATION     **
17176C               **  <ON/OFF>                           CASE          **
17177C               *******************************************************
17178C
17179      IFPLCC='OFF'
17180C
17181CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 1999
17182C
17183C               ***********************************************
17184C               **  TREAT THE SET FACTOR    PLOT X2LABEL     **
17185C               **  <CORR/....>                        CASE  **
17186C               ***********************************************
17187C
17188      IFPX2L='OFF'
17189C
17190CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 1999
17191C
17192C               *******************************************************
17193C               **  TREAT THE SET FACTOR       PLOT  NAME OF         **
17194C               **  PROBABILITY PLOT                   CASE          **
17195C               *******************************************************
17196C
17197      IFPLP1='    '
17198      IFPLP2='    '
17199      IFPLP3='    '
17200      IFPLP4='    '
17201      IFPLP5='    '
17202C
17203CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 1999
17204C
17205C               *******************************************************
17206C               **  TREAT THE SET FACTOR       PLOT  NAME OF         **
17207C               **  PPCC        PLOT                   CASE          **
17208C               *******************************************************
17209C
17210      IFPLC1='    '
17211      IFPLC2='    '
17212      IFPLC3='    '
17213      IFPLC4='    '
17214      IFPLC5='    '
17215C
17216CCCCC THE FOLLOWING SECTION WAS ADDED    JUNE 2002
17217C
17218C               ***********************************************
17219C               **  TREAT THE SET NUMBER OF CP <VALUE>  CASE **
17220C               ***********************************************
17221C
17222      INUMCP=10
17223C
17224CCCCC THE FOLLOWING SECTION WAS ADDED    JUNE 2002
17225C
17226C               ***********************************************
17227C               **  TREAT THE SET CAPTURE LINES <VALUE> CASE **
17228C               ***********************************************
17229C
17230      DO8110I=1,MAXCLI
17231      ICAPLI(1)=25
17232 8110 CONTINUE
17233C
17234CCCCC THE FOLLOWING SECTION WAS ADDED    JUNE 2002
17235C
17236C               ***********************************************
17237C               **  TREAT THE SET CAPTURE BOX <ON/OFF>  CASE **
17238C               ***********************************************
17239C
17240      ICAPBX='OFF'
17241C
17242CCCCC THE FOLLOWING SECTION WAS ADDED    JUNE 2002
17243C
17244C               **************************************************
17245C               **  TREAT THE SET CAPTURE NUMBER <ON/OFF>  CASE **
17246C               **************************************************
17247C
17248      ICAPNM='OFF'
17249C
17250CCCCC THE FOLLOWING SECTION WAS ADDED    JULY 2002
17251C
17252C               **************************************************
17253C               **  TREAT THE SET QUANTILE METHOD <ORDER/HD/R8> **
17254C               **  CASE                                        **
17255C               **************************************************
17256C
17257      IQUAME='ORDE'
17258C
17259CCCCC THE FOLLOWING SECTION WAS ADDED    JULY 2002
17260C
17261C               **************************************************
17262C               **  TREAT THE SET QUANTILE STANDARD ERROR METHOD *
17263C               **  <MJ/KDEN>                                    *
17264C               **************************************************
17265C
17266      IQUASE='MJ'
17267C
17268CCCCC THE FOLLOWING SECTION WAS ADDED    JULY 2002
17269C
17270C               ********************************************************
17271C               **  TREAT THE SET COVARIANCE TYPE                      *
17272C               **  <DEFAULT/BIWEIGHT/WINSORIZED/RANK/PERCENTAGE BEND> *
17273C               ********************************************************
17274C
17275      ICOVTY='DEFA'
17276C
17277CCCCC THE FOLLOWING SECTION WAS ADDED    JULY 2002
17278C
17279C               **************************************************
17280C               **  TREAT THE SET CORRELATION TYPE               *
17281C               **  <DEFAULT/WINSORIZED/RANK>                    *
17282C               **************************************************
17283C
17284      ICORTY='DEFA'
17285C
17286CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 2016
17287C
17288C               **************************************************
17289C               **  TREAT THE SET CORRELATION ABSOLUTE VALUE     *
17290C               **  <ON/OFF>                                     *
17291C               **************************************************
17292C
17293      ICORAV='OFF'
17294C
17295CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 2016
17296C
17297C               **************************************************
17298C               **  TREAT THE SET CORRELATION PERCENTAGE VALUE   *
17299C               **  <ON/OFF>                                     *
17300C               **************************************************
17301C
17302      ICORPV='OFF'
17303C
17304CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 2016
17305C
17306C               **************************************************
17307C               **  TREAT THE SET CORRELATION DIGITS <VALUE>     *
17308C               **************************************************
17309C
17310      ICORDG=-1
17311C
17312CCCCC THE FOLLOWING SECTION WAS ADDED    OCTOBER 2016
17313C
17314C               **************************************************
17315C               **  TREAT THE SET PSVIEW FILE CLOSE <ON/OFF>     *
17316C               **************************************************
17317C
17318      IPSVCL='ON'
17319C
17320CCCCC THE FOLLOWING SECTION WAS ADDED    NOVEMBER 2016
17321C
17322C               *****************************************************
17323C               **  TREAT THE SET CAPTURE SCRIPT LOOP SUBSTITUTION  *
17324C               **                <ON/OFF>                          *
17325C               *****************************************************
17326C
17327      ICSCSB='ON'
17328C
17329CCCCC THE FOLLOWING SECTION WAS ADDED    DECEMBER 2016
17330C
17331C               *******************************************************
17332C               **  TREAT THE SET COEFFICENT OF VARIATION CONFIDENCE  *
17333C               **                LIMIT METHOD                        *
17334C               **                <VANGEL/MCKAY/MAXIMUM LIKELIHOOD>   *
17335C               *******************************************************
17336C
17337      ICVACI='VANG'
17338C
17339CCCCC THE FOLLOWING SECTION WAS ADDED    JANUARY 2017
17340C
17341C               *******************************************************
17342C               **  TREAT THE SET HYPHEN WORD SEPARATOR <ON/OFF>      *
17343C               *******************************************************
17344C
17345      IHYPSW='ON'
17346C
17347CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL 2018
17348C
17349C               *******************************************************
17350C               **  TREAT THE SET HYPHEN COMMAND LINE   <ON/OFF>      *
17351C               *******************************************************
17352C
17353      IHYPCL='ON'
17354C
17355CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL 2018
17356C
17357C               *******************************************************
17358C               **  TREAT THE SET COMMA COMMAND LINE   <ON/OFF>       *
17359C               *******************************************************
17360C
17361      ICOMCL='OFF'
17362C
17363CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL 2018
17364C
17365C               *******************************************************
17366C               **  TREAT THE SET EQUAL COMMAND LINE   <ON/OFF>       *
17367C               *******************************************************
17368C
17369      IEQUCL='ON'
17370C
17371CCCCC THE FOLLOWING SECTION WAS ADDED    MAY 2018
17372C
17373C               *******************************************************
17374C               **  TREAT THE SET GUENTHER CORRECTION  <ON/OFF>       *
17375C               *******************************************************
17376C
17377      ITOLGC='OFF'
17378C
17379CCCCC THE FOLLOWING SECTION WAS ADDED    MAY 2018
17380C
17381C               *******************************************************
17382C               **  TREAT THE SET TOLERANCE LIMITS METHOD            **
17383C               **                <HOWE/WALD>                        **
17384C               *******************************************************
17385C
17386      ITOLME='HOWE'
17387C
17388CCCCC THE FOLLOWING SECTION WAS ADDED    MAY 2018
17389C
17390C               *******************************************************
17391C               **  TREAT THE SET TOLERANCE LIMITS ONE SIDED METHOD  **
17392C               **                <HOWE/WALD>                        **
17393C               *******************************************************
17394C
17395      ITOLM2='DEFA'
17396C
17397CCCCC THE FOLLOWING SECTION WAS ADDED    MAY 2018
17398C
17399C               *******************************************************
17400C               **  TREAT THE SET TOLERANCE DEGREES OF FREEDOM       **
17401C               **                <VALUE>                            **
17402C               *******************************************************
17403C
17404      PTOLDF=CPUMIN
17405C
17406CCCCC THE FOLLOWING SECTION WAS ADDED    MAY 2018
17407C
17408C               *******************************************************
17409C               **  TREAT THE SET DISTRIBUTIONAL FIT TYPE            **
17410C               **                <TABLE/SCATTER>                    **
17411C               *******************************************************
17412C
17413      IDFITY='TABL'
17414C
17415C
17416CCCCC THE FOLLOWING SECTION WAS ADDED    MAY 2018
17417C
17418C               *******************************************************
17419C               **  TREAT THE SET DISTRIBUTIONAL FIT SORT            **
17420C               **                <OFF/AVERAGE RANK>                 **
17421C               *******************************************************
17422C
17423      IDFISO='OFF'
17424C
17425CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 2018
17426C
17427C               *******************************************************
17428C               **  TREAT THE SET WORD DELIMITER        <VALUE>       *
17429C               *******************************************************
17430C
17431      IWRDDL=' '
17432C
17433CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 2018
17434C
17435C               *******************************************************
17436C               **  TREAT THE SET COMMAND SUBSTITUTION  <ON/OFF>      *
17437C               *******************************************************
17438C
17439      ISUBSK='ON'
17440C
17441CCCCC THE FOLLOWING SECTION WAS ADDED    JANUARY 2019
17442C
17443C               *******************************************************
17444C               **  TREAT THE SET SUBSTITUTE FORMAT  <STRING>         *
17445C               *******************************************************
17446C
17447      ISUBFM='NULL'
17448C
17449CCCCC THE FOLLOWING SECTION WAS ADDED    FEBRUARY 2019
17450C
17451C               *******************************************************
17452C               **  TREAT THE SET CLIPBOARD RUN CLEAR   <ON/OFF>      *
17453C               *******************************************************
17454C
17455      ICLIRC='OFF'
17456C
17457CCCCC THE FOLLOWING SECTION WAS ADDED    FEBRUARY 2019
17458C
17459C               ****************************************************
17460C               **  TREAT THE SET TAB EXPAND <IVAL>   CASE        **
17461C               ****************************************************
17462C
17463      ITABNC=1
17464C
17465CCCCC THE FOLLOWING SECTION WAS ADDED    JANUARY 2017
17466C
17467C               *******************************************************
17468C               **  TREAT THE SET WELCH SATTERTHWAITE                 *
17469C               **                <VARIANCES/STANDARD DEVIATIONS>     *
17470C               *******************************************************
17471C
17472      IWSAUN='VARI'
17473C
17474CCCCC THE FOLLOWING SECTION WAS ADDED    MARCH 2017
17475C
17476C               *******************************************************
17477C               **  TREAT THE SET K MEANS INITIAL <RANDOM/DISTANCE>   *
17478C               *******************************************************
17479C
17480      IKMEIN='RAND'
17481C
17482CCCCC THE FOLLOWING SECTION WAS ADDED    MARCH 2017
17483C
17484C               *******************************************************
17485C               **  TREAT THE SET K MEANS SILHOUETTES <ON/OFF>        *
17486C               *******************************************************
17487C
17488      IKMESI='ON'
17489C
17490CCCCC THE FOLLOWING SECTION WAS ADDED    MARCH 2017
17491C
17492C               *******************************************************
17493C               **  TREAT THE SET K MEANS SCALE       <ON/OFF>        *
17494C               *******************************************************
17495C
17496CCCCC IKMESC='OFF'
17497      IKMESC='ON'
17498C
17499CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL 2017
17500C
17501C               *******************************************************
17502C               **  TREAT THE SET K MEANS  ROW LABELS <ON/OFF>       **
17503C               *******************************************************
17504C
17505      IKMERL='OFF'
17506C
17507CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL 2017
17508C
17509C               *******************************************************
17510C               **  TREAT THE SET NORMAL MIXTURE CLUSTER SCALE       **
17511C               **                <ON/OFF>                           **
17512C               *******************************************************
17513C
17514      INMCSC='ON'
17515C
17516CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL 2017
17517C
17518C               *******************************************************
17519C               **  TREAT THE SET NORMAL MIXTURE CLUSTER ROW LABELS  **
17520C               **                <ON/OFF>                           **
17521C               *******************************************************
17522C
17523      INMCRL='OFF'
17524C
17525CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL 2017
17526C
17527C               *******************************************************
17528C               **  TREAT THE SET NORMAL MIXTURE CLUSTER TITLE       **
17529C               **                <STRING>                           **
17530C               *******************************************************
17531C
17532      INMCTI='NULL'
17533C
17534CCCCC THE FOLLOWING SECTION WAS ADDED    AUGUST 2017
17535C
17536C               *******************************************************
17537C               **  TREAT THE SET K MEDIOID CLUSTER SCALE <ON/OFF>   **
17538C               *******************************************************
17539C
17540      IKMDSC='ON'
17541C
17542CCCCC THE FOLLOWING SECTION WAS ADDED    AUGUST 2017
17543C
17544C               *******************************************************
17545C               **  TREAT THE SET K MEDIOID CLUSTER DISTANCE         **
17546C               **                <EUCLIDEAN/MANHATTAN>              **
17547C               *******************************************************
17548C
17549      IKMDDI='MANH'
17550C
17551CCCCC THE FOLLOWING SECTION WAS ADDED    AUGUST 2017
17552C
17553C               ********************************************************
17554C               **  TREAT THE SET K MEDIOID CLUSTER PRINT <ALL/FINAL> **
17555C               ********************************************************
17556C
17557      IKMDPR='ALL'
17558C
17559CCCCC THE FOLLOWING SECTION WAS ADDED    AUGUST 2017
17560C
17561C               *******************************************************
17562C               **  TREAT THE SET K MEDIOID CLUSTER RANDOM NUMBER    **
17563C               **                GENERATOR <DATAPLOT/ROUSSEUW>      **
17564C               *******************************************************
17565C
17566      IKMDRN='DATA'
17567C
17568CCCCC THE FOLLOWING SECTION WAS ADDED    AUGUST 2017
17569C
17570C               *******************************************************
17571C               **  TREAT THE SET K MEDIOID CLUSTER TYPE             **
17572C               **                <MEASUREMENTS/DISSIMILARITY>       **
17573C               *******************************************************
17574C
17575      IKMDTY='DISS'
17576C
17577CCCCC THE FOLLOWING SECTION WAS ADDED    AUGUST 2017
17578C
17579C               *******************************************************
17580C               **  TREAT THE SET K MEDIOID NUMBER OF SAMPLES <VALUE> *
17581C               *******************************************************
17582C
17583      IKMDNS=-1
17584C
17585CCCCC THE FOLLOWING SECTION WAS ADDED    AUGUST 2017
17586C
17587C               *******************************************************
17588C               **  TREAT THE SET K MEDIOID SAMPLE SIZE <VALUE>      **
17589C               *******************************************************
17590C
17591      IKMDSS=-1
17592C
17593CCCCC THE FOLLOWING SECTION WAS ADDED    AUGUST 2017
17594C
17595C               *******************************************************
17596C               **  TREAT THE SET K MEDIOID PAM MAXIMUM SIZE <VALUE> **
17597C               *******************************************************
17598C
17599      IKMDPN=100
17600C
17601CCCCC THE FOLLOWING SECTION WAS ADDED    AUGUST 2017
17602C
17603C               *******************************************************
17604C               **  TREAT THE SET AGNES     CLUSTER SCALE <ON/OFF>   **
17605C               *******************************************************
17606C
17607      IAGNSC='ON'
17608C
17609CCCCC THE FOLLOWING SECTION WAS ADDED    AUGUST 2017
17610C
17611C               *******************************************************
17612C               **  TREAT THE SET AGNES     CLUSTER DISTANCE         **
17613C               **                <EUCLIDEAN/MANHATTAN>              **
17614C               *******************************************************
17615C
17616      IAGNDI='MANH'
17617C
17618CCCCC THE FOLLOWING SECTION WAS ADDED    AUGUST 2017
17619C
17620C               ********************************************************
17621C               **  TREAT THE SET AGNES     CLUSTER PRINT <ALL/FINAL> **
17622C               ********************************************************
17623C
17624      IAGNPR='ALL'
17625C
17626CCCCC THE FOLLOWING SECTION WAS ADDED    AUGUST 2017
17627C
17628C               *******************************************************
17629C               **  TREAT THE SET AGNES CLUSTER TYPE                 **
17630C               **                <MEASUREMENT/DISSIMILARITY>        **
17631C               *******************************************************
17632C
17633      IAGNTY='DISS'
17634C
17635CCCCC THE FOLLOWING SECTION WAS ADDED    AUGUST 2017
17636C
17637C               *******************************************************
17638C               **  TREAT THE                                        **
17639C               **  SET AGNES CLUSTER METHOD  AVERAGE LINKAGE/       **
17640C               **      SINGLE LINKAGE/COMPLETE LINKAGE/WARD/        **
17641C               **      CENTROID/GOWER/WEIGHTED AVERAGE LINKAGE      **
17642C               *******************************************************
17643C
17644      IAGNME='AVER'
17645C
17646CCCCC THE FOLLOWING SECTION WAS ADDED    AUGUST 2017
17647C
17648C               *******************************************************
17649C               **  TREAT THE SET AGNES CLUSTER MAXIMUM SIZE <VALUE> **
17650C               *******************************************************
17651C
17652      IAGNMS=100
17653C
17654CCCCC THE FOLLOWING SECTION WAS ADDED    AUGUST 2017
17655C
17656C               *******************************************************
17657C               **  TREAT THE SET AGNES CLUSTER BANNER PLOT <ON/OFF> **
17658C               *******************************************************
17659C
17660      IAGNBA='OFF'
17661C
17662CCCCC THE FOLLOWING SECTION WAS ADDED    AUGUST 2017
17663C
17664C               *******************************************************
17665C               **  TREAT THE SET FANNY     CLUSTER SCALE <ON/OFF>   **
17666C               *******************************************************
17667C
17668      IFANSC='ON'
17669C
17670CCCCC THE FOLLOWING SECTION WAS ADDED    AUGUST 2017
17671C
17672C               *******************************************************
17673C               **  TREAT THE SET FANNY     CLUSTER DISTANCE         **
17674C               **                <EUCLIDEAN/MANHATTAN>              **
17675C               *******************************************************
17676C
17677      IFANDI='MANH'
17678C
17679CCCCC THE FOLLOWING SECTION WAS ADDED    AUGUST 2017
17680C
17681C               ********************************************************
17682C               **  TREAT THE SET FANNY     CLUSTER PRINT <ALL/FINAL> **
17683C               ********************************************************
17684C
17685      IFANPR='ALL'
17686C
17687CCCCC THE FOLLOWING SECTION WAS ADDED    AUGUST 2017
17688C
17689C               *******************************************************
17690C               **  TREAT THE SET FANNY CLUSTER TYPE                 **
17691C               **                <MEASUREMENT/DISSIMILARITY>        **
17692C               *******************************************************
17693C
17694      IFANTY='DISS'
17695C
17696CCCCC THE FOLLOWING SECTION WAS ADDED    AUGUST 2017
17697C
17698C               *******************************************************
17699C               **  TREAT THE SET FANNY CLUSTER MAXIMUM SIZE <VALUE> **
17700C               *******************************************************
17701C
17702      IFANMS=100
17703C
17704CCCCC THE FOLLOWING SECTION WAS ADDED    FEBRUARY 2017
17705C
17706C               *******************************************************
17707C               **  TREAT THE SET TAB ...                             *
17708C               *******************************************************
17709C
17710      DO3100II=1,10
17711        ITABCO(II)='NULL'
17712        ITABJU(II)='NULL'
17713        ITABFO(II)='NULL'
17714        ITABUN(II)='SCRE'
17715        ITABUV(II)='SCRE'
17716        PTABHP(II)=CPUMIN
17717        PTABVP(II)=CPUMIN
17718        PTABHE(II)=CPUMIN
17719        PTABWI(II)=CPUMIN
17720 3100 CONTINUE
17721C
17722CCCCC THE FOLLOWING SECTION WAS ADDED    JULY 2002
17723C
17724C               **************************************************
17725C               **  TREAT THE SET FILE NAME QUOTE                *
17726C               **  <ON/OFF>                                     *
17727C               **************************************************
17728C
17729      IFILQU='OFF'
17730C
17731CCCCC THE FOLLOWING SECTION WAS ADDED    JULY 2002
17732C
17733C               **************************************************
17734C               **  TREAT THE SET BOOTSTRAP FIT METHOD           *
17735C               **  <RESIDUALS/DATA>                             *
17736C               **************************************************
17737C
17738      IBOOME='RESI'
17739C
17740CCCCC THE FOLLOWING SECTION WAS ADDED    NOVEMBER 2002
17741C
17742C               **************************************************
17743C               **  TREAT THE SET QWIN SYSTEM <SYSTEMQQ/WINEXEC> *
17744C               **************************************************
17745C
17746      IQWNSY='SYST'
17747C
17748CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL 2018
17749C
17750C               *******************************************************
17751C               **  TREAT THE SET LINUX SYSTEM <SYSTEM/               *
17752C               **                              COMMAND LINE EXECUTE> *
17753C               *******************************************************
17754C
17755      ILINSY='SYST'
17756C
17757CCCCC THE FOLLOWING SECTION WAS ADDED    NOVEMBER 2002
17758C
17759C               **************************************************
17760C               **  TREAT THE SET GHOSTVIEW PRINTER <ON/OFF>     *
17761C               **************************************************
17762C
17763      IPRNGS='OFF'
17764C
17765CCCCC THE FOLLOWING SECTION WAS ADDED    JANUARY 2003
17766C
17767C               **************************************************
17768C               **  TREAT THE SET POSTSCRIPT BOUNDING BOX        *
17769C               **  <FIXED/FLOAT>                                *
17770C               **************************************************
17771C
17772      IPSTBB='FLOA'
17773C
17774CCCCC THE FOLLOWING SECTION WAS ADDED    JANUARY 2003
17775C
17776C               **************************************************
17777C               **  TREAT THE SET POSTSCRIPT CONVERT             *
17778C               **  <GHOSTSCRIPT/CONVERT>                        *
17779C               **  <JPEG/PDF/TIFF/PBM/PNG/PNM/PPM>              *
17780C               **************************************************
17781C
17782      IPSTD2='GHOS'
17783      IPSTDV='NULL'
17784C
17785CCCCC THE FOLLOWING SECTION WAS ADDED    NOVEMBER 2002
17786C
17787C               **************************************************
17788C               **  TREAT THE SET GHOSTVIEW PATH  <PATH>         *
17789C               **************************************************
17790C  FOR UNIX, "\" IS ESCAPE CHARACTER, SO DON'T INSERT THIS CHARACTER
17791C  DIRECTLY (CAN GET COMPILE ERRORS).
17792C
17793C  2015/11: GHOSTVIEW NOW IN PROGRAM FILES DIRECTORY
17794C
17795      IF(IHOST1.EQ.'IBM-')THEN
17796        CALL DPCONA(92,IBASLC)
17797        NCGSPA=39
17798        IGSVPA=' '
17799        IGSVPA(1:39)='C: Program Files (x86) GHOSTGUM GSVIEW '
17800        IGSVPA(3:3)=IBASLC
17801        IGSVPA(23:23)=IBASLC
17802        IGSVPA(32:32)=IBASLC
17803        IGSVPA(39:39)=IBASLC
17804      ELSE
17805        NCGSPA=0
17806        IGSVPA=' '
17807      ENDIF
17808C
17809CCCCC THE FOLLOWING SECTION WAS ADDED    JANUARY 2003
17810C
17811C               **************************************************
17812C               **  TREAT THE SET GHOSTSCRIPT PATH  <PATH>       *
17813C               **************************************************
17814C
17815C  FOR UNIX, "\" IS ESCAPE CHARACTER, SO DON'T INSERT THIS CHARACTER
17816C  DIRECTLY (CAN GET COMPILE ERRORS).
17817C
17818C  2015/11: CHANGE DEFAULT TO VERSION 9.10
17819C
17820      CALL DPCONA(92,IBASLC)
17821      IF(IHOST1.EQ.'IBM-')THEN
17822        NCGHPA=31
17823        IGSTPA='C: Program Files GS GS9.10 BIN '
17824        IGSTPA(3:3)=IBASLC
17825        IGSTPA(17:17)=IBASLC
17826        IGSTPA(20:20)=IBASLC
17827        IGSTPA(27:27)=IBASLC
17828        IGSTPA(31:31)=IBASLC
17829      ELSE
17830        IGSTPA=' '
17831        NCGHPA=0
17832      ENDIF
17833C
17834CCCCC THE FOLLOWING SECTION WAS ADDED    JANUARY 2019
17835C
17836C               **************************************************
17837C               **  TREAT THE SET PYTHON PATH <PATH>             *
17838C               **  TREAT THE SET PYTHON VERSION <2/3/DEFAULT>   *
17839C               **************************************************
17840C
17841      IPYTPA=' '
17842      NCPYTH=0
17843      IPYTVR='DEFA'
17844C
17845CCCCC THE FOLLOWING SECTION WAS ADDED    NOVEMBER 2019
17846C
17847C               **************************************************
17848C               **  TREAT THE SET R      PATH <PATH>             *
17849C               **************************************************
17850C
17851      IRRRPA=' '
17852      NCRPAT=0
17853C
17854CCCCC THE FOLLOWING SECTION WAS ADDED    MARCH 2019
17855C
17856C               **************************************************
17857C               **  TREAT THE SET EDITOR      <PATH>             *
17858C               **************************************************
17859C
17860      IEDITR='FED'
17861      NCEDIT=3
17862C
17863CCCCC THE FOLLOWING SECTION WAS ADDED    JANUARY 2019
17864C
17865C               **************************************************
17866C               **  TREAT THE SET STRING JUSTIFICATION CHARACTER *
17867C               **                <CHAR>                         *
17868C               **************************************************
17869C
17870      ISJUCH='SPAC'
17871C
17872CCCCC THE FOLLOWING SECTION WAS ADDED    JANUARY 2003
17873C
17874C               **************************************************
17875C               **  TREAT THE SET HTML HEADER FILE <FILE>        *
17876C               **************************************************
17877C
17878      IHTMHE='NULL'
17879      NCHTMH=-1
17880C
17881CCCCC THE FOLLOWING SECTION WAS ADDED    JULY 2016
17882C
17883C               **************************************************
17884C               **  TREAT THE SET WRITE HEADER FILE <FILE>      **
17885C               **************************************************
17886C
17887      IWRIHE='NULL'
17888      NCWRIH=-1
17889C
17890CCCCC THE FOLLOWING SECTION WAS ADDED    JANUARY 2003
17891C
17892C               **************************************************
17893C               **  TREAT THE SET HTML FOOTER FILE <FILE>        *
17894C               **************************************************
17895C
17896      IHTMFO='NULL'
17897      NCHTMF=-1
17898C
17899CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 2003
17900C
17901C               **************************************************
17902C               **  TREAT THE SET LATEX HEADER FILE <FILE>       *
17903C               **************************************************
17904C
17905      ILATHE='NULL'
17906      NCLATH=-1
17907C
17908CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 2003
17909C
17910C               **************************************************
17911C               **  TREAT THE SET LATEX FOOTER FILE <FILE>       *
17912C               **************************************************
17913C
17914      ILATFO='NULL'
17915      NCLATF=-1
17916C
17917CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 2003
17918C
17919C               **************************************************
17920C               **  TREAT THE SET TABLE BORDER <ON/OFF/RULE/COLS>*
17921C               **************************************************
17922C
17923      ITABBR='RULE'
17924C
17925CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 2003
17926C
17927C               **************************************************
17928C               **  TREAT THE SET TABLE SPACING <VALUE>          *
17929C               **************************************************
17930C
17931      ITABSP=0
17932C
17933CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 2003
17934C
17935C               **************************************************
17936C               **  TREAT THE SET TABLE WIDTH   <VALUE>          *
17937C               **************************************************
17938C
17939      ITABWD=0
17940C
17941CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 2003
17942C
17943C               **************************************************
17944C               **  TREAT THE SET TABLE HEIGHT   <VALUE>         *
17945C               **************************************************
17946C
17947      ITABHT=0
17948C
17949CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 2003
17950C
17951C               **************************************************
17952C               **  TREAT THE SET TABLE TITLE <VALUE>            *
17953C               **************************************************
17954C
17955      ITABTI=' '
17956      NCTABT=0
17957C
17958CCCCC THE FOLLOWING SECTION WAS ADDED    JULY 2010
17959C
17960C               **************************************************
17961C               **  TREAT THE SET TABLE HEADER <ON/OFF>          *
17962C               **************************************************
17963C
17964      ITABHD='ON'
17965C
17966CCCCC THE FOLLOWING SECTION WAS ADDED    JANUARY 2004
17967C
17968C               *****************************************************
17969C               **  TREAT THE SET READ VARIABLE LABEL <ON/OFF/ROW> **
17970C               *****************************************************
17971C
17972      IVARLA='OFF'
17973C
17974CCCCC THE FOLLOWING SECTION WAS ADDED    JANUARY 2004
17975C
17976C               *****************************************************
17977C               **  TREAT THE SET CONVERT CHARACTER                **
17978C               **         <NUMERIC/GROUP/IGNORE/CATEGORICAL>      **
17979C               *****************************************************
17980C
17981      IGRPAU='ERRO'
17982C
17983CCCCC THE FOLLOWING SECTION WAS ADDED    JUNE 2018
17984C
17985C               *****************************************************
17986C               **  TREAT THE SET ROW LABEL COLUMN <VALUE>         **
17987C               *****************************************************
17988C
17989      IRWLCO=-1
17990C
17991CCCCC THE FOLLOWING SECTION WAS ADDED    JULY 2018
17992C
17993C               *****************************************************************
17994C               **  TREAT THE                                                  **
17995C               **        SET STREAM READ CROSS TABULATE VARIABLE ONE <NAME>   **
17996C               **        SET STREAM READ CROSS TABULATE VARIABLE TWO <NAME>   **
17997C               **        SET STREAM READ CROSS TABULATE VARIABLE THREE <NAME> **
17998C               **        SET STREAM READ CROSS TABULATE VARIABLE FOUR <NAME>  **
17999C               *****************************************************************
18000C
18001      ISREC1='        '
18002      ISREC2='        '
18003      ISREC3='        '
18004      ISREC4='        '
18005C
18006CCCCC THE FOLLOWING SECTION WAS ADDED    JULY 2018
18007C
18008C               *****************************************************************
18009C               **  TREAT THE SET STREAM READ GROUP LABEL <ON/OFF>   CASE      **
18010C               *****************************************************************
18011C
18012      ISREGL='OFF'
18013C
18014CCCCC THE FOLLOWING SECTION WAS ADDED    JULY 2018
18015C
18016C               *****************************************************************
18017C               **  TREAT THE SET STREAM READ VARIABLE TYPE <NAME>   CASE      **
18018C               *****************************************************************
18019C
18020      ISREVT='NULL'
18021C
18022CCCCC THE FOLLOWING SECTION WAS ADDED    AUGUST 2018
18023C
18024C               *****************************************************************
18025C               **  TREAT THE SET STREAM READ NUMBER OF PERCENTILES            **
18026C               **                <VALUE>   CASE                               **
18027C               *****************************************************************
18028C
18029      ISRENP=999
18030C
18031CCCCC THE FOLLOWING SECTION WAS ADDED    JANUARY 2004
18032C
18033C               *****************************************************
18034C               **  TREAT THE SET READ DELIMITER <VALUE>           **
18035C               *****************************************************
18036C
18037CCCCC 2018/08: DO NOT AUTOMATICALLY SET THE READ DELIMITER TO A COMMA.
18038CCCCC          CHANGES WERE MADE TO DPREAL SUCH THAT IF A NON-SPACE
18039CCCCC          READ DELIMITER IS SPECIFIED, SPACES WILL NOT BE TREATED
18040CCCCC          AS DELIMITERS FOR CHARACTER FIELDS.  THIS WAS DONE SINCE
18041CCCCC          MANY COMMA DELIMITED FILES ALLOW SPACES IN CHARACTER
18042CCCCC          FIELDS.  HOWEVER, THIS MEANS THAT SETTING THE COMMA AS
18043CCCCC          A DEFAULT DELIMITER CREATES PROBLEMS FOR FILES THAT ARE
18044CCCCC          NOT ACTUALLY COMMA DELIMITED (E.G., CHARACTER FIELDS ARE
18045CCCCC          DELIMITED WITH SPACES OR TABS).
18046CCCCC IREADL=','
18047      IREADL=' '
18048C
18049CCCCC THE FOLLOWING SECTION WAS ADDED    JUNE 2016
18050C
18051C               *****************************************************
18052C               **  TREAT THE SET DATE DELIMITER <VALUE>           **
18053C               *****************************************************
18054C
18055      IDATDL='NULL'
18056C
18057CCCCC THE FOLLOWING SECTION WAS ADDED    JUNE 2016
18058C
18059C               *****************************************************
18060C               **  TREAT THE SET TIME DELIMITER <VALUE>           **
18061C               *****************************************************
18062C
18063      ITIMDL='NULL'
18064C
18065CCCCC THE FOLLOWING SECTION WAS ADDED    JUNE 2016
18066C
18067C               *****************************************************
18068C               **  TREAT THE SET READ IP ADDRESSES <ON/OFF>       **
18069C               *****************************************************
18070C
18071      IRDIPA='OFF'
18072C
18073C
18074CCCCC THE FOLLOWING SECTION WAS ADDED    JANUARY 2004
18075C
18076C               *****************************************************
18077C               **  TREAT THE SET READ MISSING VALUE <VALUE>       **
18078C               *****************************************************
18079C
18080      PREAMV=0.0
18081C
18082CCCCC THE FOLLOWING SECTION WAS ADDED    JANUARY 2010
18083C
18084C               *****************************************************
18085C               **  TREAT THE SET READ NON-PRINTING CHARACTERS     **
18086C               **                <SPACE/DELETE>                   **
18087C               *****************************************************
18088C
18089      IREANP='DELE'
18090C
18091CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 2018
18092C
18093C               *****************************************************************
18094C               **  TREAT THE SET WRITE FEEDBACK <ON/OFF>            CASE      **
18095C               *****************************************************************
18096C
18097CCCCC 2019/11: CHANGE THE DEFAULT.  THIS SETTING WILL PRINT MOST
18098CCCCC          ERROR MESSAGES EVEN IF FEEDBACK SWITCH IS SET TO OFF.
18099C
18100CCCCC IFEEWR='OFF'
18101      IFEEWR='ON'
18102C
18103CCCCC THE FOLLOWING SECTION WAS ADDED    MARCH 2004
18104C
18105C               *****************************************************
18106C               **  TREAT THE SET GEOMETRIC DEFINITION             **
18107C               **        <JOHNSON AND KOTZ/DLMF>                  **
18108C               *****************************************************
18109C
18110      IGEODF='KOTZ'
18111C
18112CCCCC THE FOLLOWING SECTION WAS ADDED    MARCH 2004
18113C
18114C               *****************************************************
18115C               **  TREAT THE SET PPCC PLOT                        **
18116C               **        <LINEAR/BIWEIGHT/RANK>                   **
18117C               *****************************************************
18118C
18119      IPPCCC='LINE'
18120C
18121CCCCC THE FOLLOWING SECTION WAS ADDED    MAY 2004
18122C
18123C               *****************************************************
18124C               **  TREAT THE SET PPCC FORMAT                      **
18125C               **        <3D/TRACE>                               **
18126C               *****************************************************
18127C
18128      IPPCFO='TRAC'
18129C
18130C
18131CCCCC THE FOLLOWING SECTION WAS ADDED    MARCH 2004
18132C
18133C               *****************************************************
18134C               **  TREAT THE SET HYPERGEOMETRIC MAXIMUM LIKELIHOOD**
18135C               **        <ACCEPTANCE SAMPLING/CAPTURE RECAPTURE>  **
18136C               *****************************************************
18137C
18138      IHYPTY='ACCE'
18139C
18140CCCCC THE FOLLOWING SECTION WAS ADDED    JUNE 2004
18141C
18142C               *****************************************************
18143C               **  TREAT THE SET POSTSCRIPT DEFAULT COLOR         **
18144C               **        <ON/OFF>                                 **
18145C               *****************************************************
18146C
18147      IPSTDC='OFF'
18148C
18149CCCCC THE FOLLOWING SECTION WAS ADDED    JUNE 2004
18150C
18151C               *****************************************************
18152C               **  TREAT THE SET ASYMMETRIC LAPLACE DEFINITION    **
18153C               **        <K/MU>                                   **
18154C               *****************************************************
18155C
18156      IADEDF='K'
18157C
18158CCCCC THE FOLLOWING SECTION WAS ADDED    JUNE 2004
18159C
18160C               *****************************************************
18161C               **  TREAT THE SET GENERALIZED PARETO DEFINITION    **
18162C               **        <JOHNSON AND KOTZ/SIMIU>                 **
18163C               *****************************************************
18164C
18165      IGEPDF='SIMI'
18166C
18167CCCCC THE FOLLOWING SECTION WAS ADDED    OCTOBER 2005
18168C
18169C               *****************************************************
18170C               **  TREAT THE SET GENERALIZED PARETO MLE STARTING  **
18171C               **        VALUES  MOMENT/L MOMENTS/                **
18172C               **        ELEMENTAL PERCENTILES/USER SPECIFIED     **
18173C               *****************************************************
18174C
18175      IGEPSV='EPER'
18176C
18177CCCCC THE FOLLOWING SECTION WAS ADDED    JULY 2004
18178C
18179C               *****************************************************
18180C               **  TREAT THE SET GOMPERTZ-MAKEM   O DEFINITION    **
18181C               **        <DLMF/MEEKER/REPARAMETERIZED MEEKER>     **
18182C               *****************************************************
18183C
18184      IMAKDF='REPA'
18185C
18186CCCCC THE FOLLOWING SECTION WAS ADDED    AUGUST 2004
18187C
18188C               *****************************************************
18189C               **  TREAT THE SET BESSEL I FUNCTION  DEFINITION    **
18190C               **        <1/2>                                    **
18191C               *****************************************************
18192C
18193      IBEIDF='1'
18194C
18195CCCCC THE FOLLOWING SECTION WAS ADDED    AUGUST 2004
18196C
18197C               *****************************************************
18198C               **  TREAT THE SET BESSEL K FUNCTION  DEFINITION    **
18199C               **        <1/2>                                    **
18200C               *****************************************************
18201C
18202      IBEKDF='1'
18203C
18204CCCCC THE FOLLOWING SECTION WAS ADDED    AUGUST 2004
18205C
18206C               *****************************************************
18207C               **  TREAT THE SET PROBABILITY PLOT DATA POINTS     **
18208C               **        <VALUE>                                  **
18209C               *****************************************************
18210C
18211      IPPLDP=0
18212C
18213CCCCC THE FOLLOWING SECTION WAS ADDED    AUGUST 2004
18214C
18215C               *****************************************************
18216C               **  TREAT THE SET PPCC        PLOT DATA POINTS     **
18217C               **        <VALUE>                                  **
18218C               *****************************************************
18219C
18220      IPPCDP=0
18221C
18222CCCCC THE FOLLOWING SECTION WAS ADDED    AUGUST 2004
18223C
18224C               *****************************************************
18225C               **  TREAT THE SET PPCC PLOT AXIS POINTS            **
18226C               **        <VALUE1> <VALUE2>                        **
18227C               *****************************************************
18228C
18229      IPPCAP(1)=0
18230      IPPCAP(2)=0
18231C
18232CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 2004
18233C
18234C               *****************************************************
18235C               **  TREAT THE SET PPCC PLOT AXIS ORDER             **
18236C               **        <DEFAULT/REVERSE>                        **
18237C               *****************************************************
18238C
18239      IPPCAO='DEFA'
18240C
18241CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 2004
18242C
18243C               *****************************************************
18244C               **  TREAT THE SET HISTOGRAM CLASS WIDTH            **
18245C               **         DEFAULT/NORMAL/NORMAL CORRECTED/SD/     **
18246C               **        STANDARD DEVIATION/IQ/INTERQUARTILE RANG **
18247C               *****************************************************
18248C
18249      IHSTCW='DEFA'
18250C
18251CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 2004
18252C
18253C               *****************************************************
18254C               **  TREAT THE SET ASH WEIGHTING                    **
18255C               **        <TRIANGULAR/BIWEIGHT>                    **
18256C               *****************************************************
18257C
18258      IASHWT='TRIA'
18259C
18260CCCCC THE FOLLOWING SECTION WAS ADDED    OCTOBER 2004
18261C
18262C               *****************************************************
18263C               **  TREAT THE SET READ PAD MISSING COLUMNS         **
18264C               **        <ON/OFF>                                 **
18265C               *****************************************************
18266C
18267      IREAPD='OFF'
18268C
18269CCCCC THE FOLLOWING SECTION WAS ADDED    OCTOBER 2004
18270C
18271C               *****************************************************
18272C               **  TREAT THE SET READ SUBSET                      **
18273C               **        <PACK/DISPERSE>  <PACK/DISPERSE>         **
18274C               *****************************************************
18275C
18276      IREASB='P-D'
18277C
18278CCCCC THE FOLLOWING SECTION WAS ADDED    OCTOBER 2004
18279C
18280C               *****************************************************
18281C               **  TREAT THE SET PROBABILITY PLOT                 **
18282C               **  <KAPLAN-MEIER/UNIFORM ORDER STATISTC MEDIANS>  **
18283C               *****************************************************
18284C
18285      IPPLCN='UNIM'
18286C
18287CCCCC THE FOLLOWING SECTION WAS ADDED    OCTOBER 2004
18288C
18289C               *****************************************************
18290C               **  TREAT THE SET PPCC PLOT                        **
18291C               **  <KAPLAN-MEIER/UNIFORM ORDER STATISTC MEDIANS>  **
18292C               *****************************************************
18293C
18294      IPPCCN='UNIM'
18295C
18296CCCCC THE FOLLOWING SECTION WAS ADDED    OCTOBER 2004
18297C
18298C               *****************************************************
18299C               **  TREAT THE SET MAXIMUM LIKELIHOOD QUANTILE      **
18300C               **  <NONE/DEFUALT/VARIABLE NAME>                   **
18301C               *****************************************************
18302C
18303      IQUAVR='NONE'
18304C
18305CCCCC THE FOLLOWING SECTION WAS ADDED    DECEMBER 2004
18306C
18307C               *****************************************************
18308C               **  TREAT THE SET MAXIMUM LIKELIHOOD RELIABILITY   **
18309C               **  <NONE/DEFUALT/VARIABLE NAME>                   **
18310C               *****************************************************
18311C
18312      IRELVR='NONE'
18313C
18314CCCCC THE FOLLOWING SECTION WAS ADDED    OCTOBER 2004
18315C
18316C               *****************************************************
18317C               **  TREAT THE SET EXPONENTIAL BIAS CORRECTED       **
18318C               **  <ON/OFF>                                       **
18319C               *****************************************************
18320C
18321      IEXPBC='OFF'
18322C
18323CCCCC THE FOLLOWING SECTION WAS ADDED    NOVEMBER 2004
18324C
18325C               *****************************************************
18326C               **  TREAT THE SET WEIBULL     BIAS CORRECTED       **
18327C               **  <ON/OFF>                                       **
18328C               *****************************************************
18329C
18330      IWEIBC='OFF'
18331C
18332CCCCC THE FOLLOWING SECTION WAS ADDED    NOVEMBER 2004
18333C
18334C               *****************************************************
18335C               **  TREAT THE SET GUMBEL      BIAS CORRECTED       **
18336C               **  <ON/OFF>                                       **
18337C               *****************************************************
18338C
18339      IGUMBC='OFF'
18340C
18341CCCCC THE FOLLOWING SECTION WAS ADDED    NOVEMBER 2004
18342C
18343C               *****************************************************
18344C               **  TREAT THE SET MATRIX CORRELATION DIRECTION     **
18345C               **  <ROW/COLUMN>                                   **
18346C               *****************************************************
18347C
18348      ICORDI='COLU'
18349C
18350CCCCC THE FOLLOWING SECTION WAS ADDED    NOVEMBER 2004
18351C
18352C               *****************************************************
18353C               **  TREAT THE SET MATRIX COVARIANCE  DIRECTION     **
18354C               **  <ROW/COLUMN>                                   **
18355C               *****************************************************
18356C
18357      ICOVDI='COLU'
18358C
18359CCCCC THE FOLLOWING SECTION WAS ADDED    MAY 2008
18360C
18361C               *****************************************************
18362C               **  TREAT THE SET GUI FEEDBACK <ON/OFF>            **
18363C               *****************************************************
18364C
18365      IGUIFB='ON'
18366C
18367CCCCC THE FOLLOWING SECTION WAS ADDED    DECEMBER 2004
18368C
18369C               *****************************************************
18370C               **  TREAT THE SET GUI <ON/OFF>                     **
18371C               *****************************************************
18372C
18373      IGUIFL='OFF'
18374C
18375CCCCC THE FOLLOWING SECTION WAS ADDED    JULY 2009
18376C
18377C               *****************************************************
18378C               **  TREAT THE SET PROMPT ADVANCE <ON/OFF>          **
18379C               *****************************************************
18380C
18381      IPROAD='OFF'
18382C
18383CCCCC THE FOLLOWING SECTION WAS ADDED    JULY 2009
18384C
18385C               *****************************************************
18386C               **  TREAT THE SET HTML TABLE FONT <FONT-NAME>      **
18387C               *****************************************************
18388C
18389      IHTMFT='NONE'
18390      NCHTM1=4
18391      IHTMFZ=IHTMFT
18392      NCFON1=NCHTM1
18393C
18394CCCCC THE FOLLOWING SECTION WAS ADDED    JULY 2009
18395C
18396C               *****************************************************
18397C               **  TREAT THE SET HTML CELL WIDTH <VALUE>          **
18398C               *****************************************************
18399C
18400      IHTMCW=150
18401C
18402CCCCC THE FOLLOWING SECTION WAS ADDED    FEBRUARY 2005
18403C
18404C               *****************************************************
18405C               **  TREAT THE SET DISTRIBUTIONAL BOOTSTRAP         **
18406C               **            <NONPARAMETRIC/PARAMETRIC>           **
18407C               *****************************************************
18408C
18409      IBOOPA='NONP'
18410C
18411CCCCC THE FOLLOWING SECTION WAS ADDED    FEBRUARY 2005
18412C
18413C               *****************************************************
18414C               **  TREAT THE SET RTF POINT SIZE <VALUE>           **
18415C               *****************************************************
18416C
18417      IRTFPS=20
18418C
18419CCCCC THE FOLLOWING SECTION WAS ADDED    FEBRUARY 2005
18420C
18421C               *****************************************************
18422C               **  TREAT THE SET RTF FIXED FONT <FONT NAME>       **
18423C               *****************************************************
18424C
18425      IRTFFF='Courier New'
18426      NCRTF1=11
18427C
18428CCCCC THE FOLLOWING SECTION WAS ADDED    FEBRUARY 2005
18429C
18430C               *****************************************************
18431C               **  TREAT THE SET RTF PROPORTIONAL FONT <FONT NAME>**
18432C               *****************************************************
18433C
18434      IRTFFP='Times New Roman'
18435      NCRTF1=15
18436C
18437CCCCC THE FOLLOWING SECTION WAS ADDED    FEBRUARY 2005
18438C
18439C               *****************************************************
18440C               **  TREAT THE SET PARAMETER EXPAND DIGIT <VALUE>   **
18441C               *****************************************************
18442C
18443      IEXPDI=-1
18444C
18445CCCCC THE FOLLOWING SECTION WAS ADDED    MARCH 2005
18446C
18447C               *****************************************************
18448C               **  TREAT THE SET LINE PRINTER COLUMNS <80/130>    **
18449C               *****************************************************
18450C
18451      ILPRCO=80
18452C
18453CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL 2005
18454C
18455C               *****************************************************
18456C               **  TREAT THE SET DECIMAL POINT <value>            **
18457C               *****************************************************
18458C
18459      IDECPT='.'
18460C
18461CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL 2005
18462C
18463C               *****************************************************
18464C               **  TREAT THE SET PEAKS OVER THRESHOLD METHOD <val> *
18465C               *****************************************************
18466C
18467      IPOTME='DEHA'
18468C
18469CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL 2005
18470C
18471C               *****************************************************
18472C               **  TREAT THE SET PEAKS OVER THRESHOLD LOAD FACTOR **
18473C               **                <ON/OFF>                         **
18474C               *****************************************************
18475C
18476      IPOTLF='OFF '
18477C
18478CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL 2005
18479C
18480C               *****************************************************
18481C               **  TREAT THE SET PEAKS OVER THRESHOLD X AXIS      **
18482C               **                <POINTS/THRESHOLD>               **
18483C               *****************************************************
18484C
18485      IPOTAX='POIN'
18486C
18487CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL 2005
18488C
18489C               *****************************************************
18490C               **  TREAT THE SET PEAKS OVER THRESHOLD DISTRIBUTION *
18491C               **  <GENERALIZED PARETO/WEIBULL/FRECHET/GUMBEL>     *
18492C               *****************************************************
18493C
18494      IPOTDI='GPAR'
18495C
18496CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL 2005
18497C
18498C               *****************************************************
18499C               **  TREAT THE SET PEAKS OVER THRESHOLD ITERATIONS   *
18500C               **  <value>                                         *
18501C               *****************************************************
18502C
18503      IPOTIT=30
18504C
18505CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL 2005
18506C
18507C               *****************************************************
18508C               **  TREAT THE SET PEAKS OVER THRESHOLD INITIAL      *
18509C               **  POINTS <value>                                  *
18510C               *****************************************************
18511C
18512      IPOTNP=-1
18513C
18514CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL 2005
18515C
18516C               *****************************************************
18517C               **  TREAT THE SET PEAKS OVER THRESHOLD INITIAL      *
18518C               **  THRESHOLD <value>                               *
18519C               *****************************************************
18520C
18521      PPOTTH=CPUMIN
18522C
18523CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL 2005
18524C
18525C               *****************************************************
18526C               **  TREAT THE SET PEAKS OVER THRESHOLD INCREMENT    *
18527C               **            <value>                               *
18528C               *****************************************************
18529C
18530      PPOTIN=-1.0
18531C
18532CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL 2005
18533C
18534C               *****************************************************
18535C               **  TREAT THE SET PEAKS OVER THRESHOLD PERIOD       *
18536C               **            <value>                               *
18537C               *****************************************************
18538C
18539      PPOTPE=-1.0
18540C
18541CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL 2005
18542C
18543C               *****************************************************
18544C               **  TREAT THE SET PEAKS OVER THRESHOLD TOLERANCE    *
18545C               **            <value>                               *
18546C               *****************************************************
18547C
18548      PPOTTO=0.05
18549C
18550CCCCC THE FOLLOWING SECTION WAS ADDED    MAY      2005
18551C
18552C               *****************************************************
18553C               **  TREAT THE SET FRECHET     BIAS CORRECTED       **
18554C               **  <ON/OFF>                                       **
18555C               *****************************************************
18556C
18557      IFREBC='OFF'
18558C
18559CCCCC THE FOLLOWING SECTION WAS ADDED    MAY      2005
18560C
18561C               *****************************************************
18562C               **  TREAT THE SET GRUBBS ONE SIDED <ON/OFF>        **
18563C               *****************************************************
18564C
18565      IGRU1S='ON'
18566C
18567CCCCC THE FOLLOWING SECTION WAS ADDED    JULY 2005
18568C
18569C               *****************************************************
18570C               **  TREAT THE SET LOG GAMMA          DEFINITION    **
18571C               **        <DEFAULT/REPARAMETERIZED>                **
18572C               *****************************************************
18573C
18574      ILGADF='DEFA'
18575C
18576CCCCC THE FOLLOWING SECTION WAS ADDED    JULY 2005
18577C
18578C               *****************************************************
18579C               **  TREAT THE SET SKEW NORMAL        DEFINITION    **
18580C               **        <DEFAULT/REPARAMETERIZED>                **
18581C               *****************************************************
18582C
18583      ISKNDF='DEFA'
18584C
18585CCCCC THE FOLLOWING SECTION WAS ADDED    JANUARY 2006
18586C
18587C               *****************************************************
18588C               **  TREAT THE CAPTURE SCREEN <ON/OFF>              **
18589C               *****************************************************
18590C
18591      ICAPSC='OFF '
18592C
18593CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 2005
18594C
18595C               *****************************************************
18596C               **  INITIATILE MACCRO ARGUMENTS                    **
18597C               *****************************************************
18598C
18599      NMACAG=0
18600      NMACCL=0
18601      IDEFMS='$'
18602      IMACSC=IDEFMS
18603      DO2011II=1,50
18604        IMACAR(II)=' '
18605 2011 CONTINUE
18606      IMACCL=' '
18607C
18608CCCCC THE FOLLOWING SECTION WAS ADDED    FEBRUARY 2006
18609C
18610C               *****************************************************
18611C               **  TREAT THE SET GENERALIZED TUKEY-LAMBDA         **
18612C               **  DEFINITION:   <FMKL/RAMB>                      **
18613C               *****************************************************
18614C
18615      IGLDDF='FMKL'
18616C
18617CCCCC THE FOLLOWING SECTION WAS ADDED    MARCH    2006
18618C
18619C               *****************************************************
18620C               **  TREAT THE SET LOCAL FILES <PID/IGNORE>         **
18621C               *****************************************************
18622C
18623      ITMPFI='PID'
18624C
18625CCCCC THE FOLLOWING SECTION WAS ADDED    MAY      2006
18626C
18627C               *****************************************************
18628C               **  TREAT THE SET PPCC PLOT LOCATION SCALE         **
18629C               **                <BIWEIGHT/DEFAULT>               **
18630C               *****************************************************
18631C
18632      IPPCBW='DEFA'
18633C
18634CCCCC THE FOLLOWING SECTION WAS ADDED    MAY      2006
18635C
18636C               *****************************************************
18637C               **  TREAT THE SET BETA GEOMETRIC DEFINITION        **
18638C               **                <UNSHIFTED/SHIFTED>              **
18639C               *****************************************************
18640C
18641      IBGEDF='UNSH'
18642C
18643CCCCC THE FOLLOWING SECTION WAS ADDED    JUNE      2006
18644C
18645C               *****************************************************
18646C               **  TREAT THE SET FORTRAN FORMAT CONTROL           **
18647C               **                <ON/OFF>                         **
18648C               *****************************************************
18649C
18650      IFORFM='OFF'
18651C
18652CCCCC THE FOLLOWING SECTION WAS ADDED    JUNE      2006
18653C
18654C               *****************************************************
18655C               **  TREAT THE SET MANDEL PAULE                     **
18656C               **            SET MODIFIED MANDEL PAULE            **
18657C               **            SET VANGEL RUHKIN                    **
18658C               **            SET DERSIMONIAN LAIRD                **
18659C               **            SET DERSIMONIAN LAIRD HHD            **
18660C               **            SET DERSIMONIAN LAIRD MINMAX         **
18661C               **            SET GRAYBILL DEAL                    **
18662C               **            SET GENERALIZED CONFIDENCE INTERVALS **
18663C               **            SET FAIRWEATHER                      **
18664C               **            SET FAIRWEATHER COX                  **
18665C               **            SET FAIRWEATHER MINMAX               **
18666C               **            SET MEAN OF MEANS                    **
18667C               **            SET GRAND MEANS                      **
18668C               **            SET BOB                              **
18669C               **            SET SCHILLER EBERHARDT               **
18670C               **            SET LP LOCATION                      **
18671C               **            SET MEDIAN OF MEANS                  **
18672C               **                <ON/OFF>                         **
18673C               *****************************************************
18674C
18675      IMPACM='ON'
18676      IMMPCM='ON'
18677      IVRUCM='ON'
18678      IVRBCM='OFF'
18679      IBOBCM='ON'
18680      ISCECM='OFF'
18681      IMOMCM='ON'
18682      IMEMCM='OFF'
18683      ITRMCM='OFF'
18684      IGRDCM='ON'
18685      IGMECM='ON'
18686      IGCICM='ON'
18687      IDSLCM='ON'
18688      IDS2CM='ON'
18689      IDS3CM='OFF'
18690      IDS4CM='OFF'
18691      IFAICM='OFF'
18692      IFA2CM=IFAICM
18693      IFA3CM=IFAICM
18694      IBCPCM='OFF'
18695      ILPLCM='OFF'
18696      IHUBCM='OFF'
18697C
18698CCCCC THE FOLLOWING SECTION WAS ADDED    JULY     2006
18699C
18700C               *****************************************************
18701C               **  TREAT THE SET GEETA          DEFINITION        **
18702C               **                <THETA/MU>                       **
18703C               *****************************************************
18704C
18705      IGETDF='MU  '
18706C
18707CCCCC THE FOLLOWING SECTION WAS ADDED    JULY     2006
18708C
18709C               *****************************************************
18710C               **  TREAT THE SET CHISQUARE LIMIT <VALUE>          **
18711C               *****************************************************
18712C
18713      PCHSLM=1000000.0
18714C
18715CCCCC THE FOLLOWING SECTION WAS ADDED    OCTOBER     2006
18716C
18717C               *****************************************************
18718C               **  TREAT THE SET MAXWELL LOCATION  <VALUE>        **
18719C               *****************************************************
18720C
18721      PMAXLO=0.0
18722C
18723CCCCC THE FOLLOWING SECTION WAS ADDED    AUGUST   2006
18724C
18725C               *****************************************************
18726C               **  TREAT THE SET CONSUL         DEFINITION        **
18727C               **                <THETA/MU>                       **
18728C               *****************************************************
18729C
18730      ICONDF='MU  '
18731C
18732CCCCC THE FOLLOWING SECTION WAS ADDED    OCTOBER   2006
18733C
18734C               *****************************************************
18735C               **  TREAT THE SET 4PLOT DISTRIBUTION               **
18736C               **                <NORMAL/EXPONENTIAL>             **
18737C               *****************************************************
18738C
18739      I4PLDI='NORM'
18740C
18741CCCCC THE FOLLOWING SECTION WAS ADDED    JANUARY   2007
18742C
18743C               *****************************************************
18744C               **  TREAT THE SET GOMPERTZ       DEFINITION        **
18745C               **                <JOHN/GARG>                      **
18746C               *****************************************************
18747C
18748      IGOMDF='DEFA'
18749C
18750CCCCC THE FOLLOWING SECTION WAS ADDED    JANUARY   2007
18751C
18752C               *****************************************************
18753C               **  TREAT THE SET KATZ           DEFINITION        **
18754C               **                <DEFAULT/MOMENTS>                **
18755C               *****************************************************
18756C
18757      IKATDF='DEFA'
18758C
18759CCCCC THE FOLLOWING SECTION WAS ADDED    FEBRUARY  2007
18760C
18761C               *****************************************************
18762C               **  TREAT THE SET BINOMIAL CONTINUITY CORRECTION   **
18763C               **                <ON/OFF>                         **
18764C               *****************************************************
18765C
18766      IBINCC='OFF'
18767C
18768CCCCC THE FOLLOWING SECTION WAS ADDED    FEBRUARY  2007
18769C
18770C               *****************************************************
18771C               **  TREAT THE SET BINOMIAL NORMAL APPROXIMATION    **
18772C               **                THRESHOLD <VALUE>                **
18773C               *****************************************************
18774C
18775      PBINTH=30.0
18776C
18777CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL 2008
18778C
18779C               *****************************************************
18780C               **  TREAT THE SET BINOMIAL TAIL                    **
18781C               **                <LOWER/UPPER/TWO-SIDED>          **
18782C               *****************************************************
18783C
18784      IBINTA='TWOS'
18785C
18786CCCCC THE FOLLOWING SECTION WAS ADDED    MARCH     2007
18787C
18788C               *****************************************************
18789C               **  TREAT THE SET FISHER EXACT TEST EXPECTED       **
18790C               **                <VALUE>                          **
18791C               *****************************************************
18792C
18793      PFISEX=5.0
18794C
18795CCCCC THE FOLLOWING SECTION WAS ADDED    MARCH     2007
18796C
18797C               *****************************************************
18798C               **  TREAT THE SET FISHER EXACT TEST EXPECTED       **
18799C               **                MINIMUM <VALUE>                  **
18800C               *****************************************************
18801C
18802      PFISEM=1.0
18803C
18804CCCCC THE FOLLOWING SECTION WAS ADDED    MARCH     2007
18805C
18806C               *****************************************************
18807C               **  TREAT THE SET FISHER EXACT TEST PERCENTAGE     **
18808C               **                <VALUE>                          **
18809C               *****************************************************
18810C
18811      PFISPC=80.0
18812C
18813CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL     2007
18814C
18815C               *****************************************************
18816C               **  TREAT THE SET FATAL ERROR                      **
18817C               **                <IGNORE/TERMINATE/PROMPT>        **
18818C               *****************************************************
18819C
18820      IERRFA='IGNO'
18821C
18822CCCCC THE FOLLOWING SECTION WAS ADDED    OCTOBER   2015
18823C
18824C               *****************************************************
18825C               **  TREAT THE SET WARNING ERROR                    **
18826C               **                <IGNORE/TERMINATE/PROMPT>        **
18827C               *****************************************************
18828C
18829      IERRWA='IGNO'
18830C
18831CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL     2007
18832C
18833C               *****************************************************
18834C               **  TREAT THE SET STATISTIC MISSING VALUE          **
18835C               **                <VALUE>                          **
18836C               *****************************************************
18837C
18838CCCCC PSTAMV=-9999.0
18839      PSTAMV=CPUMIN
18840C
18841CCCCC THE FOLLOWING SECTION WAS ADDED    MAY     2007
18842C
18843C               *****************************************************
18844C               **  TREAT THE SET BINARY TABULATION PLOT GROUP NAME**
18845C               **                <VARIABLE NAME>                  **
18846C               *****************************************************
18847C
18848      IBTAGN=' '
18849C
18850CCCCC THE FOLLOWING SECTION WAS ADDED    MAY     2007
18851C
18852C               *****************************************************
18853C               **  TREAT THE SET POISSON PLOT LEVEL <ON/OFF>      **
18854C               *****************************************************
18855C
18856      IPOILV='OFF'
18857C
18858CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 2007
18859C
18860C               ******************************************
18861C               **  TREAT THE PROBE ERROR               **
18862C               ******************************************
18863C
18864      IERRST='NO'
18865C
18866CCCCC THE FOLLOWING SECTION WAS ADDED    MARCH     2008
18867C
18868C               *****************************************************
18869C               **  TREAT THE SET COLOR MAXIMUM     VALUE          **
18870C               **                <VALUE>                          **
18871C               *****************************************************
18872C
18873      PCOLMX=255.0
18874C
18875CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL     2008
18876C
18877C               *****************************************************
18878C               **  TREAT THE SET CROSS TABULATE MISSING           **
18879C               **                <SKIP/ZERO/MV>                   **
18880C               *****************************************************
18881C
18882      ICTAMV='SKIP'
18883C
18884CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL     2008
18885C
18886C               *****************************************************
18887C               **  TREAT THE SET CROSS TABULATE MISSING VALUE     **
18888C               **                <VALUE>                          **
18889C               *****************************************************
18890C
18891      PCTAMV=-9999.0
18892C
18893CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL 2008
18894C
18895C               *****************************************************
18896C               **  TREAT THE SET FIT METHOD                       **
18897C               **                <SVD/GRAM-SCHMIDT>               **
18898C               *****************************************************
18899C
18900      IFITME='GRAM'
18901C
18902CCCCC THE FOLLOWING SECTION WAS ADDED    JUNE  2014
18903C
18904C               *****************************************************
18905C               **  TREAT THE SET FIT AUXILLARY FILES <ON/OFF>     **
18906C               *****************************************************
18907C
18908      IFITAU='ON'
18909C
18910CCCCC THE FOLLOWING SECTION WAS ADDED    JULY  2014
18911C
18912C               *******************************************************
18913C               **  TREAT THE SET NORMAL PLOT AXES <DEFAULT/REVERSE> **
18914C               *******************************************************
18915C
18916      INPLAX='DEFA'
18917C
18918CCCCC THE FOLLOWING SECTION WAS ADDED    AUGUST  2014
18919C
18920C               *******************************************************
18921C               **  TREAT THE SET LATEX RESIZE     <ON/OFF>          **
18922C               *******************************************************
18923C
18924      ILATRS='OFF'
18925C
18926CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER  2014
18927C
18928C               *******************************************************
18929C               **  TREAT THE SET CIRCLE CORRECTION  <ON/OFF>        **
18930C               *******************************************************
18931C
18932      ICIRCR='ON'
18933C
18934CCCCC THE FOLLOWING SECTION WAS ADDED    MAY     2008
18935C
18936C               *****************************************************
18937C               **  TREAT THE SET FLUCUATION PLOT FLOOR <VALUE>    **
18938C               *****************************************************
18939C
18940      PFLUFL=-9999.0
18941C
18942CCCCC THE FOLLOWING SECTION WAS ADDED    MAY     2008
18943C
18944C               *****************************************************
18945C               **  TREAT THE SET FLUCUATION PLOT CEILING          **
18946C               **                <VALUE>                          **
18947C               *****************************************************
18948C
18949      PFLUCL=-9999.0
18950C
18951CCCCC THE FOLLOWING SECTION WAS ADDED    MAY     2008
18952C
18953C               *****************************************************
18954C               **  TREAT THE SET FLUCUATION PLOT WIDTH            **
18955C               **                <FIXED/PROPORTIONAL>             **
18956C               *****************************************************
18957C
18958      IFLUWI='FIXE'
18959C
18960CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER     2009
18961C
18962C               *****************************************************
18963C               **  TREAT THE SET FLUCUATION PLOT UNCERTAINTY      **
18964C               **                INTERVAL <ON/OFF>                **
18965C               *****************************************************
18966C
18967      IFLUUN='OFF'
18968C
18969CCCCC THE FOLLOWING SECTION WAS ADDED    JANUARY       2010
18970C
18971C               *****************************************************
18972C               **  TREAT THE SET FLUCUATION PLOT CODED <ON/OFF>   **
18973C               *****************************************************
18974C
18975      IFLUCD='ON'
18976C
18977CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL         2010
18978C
18979C               *******************************************************
18980C               **  TREAT THE SET FLUCUATION CONTOUR BINOMIAL        **
18981C               **        PROPORTION <POINT/LOWER LIMIT/UPPER LIMIT> **
18982C               *******************************************************
18983C
18984      IFLUBP='POIN'
18985C
18986CCCCC THE FOLLOWING SECTION WAS ADDED    JANUARY       2010
18987C
18988C               *****************************************************
18989C               **  TREAT THE SET TABULATION PLOT CODED <ON/OFF>   **
18990C               *****************************************************
18991C
18992      ITPLCD='ON'
18993C
18994CCCCC THE FOLLOWING SECTION WAS ADDED    JUNE          2010
18995C
18996C               *****************************************************
18997C               **  TREAT THE SET TABULATION PLOT SORTED <ON/OFF>  **
18998C               *****************************************************
18999C
19000      ITPLSO='OFF'
19001C
19002CCCCC THE FOLLOWING SECTION WAS ADDED    JUNE          2010
19003C
19004C               *******************************************************
19005C               **  TREAT THE SET TABULATION PLOT ROW SORT           **
19006C               **                DIRECTION <ASCENDING/DESCENDING>   **
19007C               *******************************************************
19008C
19009      ITPLSR='ASCE'
19010C
19011CCCCC THE FOLLOWING SECTION WAS ADDED    JUNE          2010
19012C
19013C               *******************************************************
19014C               **  TREAT THE SET TABULATION PLOT COLUMN SORT        **
19015C               **                DIRECTION <ASCENDING/DESCENDING>   **
19016C               *******************************************************
19017C
19018      ITPLSC='ASCE'
19019C
19020CCCCC THE FOLLOWING SECTION WAS ADDED    JUNE          2010
19021C
19022C               ********************************************************
19023C               **  TREAT THE SET TABULATION PLOT ROW MINMAX <ON/OFF> **
19024C               ********************************************************
19025C
19026      ITPLRM='OFF'
19027C
19028CCCCC THE FOLLOWING SECTION WAS ADDED    JUNE          2010
19029C
19030C               ********************************************************
19031C               **  TREAT THE SET TABULATION PLOT COLUMN MINMAX       **
19032C               **                <ON/OFF>                            **
19033C               ********************************************************
19034C
19035      ITPLCM='OFF'
19036C
19037CCCCC THE FOLLOWING SECTION WAS ADDED    JUNE          2010
19038C
19039C               *****************************************************
19040C               **  TREAT THE SET FLUCTUATION PLOT SORTED <ON/OFF> **
19041C               *****************************************************
19042C
19043      IFLUSO='OFF'
19044C
19045CCCCC THE FOLLOWING SECTION WAS ADDED    JUNE          2010
19046C
19047C               *******************************************************
19048C               **  TREAT THE SET FLUCTUATION PLOT ROW SORT          **
19049C               **                DIRECTION <ASCENDING/DESCENDING>   **
19050C               *******************************************************
19051C
19052      IFLUSR='ASCE'
19053C
19054CCCCC THE FOLLOWING SECTION WAS ADDED    JUNE          2010
19055C
19056C               *******************************************************
19057C               **  TREAT THE SET FLUCTUATION PLOT COLUMN SORT       **
19058C               **                DIRECTION <ASCENDING/DESCENDING>   **
19059C               *******************************************************
19060C
19061      IFLUSC='ASCE'
19062C
19063CCCCC THE FOLLOWING SECTION WAS ADDED    JULY 2008
19064C
19065C               *****************************************************
19066C               **  TREAT THE SET GENERALIZED INVERSE GAUSSIAN     **
19067C               **            DEFINITION <2-PARAMETER/3-PARAMETER> **
19068C               *****************************************************
19069C
19070      IGIGDF='3PAR'
19071C
19072CCCCC THE FOLLOWING SECTION WAS ADDED    AUGUST 2008
19073C
19074C               *****************************************************
19075C               **  TREAT THE SET MERGE MATCH VARIABLES <VALUE>    **
19076C               *****************************************************
19077C
19078      IMERMA=1
19079C
19080CCCCC THE FOLLOWING SECTION WAS ADDED    AUGUST 2008
19081C
19082C               *****************************************************
19083C               **  TREAT THE SET MERGE CARRY VARIABLES <VALUE>    **
19084C               *****************************************************
19085C
19086      IMERCA=1
19087      IMERC2=IMERCA
19088C
19089CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 2008
19090C
19091C               *****************************************************
19092C               **  TREAT THE SET CROSS TABULATE FORMAT            **
19093C               **            <VALUE>                              **
19094C               *****************************************************
19095C
19096      ICTAFO=' '
19097C
19098CCCCC THE FOLLOWING SECTION WAS ADDED    OCTOBER 2008
19099C
19100C               *****************************************************
19101C               **  TREAT THE SET STRIP PLOT INCREMENT             **
19102C               **                <VALUE>                          **
19103C               *****************************************************
19104C
19105      PSTRIN=1.0
19106C
19107CCCCC THE FOLLOWING SECTION WAS ADDED    NOVEMBER 2008
19108C
19109C               *****************************************************
19110C               **  TREAT THE SET STRIP PLOT STYLE <STACK/JITTER>  **
19111C               *****************************************************
19112C
19113      ISTRPL='STAC'
19114C
19115CCCCC THE FOLLOWING SECTION WAS ADDED    JANUARY 2009
19116C
19117C               *****************************************************
19118C               **  FEEDBACK SAVE PARAMETER                        **
19119C               *****************************************************
19120C
19121      IFEESV='ON'
19122C
19123CCCCC THE FOLLOWING SECTION WAS ADDED    FEBRUARY 2009
19124C
19125C               *****************************************************
19126C               **  TREAT THE SET LET CROSS TABULATE               **
19127C               **                <EXPAND/COLLAPSE>                **
19128C               *****************************************************
19129C
19130      ICTALT='EXPA'
19131C
19132CCCCC THE FOLLOWING SECTION WAS ADDED    JULY 2011
19133C
19134C               *****************************************************
19135C               **  TREAT THE SET LET CROSS TABULATE EMPTY         **
19136C               **                <EXCLUDE/INCLUDE>                **
19137C               *****************************************************
19138C
19139      ICTAEM='EXCL'
19140C
19141CCCCC THE FOLLOWING SECTION WAS ADDED    JULY 2011
19142C
19143C               *****************************************************
19144C               **  TREAT THE SET LET CROSS TABULATE COMPLEMENT    **
19145C               **                <ON/OFF>                         **
19146C               *****************************************************
19147C
19148      ICTACO='OFF'
19149C
19150CCCCC THE FOLLOWING SECTION WAS ADDED    JUNE 2016
19151C
19152C               *****************************************************
19153C               **  TREAT THE SET LET CROSS TABULATE GROUPS        **
19154C               **                <CONTIGUOUS/NONCONTIGUOUS>       **
19155C               *****************************************************
19156C
19157      ICTAGR='NONC'
19158C
19159CCCCC THE FOLLOWING SECTION WAS ADDED    FEBRUARY 2009
19160C
19161C               *****************************************************
19162C               **  TREAT THE SET STRING SPACE <EXPAND/IGNORE>     **
19163C               *****************************************************
19164C
19165      ISTRSP='EXPA'
19166C
19167CCCCC THE FOLLOWING SECTION WAS ADDED    MARCH 2009
19168C
19169C               ********************************************************
19170C               **  TREAT THE SET CONVERT DENSITY HORIZONTAL <VALUE>  **
19171C               ********************************************************
19172C
19173      ICONDH=72
19174C
19175CCCCC THE FOLLOWING SECTION WAS ADDED    MARCH 2009
19176C
19177C               ******************************************************
19178C               **  TREAT THE SET CONVERT DENSITY VERTICAL <VALUE>  **
19179C               ******************************************************
19180C
19181      ICONDV=72
19182C
19183CCCCC THE FOLLOWING SECTION WAS ADDED    MARCH 2009
19184C
19185C               ******************************************************
19186C               **  TREAT THE SET STATISTIC PLOT FORMAT             **
19187C               **                <OVERLAY/DEX>                     **
19188C               ******************************************************
19189C
19190      ISTAFO='DEX'
19191C
19192CCCCC THE FOLLOWING SECTION WAS ADDED    MARCH 2009
19193C
19194C               ******************************************************
19195C               **  TREAT THE SET STATISTIC PLOT SUMMARY            **
19196C               **                <VARIABLE/GROUP>                  **
19197C               ******************************************************
19198C
19199      ISTASM='GROU'
19200C
19201CCCCC THE FOLLOWING SECTION WAS ADDED    MARCH 2009
19202C
19203C               ******************************************************
19204C               **  INITIALIZE IFORWI, IFORRI (SET TO -99, WHICH    **
19205C               **  BASICALLY MEANS IGNORE THESE SETTINGS           **
19206C               ******************************************************
19207C
19208
19209      MAXNWI=200
19210      DO8210I=1,MAXNWI
19211        IFORWI(I)=-99
19212        IFORWR(I)=-99
19213 8210 CONTINUE
19214C
19215CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL 2009
19216C
19217C               ******************************************************
19218C               **  TREAT THE SET BIPLOT SCALE                      **
19219C               **                <COLUMN MEAN/GRAND MEAN/NONE>     **
19220C               ******************************************************
19221C
19222      IBPLSC='CMEA'
19223C
19224CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL 2009
19225C
19226C               ******************************************************
19227C               **  TREAT THE SET BIPLOT COEFFICIENT <VALUE>        **
19228C               ******************************************************
19229C
19230      PBPLCO=0.5
19231C
19232CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL 2009
19233C
19234C               ******************************************************
19235C               **  TREAT THE SET LATEX POINT SIZE <VALUE>          **
19236C               ******************************************************
19237C
19238      ILATPS=12
19239C
19240CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL 2009
19241C
19242C               ******************************************************
19243C               **  TREAT THE SET DATA MISSING VALUE                **
19244C               **                <VALUE>                           **
19245C               ******************************************************
19246C
19247      IDATMV='MV'
19248C
19249CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL 2010
19250C
19251C               ******************************************************
19252C               **  TREAT THE SET DATA NAN <VALUE>                  **
19253C               ******************************************************
19254C
19255      IDATNN='NAN'
19256C
19257CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL 2009
19258C
19259C               ******************************************************
19260C               **  TREAT THE SET READ LINE <ON/OF>                 **
19261C               ******************************************************
19262C
19263      IREALI='OFF'
19264C
19265CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL 2017
19266C
19267C               ******************************************************
19268C               **  TREAT THE SET CHARACTER FIELD COMMA DELIMITER   **
19269C               **                 <ON/OF>                          **
19270C               ******************************************************
19271C
19272      IREACD='OFF'
19273C
19274CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL 2017
19275C
19276C               ******************************************************
19277C               **  TREAT THE SET READ COMMA IGNORE <ON/OFF>        **
19278C               ******************************************************
19279C
19280      IREACM='OFF'
19281C
19282CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL 2017
19283C
19284C               ******************************************************
19285C               **  TREAT THE SET READ DOLLAR SIGN IGNORE <ON/OFF>  **
19286C               ******************************************************
19287C
19288      IREADS='ON'
19289C
19290CCCCC THE FOLLOWING SECTION WAS ADDED    OCTOBER 2019
19291C
19292C               ******************************************************
19293C               **  TREAT THE SET READ PERCENT SIGN IGNORE <ON/OFF> **
19294C               ******************************************************
19295C
19296      IREAPC='ON'
19297C
19298CCCCC THE FOLLOWING SECTION WAS ADDED    NOVEMBER 2019
19299C
19300C               ******************************************************
19301C               **  TREAT THE SET OUTPUT LINE NUMBERS      <ON/OFF> **
19302C               ******************************************************
19303C
19304      IOUTLN='OFF'
19305      ILNCNT=0
19306C
19307CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL 2017
19308C
19309C               ******************************************************
19310C               **  TREAT THE SET READ TRAILING PLUS MINUS  IGNORE  **
19311C               **                <ON/OFF>                          **
19312C               ******************************************************
19313C
19314      IREAPM='OFF'
19315C
19316CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL 2019
19317C
19318C               ******************************************************
19319C               **  TREAT THE SET READ ASTERISK IGNORE <ON/OFF>     **
19320C               ******************************************************
19321C
19322      IREAAS='OFF'
19323C
19324CCCCC THE FOLLOWING SECTION WAS ADDED    JULY 2019
19325C
19326C               ******************************************************
19327C               **  TREAT THE SET BOXPLOT FENCE SKEWNESS            **
19328C               **                <GALTON/OFF>                      **
19329C               ******************************************************
19330C
19331      IBXPSK='OFF'
19332C
19333CCCCC THE FOLLOWING SECTION WAS ADDED    JULY 2019
19334C
19335C               ******************************************************
19336C               **  TREAT THE SET ONE SAMPLE PROFICIENCY TEST       **
19337C               **                IDENTIFY LAB <DEFAULT/UNUSUAL/    **
19338C               **                EXTREMELY UNUSUAL>                **
19339C               ******************************************************
19340C
19341      I1PTOC='OFF'
19342C
19343CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 2019
19344C
19345C               ******************************************************
19346C               **  TREAT THE SET GREP CASE <IGNORE/NOIGNORE>       **
19347C               **  TREAT THE SET GREP RECURSIVE <ON/OFF>           **
19348C               **  TREAT THE SET GREP LINE NUMBERS <ON/OFF>        **
19349C               **  TREAT THE SET GREP EXACT MATCH <ON/OFF>         **
19350C               **  TREAT THE SET GREP NO MATCH <ON/OFF>            **
19351C               **  TREAT THE SET GREP FILE NAME ONLY <ON/OFF>      **
19352C               ******************************************************
19353C
19354      IGRPCA='IGNO'
19355      IGRPRE='OFF'
19356      IGRPLN='ON'
19357      IGRPEM='OFF'
19358      IGRPNM='OFF'
19359      IGRPFN='OFF'
19360C
19361CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 2019
19362C
19363C               ******************************************************
19364C               **  TREAT THE SET DIR RECURSIVE <ON/OFF>            **
19365C               **  TREAT THE SET DIR PAUSE <ON/OFF>                **
19366C               **  TREAT THE SET DIR LONG LISTING <ON/OFF>         **
19367C               **  TREAT THE SET DIR SORT <ALPHA/SIZE/DATE>        **
19368C               ******************************************************
19369C
19370      IDIRRE='OFF'
19371      IDIRPA='OFF'
19372      IDIRLL='OFF'
19373      IDIRSO='OFF'
19374C
19375CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 2019
19376C
19377C               ******************************************************
19378C               **  TREAT THE SET CAT MORE  <ON/OFF>                **
19379C               ******************************************************
19380C
19381      ICATMO='ON'
19382C
19383CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 2019
19384C
19385C               ******************************************************
19386C               **  TREAT THE SET CAT MORE  <ON/OFF>                **
19387C               ******************************************************
19388C
19389      ICATMO='ON'
19390C
19391CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 2019
19392C
19393C               ******************************************************
19394C               **  TREAT THE SET STRING VARIABLE <APPEND/OVERWRITE> *
19395C               ******************************************************
19396C
19397      ISTRVA='OVER'
19398C
19399CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 2019
19400C
19401C               ******************************************************
19402C               **  TREAT THE SET STRING COMBINE SEPARATOR <VAL>     *
19403C               ******************************************************
19404C
19405      ISTRCS='SP()'
19406C
19407CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 2019
19408C
19409C               ******************************************************
19410C               **  TREAT THE SET RATIO OF MEANS METHOD              *
19411C               **                <FIELLER/LOG RATIO/LARGE SAMPLE>   *
19412C               ******************************************************
19413C
19414      IRATME='FIEL'
19415C
19416CCCCC THE FOLLOWING SECTION WAS ADDED    OCTOBER 2019
19417C
19418C               ******************************************************
19419C               **  TREAT THE SET DAVID TEST CRITICAL VALUE         **
19420C               **                <ASTM/DAVID/OFF>                  **
19421C               ******************************************************
19422C
19423      IDAVTA='ASTM'
19424C
19425CCCCC THE FOLLOWING SECTION WAS ADDED    OCTOBER 2019
19426C
19427C               ******************************************************
19428C               **  TREAT THE SET SKEW OUTLIER TEST CRITICAL VALUE  **
19429C               **                <ASTM/SIMULATION>                 **
19430C               ******************************************************
19431C
19432      ISKOTA='ASTM'
19433C
19434CCCCC THE FOLLOWING SECTION WAS ADDED    OCTOBER 2019
19435C
19436C               *********************************************************
19437C               **  TREAT THE SET KURTOSIS OUTLIER TEST CRITICAL VALUE **
19438C               **                <ASTM/SIMULATION>                    **
19439C               *********************************************************
19440C
19441      IKUOTA='ASTM'
19442C
19443CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL 2017
19444C
19445C               ******************************************************
19446C               **  TREAT THE SET READ CHARACTER MISSING VALUE      **
19447C               **                <STRING>                          **
19448C               ******************************************************
19449C
19450      IREAMC='ZZZZNULL'
19451C
19452CCCCC THE FOLLOWING SECTION WAS ADDED    JUNE 2017
19453C
19454C               ******************************************************
19455C               **  TREAT THE SET TWO SAMPLE COEFFICIENT OF         **
19456C               **                VARIATION TEST <FORKMAN/MILLER>   **
19457C               ******************************************************
19458C
19459      ICVTTE='FORK'
19460C
19461CCCCC THE FOLLOWING SECTION WAS ADDED    JULY 2017
19462C
19463C               ******************************************************
19464C               **  TREAT THE SET BLAND ALTMAN PLOT                 **
19465C               **                <RAW/PERCENTAGE>                  **
19466C               ******************************************************
19467C
19468      IBAPPE='RAW'
19469C
19470CCCCC THE FOLLOWING SECTION WAS ADDED    JULY 2017
19471C
19472C               ******************************************************
19473C               **  TREAT THE SET BLAND ALTMAN PLOT STATISTIC       **
19474C               **                <MEAN/MEDIAN>                     **
19475C               ******************************************************
19476C
19477      IBAPST='MEAN'
19478C
19479CCCCC THE FOLLOWING SECTION WAS ADDED    JULY 2017
19480C
19481C               ******************************************************
19482C               **  TREAT THE SET BLAND ALTMAN PLOT BOOTSTRAP       **
19483C               **                <RAW/SUMMARY>                     **
19484C               ******************************************************
19485C
19486      IBAPBO='SUMM'
19487C
19488CCCCC THE FOLLOWING SECTION WAS ADDED    JULY 2017
19489C
19490C               ******************************************************
19491C               **  TREAT THE SET BLAND ALTMAN PLOT CONFIDENCE LIMI **
19492C               **                <ANALYTIC/BOOTSTRAP>              **
19493C               ******************************************************
19494C
19495      IBAPCL='ANAL'
19496C
19497CCCCC THE FOLLOWING SECTION WAS ADDED    AUGUST 2017
19498C
19499C               ********************************************************
19500C               **  TREAT THE SET SAMPLE RANDOM PERMUTATION DISTINCT  **
19501C               **                <ON/OFF>                            **
19502C               ********************************************************
19503C
19504      ISRPDI='ON'
19505C
19506CCCCC THE FOLLOWING SECTION WAS ADDED    JUNE 2009
19507C
19508C               ******************************************************
19509C               **  TREAT THE SET CODE CROSS TABULATE OFFSET        **
19510C               **                     <VALUE>                      **
19511C               **            SET CODE CROSS TABULATE GROUP SIZE    **
19512C               **                     <VALUE1>  ... <VALUE6>       **
19513C               ******************************************************
19514C
19515      ICCTOF=0
19516      ICCTG1=0
19517      ICCTG2=0
19518      ICCTG3=0
19519      ICCTG4=0
19520      ICCTG5=0
19521      ICCTG6=0
19522C
19523CCCCC THE FOLLOWING SECTION WAS ADDED    JULY 2009
19524C
19525C               *********************************************************
19526C               **  TREAT THE SET LOD CRITICAL VALUE <QUANTILE/NORMAL> **
19527C               *********************************************************
19528C
19529      ILODCV='QUAN'
19530C
19531CCCCC THE FOLLOWING SECTION WAS ADDED    JULY 2012
19532C
19533C               *********************************************************
19534C               **  TREAT THE SET LOD SUMMARY TABLE <ON/OFF>           **
19535C               *********************************************************
19536C
19537      ILODST='ON'
19538C
19539CCCCC THE FOLLOWING SECTION WAS ADDED    JULY 2012
19540C
19541C               *********************************************************
19542C               **  TREAT THE SET LOD TABLE <ON/OFF>                   **
19543C               *********************************************************
19544C
19545      ILODTA='ON'
19546C
19547CCCCC THE FOLLOWING SECTION WAS ADDED    AUGUST 2012
19548C
19549C               *********************************************************
19550C               **  TREAT THE SET LOD PRINT CRITICAL VALUE <ON/OFF>    **
19551C               *********************************************************
19552C
19553      ILODPC='ON'
19554C
19555CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 2009
19556C
19557C               *********************************************************
19558C               **  TREAT THE SET KOLMOGOROV SMIRNOV CRITICAL VALUE    **
19559C               **                <TABLE/SIMULATION>                   **
19560C               *********************************************************
19561C
19562      IKSCVM='SIMU'
19563C
19564CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 2009
19565C
19566C               *********************************************************
19567C               **  TREAT THE SET ANDERSON DARLING CRITICAL VALUE      **
19568C               **                <TABLE/SIMULATION>                   **
19569C               *********************************************************
19570C
19571      IADCVM='SIMU'
19572C
19573CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 2009
19574C
19575C               *********************************************************
19576C               **  TREAT THE SET CONTROL CHART LIMITS                 **
19577C               **                <DEFAULT/WECO/ISO 13528>             **
19578C               *********************************************************
19579C
19580      ICONWC='DEFA'
19581C
19582CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 2009
19583C
19584C               ********************************************************
19585C               **  TREAT THE SET TABULATION PLOT X INCREMENT <VALUE> **
19586C               ********************************************************
19587C
19588      PTPLXI=0.05
19589C
19590CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 2009
19591C
19592C               ********************************************************
19593C               **  TREAT THE SET TABULATION PLOT Y INCREMENT <VALUE> **
19594C               ********************************************************
19595C
19596      PTPLYI=0.05
19597C
19598CCCCC THE FOLLOWING SECTION WAS ADDED    JUNE 2011
19599C
19600C               ********************************************************
19601C               **  TREAT THE SET MEDIAN TEST QUANTILE        <VALUE> **
19602C               ********************************************************
19603C
19604      PMTEQU=0.5
19605C
19606CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 2009
19607C
19608C               ********************************************************
19609C               **  TREAT THE SET TABULATION PLOT DIRECTION   <X/Y>   **
19610C               ********************************************************
19611C
19612      ITPLDI='Y'
19613C
19614CCCCC THE FOLLOWING SECTION WAS ADDED    JUNE 2010
19615C
19616C               ********************************************************
19617C               **  TREAT THE SET FLUCTUATION PLOT DIRECTION   <X/Y>  **
19618C               ********************************************************
19619C
19620      IFLUDI='Y'
19621C
19622CCCCC THE FOLLOWING SECTION WAS ADDED    OCTOBER 2009
19623C
19624C               ********************************************************
19625C               **  TREAT THE SET GOODNESS OF FIT FULLY SPECIFIED     **
19626C               **                <ON/OFF>                            **
19627C               ********************************************************
19628C
19629      IGOFFS='ON'
19630C
19631CCCCC THE FOLLOWING SECTION WAS ADDED    MAY 2011
19632C
19633C               ********************************************************
19634C               **  TREAT THE SET GOODNESS OF FIT FIT METHOD          **
19635C               **                <ML/PPCC/DEFAULT>                   **
19636C               ********************************************************
19637C
19638      IGOFFM='DEFA'
19639C
19640CCCCC THE FOLLOWING SECTION WAS ADDED    DECEMBER     2009
19641C
19642C               *****************************************************
19643C               **  TREAT THE SET TABULATION PLOT UNCERTAINTY      **
19644C               **                INTERVAL <ON/OFF>                **
19645C               *****************************************************
19646C
19647      ITPLUN='OFF'
19648C
19649CCCCC THE FOLLOWING SECTION WAS ADDED    DECEMBER     2009
19650C
19651C               *****************************************************
19652C               **  TREAT THE SET TABULATION PLOT NUMBER OF        **
19653C               **        UNCERTAINTY INTERVALS <VALUE>            **
19654C               *****************************************************
19655C
19656      ITPLNI=50
19657C
19658CCCCC THE FOLLOWING SECTION WAS ADDED    JANUARY       2010
19659C
19660C               *****************************************************
19661C               **  TREAT THE SET HISTOGRAM EMPTY BINS <ON/OFF>    **
19662C               *****************************************************
19663C
19664      IHSTEB='ON'
19665C
19666CCCCC THE FOLLOWING SECTION WAS ADDED    JANUARY       2010
19667C
19668C               *****************************************************
19669C               **  TREAT THE SET HISTOGRAM OUTLIERS   <ON/OFF>    **
19670C               *****************************************************
19671C
19672      IHSTOU='OFF'
19673C
19674CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL         2010
19675C
19676C               *****************************************************
19677C               **  TREAT THE SET LOD OUTPUT FILES   <ON/OFF>      **
19678C               *****************************************************
19679C
19680      ILODOF='ON'
19681C
19682CCCCC THE FOLLOWING SECTION WAS ADDED    JULY    2010
19683C
19684C               *****************************************************
19685C               **  TREAT THE SET DISTRIBUTIONAL FIT TYPE          **
19686C               **        <ML/MOMENT/LMOMENT/ELEMENAL PERCENTILE>  **
19687C               *****************************************************
19688C
19689      IDFTTY='ML'
19690C
19691CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER    2010
19692C
19693C               *****************************************************
19694C               **  TREAT THE SET BRITTLE FIBER WEIBULL LENGTH     **
19695C               **        <ON/OFF>                                 **
19696C               *****************************************************
19697C
19698      IBFWTY='OFF'
19699C
19700CCCCC THE FOLLOWING SECTION WAS ADDED    OCTOBER    2010
19701C
19702C               *****************************************************
19703C               **  TREAT THE SET BRITTLE FIBER WEIBULL L          **
19704C               **        <CONSTANT/VARIABLE>                      **
19705C               *****************************************************
19706C
19707      IBFWLI='CONS'
19708C
19709CCCCC THE FOLLOWING SECTION WAS ADDED    OCTOBER    2010
19710C
19711C               ****************************************************
19712C               **  TREAT THE SET END EFFECTS WEIBULL L           **
19713C               **        <CONSTANT/VARIABLE>                     **
19714C               ****************************************************
19715C
19716      IEEWLI='CONS'
19717C
19718CCCCC THE FOLLOWING SECTION WAS ADDED   SEPTEMBER    2010
19719C
19720C               *****************************************************
19721C               **  TREAT THE SET PAUSE LINES <value>              **
19722C               *****************************************************
19723C
19724      IPAULI=0
19725      IPAUCN=0
19726C
19727CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER    2010
19728C
19729C               *****************************************************
19730C               **  TREAT THE SET BOOTSTRAP PERCENTILE             **
19731C               **        <PERCENT POINT/DATA>                     **
19732C               *****************************************************
19733C
19734      IBOOPE='PERC'
19735C
19736CCCCC THE FOLLOWING SECTION WAS ADDED    AUGUST    2011
19737C
19738C               *****************************************************
19739C               **  TREAT THE SET BOOTSTRAP DISTRIBUTIONAL         **
19740C               **        PERCENTILES <OFF/LOWER/UPPER/TWOSIDED>   **
19741C               *****************************************************
19742C
19743      IBOODP='TWOS'
19744C
19745CCCCC THE FOLLOWING SECTION WAS ADDED    AUGUST    2011
19746C
19747C               *****************************************************
19748C               **  TREAT THE SET BOOTSTRAP CONFIDENCE INTERVALS   **
19749C               **                <PERCENTILE/T>                   **
19750C               *****************************************************
19751C
19752      IBOOCI='PERC'
19753C
19754CCCCC THE FOLLOWING SECTION WAS ADDED    OCTOBER   2011
19755C
19756C               *****************************************************
19757C               **  TREAT THE SET BOOTSTRAP T-PERCENTILE STANDARD  **
19758C               **                DEVIATION <VALUE>                **
19759C               *****************************************************
19760C
19761      PBOOTS=CPUMIN
19762C
19763CCCCC THE FOLLOWING SECTION WAS ADDED    OCTOBER   2011
19764C
19765C               *****************************************************
19766C               **  TREAT THE SET BOOTSTRAP SMOOTHING <ON/OFF>     **
19767C               **            SET BOOTSTRAP SMOOTHING STAND DEVI   **
19768C               **                <VALUE>                          **
19769C               *****************************************************
19770C
19771      IBOOSM='PERC'
19772      PBOOSM=CPUMIN
19773C
19774CCCCC THE FOLLOWING SECTION WAS ADDED    OCTOBER    2011
19775C
19776C               *****************************************************
19777C               **  TREAT THE SET CONSENSUS MEAN PLOT SORT         **
19778C               **                <ON/OFF>                         **
19779C               *****************************************************
19780C
19781      ICMPSO='OFF'
19782C
19783CCCCC THE FOLLOWING SECTION WAS ADDED    OCTOBER    2011
19784C
19785C               *****************************************************
19786C               **  TREAT THE SET CONSENSUS MEAN PLOT DATA         **
19787C               **                <ON/OFF>                         **
19788C               *****************************************************
19789C
19790      ICMPDA='ON'
19791C
19792CCCCC THE FOLLOWING SECTION WAS ADDED    OCTOBER    2011
19793C
19794C               *****************************************************
19795C               **  TREAT THE SET CONSENSUS MEAN PLOT ERROR        **
19796C               **                 CONFIDENCE LIMITS/              **
19797C               **                 ONE STANDARD ERROR/             **
19798C               **                 TWO STANDARD ERROR              **
19799C               *****************************************************
19800C
19801      ICMPER='2SE'
19802C
19803CCCCC THE FOLLOWING SECTION WAS ADDED    NOVEMBER    2016
19804C
19805C               *****************************************************
19806C               **  TREAT THE SET CONSENSUS MEAN PLOT OMIT LABS    **
19807C               **                <LIST OF LABS TO OMIT>           **
19808C               *****************************************************
19809C
19810      ICMPNL=0
19811      DO5010II=1,MAXOLB
19812        ICMPLL(II)=-1
19813 5010 CONTINUE
19814C
19815CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL       2017
19816C
19817C               *****************************************************
19818C               **  TREAT THE SET CONSENSUS MEAN PLOT OMIT METHOD  **
19819C               **                <ONE/TWO/THREE> <METHOD>         **
19820C               *****************************************************
19821C
19822      ICMPM1='NULL'
19823      ICMPM2='NULL'
19824      ICMPM3='NULL'
19825C
19826CCCCC THE FOLLOWING SECTION WAS ADDED    OCTOBER    2010
19827C
19828C               *****************************************************
19829C               **  TREAT THE SET MOVING DIRECTION                 **
19830C               **        <LEFT/CENTER/RIGHT>                      **
19831C               *****************************************************
19832C
19833      IMOVDI='CENT'
19834C
19835CCCCC THE FOLLOWING SECTION WAS ADDED    OCTOBER    2010
19836C
19837C               *****************************************************
19838C               **  TREAT THE SET MOVING END POINT                 **
19839C               **        <SKIP/PARTIAL/SYMMETRIC>                 **
19840C               *****************************************************
19841C
19842      IMOVEP='SKIP'
19843C
19844CCCCC THE FOLLOWING SECTION WAS ADDED    NOVEMBER    2010
19845C
19846C               *****************************************************
19847C               **  TREAT THE SET MATRIX TO VARIABLE               **
19848C               **        <COLUMN/ROW>                             **
19849C               *****************************************************
19850C
19851      IMATVA='COLU'
19852C
19853CCCCC THE FOLLOWING SECTION WAS ADDED    NOVEMBER    2010
19854C
19855C               *****************************************************
19856C               **  TREAT THE SET VARIABLE TO MATRIX               **
19857C               **        <COLUMN/ROW>                             **
19858C               *****************************************************
19859C
19860      IVARMA='COLU'
19861C
19862CCCCC THE FOLLOWING SECTION WAS ADDED    DECEMBER    2010
19863C
19864C               *****************************************************
19865C               **  TREAT THE SET HOMOSCEDASTICITY PLOT LOCATION   **
19866C               **        <STAT>                                   **
19867C               *****************************************************
19868C
19869      IHOMLO='MEAN'
19870C
19871CCCCC THE FOLLOWING SECTION WAS ADDED    DECEMBER    2010
19872C
19873C               *****************************************************
19874C               **  TREAT THE SET HOMOSCEDASTICITY PLOT SCALE      **
19875C               **        <STAT>                                   **
19876C               *****************************************************
19877C
19878      IHOMSC='SD  '
19879C
19880CCCCC THE FOLLOWING SECTION WAS ADDED    DECEMBER    2010
19881C
19882C               ******************************************************
19883C               **  TREAT THE SET HOMOSCEDASTICITY PLOT CIRCLE     **
19884C               **                TECHNIQUE <ON/OFF>               **
19885C               *****************************************************
19886C
19887      IHOMCT='OFF'
19888C
19889CCCCC THE FOLLOWING SECTION WAS ADDED    JANUARY    2011
19890C
19891C               *****************************************************
19892C               **  TREAT THE SET BEST FIT CRITERION               **
19893C               **                <AIC/PPCC/KS/AD/CHISQUARE>       **
19894C               *****************************************************
19895C
19896      IBFICR='AD'
19897C
19898CCCCC THE FOLLOWING SECTION WAS ADDED    JANUARY    2011
19899C
19900C               *****************************************************
19901C               **  TREAT THE SET BEST FIT METHOD                  **
19902C               **                <MAXI LIKE/PPCC/KS/AD/CHISQUARE> **
19903C               *****************************************************
19904C
19905      IBFIME='ML'
19906C
19907CCCCC THE FOLLOWING SECTION WAS ADDED    JANUARY    2013
19908C
19909C               ******************************************************
19910C               **  TREAT THE SET BEST FIT FONG <ON/OFF>            **
19911C               ******************************************************
19912C
19913      IBFIFO='OFF'
19914C
19915CCCCC THE FOLLOWING SECTION WAS ADDED    JULY       2013
19916C
19917C               ******************************************************
19918C               **  TREAT THE SET BEST FIT FONG TYPE <PDF/CDF>      **
19919C               ******************************************************
19920C
19921      IBFITY='PDF'
19922C
19923CCCCC THE FOLLOWING SECTION WAS ADDED    JULY       2013
19924C
19925C               ******************************************************
19926C               **  TREAT THE SET DISTRIBUTIONAL PERCENTILE         **
19927C               **                <LOWER/UPPER/TWOSIDE>             **
19928C               ******************************************************
19929C
19930      IDTYPR='TWOS'
19931C
19932CCCCC THE FOLLOWING SECTION WAS ADDED    MARCH      2013
19933C
19934C               ******************************************************
19935C               **  TREAT THE SET WEIBULL GAUGE LENGTH <ON/OFF>     **
19936C               ******************************************************
19937C
19938      IWEIGL='OFF'
19939C
19940CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL      2013
19941C
19942C               ************************************************************
19943C               **  TREAT THE SET WEIBULL MAXIMUM LIKELIHOOD <ON/OFF>     **
19944C               ************************************************************
19945C
19946      IWEIML='ON'
19947C
19948CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL      2013
19949C
19950C               ************************************************************
19951C               **  TREAT THE SET WEIBULL MODIFIED MOMENTS   <ON/OFF>     **
19952C               ************************************************************
19953C
19954      IWEIMM='ON'
19955C
19956CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL      2013
19957C
19958C               ***************************************************
19959C               **  TREAT THE SET WEIBULL MOMENTS   <ON/OFF>     **
19960C               ***************************************************
19961C
19962      IWEIMO='ON'
19963C
19964CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER  2014
19965C
19966C               ***************************************************
19967C               **  TREAT THE SET WEIBULL ELEMENTAL PERCENTILES  **
19968C               **                <ON/OFF>                       **
19969C               ***************************************************
19970C
19971      IWEIEP='OFF'
19972C
19973CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER  2014
19974C
19975C               ***************************************************
19976C               **  TREAT THE SET WEIBULL L MOMENTS <ON/OFF>     **
19977C               ***************************************************
19978C
19979      IWEILM='OFF'
19980C
19981CCCCC THE FOLLOWING SECTION WAS ADDED    OCTOBER  2014
19982C
19983C               ******************************************************
19984C               **  TREAT THE SET GEV  MAXIMUM LIKELIHOOD <ON/OFF>  **
19985C               ******************************************************
19986C
19987      IGEVML='OFF'
19988C
19989CCCCC THE FOLLOWING SECTION WAS ADDED    OCTOBER  2014
19990C
19991C               ******************************************************
19992C               **  TREAT THE SET AUTOMATIC VARIABLE BASE NAME      **
19993C               **                <VALUE>                           **
19994C               ******************************************************
19995C
19996      IAVABN='COL'
19997C
19998CCCCC THE FOLLOWING SECTION WAS ADDED    OCTOBER  2014
19999C
20000C               ******************************************************
20001C               **  TREAT THE SET AUTOMATIC VARIABLE NAME           **
20002C               **                <FILE/AUTOMATIC>                  **
20003C               ******************************************************
20004C
20005      IAVANM='AUTO'
20006C
20007CCCCC THE FOLLOWING SECTION WAS ADDED    DECEMBER  2014
20008C
20009C               ******************************************************
20010C               **  TREAT THE SET X11 CLIPBOARD                     **
20011C               **                <CUT BUFFER/SELECTION/PRIMARY>    **
20012C               ******************************************************
20013C
20014      IX11CB='CLIP'
20015C
20016CCCCC THE FOLLOWING SECTION WAS ADDED    NOVEMBER  2014
20017C
20018C               ***************************************************
20019C               **  TREAT THE SET CLIPBOARD SKIP    <ON/OFF>     **
20020C               ***************************************************
20021C
20022      ICLISK='OFF'
20023C
20024CCCCC THE FOLLOWING SECTION WAS ADDED    NOVEMBER  2014
20025C
20026C               ***************************************************
20027C               **  TREAT THE SET CLIPBOARD DELAY   <VALUE>      **
20028C               ***************************************************
20029C
20030      PCLIDE=1.0
20031C
20032CCCCC THE FOLLOWING SECTION WAS ADDED    NOVEMBER  2014
20033C
20034C               ***************************************************
20035C               **  TREAT THE SET CLIPBOARD LOOP LINES  <VALUE>  **
20036C               ***************************************************
20037C
20038      ICLILL=10000
20039C
20040CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL      2013
20041C
20042C               ******************************************************
20043C               **  TREAT THE SET SKEWNESS DEFINITION               **
20044C               **                 FISHER PEARSON/                  **
20045C               **                 ADJUSTED FISHER PEARSON/OLD      **
20046C               ******************************************************
20047C
20048      ISKWDF='FIPE'
20049C
20050CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL      2013
20051C
20052C               ******************************************************
20053C               **  TREAT THE SET PERCENTILE DIRECTION              **
20054C               **                <LOWER/UPPER/TWO-SIDED>           **
20055C               ******************************************************
20056C
20057      IPERDI='TWOS'
20058C
20059CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL      2013
20060C
20061C               ******************************************************
20062C               **  TREAT THE SET FLUCTUATION PLOT BAR DIRECTION    **
20063C               **                <VERTICAL/HORIZONTAL>             **
20064C               ******************************************************
20065C
20066      IFLUBD='VERT'
20067C
20068CCCCC THE FOLLOWING SECTION WAS ADDED    MARCH      2013
20069C
20070C               ********************************************************
20071C               **  TREAT THE SET CUMULATIVE STATISTIC START <IVALUE> **
20072C               ********************************************************
20073C
20074      ICSTSV=1
20075C
20076CCCCC THE FOLLOWING SECTION WAS ADDED    FEBRUARY    2011
20077C
20078C               ******************************************************
20079C               **  TREAT THE SET LEVENE GROUP STATISTICS          **
20080C               **                <ON/OFF>                         **
20081C               *****************************************************
20082C
20083      ILEVGS='ML'
20084C
20085CCCCC THE FOLLOWING SECTION WAS ADDED    FEBRUARY    2011
20086C
20087C               *****************************************************
20088C               **  TREAT THE SET KRUSKAL WALLIS GROUP STATISTICS  **
20089C               **                <ON/OFF>                         **
20090C               *****************************************************
20091C
20092      IKRUGS='OFF'
20093C
20094CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL       2011
20095C
20096C               *****************************************************
20097C               **  TREAT THE SET T TEST VARIANCE                  **
20098C               **                <EQUAL/UNEQUAL/BOTH>             **
20099C               *****************************************************
20100C
20101      ITTEVA='BOTH'
20102C
20103CCCCC THE FOLLOWING SECTION WAS ADDED    AUGUST       2011
20104C
20105C               *****************************************************
20106C               **  TREAT THE SET POSTSCRIPT VIEWER <NAME>         **
20107C               **            SET PDF        VIEWER <NAME>         **
20108C               **            SET IMAGE      VIEWER <NAME>         **
20109C               **            SET BACKUP     VIEWER <NAME>         **
20110C               *****************************************************
20111C
20112C     NOTE: COMMENTS FOR LINUX/MacOS SYSTEMS
20113C
20114C           1. "open" FOR MacOS AND "xdg-open" FOR LINUX USE THE
20115C              FILE EXTENSION TO DETERMINE THE APPROPRIATE APPLICATION
20116C              TO USE.  HOWEVER, THE "PSVIEW" COMMAND IS OFTEN USED
20117C              WITH THE dppl1f.dat AND dppl2f.dat FILES WHICH DO
20118C              NOT HAVE THE APPROPRIATE FILE EXTENSIONS.
20119C
20120C           2. ALSO, THE ghostview APPLICATION IS LESS LIKELY
20121C              TO BE INSTALLED BY DEFAULT.  THE "okular" APPLICATION
20122C              IS MORE LIKELY TO BE AVAILABLE.
20123C
20124C           SO TO ALLOW xdg-open AND open TO BE USED AS THE DEFAULT
20125C           VIEWER, ALSO DEFINE A "BACKUP" VIEWER.  THIS WILL BE USED
20126C           WHEN THE REQUESTED FILE DOES NOT HAVE THE APPROPRIATE
20127C           FILE EXTENSION.  FOR LINUX, WE WILL USE THE "okular"
20128C           APPLICATION AS THIS IS INSTALLLED BY DEFAULT ON MANY
20129C           SYSTEMS AND CAN HANDLE A NUMBER OF IMAGE TYPES AS WELL
20130C           AS POSTSCRIPT AND PDF FILES.  FOR MacOS, USE
20131C           "/Applications/Preview.app"
20132C
20133      IF(IOPSY1.EQ.'UNIX' .OR. IOPSY1.EQ.'LINU')THEN
20134        IF(IOPSY2.EQ.'MAC ')THEN
20135          IPSTVW='open'
20136          NCPSVW=4
20137          IPDFVW='open'
20138          NCPDVW=4
20139          IIMAVW='open'
20140          NCIMVW=4
20141          IBCKVW='/Applications/Preview.app'
20142          NCBKVW=25
20143        ELSE
20144          IPSTVW='xdg-open'
20145          NCPSVW=8
20146          IPDFVW='xdg-open'
20147          NCPDVW=8
20148          IIMAVW='xdg-open'
20149          NCIMVW=8
20150          IBCKVW='okular'
20151          NCBKVW=6
20152        ENDIF
20153      ELSEIF(IOPSY1.EQ.'PC-D')THEN
20154C
20155C       2019/12: TAKE INITIAL PATH FROM SYSTEM ENVIRONMENT
20156C                VARIABLES.  THIS IS MORE ROBUST FOR NON-ENGLISH
20157C                PLATFORMS.
20158C
20159        CALL DPCONA(92,IBASLC)
20160        IF(WINBIT.EQ.'64')THEN
20161          IPSTVW(1:NCP86F)=P86FIL(1:NCP86F)
20162          IPDFVW(1:NCP86F)=P86FIL(1:NCP86F)
20163          IBCKVW(1:NCP86F)=P86FIL(1:NCP86F)
20164          NCPSVW=NCP86F
20165          NCPDVW=NCP86F
20166          NCBKVW=NCP86F
20167        ELSE
20168          IPSTVW(1:NCPROF)=PROFIL(1:NCPROF)
20169          IPDFVW(1:NCPROF)=PROFIL(1:NCPROF)
20170          IBCKVW(1:NCPROF)=PROFIL(1:NCPROF)
20171          NCPSVW=NCPROF
20172          NCPDVW=NCPROF
20173          NCBKVW=NCPROF
20174        ENDIF
20175C
20176        NCPSVW=NCPSVW+1
20177        IPSTVW(NCPSVW:NCPSVW)=IBASLC
20178        IPSTVW(NCPSVW+1:NCPSVW+8)='GHOSTGUM'
20179        NCPSVW=NCPSVW+8
20180        IPSTVW(NCPSVW:NCPSVW)=IBASLC
20181        IPSTVW(NCPSVW+1:NCPSVW+6)='GSVIEW'
20182        NCPSVW=NCPSVW+6
20183        NCPSVW=NCPSVW+1
20184        IPSTVW(NCPSVW:NCPSVW)=IBASLC
20185        IPSTVW(NCPSVW+1:NCPSVW+12)='GSVIEW32.EXE'
20186        NCPSVW=NCPSVW+12
20187C
20188        NCPDVW=NCPDVW+1
20189        IPDFVW(NCPDVW:NCPDVW)=IBASLC
20190        IPDFVW(NCPDVW+1:NCPDVW+5)='ADOBE'
20191        NCPDVW=NCPDVW+5
20192        NCPDVW=NCPDVW+1
20193        IPDFVW(NCPDVW:NCPDVW)=IBASLC
20194        IPDFVW(NCPDVW+1:NCPDVW+17)='Acrobat Reader DC'
20195        NCPDVW=NCPDVW+17
20196        NCPDVW=NCPDVW+1
20197        IPDFVW(NCPDVW:NCPDVW)=IBASLC
20198        IPDFVW(NCPDVW+1:NCPDVW+6)='Reader'
20199        NCPDVW=NCPDVW+6
20200        NCPDVW=NCPDVW+1
20201        IPDFVW(NCPDVW:NCPDVW)=IBASLC
20202        IPDFVW(NCPDVW+1:NCPDVW+12)='AcroRd32.exe'
20203        NCPDVW=NCPDVW+12
20204C
20205        NCBKVW=NCBKVW+1
20206        IBCKVW(NCBKVW:NCBKVW)=IBASLC
20207        IBCKVW(NCBKVW+1:NCBKVW+8)='GHOSTGUM'
20208        NCBKVW=NCBKVW+8
20209        IBCKVW(NCBKVW:NCBKVW)=IBASLC
20210        IBCKVW(NCBKVW+1:NCBKVW+6)='GSVIEW'
20211        NCBKVW=NCBKVW+6
20212        NCBKVW=NCBKVW+1
20213        IBCKVW(NCBKVW:NCBKVW)=IBASLC
20214        IBCKVW(NCBKVW+1:NCBKVW+12)='GSVIEW32.EXE'
20215        NCBKVW=NCBKVW+12
20216C
20217        IIMAVW=' '
20218        NCIMVW=0
20219      ENDIF
20220C
20221CCCCC THE FOLLOWING SECTION WAS ADDED    NOVEMBER       2019
20222C
20223C               *****************************************************
20224C               **  TREAT THE SET LIST VIEWER   <NAME>             **
20225C               **  TREAT THE SET LIST LAUNCHER <NAME>             **
20226C               **  TREAT THE SET EXCEL VIEWER  <NAME>             **
20227C               **  TREAT THE SET WORD  VIEWER  <NAME>             **
20228C               **  TREAT THE SET POWER POINT  VIEWER  <NAME>      **
20229C               *****************************************************
20230C
20231C     FOR WINDOWS, YOU CAN SIMPLY DO A
20232C
20233C         SYSTEM FILE.
20234C
20235C     AND THE FILE ASSOCIATIONS WILL INVOKE TO PROPER APPLICATION.
20236C     FOR LINUX, YOU NEED TO SPECIFY AN EXPLICIT APPLICATION TO VIEW
20237C     AN EXCEL OR WORD FILE.
20238C
20239C     ON MANY LINUX/UNIX INSTALLATIONS, YOU CAN USE THE
20240C     "xdg-open" WHICH WILL USE FILE ASSOCIATIONS ON THE
20241C     SYSTEM TO AUTOMATICALLY DETERMINE THE USER'S PREFERRED
20242C     APPLICATION.
20243C
20244C     ON MacOS, "open" HAS SIMILAR FUNCTIONALITY AS "xdg-open"
20245C     ON LINUX.
20246C
20247      IF(IOPSY1.EQ.'UNIX' .OR. IOPSY1.EQ.'LINU')THEN
20248        ILSTVW='vi'
20249        NCLSVW=2
20250        ILSTLA='gnome-terminal -e'
20251        NCLSLA=17
20252CCCCC   IEXCVW='libreoffice --calc'
20253CCCCC   NCEXCW=18
20254CCCCC   IWORVW='libreoffice --writer'
20255CCCCC   NCWOVW=20
20256        IF(IOPSY2.EQ.'MAC ')THEN
20257          IEXCVW='open'
20258          NCEXVW=4
20259          IWORVW='open'
20260          NCWOVW=4
20261          IPPTVW='open'
20262          NCPPVW=4
20263        ELSE
20264          IEXCVW='xdg-open'
20265          NCEXVW=8
20266          IWORVW='xdg-open'
20267          NCWOVW=8
20268          IPPTVW='xdg-open'
20269          NCPPVW=8
20270        ENDIF
20271      ELSE
20272C
20273        ILSTVW='notepad'
20274        NCLSVW=7
20275        ILSTLA=' '
20276        NCLSLA=0
20277        IEXCVW=' '
20278        NCEXCW=0
20279        IWORVW=' '
20280        NCWOVW=0
20281        IPPTVW=' '
20282        NCPPVW=0
20283      ENDIF
20284C
20285CCCCC THE FOLLOWING SECTION WAS ADDED    NOVEMBER       2019
20286C
20287C               *****************************************************
20288C               **  TREAT THE SET LIST NEW WINDOW <ON/OFF>         **
20289C               **  TREAT THE SET HELP NEW WINDOW <ON/OFF>         **
20290C               *****************************************************
20291C
20292      IHLPNW='OFF'
20293C
20294CCCCC THE FOLLOWING SECTION WAS ADDED    DECEMBER    2011
20295C
20296C               *****************************************************
20297C               **  TREAT THE SET CHARACTER AUTOMATIC OFFSET       **
20298C               **                <IVALUE>                         **
20299C               *****************************************************
20300C
20301      ICHAOF=0
20302C
20303CCCCC THE FOLLOWING SECTION WAS ADDED    JUNE    2012
20304C
20305C               *****************************************************
20306C               **  TREAT THE SET CHARACTER AUTOMATIC DYNAMIC      **
20307C               **                <OFF/ON>                         **
20308C               *****************************************************
20309C
20310      ICHADY='OFF'
20311C
20312CCCCC THE FOLLOWING SECTION WAS ADDED    JUNE    2012
20313C
20314C               *****************************************************
20315C               **  TREAT THE SET CHARACTER REPEAT OFFSET          **
20316C               **                <VALUE>                          **
20317C               *****************************************************
20318C
20319      ICHARO=-1
20320C
20321CCCCC THE FOLLOWING SECTION WAS ADDED    FEBRUARY 2012
20322C
20323C               *********************************************
20324C               **  TREAT THE SET KRUSKAL WALLIS MULTIPLE  **
20325C               **                COMPARISON <ON/OFF>      **
20326C               *********************************************
20327C
20328      IKRUMC='ON'
20329C
20330CCCCC THE FOLLOWING SECTION WAS ADDED    FEBRUARY 2012
20331C
20332C               *********************************************
20333C               **  TREAT THE SET ISO PLOT                 **
20334C               **                <LAB AVERAGES/RESPONSE>  **
20335C               *********************************************
20336C
20337      IISOLA='LAVE'
20338C
20339CCCCC THE FOLLOWING SECTION WAS ADDED    FEBRUARY 2012
20340C
20341C               *********************************************
20342C               **  TREAT THE SET ISO PLOT STATISTIC       **
20343C               **                <MEAN/H15/MEDIAN>        **
20344C               *********************************************
20345C
20346      IISOME='MEAN'
20347C
20348CCCCC THE FOLLOWING SECTION WAS ADDED    FEBRUARY 2012
20349C
20350C               ***********************************************
20351C               **  TREAT THE SET RLP PLOT LABEL             **
20352C               **                <NONE/ALL/WARNING/ACTION>  **
20353C               ***********************************************
20354C
20355      IRLPLA='ALL'
20356C
20357CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL 2012
20358C
20359C               ***********************************************
20360C               **  TREAT THE SET BLOCK PLOT FILTER <ON/OFF> **
20361C               ***********************************************
20362C
20363      IBPLFI='OFF'
20364C
20365CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL 2012
20366C
20367C               ***********************************************
20368C               **  TREAT THE SET BLOCK PLOT LABEL <ON/OFF>  **
20369C               ***********************************************
20370C
20371      IBPLLA='OFF'
20372C
20373CCCCC THE FOLLOWING SECTION WAS ADDED    DECEMBER 2012
20374C
20375C               ****************************************************
20376C               **  TREAT THE SET BLOCK PLOT BACKGROUND <ON/OFF>  **
20377C               ****************************************************
20378C
20379      IBPLBG='OFF'
20380C
20381CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL 2012
20382C
20383C               **************************************************
20384C               **  TREAT THE SET CAPTURE FLUSH ERASE <ON/OFF>  **
20385C               **************************************************
20386C
20387      ICAPFE='ON'
20388C
20389CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL 2012
20390C
20391C               ***********************************************
20392C               **  TREAT THE SET BLOCK PLOT WIDTH <VALUE>   **
20393C               ***********************************************
20394C
20395      PBPLWI=CPUMIN
20396C
20397CCCCC THE FOLLOWING SECTION WAS ADDED    NOVEMBER 2016
20398C
20399C               ***********************************************
20400C               **  TREAT THE SET BLOCK PLOT JITTER <VALUE>  **
20401C               ***********************************************
20402C
20403      PBPLJI=0.0
20404C
20405CCCCC THE FOLLOWING SECTION WAS ADDED    JULY 2017
20406C
20407C               ***********************************************
20408C               **  TREAT THE SET POINCARE PLOT LAG <VALUE>  **
20409C               ***********************************************
20410C
20411      PPPLLA=1.0
20412C
20413CCCCC THE FOLLOWING SECTION WAS ADDED    JULY 2017
20414C
20415C               ******************************************************
20416C               **  TREAT THE SET NORMAL KERNEL DENSITY MIXTURE     **
20417C               **                PLOT EXPANSION FACTOR <VALUE>     **
20418C               ******************************************************
20419C
20420      PNKDEF=1.0
20421C
20422CCCCC THE FOLLOWING SECTION WAS ADDED    FEBRUARY 2019
20423C
20424C               ******************************************************
20425C               **  TREAT THE SET CARRIAGE RETURN GAP <VALUE>       **
20426C               ******************************************************
20427C
20428      PWRTGA=0.1
20429C
20430CCCCC THE FOLLOWING SECTION WAS ADDED    OCTOBER 2019
20431C
20432C               *****************************************************
20433C               **  TREAT THE SET GRUBB TEST STANDARD DEVIATION   **
20434C               **                <VALUE>                         **
20435C               **  TREAT THE SET GRUBB TEST DEGREES OF FREEDOM   **
20436C               **                <VALUE>                         **
20437C               **  TREAT THE SET GRUBB TEST CRITICAL VALUE       **
20438C               **                <FORMULA/ASTM/SIMULATION>       **
20439C               ****************************************************
20440C
20441      PGRUSD=CPUMIN
20442      PGRUDF=CPUMAX
20443      IGRUTA='FORM'
20444C
20445CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL 2019
20446C
20447C               ******************************************************
20448C               **  TREAT THE SET AUXILLARY FILES DECIMAL POINT     **
20449C               **                <VALUE>                           **
20450C               ******************************************************
20451C
20452      IAUXDP=7
20453C
20454CCCCC THE FOLLOWING SECTION WAS ADDED    OCTOBER 2019
20455C
20456C               ******************************************************
20457C               **  TREAT THE SET HEAD LINES <VALUE>                **
20458C               **  TREAT THE SET TAIL LINES <VALUE>                **
20459C               ******************************************************
20460C
20461      IHEALI=10
20462      ITAILI=10
20463C
20464CCCCC THE FOLLOWING SECTION WAS ADDED    NOVEMBER 2019
20465C
20466C               ******************************************************
20467C               **  TREAT THE SET BROWSER HEIGHT <VALUE>            **
20468C               **  TREAT THE SET BROWSER WIDTH  <VALUE>            **
20469C               ******************************************************
20470C
20471      IBROHE=0
20472      IBROWI=0
20473C
20474CCCCC THE FOLLOWING SECTION WAS ADDED    NOVEMBER 2019
20475C
20476C               ******************************************************
20477C               **  TREAT THE SET RANLUX LEVEL <1/2/3/4>            **
20478C               ******************************************************
20479C
20480      IRLXLE=3
20481C
20482CCCCC THE FOLLOWING SECTION WAS ADDED    DECEMBER 2012
20483C
20484C               ***********************************************
20485C               **  TREAT THE SET TOLERANCE LIMITS DEGREES   **
20486C               **                OF FREEDOM <VALUE>         **
20487C               ***********************************************
20488C
20489      PTOLDF=CPUMIN
20490C
20491CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 2012
20492C
20493C               ***********************************************
20494C               **  TREAT THE SET FIELD <numb> TYPE          **
20495C               **                <NUMERIC/CHARACTER>        **
20496C               ***********************************************
20497C
20498      DO8111I=1,250
20499        IFIETY(I)=0
20500 8111 CONTINUE
20501C
20502CCCCC THE FOLLOWING SECTION WAS ADDED    MARCH 2013
20503C
20504C               **************************************************
20505C               **  TREAT THE SET KENDALL TAU CRITICAL VALUE    **
20506C               **                <TABLE/NORMAL APPROXIMATION>  **
20507C               **************************************************
20508C
20509      IKTATA='TABL'
20510C
20511CCCCC THE FOLLOWING SECTION WAS ADDED    MARCH 2013
20512C
20513C               *****************************************************
20514C               **  TREAT THE SET RANK CORRELATION CRITICAL VALUE  **
20515C               **                <TABLE/NORMAL APPROXIMATION>     **
20516C               *****************************************************
20517C
20518      IRCRTA='TABL'
20519C
20520CCCCC THE FOLLOWING SECTION WAS ADDED    MARCH 2013
20521C
20522C               ***********************************************
20523C               **  TREAT THE SET CONSENSUS MEAN TYPE B      **
20524C               **                <VALUE>                    **
20525C               ***********************************************
20526C
20527      PCMTYB=CPUMIN
20528C
20529CCCCC THE FOLLOWING SECTION WAS ADDED    MARCH 2013
20530C
20531C               **************************************************
20532C               **  TREAT THE SET CONSENSUS MEAN TYPE B METHOD  **
20533C               **                <ADD/BOOTSTRAP>               **
20534C               **************************************************
20535C
20536      ICMTYB='ADD'
20537C
20538CCCCC THE FOLLOWING SECTION WAS ADDED    JUNE 2013
20539C
20540C               **************************************************
20541C               **  TREAT THE SET CONSENSUS MEAN TABLE ONE      **
20542C               **                                     TWO      **
20543C               **                                     THREE    **
20544C               **                                     FOUR     **
20545C               **                               DETAILED TABLE **
20546C               **                <ON/OFF>                      **
20547C               **************************************************
20548C
20549      ICMET1='ON'
20550      ICMET2='ON'
20551      ICMET3='ON'
20552      ICMET4='ON'
20553      ICMET5='ON'
20554C
20555CCCCC THE FOLLOWING SECTION WAS ADDED    MARCH 2014
20556C
20557C               **************************************************
20558C               **  TREAT THE SET CONSENSUS MEAN TYPE B         **
20559C               **                <VARIABLE NAME>               **
20560C               **************************************************
20561C
20562      ICMETB='NONE'
20563C
20564CCCCC THE FOLLOWING SECTION WAS ADDED    JUNE  2013
20565C
20566C               ***********************************************
20567C               **  TREAT THE SET BEST FIT LOWER LIMIT       **
20568C               **                         UPPER LIMIT       **
20569C               **                <VALUE>                    **
20570C               ***********************************************
20571C
20572      PBFILL=CPUMIN
20573      PBFIUL=CPUMIN
20574C
20575CCCCC THE FOLLOWING SECTION WAS ADDED    JULY  2013
20576C
20577C               ***********************************************
20578C               **  TREAT THE SET BEST FIT FONG XVALUE       **
20579C               **                <VALUE>                    **
20580C               ***********************************************
20581C
20582      PBFIXV=0.0
20583C
20584CCCCC THE FOLLOWING SECTION WAS ADDED    AUGUST     2013
20585C
20586C               ******************************************************
20587C               **  TREAT THE SET RGB MAXIMUM VALUE <VALUE>         **
20588C               ******************************************************
20589C
20590      IRGBMX=255
20591C
20592CCCCC THE FOLLOWING SECTION WAS ADDED    AUGUST     2013
20593C
20594C               *************************************************************
20595C               **  TREAT THE SET MCCOOL WEIBULL LOCATION TEST R1 <VALUE>  **
20596C               *************************************************************
20597C
20598      IMCCR1=0
20599C
20600CCCCC THE FOLLOWING SECTION WAS ADDED    DECEMBER     2013
20601C
20602C               *************************************************************
20603C               **  TREAT THE SET GHOSTSCRIPT VERSION <32/64>              **
20604C               *************************************************************
20605C
20606      IGSTVR='64'
20607C
20608CCCCC THE FOLLOWING SECTION WAS ADDED    MARCH        2014
20609C
20610C               *************************************************************
20611C               **  TREAT THE SET BINOMIAL METHOD                          **
20612C                                 <WILSON/ADJUSTED WALD/JEFFREYS/EXACT>    **
20613C               *************************************************************
20614C
20615      IBINME='WILS'
20616C
20617CCCCC THE FOLLOWING SECTION WAS ADDED    NOVEMBER     2017
20618C
20619C               ******************************************************
20620C               **  TREAT THE SET DIFFERENCE OF BINOMIAL METHOD     **
20621C                                 <ADJUSTED/WALD>                   **
20622C               ******************************************************
20623C
20624      IBI2ME='ADJU'
20625C
20626CCCCC THE FOLLOWING SECTION WAS ADDED    DECEMBER     2017
20627C
20628C               ******************************************************
20629C               **  TREAT THE SET BONETT STANDARD DEVIATION         **
20630C               **                CONFIDENCE INTERVAL <ON/OFF>      **
20631C               ******************************************************
20632C
20633      IBONSD='OFF'
20634C
20635CCCCC THE FOLLOWING SECTION WAS ADDED    DECEMBER     2017
20636C
20637C               ******************************************************
20638C               **  TREAT THE SET BONETT STANDARD DEVIATION         **
20639C               **                CONFIDENCE INTERVAL ADJUSTED      **
20640C               **                <ON/OFF>                          **
20641C               ******************************************************
20642C
20643      IBONAD='OFF'
20644C
20645CCCCC THE FOLLOWING SECTION WAS ADDED    JANUARY     2018
20646C
20647C               ******************************************************
20648C               **  TREAT THE SET DEX ORDERED PLOT IDENTIFICATION   **
20649C               **                <ON/OFF>                          **
20650C               ******************************************************
20651C
20652      IDPAID='OFF'
20653C
20654CCCCC THE FOLLOWING SECTION WAS ADDED    MARCH     2019
20655C
20656C               ******************************************************
20657C               **  TREAT THE SET SYSTEM PERSIST <ON/OFF>           **
20658C               ******************************************************
20659C
20660      ISYSPE='OFF'
20661C
20662CCCCC THE FOLLOWING SECTION WAS ADDED    MARCH     2019
20663C
20664C               ******************************************************
20665C               **  TREAT THE SET SYSTEM HIDDEN <ON/OFF>            **
20666C               ******************************************************
20667C
20668      ISYSHI='OFF'
20669C
20670CCCCC THE FOLLOWING SECTION WAS ADDED    DECEMBER     2019
20671C
20672C               ******************************************************
20673C               **  TREAT THE SET HOME PATH     <ON/OFF>            **
20674C               ******************************************************
20675C
20676      IHOMPA='OFF'
20677C
20678CCCCC THE FOLLOWING SECTION WAS ADDED    JANUARY     2020
20679C
20680C               ******************************************************
20681C               **  TREAT THE SET IPLOT JITTER  <ON/OFF>            **
20682C               ******************************************************
20683C
20684      IIPLJI='OFF'
20685C
20686CCCCC THE FOLLOWING SECTION WAS ADDED    FEBRUARY     2020
20687C
20688C               ******************************************************
20689C               **  TREAT THE SET WRITE CSV     <ON/OFF>            **
20690C               ******************************************************
20691C
20692      ICSVWR='OFF'
20693C
20694CCCCC THE FOLLOWING SECTION WAS ADDED    FEBRUARY     2020
20695C
20696C               ******************************************************
20697C               **  TREAT THE SET EXCEL SHEET   <NAME>              **
20698C               **  TREAT THE SET EXCEL NUMBER OF ROWS <VALUE>      **
20699C               **  TREAT THE SET EXCEL START ROW <VALUE>           **
20700C               **  TREAT THE SET EXCEL STOP  ROW    <VALUE>        **
20701C               **  TREAT THE SET EXCEL START COLUMN <VALUE>        **
20702C               **  TREAT THE SET EXCEL STOP  COLUMN <VALUE>        **
20703C               ******************************************************
20704C
20705      IEXCSH='Sheet1'
20706      IEXCCL='NULL'
20707      IEXCR1=-1
20708      IEXCR2=-1
20709      IEXCC1=-1
20710      IEXCC2=-1
20711C
20712CCCCC THE FOLLOWING SECTION WAS ADDED    FEBRUARY     2020
20713C
20714C               ******************************************************
20715C               **  TREAT THE SET INSERT OVERWRITE <ON/OFF>         **
20716C               ******************************************************
20717C
20718      IINSOW='ON'
20719C
20720CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL     2020
20721C
20722C               ******************************************************
20723C               **  TREAT THE SET BEST FIT <DIST>  <ON/OFF>         **
20724C               ******************************************************
20725C
20726      IBFINO='ON'
20727      IBFIUN='ON'
20728      IBFI2B='ON'
20729      IBFI4B='ON'
20730      IBFIPW='ON'
20731      IBFIRP='ON'
20732      IBFIAR='ON'
20733      IBFITR='ON'
20734      IBFITO='ON'
20735      IBFIRG='ON'
20736      IBFITS='ON'
20737      IBFINX='OFF'
20738      IBFGVX='ON'
20739      IBFGVN='ON'
20740      IBFGPX='ON'
20741      IBFGPN='ON'
20742      IBFIPA='ON'
20743      IBFFRX='ON'
20744      IBFFRN='ON'
20745      IBFGUX='ON'
20746      IBFGUN='ON'
20747      IBFILO='ON'
20748      IBFILL='ON'
20749      IBFIHS='ON'
20750      IBFIDX='ON'
20751      IBFIAX='ON'
20752      IBFIDW='ON'
20753      IBFIDG='ON'
20754      IBFITL='ON'
20755      IBFIGT='ON'
20756      IBFIER='ON'
20757      IBFIGH='ON'
20758      IBFIG ='ON'
20759      IBFISL='ON'
20760      IBFICA='ON'
20761      IBFICO='ON'
20762      IBFIFN='ON'
20763      IBFIHN='ON'
20764      IBFIHL='ON'
20765      IBFIBR='ON'
20766      IBFIAN='ON'
20767      IBFI2E='ON'
20768      IBFI1E='ON'
20769      IBFIRA='ON'
20770      IBFIMX='ON'
20771      IBF2WN='ON'
20772      IBF2WX='ON'
20773      IBF3WX='ON'
20774      IBF3WN='ON'
20775      IBFIIW='OFF'
20776      IBFI2L='ON'
20777      IBFI3L='ON'
20778      IBFIGA='ON'
20779      IBFILG='ON'
20780      IBFIIG='ON'
20781      IBFIFL='ON'
20782      IBFB10='ON'
20783      IBFIWA='ON'
20784      IBF2IG='ON'
20785      IBF3IG='ON'
20786      IBFILX='ON'
20787      IBFILD='ON'
20788      IBFIGX='ON'
20789      IBF2WN='ON'
20790      IBF2WX='ON'
20791      IBF1HN='ON'
20792      IBF2HN='ON'
20793      IBF1HL='ON'
20794      IBF2HL='ON'
20795C
20796CCCCC THE FOLLOWING SECTION WAS ADDED    FEBRUARY     2018
20797C
20798C               ******************************************************
20799C               **  TREAT THE SET DEX ORDERED PLOT UNCERTAINTY      **
20800C               **                <ON/OFF>                          **
20801C               ******************************************************
20802C
20803      IDPAUN='OFF'
20804C
20805CCCCC THE FOLLOWING SECTION WAS ADDED    JANUARY     2018
20806C
20807C               ******************************************************
20808C               **  TREAT THE SET DEX PARETO PLOT DIRECTION         **
20809C               **                <ASCENDING/DESCENDING>            **
20810C               ******************************************************
20811C
20812      IDPADI='DESC'
20813C
20814CCCCC THE FOLLOWING SECTION WAS ADDED    FEBRUARY     2019
20815C
20816C               ******************************************************
20817C               **  TREAT THE SET DEX STATISTIC PLOT INTERACTION    **
20818C               **                <NONE/2/3>
20819C               ******************************************************
20820C
20821      IDEXIN='NONE'
20822C
20823CCCCC THE FOLLOWING SECTION WAS ADDED    MARCH        2014
20824C
20825C               *********************************************************
20826C               **  TREAT THE SET WEIBULL MAXIMUM LIKELIHOOD METHOD     *
20827C               **                <COHEN/PROFILE LIKELIHOOD>            *
20828C               *********************************************************
20829C
20830      I3WEME='COHE'
20831C
20832CCCCC THE FOLLOWING SECTION WAS ADDED    MARCH        2014
20833C
20834C               *********************************************************
20835C               **  TREAT THE SET WEIBULL MAXIMUM LIKELIHOOD MINIMUM   **
20836C               **                <VALUE>                              **
20837C               *********************************************************
20838C
20839      P3WEMI=0.0
20840C
20841CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL        2014
20842C
20843C               *********************************************************
20844C               **  TREAT THE SET LOGNORMAL MAXIMUM LIKELIHOOD METHOD  **
20845C               **                <COHEN/PROFILE LIKELIHOOD>           **
20846C               *********************************************************
20847C
20848      I3LNME='COHE'
20849C
20850CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL        2014
20851C
20852C               *********************************************************
20853C               **  TREAT THE SET LOGNORMAL MAXIMUM LIKELIHOOD MINIMUM **
20854C               **                <VALUE>                              **
20855C               *********************************************************
20856C
20857      P3LNMI=0.0
20858C
20859CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL        2014
20860C
20861C               *********************************************************
20862C               **  TREAT THE SET GAMMA     MAXIMUM LIKELIHOOD METHOD  **
20863C               **                <COHEN/PROFILE LIKELIHOOD>           **
20864C               *********************************************************
20865C
20866      I3GAME='COHE'
20867C
20868CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL        2014
20869C
20870C               *********************************************************
20871C               **  TREAT THE SET INVERSE GAUSSIAN DEFINITION          **
20872C               **                <TWEEDIE/CHAN>                       **
20873C               *********************************************************
20874C
20875      IGAUDF='TWEE'
20876C
20877CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL        2014
20878C
20879C               *********************************************************
20880C               **  TREAT THE SET INVERSE GAUSSIAN CONFIDENCE LIMITS   **
20881C               **                METHOD <MLE/MODIFIED MOMENTS>        **
20882C               *********************************************************
20883C
20884      IGAUME='MLE'
20885C
20886CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL        2014
20887C
20888C               *********************************************************
20889C               **  TREAT THE SET GAMMA     MAXIMUM LIKELIHOOD MINIMUM **
20890C               **                <VALUE>                              **
20891C               *********************************************************
20892C
20893      P3GAMI=0.0
20894C
20895CCCCC THE FOLLOWING SECTION WAS ADDED    OCTOBER  2014
20896C
20897C               **************************************************
20898C               **  TREAT THE SET SEARCH  DIRECTORY <PATH>       *
20899C               **  TREAT THE SET SEARCH2 DIRECTORY <PATH>       *
20900C               **  TREAT THE SET SEARCH3 DIRECTORY <PATH>       *
20901C               **************************************************
20902C
20903      ISEADI='NULL'
20904      ISEAD2='NULL'
20905      ISEAD3='NULL'
20906      ISEAD4='NULL'
20907      ISEAD5='NULL'
20908      ISEAD6='NULL'
20909      NCSEDI=-1
20910      NCSED2=-1
20911      NCSED3=-1
20912      NCSED4=-1
20913      NCSED5=-1
20914      NCSED6=-1
20915C
20916CCCCC THE FOLLOWING SECTION WAS ADDED    DECEMBER  2015
20917C
20918C               ***********************************************************
20919C               **  TREAT THE SET STANDARD INPUT <FILE>                   *
20920C               **            SET DELAY STANDARD INPUT <VALUE>            *
20921C               **            SET MAXIMUM COUNTER STANDARD INPUT <VALUE>  *
20922C               ***********************************************************
20923C
20924      ISTDIN='NULL'
20925      NCSTIN=-1
20926      PSTDSL=2.0
20927      ISTDCN=0
20928C
20929CCCCC THE FOLLOWING SECTION WAS ADDED    MAY 2016
20930C
20931C               ********************************************************
20932C               **  TREAT THE SET MACRO QUOTES STRIP <ON/OFF>          *
20933C               ********************************************************
20934C
20935      IQUOST='ON'
20936C
20937CCCCC THE FOLLOWING SECTION WAS ADDED    JUNE 2016
20938C
20939C               ********************************************************
20940C               **  TREAT THE SET STATUS DISTINCT    <ON/OFF>          *
20941C               ********************************************************
20942C
20943      ISTADS='OFF'
20944C
20945CCCCC THE FOLLOWING SECTION WAS ADDED    JUNE 2016
20946C
20947C               ********************************************************
20948C               **  TREAT THE SET CHECK NAME OUTPUT <DEFAULT/FILLIBEN> *
20949C               ********************************************************
20950C
20951      ICHKNA='DEFA'
20952C
20953CCCCC THE FOLLOWING SECTION WAS ADDED    FEBRUARY 2018
20954C
20955C               **********************************************************
20956C               **  TREAT THE SET CHECK LENGTH OUTPUT <DEFAULT/FILLIBEN> *
20957C               **********************************************************
20958C
20959      ICHKLE='DEFA'
20960C
20961CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL 2018
20962C
20963C               **********************************************************
20964C               **  TREAT THE SET WEB SEARCH DATAPLOT <ON/OFF>           *
20965C               **********************************************************
20966C
20967      IWBSDP='OFF'
20968C
20969CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL 2018
20970C
20971C               **********************************************************
20972C               **  TREAT THE SET COMMAND LINE EXECUTE WAIT <ON/OFF>     *
20973C               **********************************************************
20974C
20975      ICLEWT='ON'
20976C
20977CCCCC THE FOLLOWING SECTION WAS ADDED    JUNE 2016
20978C
20979C               *******************************************************
20980C               **  TREAT THE SET HISTOGRAM MAXIMUM CLASSES <VALUE>  **
20981C               *******************************************************
20982C
20983      IHSTMC=10000
20984C
20985CCCCC THE FOLLOWING SECTION WAS ADDED    JUNE 2016
20986C
20987C               *******************************************************
20988C               **  TREAT THE SET STREAM READ SIZE          <VALUE>  **
20989C               *******************************************************
20990C
20991      ISRESI=100
20992C
20993CCCCC THE FOLLOWING SECTION WAS ADDED    JULY 2016
20994C
20995C               **************************************************
20996C               **  TREAT THE SET STREAM READ GROUP VARIABLE    **
20997C               **                <VARIABLE NAME>               **
20998C               **************************************************
20999C
21000      ISREVN='NONE'
21001C
21002CCCCC THE FOLLOWING SECTION WAS ADDED    JULY 2016
21003C
21004C               ********************************************************
21005C               **  TREAT THE SET STREAM READ RESPONSE VARIABLE ONE   **
21006C               **            SET STREAM READ RESPONSE VARIABLE TWO   **
21007C               **            SET STREAM READ RESPONSE VARIABLE THREE **
21008C               **                <VARIABLE NAME>                     **
21009C               ********************************************************
21010C
21011      ISRER1='NONE'
21012      ISRER2='NONE'
21013      ISRER3='NONE'
21014C
21015CCCCC THE FOLLOWING SECTION WAS ADDED    JUNE 2016
21016C
21017C               ********************************************************
21018C               **  TREAT THE SET HISTOGRAM OUTLIERS POINTS <ON/OFF>  **
21019C               ********************************************************
21020C
21021      IHSTOP='OFF'
21022C
21023CCCCC THE FOLLOWING SECTION WAS ADDED    JUNE 2016
21024C
21025C               ********************************************************
21026C               **  TREAT THE SET BOX PLOT EXTREME PERCENTILES <ON/OFF>*
21027C               ********************************************************
21028C
21029      IBXPDI='OFF'
21030C
21031CCCCC THE FOLLOWING SECTION WAS ADDED    JUNE 2016
21032C
21033C               *******************************************************
21034C               **  TREAT THE SET QUANTILE QUANTILE PLOT NUMBER OF   **
21035C               **                PERCENTILES <VALUE>                **
21036C               *******************************************************
21037C
21038      IQQNPR=0
21039C
21040CCCCC THE FOLLOWING SECTION WAS ADDED    JUNE 2016
21041C
21042C               *******************************************************
21043C               **  TREAT THE SET QUANTILE QUANTILE PLOT BOOTSTRAP   **
21044C               **                <ON/OFF>                           **
21045C               *******************************************************
21046C
21047      IQQBOO='OFF'
21048C
21049CCCCC THE FOLLOWING SECTION WAS ADDED    JUNE 2016
21050C
21051C               *******************************************************
21052C               **  TREAT THE SET TWO SAMPLE TESTS NUMBER OF         **
21053C               **                PERCENTILES <VALUE>                **
21054C               *******************************************************
21055C
21056      I2SNPR=0
21057C
21058CCCCC THE FOLLOWING SECTION WAS ADDED    FEBRUARY 2015
21059C
21060C               *******************************************************
21061C               **  TREAT THE SET E691 TEST RESULTS  TABLE <ON/OFF>  **
21062C               **  TREAT THE SET E691 H CONSISTENCY TABLE <ON/OFF>  **
21063C               **  TREAT THE SET E691 K CONSISTENCY TABLE <ON/OFF>  **
21064C               **  TREAT THE SET E691 DATA SUMMARY  TABLE <ON/OFF>  **
21065C               *******************************************************
21066C
21067      I691DS='ON'
21068      I691TR='ON'
21069      I691HC='ON'
21070      I691KC='ON'
21071      I691PS='ON'
21072C
21073CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL 2015
21074C
21075C               *****************************************************
21076C               **  TREAT THE SET E691 MATERIAL ID GROUP LABEL     **
21077C               **  <NONE/DEFUALT/GROUP LABEL NAME>                **
21078C               *****************************************************
21079C
21080      I691GL='NONE'
21081C
21082CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL 2015
21083C
21084C               *******************************************************
21085C               **  TREAT THE SET CNPK DEFINITION <AIRFORCE/PEARN>   **
21086C               *******************************************************
21087C
21088      ICNPKD='PEAR'
21089C
21090CCCCC THE FOLLOWING SECTION WAS ADDED    APRIL 2015
21091C
21092C               *******************************************************
21093C               **  TREAT THE SET STATISTIC PLOT REFERENCE LINE      **
21094C               **                <OVERALL/AVERAGE/MEDIAN>           **
21095C               *******************************************************
21096C
21097      ISPLRL='OVER'
21098C
21099CCCCC THE FOLLOWING SECTION WAS ADDED    MAY 2015
21100C
21101C               *******************************************************
21102C               **  TREAT THE SET H CONSISTENCY PLOT TYPE            **
21103C               **                <DEFAULT/STACKED>                  **
21104C               *******************************************************
21105C
21106      IHKCPT='DEFA'
21107C
21108CCCCC THE FOLLOWING SECTION WAS ADDED    MAY 2015
21109C
21110C               *******************************************************
21111C               **  TREAT THE SET H CONSISTENCY PLOT                 **
21112C               **                 LABORATORIES WITHIN MATERIALS/    **
21113C               **                 MATERIALS WITHIN LABORATORIES     **
21114C               *******************************************************
21115C
21116      IHKCLM='LABO'
21117C
21118CCCCC THE FOLLOWING SECTION WAS ADDED    MAY 2015
21119C
21120C               *******************************************************
21121C               **  TREAT THE SET H CONSISTENCY PLOT GAP <VALUE>     **
21122C               *******************************************************
21123C
21124      IHKCGP=0
21125C
21126CCCCC THE FOLLOWING SECTION WAS ADDED    MAY 2015
21127C
21128C               *******************************************************
21129C               **  TREAT THE SET H CONSISTENCY PLOT MATERIAL FIRST  **
21130C               **                <VALUE>                            **
21131C               *******************************************************
21132C
21133      IHKCM1=0
21134C
21135CCCCC THE FOLLOWING SECTION WAS ADDED    MAY 2015
21136C
21137C               *******************************************************
21138C               **  TREAT THE SET H CONSISTENCY PLOT MATERIAL LAST   **
21139C               **                <VALUE>                            **
21140C               *******************************************************
21141C
21142      IHKCM2=0
21143C
21144CCCCC THE FOLLOWING SECTION WAS ADDED    MAY 2015
21145C
21146C               *******************************************************
21147C               **  TREAT THE SET H CONSISTENCY PLOT LABORATORY FIRST**
21148C               **                <VALUE>                            **
21149C               *******************************************************
21150C
21151      IHKCL1=0
21152C
21153CCCCC THE FOLLOWING SECTION WAS ADDED    MAY 2015
21154C
21155C               *******************************************************
21156C               **  TREAT THE SET H CONSISTENCY PLOT LABORATORY LAST **
21157C               **                <VALUE>                            **
21158C               *******************************************************
21159C
21160      IHKCL2=0
21161C
21162CCCCC THE FOLLOWING SECTION WAS ADDED    MAY 2015
21163C
21164C               *******************************************************
21165C               **  TREAT THE SET MOVING STATISTIC PLOT GROUPS       **
21166C               **                <DEFAULT/STACKED>                  **
21167C               *******************************************************
21168C
21169      IMOVGR='DEFA'
21170C
21171CCCCC THE FOLLOWING SECTION WAS ADDED    JUNE 2015
21172C
21173C               *******************************************************
21174C               **  TREAT THE SET TWO WAY PLOT Y AXIS                **
21175C               **                <RAW/DEVIATION>                    **
21176C               *******************************************************
21177C
21178      ITWOYA='RAW '
21179C
21180CCCCC THE FOLLOWING SECTION WAS ADDED    JUNE 2015
21181C
21182C               *******************************************************
21183C               **  TREAT THE SET TWO WAY PLOT FIT TABLE             **
21184C               **                <ON/OFF>                           **
21185C               *******************************************************
21186C
21187      ITWOFI='ON  '
21188C
21189CCCCC THE FOLLOWING SECTION WAS ADDED    JUNE 2015
21190C
21191C               *******************************************************
21192C               **  TREAT THE SET TWO WAY PLOT AVERAGES TABLE        **
21193C               **                <ON/OFF>                           **
21194C               *******************************************************
21195C
21196      ITWOAV='ON  '
21197C
21198CCCCC THE FOLLOWING SECTION WAS ADDED    JUNE 2015
21199C
21200C               *******************************************************
21201C               **  TREAT THE SET TWO WAY PLOT ANOVA    TABLE        **
21202C               **                <ON/OFF>                           **
21203C               *******************************************************
21204C
21205      ITWOAN='ON  '
21206C
21207CCCCC THE FOLLOWING SECTION WAS ADDED    JUNE 2015
21208C
21209C               *******************************************************
21210C               **  TREAT THE SET TWO WAY PLOT FACTOR DECIMAL        **
21211C               **                <VALUE>                            **
21212C               *******************************************************
21213C
21214      ITWODE=-99
21215C
21216CCCCC THE FOLLOWING SECTION WAS ADDED    JUNE 2015
21217C
21218C               *******************************************************
21219C               **  TREAT THE SET TWO WAY PLOT ANOVA TABLE DECIMAL   **
21220C               **                <VALUE>                            **
21221C               *******************************************************
21222C
21223      ITWOAD=-99
21224C
21225CCCCC THE FOLLOWING SECTION WAS ADDED    JUNE 2015
21226C
21227C               *******************************************************
21228C               **  TREAT THE SET TWO WAY PLOT FACTOR LABEL          **
21229C               **                <CODED/VALUE>                      **
21230C               *******************************************************
21231C
21232      ITWOLA='CODE'
21233C
21234CCCCC THE FOLLOWING SECTION WAS ADDED    JUNE 2015
21235C
21236C               *******************************************************
21237C               **  TREAT THE SET TWO FACTOR PLOT TYPE               **
21238C               **                <DEFAULT/STACKED>                  **
21239C               *******************************************************
21240C
21241      ITWFPT='DEFA'
21242C
21243CCCCC THE FOLLOWING SECTION WAS ADDED    JUNE 2015
21244C
21245C               *******************************************************
21246C               **  TREAT THE SET TWO FACTOR PLOT                    **
21247C               **                 LABORATORIES WITHIN MATERIALS/    **
21248C               **                 MATERIALS WITHIN LABORATORIES     **
21249C               *******************************************************
21250C
21251      ITWFLM='LABO'
21252C
21253CCCCC THE FOLLOWING SECTION WAS ADDED    JUNE 2015
21254C
21255C               *******************************************************
21256C               **  TREAT THE SET TWO FACTOR PLOT GAP <VALUE>        **
21257C               *******************************************************
21258C
21259      ITWFGP=0
21260C
21261CCCCC THE FOLLOWING SECTION WAS ADDED    JUNE 2015
21262C
21263C               *******************************************************
21264C               **  TREAT THE SET TWO FACTOR PLOT MATERIAL FIRST     **
21265C               **                <VALUE>                            **
21266C               *******************************************************
21267C
21268      ITWFM1=0
21269C
21270CCCCC THE FOLLOWING SECTION WAS ADDED    JUNE 2015
21271C
21272C               *******************************************************
21273C               **  TREAT THE SET TWO FACTOR PLOT MATERIAL LAST      **
21274C               **                <VALUE>                            **
21275C               *******************************************************
21276C
21277      ITWFM2=0
21278C
21279CCCCC THE FOLLOWING SECTION WAS ADDED    JUNE 2015
21280C
21281C               *******************************************************
21282C               **  TREAT THE SET TWO FACTOR PLOT LABORATORY FIRST   **
21283C               **                <VALUE>                            **
21284C               *******************************************************
21285C
21286      ITWFL1=0
21287C
21288CCCCC THE FOLLOWING SECTION WAS ADDED    JUNE 2015
21289C
21290C               *******************************************************
21291C               **  TREAT THE SET TWO FACTOR PLOT LABORATORY LAST    **
21292C               **                <VALUE>                            **
21293C               *******************************************************
21294C
21295      ITWFL2=0
21296C
21297CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 2015
21298C
21299C               *******************************************************
21300C               **  TREAT THE SET OPTIMIZATION <MINIMUM/MAXIMUM>     **
21301C               *******************************************************
21302C
21303      IOPTMM='MINI'
21304C
21305CCCCC THE FOLLOWING SECTION WAS ADDED    OCTOBER 2015
21306C
21307C               *******************************************************
21308C               **  TREAT THE SET JSCORE REPLICATION                 **
21309C               **                <AVERAGE/EXTREME/INDIVIDUAL>       **
21310C               *******************************************************
21311C
21312      IJSREP='AVER'
21313C
21314CCCCC THE FOLLOWING SECTION WAS ADDED    OCTOBER 2015
21315C
21316C               *******************************************************
21317C               **  TREAT THE SET LOOP SUBSTITUTION                  **
21318C               **                <IMMEDIATE/DEFERRED>               **
21319C               *******************************************************
21320C
21321      ILOOSU='DEFE'
21322C
21323CCCCC THE FOLLOWING SECTION WAS ADDED    NOVEMBER 2015
21324C
21325C               *******************************************************
21326C               **  TREAT THE SET PERCENTILE DIGITS <VALUE>          **
21327C               *******************************************************
21328C
21329      IPCIDI=3
21330C
21331CCCCC THE FOLLOWING SECTION WAS ADDED    NOVEMBER 2015
21332C
21333C               *******************************************************
21334C               **  TREAT THE SET SEARCH ENGINE                      **
21335C               **                <GOOGLE/BING/DUCK>                 **
21336C               *******************************************************
21337C
21338      IWEBSE='GOOG'
21339C
21340CCCCC THE FOLLOWING SECTION WAS ADDED    NOVEMBER 2015
21341C
21342C               *******************************************************
21343C               **  TREAT THE SET DEVICE 3                           **
21344C               **                <AUTOMATIC/USER>                   **
21345C               *******************************************************
21346C
21347      IDEVO3='AUTO'
21348C
21349CCCCC THE FOLLOWING SECTION WAS ADDED    DECEMBER 2015
21350C
21351C               *******************************************************
21352C               **  TREAT THE SET DEVICE 2 SPLIT <ON/OFF>            **
21353C               *******************************************************
21354C
21355      IDV2SP='OFF'
21356C
21357CCCCC THE FOLLOWING SECTION WAS ADDED    DECEMBER 2015
21358C
21359C               *******************************************************
21360C               **  TREAT THE SET DEVICE 3 NAME COUNTER <ON/OFF>     **
21361C               *******************************************************
21362C
21363      IDV3NC='OFF'
21364C
21365CCCCC THE FOLLOWING SECTION WAS ADDED    DECEMBER 2015
21366C
21367C               *******************************************************
21368C               **  TREAT THE SET FRAME LIMITS OFFSET <ON/OFF>       **
21369C               *******************************************************
21370C
21371      IFRALI='ON'
21372C
21373CCCCC THE FOLLOWING SECTION WAS ADDED    DECEMBER 2015
21374C
21375C               *******************************************************
21376C               **  TREAT THE SET CAPTURE SPLIT <ON/OFF>             **
21377C               *******************************************************
21378C
21379      ICAPSP='OFF'
21380      ICAPCN=0
21381C
21382CCCCC THE FOLLOWING SECTION WAS ADDED    DECEMBER 2015
21383C
21384C               *******************************************************
21385C               **  TREAT THE SET CAPTURE CUMULATIVE <ON/OFF>        **
21386C               *******************************************************
21387C
21388      ICAPCU='OFF'
21389C
21390CCCCC THE FOLLOWING SECTION WAS ADDED    SEPTEMBER 2016
21391C
21392C               *******************************************************
21393C               **  TREAT THE SET NO RESET NAMES                     **
21394C               *******************************************************
21395C
21396      NUMNRE=0
21397      DO1010II=1,MAXRES
21398        IRESN1='    '
21399        IRESN2='    '
21400 1010 CONTINUE
21401C
21402C               *******************************
21403C               **  EXIT AND RETURN TO MAIN  **
21404C               *******************************
21405C
21406      IF(IBUGIN.EQ.'ON')THEN
21407        WRITE(ICOUT,9990)
21408 9990   FORMAT(1X)
21409        CALL DPWRST('XXX','BUG ')
21410        WRITE(ICOUT,9995)
21411 9995   FORMAT('***** AT THE END       OF INITSU--')
21412        CALL DPWRST('XXX','BUG ')
21413      ENDIF
21414C
21415      RETURN
21416      END
21417      SUBROUTINE INIT3D(IBUGIN)
21418C
21419C     PURPOSE--THIS IS SUBROUTING INIT3D.
21420C              (THE   3D    AT THE END OF    INIT3D   STANDS FOR   3-DIMENSION)
21421C              THIS SUBROUTINE INITIALIZES 3-D VARIABLES AND PARAMETERS
21422C     WRITTEN BY--JAMES J. FILLIBEN
21423C                 STATISTICAL ENGINEERING DIVISION
21424C                 INFORMATION TECHNOLOGY LABORATORY
21425C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
21426C                 GAITHERSBURG, MD 20899-8980
21427C                 PHONE--301-975-2855
21428C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
21429C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
21430C     LANGUAGE--ANSI FORTRAN (1977)
21431C     VERSION NUMBER--88/10
21432C     ORIGINAL VERSION--SEPTEMBER 1988.
21433C
21434C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
21435C
21436      CHARACTER*4 IBUGIN
21437C
21438CCCCC CHARACTER*4 IDEFGC
21439C
21440C-----COMMON----------------------------------------------------------
21441C
21442      INCLUDE 'DPCOPA.INC'
21443      INCLUDE 'DPCOMC.INC'
21444      INCLUDE 'DPCO3D.INC'
21445      INCLUDE 'DPCOP2.INC'
21446C
21447C-----START POINT-----------------------------------------------------
21448C
21449      IF(IBUGIN.EQ.'OFF')GOTO99
21450      WRITE(ICOUT,90)
21451   90 FORMAT(1X)
21452      CALL DPWRST('XXX','BUG ')
21453      WRITE(ICOUT,95)
21454   95 FORMAT('***** AT THE BEGINNING OF INIT3D--')
21455      CALL DPWRST('XXX','BUG ')
21456   99 CONTINUE
21457C
21458C               **************************************************
21459C               **  SET THE 3-D GENERAL SETTINGS                **
21460C               **************************************************
21461C
21462      IVISSW='ON'
21463      I3DPRO='PERS'
21464C
21465      AEYEXC=CPUMIN
21466      AEYEYC=CPUMIN
21467      AEYEZC=CPUMIN
21468C
21469      AORIXC=CPUMIN
21470      AORIYC=CPUMIN
21471      AORIZC=CPUMIN
21472C
21473C               **************************************************
21474C               **  SET THE 3-D PEDESTAL ATTRIBUTES             **
21475C               **************************************************
21476C
21477      IDEPGC='WHIT'
21478      IDEPGP='SOLI'
21479      IDEPGR='OFF'
21480      IDEPCO='BLUE'
21481C
21482      IPEDGC=IDEPGC
21483      IPEDGP=IDEPGP
21484      IPEDGR=IDEPGR
21485      IPEDCO=IDEPCO
21486      IPEDSW='OFF'
21487C
21488      ADEPBA=CPUMIN
21489      ADEPSZ=CPUMIN
21490C
21491      APEDBA=ADEPBA
21492      APEDSZ=ADEPSZ
21493C
21494C               **************************************************
21495C               **  SET THE 3-D BASEPLANE ATTRIBUTES            **
21496C               **************************************************
21497C
21498      IDBSGC='WHIT'
21499      IDBSGP='SOLI'
21500      IDBSGR='OFF'
21501      IDBSCO='BLUE'
21502C
21503      IBSPGC=IDBSGC
21504      IBSPGP=IDBSGP
21505      IBSPGR=IDBSGR
21506      IBSPCO=IDBSCO
21507      IBSPSW='OFF'
21508C
21509C               **************************************************
21510C               **  SET THE 3-D BACKPLANE ATTRIBUTES            **
21511C               **************************************************
21512C
21513      IDBKGC='WHIT'
21514      IDBKGP='SOLI'
21515      IDBKGR='OFF'
21516      IDBKCO='BLUE'
21517C
21518      IBKPGC=IDBKGC
21519      IBKPGP=IDBKGP
21520      IBKPGR=IDBKGR
21521      IBKPCO=IDBKCO
21522      IBKPSW='OFF'
21523C
21524C               **************************************************
21525C               **  SET THE 3-D SIDEFACE ATTRIBUTES             **
21526C               **************************************************
21527C
21528      IDSDGC='WHIT'
21529      IDSDGP='SOLI'
21530      IDSDGR='OFF'
21531      IDSDCO='BLUE'
21532C
21533      ISDFGC=IDSDGC
21534      ISDFGP=IDSDGP
21535      ISDFGR=IDSDGR
21536      ISDFCO=IDSDCO
21537      ISDFSW='OFF'
21538C
21539C               **************************************************
21540C               **  SET THE RAW 3-D DATA                        **
21541C               **************************************************
21542C
21543      X3DMIN=CPUMIN
21544      Y3DMIN=CPUMIN
21545      Z3DMIN=CPUMIN
21546C
21547      X3DMAX=CPUMIN
21548      Y3DMAX=CPUMIN
21549      Z3DMAX=CPUMIN
21550C
21551      X3DMID=CPUMIN
21552      Y3DMID=CPUMIN
21553      Z3DMID=CPUMIN
21554C
21555      X3DRAN=CPUMIN
21556      Y3DRAN=CPUMIN
21557      Z3DRAN=CPUMIN
21558C
21559      X3DEYE=CPUMIN
21560      Y3DEYE=CPUMIN
21561      Z3DEYE=CPUMIN
21562C
21563      X3DORI=CPUMIN
21564      Y3DORI=CPUMIN
21565      Z3DORI=CPUMIN
21566C
21567      D3DCXX=CPUMIN
21568      D3DCXY=CPUMIN
21569      D3DCXZ=CPUMIN
21570      D3DCYX=CPUMIN
21571      D3DCYY=CPUMIN
21572      D3DCYZ=CPUMIN
21573      D3DCZX=CPUMIN
21574      D3DCZY=CPUMIN
21575      D3DCZZ=CPUMIN
21576C
21577C               *******************************
21578C               **  EXIT AND RETURN TO MAIN  **
21579C               *******************************
21580C
21581      IF(IBUGIN.EQ.'OFF')GOTO9999
21582      WRITE(ICOUT,9990)
21583 9990 FORMAT(1X)
21584      CALL DPWRST('XXX','BUG ')
21585      WRITE(ICOUT,9995)
21586 9995 FORMAT('***** AT THE END       OF INIT3D--')
21587      CALL DPWRST('XXX','BUG ')
21588 9999 CONTINUE
21589C
21590      RETURN
21591      END
21592      FUNCTION INITS (OS, NOS, ETA)
21593C***BEGIN PROLOGUE  INITS
21594C***PURPOSE  Determine the number of terms needed in an orthogonal
21595C            polynomial series so that it meets a specified accuracy.
21596C***LIBRARY   SLATEC (FNLIB)
21597C***CATEGORY  C3A2
21598C***TYPE      SINGLE PRECISION (INITS-S, INITDS-D)
21599C***KEYWORDS  CHEBYSHEV, FNLIB, INITIALIZE, ORTHOGONAL POLYNOMIAL,
21600C             ORTHOGONAL SERIES, SPECIAL FUNCTIONS
21601C***AUTHOR  Fullerton, W., (LANL)
21602C***DESCRIPTION
21603C
21604C  Initialize the orthogonal series, represented by the array OS, so
21605C  that INITS is the number of terms needed to insure the error is no
21606C  larger than ETA.  Ordinarily, ETA will be chosen to be one-tenth
21607C  machine precision.
21608C
21609C             Input Arguments --
21610C   OS     single precision array of NOS coefficients in an orthogonal
21611C          series.
21612C   NOS    number of coefficients in OS.
21613C   ETA    single precision scalar containing requested accuracy of
21614C          series.
21615C
21616C***REFERENCES  (NONE)
21617C***ROUTINES CALLED  XERMSG
21618C***REVISION HISTORY  (YYMMDD)
21619C   770401  DATE WRITTEN
21620C   890831  Modified array declarations.  (WRB)
21621C   891115  Modified error message.  (WRB)
21622C   891115  REVISION DATE from Version 3.2
21623C   891214  Prologue converted to Version 4.0 format.  (BAB)
21624C   900315  CALLs to XERROR changed to CALLs to XERMSG.  (THJ)
21625C***END PROLOGUE  INITS
21626      REAL OS(*)
21627C
21628C-----COMMON----------------------------------------------------------
21629C
21630      INCLUDE 'DPCOMC.INC'
21631      INCLUDE 'DPCOP2.INC'
21632C
21633C***FIRST EXECUTABLE STATEMENT  INITS
21634      IF (NOS .LT. 1) THEN
21635        WRITE(ICOUT,11)
21636        CALL DPWRST('XXX','BUG ')
21637        WRITE(ICOUT,12)
21638        CALL DPWRST('XXX','BUG ')
21639        INITS = 0
21640        RETURN
21641      ENDIF
21642   11 FORMAT('***** ERROR FROM INITS.  THE NUMBER OF ')
21643   12 FORMAT('      COEFFICIENTS IS LESS THAN 1.      *****')
21644C
21645      ERR = 0.
21646      DO 10 II = 1,NOS
21647        I = NOS + 1 - II
21648        ERR = ERR + ABS(OS(I))
21649        IF (ERR.GT.ETA) GO TO 20
21650   10 CONTINUE
21651C
21652   20 IF (I .EQ. NOS) THEN
21653      WRITE(ICOUT,21)
21654 21   FORMAT('***** ERROR FROM INITS.  CHEBYSHEV SERIES TOO ')
21655      CALL DPWRST('XXX','BUG ')
21656      WRITE(ICOUT,22)
21657 22   FORMAT('      SHORT FOR SPECIFIED ACCURACY.             *****')
21658      CALL DPWRST('XXX','BUG ')
21659      ENDIF
21660      INITS = I
21661C
21662      RETURN
21663      END
21664      SUBROUTINE INOUT(XA,YA,X,Y,NP,IO)
21665C
21666C     PURPOSE--XX
21667C
21668C     WRITTEN BY--DAVID W. BEHRINGER NOAA/AOML (MIAMI).
21669C                 AS PART OF NOAA'S CONCX V.3   MARCH 1988.
21670C     ORIGINAL VERSION (IN DATAPLOT)--AUGUST    1988.
21671C     UPDATED         --JANUARY   1989.  MORE CHANGES TO STANDARD FORTRAN 77--
21672C                                        CHANGED DO WHILE/END DO
21673C                                        AND ATAN2D TO ATAN2
21674C                                        (ATAN2D IS A VAX DOUB. PREC. ATAN2)
21675C                                        (ALAN HECKERT).
21676C
21677C---------------------------------------------------------------------
21678C
21679      DIMENSION X(*)
21680      DIMENSION Y(*)
21681C
21682C-----START POINT-----------------------------------------------------
21683C
21684      AS=0.
21685      XX=X(1)-XA
21686      YY=Y(1)-YA
21687CCCCC A0=ATAN2D(YY,XX)
21688      A0=ATAN2(YY,XX)
21689      DO 10 N=2,NP+1
21690        M=MOD(N-1,NP)+1
21691        XX=X(M)-XA
21692        YY=Y(M)-YA
21693CCCCC   A=ATAN2D(YY,XX)
21694        A=ATAN2(YY,XX)
21695        DA=A-A0
21696        IF (DA.LT.-180.) DA=DA+360.
21697        IF (DA.GT.180.)  DA=DA-360.
21698        AS=AS+DA
21699        A0=A
21700 10   CONTINUE
21701      IF (ABS(AS).LT.180.) THEN
21702        IO=0
21703      ELSE
21704        IO=1
21705      END IF
21706      RETURN
21707      END
21708      SUBROUTINE INSERT(Y1,N1,Y2,N2,NLOC,IWRITE,YOUT,NOUT,MAXNXT,
21709     1                  IINSOW,IBUGA3,ISUBRO,IERROR)
21710C
21711C     PURPOSE--THIS SUBROUTINE INSERTS THE CONTENTS OF Y2 INTO
21712C              Y1 STARTING AT ROW NLOC.
21713C
21714C     INPUT  ARGUMENTS--Y1     = THE SINGLE PRECISION VECTOR OF
21715C                                OBSERVATIONS.
21716C                     --N1     = THE INTEGER NUMBER OF OBSERVATIONS
21717C                                IN THE VECTOR Y1.
21718C                     --Y2     = THE SINGLE PRECISION VECTOR OF
21719C                                OBSERVATIONS TO BE INSERTED INTO Y1.
21720C                     --N2     = THE INTEGER NUMBER OF OBSERVATIONS
21721C                                IN THE VECTOR Y2.
21722C                     --NLOC   = THE INTEGER NUMBER THAT SPECIFIES THE
21723C                                STARTING ROW IN Y1.
21724C     OUTPUT ARGUMENTS--Y      = THE SINGLE PRECISION VECTOR OF THE
21725C                                MERGED VALUES.
21726C                     --NOUT   = THE INTEGER NUMBER OF OBSERVATIONS
21727C                                IN THE OUTPUT VECTOR YOUT.
21728C     OUTPUT--THE COMPUTED SINGLE PRECISION VECTOR OF THE MERGED VALUES.
21729C     OTHER DATAPAC   SUBROUTINES NEEDED--NONE.
21730C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE.
21731C     MODE OF INTERNAL OPERATIONS--DOUBLE PRECISION.
21732C     LANGUAGE--ANSI FORTRAN (1977)
21733C     REFERENCE--ISO 13528, FIRST EDITION, STATISTICAL METHODS FOR USE
21734C                IN PROFICIENCY TESTING BY INTERLABORATORY COMPARISONS,
21735C                2005, PP. 25-30.
21736C     WRITTEN BY--ALAN HECKERT
21737C                 STATISTICAL ENGINEERING DIVISION
21738C                 INFORMATION TECHNOLOGY LABORATORY
21739C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
21740C                 GAITHERSBURG, MD 20899-8980
21741C                 PHONE--301-975-2899
21742C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
21743C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
21744C     LANGUAGE--ANSI FORTRAN (1977)
21745C     VERSION NUMBER--2020.02
21746C     ORIGINAL VERSION--FEBRUARY  2020.
21747C
21748C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
21749C
21750      CHARACTER*4 IWRITE
21751      CHARACTER*4 IINSOW
21752      CHARACTER*4 IBUGA3
21753      CHARACTER*4 ISUBRO
21754      CHARACTER*4 IERROR
21755C
21756      CHARACTER*4 ISUBN1
21757      CHARACTER*4 ISUBN2
21758C
21759C---------------------------------------------------------------------
21760C
21761      DIMENSION Y1(*)
21762      DIMENSION Y2(*)
21763      DIMENSION YOUT(*)
21764C
21765C-----COMMON----------------------------------------------------------
21766C
21767      INCLUDE 'DPCOP2.INC'
21768C
21769C-----START POINT-----------------------------------------------------
21770C
21771      ISUBN1='INSE'
21772      ISUBN2='RT  '
21773      IERROR='NO'
21774C
21775      IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'SERT')THEN
21776        WRITE(ICOUT,999)
21777  999   FORMAT(1X)
21778        CALL DPWRST('XXX','BUG ')
21779        WRITE(ICOUT,51)
21780   51   FORMAT('***** AT THE BEGINNING OF INSERT--')
21781        CALL DPWRST('XXX','BUG ')
21782        WRITE(ICOUT,52)IBUGA3,ISUBRO,N1,N2
21783   52   FORMAT('IBUGA3,ISUBRO,N1,N2 = ',2(A4,2X),2I8)
21784        CALL DPWRST('XXX','BUG ')
21785        DO55I=1,MAX(N1,N2)
21786          WRITE(ICOUT,56)I,Y1(I),Y2(I)
21787   56     FORMAT('I,Y1(I),Y2(I) = ',I8,2G15.7)
21788          CALL DPWRST('XXX','BUG ')
21789   55   CONTINUE
21790      ENDIF
21791C
21792C               ********************************************
21793C               **  STEP 1--                              **
21794C               **  CHECK THE INPUT ARGUMENTS FOR ERRORS  **
21795C               ********************************************
21796C
21797      IF(N1.LT.1)THEN
21798        WRITE(ICOUT,999)
21799        CALL DPWRST('XXX','BUG ')
21800        WRITE(ICOUT,111)
21801  111   FORMAT('***** ERROR IN INSERT ')
21802        CALL DPWRST('XXX','BUG ')
21803        WRITE(ICOUT,112)
21804  112   FORMAT('      THE NUMBER OF OBSERVATIONS IN THE FIRST ',
21805     1         'RESPONSE VARIABLE IS NON-POSITIVE')
21806        CALL DPWRST('XXX','BUG ')
21807        WRITE(ICOUT,117)N1
21808  117   FORMAT('      THE NUMBER OF OBSERVATIONS = ',I8,'.')
21809        CALL DPWRST('XXX','BUG ')
21810        IERROR='YES'
21811        GOTO9000
21812      ELSEIF(N2.LT.1)THEN
21813        WRITE(ICOUT,999)
21814        CALL DPWRST('XXX','BUG ')
21815        WRITE(ICOUT,111)
21816        CALL DPWRST('XXX','BUG ')
21817        WRITE(ICOUT,122)
21818  122   FORMAT('      THE NUMBER OF OBSERVATIONS IN THE SECOND ',
21819     1         'RESPONSE VARIABLE IS NON-POSITIVE')
21820        CALL DPWRST('XXX','BUG ')
21821        WRITE(ICOUT,117)N2
21822        CALL DPWRST('XXX','BUG ')
21823        IERROR='YES'
21824        GOTO9000
21825      ELSEIF(NLOC.LT.1 .OR. NLOC.GT.N1)THEN
21826        WRITE(ICOUT,999)
21827        CALL DPWRST('XXX','BUG ')
21828        WRITE(ICOUT,111)
21829        CALL DPWRST('XXX','BUG ')
21830        WRITE(ICOUT,132)NLOC
21831  132   FORMAT('      THE INSERTION ROW, (',I8,') IS GREATER THAN THE')
21832        CALL DPWRST('XXX','BUG ')
21833        WRITE(ICOUT,134)N1
21834  134   FORMAT('      NUMBER OF ROWS IN THE FIRST RESPONSE VARIABLE.')
21835        CALL DPWRST('XXX','BUG ')
21836        WRITE(ICOUT,136)N1
21837  136   FORMAT('      THE NUMBER OF ROWS IN THE FIRST RESPONSE ',
21838     1         'VARIABLE = ',I8,'.')
21839        CALL DPWRST('XXX','BUG ')
21840        IERROR='YES'
21841        GOTO9000
21842      ENDIF
21843C
21844C               *****************************
21845C               **  STEP 2--               **
21846C               **  PERFORM THE INSERTION  **
21847C               *****************************
21848C
21849      NOUT=0
21850      DO210II=1,NLOC-1
21851        NOUT=NOUT+1
21852        YOUT(NOUT)=Y1(II)
21853  210 CONTINUE
21854C
21855      DO220II=1,N2
21856        NOUT=NOUT+1
21857        IF(NOUT.GT.MAXNXT)THEN
21858          WRITE(ICOUT,999)
21859          CALL DPWRST('XXX','BUG ')
21860          WRITE(ICOUT,111)
21861          CALL DPWRST('XXX','BUG ')
21862          WRITE(ICOUT,222)
21863  222     FORMAT('      THE MAXIMUM NUMBER OF ROWS IS EXCEEDED FOR ',
21864     1           'THE OUTPUT VARIABLE.')
21865          CALL DPWRST('XXX','BUG ')
21866          WRITE(ICOUT,226)N1
21867  226     FORMAT('      THE NUMBER OF OBSERVATIONS FOR THE ',
21868     1           'FIRST RESPONSE VARIABLE = ',I8,'.')
21869          CALL DPWRST('XXX','BUG ')
21870          WRITE(ICOUT,227)N2
21871  227     FORMAT('      THE NUMBER OF OBSERVATIONS FOR THE ',
21872     1           'SECOND RESPONSE VARIABLE = ',I8,'.')
21873          CALL DPWRST('XXX','BUG ')
21874          WRITE(ICOUT,228)MAXNXT
21875  228     FORMAT('      THE MAXIMUM NUMBER OF ROWS = ',
21876     1           I8,'.')
21877          CALL DPWRST('XXX','BUG ')
21878          IERROR='YES'
21879          GOTO9000
21880        ENDIF
21881        YOUT(NOUT)=Y2(II)
21882  220 CONTINUE
21883C
21884      IF(NOUT.LT.N1 .OR. IINSOW.EQ.'OFF')THEN
21885        IF(IINSOW.EQ.'ON')THEN
21886          NSTRT=NOUT+1
21887        ELSE
21888          NSTRT=NLOC
21889        ENDIF
21890        DO230II=NSTRT,N1
21891          NOUT=NOUT+1
21892C
21893          IF(NOUT.GT.MAXNXT)THEN
21894            WRITE(ICOUT,999)
21895            CALL DPWRST('XXX','BUG ')
21896            WRITE(ICOUT,111)
21897            CALL DPWRST('XXX','BUG ')
21898            WRITE(ICOUT,222)
21899            CALL DPWRST('XXX','BUG ')
21900            WRITE(ICOUT,226)N1
21901            CALL DPWRST('XXX','BUG ')
21902            WRITE(ICOUT,227)N2
21903            CALL DPWRST('XXX','BUG ')
21904            WRITE(ICOUT,228)MAXNXT
21905            CALL DPWRST('XXX','BUG ')
21906            IERROR='YES'
21907            GOTO9000
21908          ENDIF
21909C
21910          YOUT(NOUT)=Y1(II)
21911  230   CONTINUE
21912      ENDIF
21913C
21914C               *******************************
21915C               **  STEP 3--                 **
21916C               **  WRITE OUT A LINE         **
21917C               **  OF SUMMARY INFORMATION.  **
21918C               *******************************
21919C
21920      IF(IFEEDB.EQ.'ON' .AND. IWRITE.EQ.'ON')THEN
21921        WRITE(ICOUT,999)
21922        CALL DPWRST('XXX','BUG ')
21923        WRITE(ICOUT,811)NOUT
21924  811   FORMAT('THE NUMBER OF VALUES GENERATED BY THE INSERT ',
21925     1         'COMMAND = ',I8)
21926        CALL DPWRST('XXX','BUG ')
21927      ENDIF
21928C
21929C               *****************
21930C               **  STEP 90--  **
21931C               **  EXIT.      **
21932C               *****************
21933C
21934 9000 CONTINUE
21935      IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'SERT')THEN
21936        WRITE(ICOUT,999)
21937        CALL DPWRST('XXX','BUG ')
21938        WRITE(ICOUT,9011)
21939 9011   FORMAT('***** AT THE END OF INSERT--')
21940        CALL DPWRST('XXX','BUG ')
21941        DO9012I=1,NOUT
21942          WRITE(ICOUT,9015)I,YOUT(I)
21943 9015     FORMAT('I,YOUT(I) = ',I8,G15.7)
21944          CALL DPWRST('XXX','BUG ')
21945 9012   CONTINUE
21946      ENDIF
21947C
21948      RETURN
21949      END
21950      SUBROUTINE INTARR(X,NX,IWRITE,Y,NY,IBUGA3,IERROR)
21951C
21952C     PURPOSE--COMPUTE INTERARRIVAL TIMES OF A SERIES OF FAILURE
21953C              TIMES.
21954C              SORT FAILURE TIMES
21955C              Y(1) = X(1)
21956C              Y(2) = X(2)-X(1)
21957C              Y(2) = X(3)-X(2)
21958C              Y(3) = X(4)-X(3)
21959C              ETC.
21960C     NOTE--IT IS PERMISSIBLE TO HAVE THE OUTPUT VECTOR Y(.)
21961C           BEING IDENTICAL TO THE INPUT VECTOR X(.).
21962C     WRITTEN BY--ALAN HECKERT
21963C                 STATISTICAL ENGINEERING DIVISION
21964C                 INFORMATION TECHNOLOGY LABORATORY
21965C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
21966C                 GAITHERSBURG, MD 20899-8980
21967C                 PHONE--301-975-2899
21968C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
21969C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
21970C     LANGUAGE--ANSI FORTRAN (1977)
21971C     VERSION NUMBER--98/5
21972C     ORIGINAL VERSION--MAY       1998.
21973C
21974C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
21975C
21976      CHARACTER*4 IWRITE
21977      CHARACTER*4 IBUGA3
21978      CHARACTER*4 IERROR
21979C
21980      CHARACTER*4 ISUBN1
21981      CHARACTER*4 ISUBN2
21982C
21983C---------------------------------------------------------------------
21984C
21985      DIMENSION X(*)
21986      DIMENSION Y(*)
21987C
21988C-----COMMON----------------------------------------------------------
21989C
21990      INCLUDE 'DPCOP2.INC'
21991C
21992C-----START POINT-----------------------------------------------------
21993C
21994      ISUBN1='INTA'
21995      ISUBN2='RR  '
21996      IERROR='NO'
21997C
21998      IF(IBUGA3.EQ.'ON')THEN
21999        WRITE(ICOUT,999)
22000  999   FORMAT(1X)
22001        CALL DPWRST('XXX','BUG ')
22002        WRITE(ICOUT,51)
22003   51   FORMAT('***** AT THE BEGINNING OF INTARR--')
22004        CALL DPWRST('XXX','BUG ')
22005        WRITE(ICOUT,52)IWRITE,IBUGA3,NX
22006   52   FORMAT('IWRITE,IBUGA3,NX = ',A4,2X,I8)
22007        CALL DPWRST('XXX','BUG ')
22008        DO55I=1,NX
22009          WRITE(ICOUT,56)I,X(I)
22010   56     FORMAT('I,X(I) = ',I8,G15.7)
22011          CALL DPWRST('XXX','BUG ')
22012   55   CONTINUE
22013      ENDIF
22014C
22015C               **************************************
22016C               **  COMPUTE SEQUENTIAL DIFFERENCE.  **
22017C               **************************************
22018C
22019      CALL SORT(X,NX,X)
22020      NXM1=NX-1
22021      IF(NXM1.LT.1)GOTO150
22022      DO100I=NX,2,-1
22023      IP1=I-1
22024      Y(I)=X(I)-X(IP1)
22025  100 CONTINUE
22026      Y(1)=X(1)
22027      NY=NX
22028      GOTO190
22029C
22030  150 CONTINUE
22031      IERROR='YES'
22032      WRITE(ICOUT,999)
22033      CALL DPWRST('XXX','BUG ')
22034      WRITE(ICOUT,151)
22035  151 FORMAT('***** ERROR IN INTARR--')
22036      CALL DPWRST('XXX','BUG ')
22037      WRITE(ICOUT,152)
22038  152 FORMAT('      THE NUMBER OF OBSERVATIONS FOR THE RESPONSE ')
22039      CALL DPWRST('XXX','BUG ')
22040      WRITE(ICOUT,155)
22041  155 FORMAT('      VARIABLE MUST BE 2 OR LARGER.')
22042      CALL DPWRST('XXX','BUG ')
22043      WRITE(ICOUT,157)NX
22044  157 FORMAT('      THE NUMBER OF OBSERVATIONS = ',I8,'.')
22045      CALL DPWRST('XXX','BUG ')
22046C
22047  190 CONTINUE
22048C
22049C               *****************
22050C               **  STEP 90--  **
22051C               **  EXIT.      **
22052C               *****************
22053C
22054      IF(IBUGA3.EQ.'ON')THEN
22055        WRITE(ICOUT,999)
22056        CALL DPWRST('XXX','BUG ')
22057        WRITE(ICOUT,9011)
22058 9011   FORMAT('***** AT THE END       OF INTARR--')
22059        CALL DPWRST('XXX','BUG ')
22060        WRITE(ICOUT,9012)NY,IERROR
22061 9012   FORMAT('NY,IERROR = ',I8,2X,A4)
22062        CALL DPWRST('XXX','BUG ')
22063        DO9015I=1,NX
22064          WRITE(ICOUT,9016)I,X(I),Y(I)
22065 9016     FORMAT('I,X(I),Y(I) = ',I8,2G15.7)
22066          CALL DPWRST('XXX','BUG ')
22067 9015   CONTINUE
22068      ENDIF
22069C
22070      RETURN
22071      END
22072      SUBROUTINE INTCNT(X,N,ALOWLM,AUPPLM,IWRITE,XCOUNT,
22073     1                  ISUBRO,IBUGA3,IERROR)
22074C
22075C     PURPOSE--THIS SUBROUTINE COMPUTES THE COUNT FOR THE NUMBER
22076C              OF VALUES IN X THAT FALL WITHIN CERTAIN LIMITS.
22077C     INPUT  ARGUMENTS--X      = THE SINGLE PRECISION VECTOR OF
22078C                                (UNSORTED OR SORTED) OBSERVATIONS.
22079C                     --N      = THE INTEGER NUMBER OF OBSERVATIONS
22080C                                IN THE VECTOR X.
22081C                     --ALOWLM = THE REAL NUMBER THAT SPECIFIES THE
22082C                                LOWER LIMIT FOR THE COUNT.
22083C                     --AUPPLM = THE REAL NUMBER THAT SPECIFIES THE
22084C                                UPPER LIMIT FOR THE COUNT.
22085C     OUTPUT ARGUMENTS--XCOUNT = THE SINGLE PRECISION VALUE OF THE
22086C                                COMPUTED SAMPLE COUNT.
22087C     OUTPUT--THE COMPUTED SINGLE PRECISION VALUE OF THE SAMPLE COUNT.
22088C     OTHER DATAPAC   SUBROUTINES NEEDED--NONE.
22089C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE.
22090C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
22091C     LANGUAGE--ANSI FORTRAN (1977)
22092C     WRITTEN BY--ALAN HECKERT
22093C                 STATISTICAL ENGINEERING DIVISION
22094C                 INFORMATION TECHNOLOGY LABORATORY
22095C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
22096C                 GAITHERSBURG, MD 20899-8980
22097C                 PHONE--301-975-2899
22098C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
22099C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
22100C     LANGUAGE--ANSI FORTRAN (1977)
22101C     VERSION NUMBER--2018.08
22102C     ORIGINAL VERSION--AUGUST    2018.
22103C
22104C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
22105C
22106      CHARACTER*4 IWRITE
22107      CHARACTER*4 IBUGA3
22108      CHARACTER*4 ISUBRO
22109      CHARACTER*4 IERROR
22110C
22111      CHARACTER*4 ISUBN1
22112      CHARACTER*4 ISUBN2
22113C
22114C---------------------------------------------------------------------
22115C
22116      DIMENSION X(*)
22117C
22118C-----COMMON----------------------------------------------------------
22119C
22120      INCLUDE 'DPCOP2.INC'
22121C
22122C-----START POINT-----------------------------------------------------
22123C
22124      ISUBN1='INTC'
22125      ISUBN2='NT  '
22126      IERROR='NO'
22127C
22128      IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'TCNT')THEN
22129        WRITE(ICOUT,999)
22130  999   FORMAT(1X)
22131        CALL DPWRST('XXX','BUG ')
22132        WRITE(ICOUT,51)
22133   51   FORMAT('***** AT THE BEGINNING OF INTCNT--')
22134        CALL DPWRST('XXX','BUG ')
22135        WRITE(ICOUT,52)IBUGA3,ISUBRO,N,ALOWLM,AUPPLM
22136   52   FORMAT('IBUGA3,ISUBRO,N,ALOWLM,AUPPLM = ',2(A4,2X),I8,2G15.7)
22137        CALL DPWRST('XXX','BUG ')
22138        DO55I=1,N
22139          WRITE(ICOUT,56)I,X(I)
22140   56     FORMAT('I,X(I) = ',I8,G15.7)
22141          CALL DPWRST('XXX','BUG ')
22142   55   CONTINUE
22143      ENDIF
22144C
22145C               ********************************************
22146C               **  STEP 1--                              **
22147C               **  CHECK THE INPUT ARGUMENTS FOR ERRORS  **
22148C               ********************************************
22149C
22150      IF(N.LT.1)THEN
22151        WRITE(ICOUT,999)
22152        CALL DPWRST('XXX','BUG ')
22153        WRITE(ICOUT,111)
22154  111   FORMAT('***** ERROR IN INTERVAL COUNT--')
22155        CALL DPWRST('XXX','BUG ')
22156        WRITE(ICOUT,112)
22157  112   FORMAT('      THE NUMBER OF OBSERVATIONS IN THE RESPONSE ',
22158     1         'VARIABLE IS LESS THAN 1.')
22159        CALL DPWRST('XXX','BUG ')
22160        WRITE(ICOUT,117)N
22161  117   FORMAT('      THE NUMBER OF OBSERVATIONS = ',I8,'.')
22162        CALL DPWRST('XXX','BUG ')
22163        IERROR='YES'
22164        GOTO9000
22165      ENDIF
22166C
22167C               *************************
22168C               **  STEP 2--           **
22169C               **  COMPUTE THE COUNT. **
22170C               *************************
22171C
22172      ICNT=0
22173      DO200I=1,N
22174        IF(X(I).GE.ALOWLM .AND. X(I).LE.AUPPLM)ICNT=ICNT+1
22175  200 CONTINUE
22176      XCOUNT=REAL(ICNT)
22177C
22178C               *******************************
22179C               **  STEP 3--                 **
22180C               **  WRITE OUT A LINE         **
22181C               **  OF SUMMARY INFORMATION.  **
22182C               *******************************
22183C
22184      IF(IFEEDB.EQ.'ON' .AND. IWRITE.EQ.'ON')THEN
22185        WRITE(ICOUT,999)
22186        CALL DPWRST('XXX','BUG ')
22187        WRITE(ICOUT,811)N,ALOWLM,AUPPLM,ICNT
22188  811   FORMAT('THE COUNT OF THE ',I8,' OBSERVATIONS IN (',
22189     1         E15.7,',',E15.17,') = ',I10)
22190        CALL DPWRST('XXX','BUG ')
22191      ENDIF
22192C
22193C               *****************
22194C               **  STEP 90--  **
22195C               **  EXIT.      **
22196C               *****************
22197C
22198 9000 CONTINUE
22199      IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'TCNT')THEN
22200        WRITE(ICOUT,999)
22201        CALL DPWRST('XXX','BUG ')
22202        WRITE(ICOUT,9011)
22203 9011   FORMAT('***** AT THE END       OF INTCNT--')
22204        CALL DPWRST('XXX','BUG ')
22205        WRITE(ICOUT,9012)IERROR,XCOUNT
22206 9012   FORMAT('IERROR,XCOUNT = ',A4,2X,G15.7)
22207        CALL DPWRST('XXX','BUG ')
22208      ENDIF
22209C
22210      RETURN
22211      END
22212      SUBROUTINE INTERP(Y,X,N,X2,N2,IWRITE,Y2,
22213     1                  YTEMP,YDIST,XDIST,DELX,DELY,DERIV,DELX6,
22214     1                  P,B,Z,C,A,MAXNXT,
22215     1                  IBUGG3,ISUBRO,IERROR)
22216C
22217C     PURPOSE--COMPUTE SPLINE INTERPOLATION OF A VARIABLE
22218C              (GENERATE INTERPOLATED POINTS).
22219C     INPUT  ARGUMENTS--Y      = SINGLE PRECISION VARIABLE
22220C                                CONTAINING THE ORIGINAL
22221C                                VERTICAL AXIS DATA POINTS.
22222C                     --X      = SINGLE PRECISION VARIABLE
22223C                                CONTAINING THE ORIGINAL
22224C                                HORIZONTAL AXIS DATA POINTS.
22225C                     --X2     = SINGLE PRECISION VARIABLE
22226C                                CONTAINING THE DESIRED
22227C                                HORIZONTAL AXIS INTERPOLATION
22228C                                POINTS.
22229C     OUTPUT ARGUMENTS--Y2     = SINGLE PRECISION VARIABLE
22230C                                CONTAINING THE COMPUTED
22231C                                VERTICAL AXIS INTERPOLATION
22232C                                POINTS.
22233C     NOTE--IT IS PROBABLY NOT PERMISSIBLE TO HAVE THE OUTPUT VECTOR Y2(.)
22234C           BEING IDENTICAL TO THE INPUT VECTOR Y(.)
22235C     NOTE--THIS SUBROUTINE DOES NOT ASSUME THAT THE INPUT
22236C           DATA IS ALREADY SORTED ACCORDING TO THE
22237C           HORIZONTAL AXIS VARIABLE.
22238C           SUCH SORTING IS DOEN HEREIN.
22239C     CAUTION--THE INPUT VECTORS Y AND X ARE SORTED HEREIN
22240C              AND SO MAY BE DIFFERENT UPON LEAVING THIS SUBROUTINE
22241C              THAN UPON ENTERING THIS SUBROUTINE.
22242C     WRITTEN BY--JAMES J. FILLIBEN
22243C                 STATISTICAL ENGINEERING DIVISION
22244C                 INFORMATION TECHNOLOGY LABORATORY
22245C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
22246C                 GAITHERSBURG, MD 20899-8980
22247C                 PHONE--301-975-2855
22248C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
22249C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
22250C     LANGUAGE--ANSI FORTRAN (1977)
22251C     VERSION NUMBER--87/4
22252C     ORIGINAL VERSION--APRIL     1987.
22253C     UPDATED         --MAY       1989. SORT THE INPUT DATA
22254C     UPDATED         --JUNE      1990. TEMPORARY ARRAYS TO GARBAGE COMMON.
22255C                                       ARRAY DECLARATIONS MOVED FROM INTER2
22256C     UPDATED         --MAY       1994. ADD ISUBRO ARGUMENT
22257C     UPDATED         --JULY      2019. MOVE CREATION OF SCRATCH STORAGE
22258C                                       TO CALLING ROUTINE
22259C
22260C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
22261C
22262      CHARACTER*4 IWRITE
22263      CHARACTER*4 IBUGG3
22264      CHARACTER*4 ISUBRO
22265      CHARACTER*4 IERROR
22266C
22267      CHARACTER*4 ISUBN1
22268      CHARACTER*4 ISUBN2
22269      CHARACTER*4 ISTEPN
22270C
22271C---------------------------------------------------------------------
22272C
22273      DIMENSION Y(*)
22274      DIMENSION X(*)
22275      DIMENSION X2(*)
22276      DIMENSION Y2(*)
22277C
22278      DIMENSION YTEMP(*)
22279      DIMENSION YDIST(*)
22280      DIMENSION XDIST(*)
22281C
22282      DIMENSION DELX(*)
22283      DIMENSION DELY(*)
22284      DIMENSION DERIV(*)
22285      DIMENSION DELX6(*)
22286      DIMENSION P(*)
22287      DIMENSION B(*)
22288      DIMENSION Z(*)
22289      DIMENSION C(4,MAXNXT)
22290      DIMENSION A(MAXNXT,3)
22291C
22292C-----COMMON VARIABLES (GENERAL)--------------------------------------
22293C
22294      INCLUDE 'DPCOP2.INC'
22295C
22296C-----START POINT-----------------------------------------------------
22297C
22298      ISUBN1='INTE'
22299      ISUBN2='RP  '
22300      IERROR='NO'
22301C
22302      IF(IBUGG3.EQ.'ON'.OR.ISUBRO.EQ.'TERP')THEN
22303        WRITE(ICOUT,999)
22304  999   FORMAT(1X)
22305        CALL DPWRST('XXX','BUG ')
22306        WRITE(ICOUT,51)
22307   51   FORMAT('***** AT THE BEGINNING OF INTERP--')
22308        CALL DPWRST('XXX','BUG ')
22309        WRITE(ICOUT,52)N,N2
22310   52   FORMAT('N,N2 = ',2I8)
22311        CALL DPWRST('XXX','BUG ')
22312        DO55I=1,N
22313          WRITE(ICOUT,56)I,Y(I),X(I)
22314   56     FORMAT('I,Y(I),X(I) = ',I8,2G15.7)
22315          CALL DPWRST('XXX','BUG ')
22316   55   CONTINUE
22317        DO65I=1,N2
22318          WRITE(ICOUT,66)I,X2(I)
22319   66     FORMAT('I,X2(I) = ',I8,G15.7)
22320          CALL DPWRST('XXX','BUG ')
22321   65   CONTINUE
22322      ENDIF
22323C
22324C               ****************************************
22325C               **  STEP 11--                         **
22326C               **  SORT THE INPUT DATA ACCORDING     **
22327C               **  TO THE HORIZONTAL AXIS VARIABLE   **
22328C               ****************************************
22329C
22330CCCCC THE FOLLOWING LINE WAS INSERTED MAY 1989
22331      CALL SORTC(X,Y,N,X,Y)
22332C
22333C               ********************************************************
22334C               **  STEP 12--                                         **
22335C               **  DETERMINE THE NUMBER OF DISTINCT X VALUES         **
22336C               ********************************************************
22337C
22338      ISTEPN='12'
22339      IF(IBUGG3.EQ.'ON'.OR.ISUBRO.EQ.'TERP')
22340     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
22341C
22342      NDIST=0
22343      DO1210I=1,N
22344        IF(NDIST.EQ.0)GOTO1220
22345        DO1215I2=1,NDIST
22346          IF(X(I).EQ.XDIST(I2))GOTO1210
22347 1215   CONTINUE
22348 1220   CONTINUE
22349        NDIST=NDIST+1
22350        XDIST(NDIST)=X(I)
22351 1210 CONTINUE
22352C
22353      CALL SORT(XDIST,NDIST,XDIST)
22354C
22355C               *****************************************************
22356C               **  STEP 13--                                      **
22357C               **  IF ALL DISTINCT (THAT IS, NO REPLICATION),     **
22358C               **  (THAT IS, HAVE NO REPLICATION),                **
22359C               **  THEN COPY OVER Y VALUES.                       **
22360C               **  IF NOT ALL DISTINCT                            **
22361C               **  (THAT IS, HAVE SOME REPLICATION),              **
22362C               **  THEN COMPUTE A MEAN VALUE OVER THE REPLICATES  **
22363C               **  AND TREAT THAT AS THE COMMON VALUE.            **
22364C               **  THE CORE OF THE INTERPOLATION CODE             **
22365C               **  IS EXPECTING SORTED, DISTINCT X VALUES.        **
22366C               *****************************************************
22367C
22368      IF(NDIST.EQ.N)THEN
22369        DO1311K=1,NDIST
22370          YDIST(K)=Y(K)
22371 1311   CONTINUE
22372      ELSE
22373        DO1321K=1,NDIST
22374          TAG=XDIST(K)
22375          J=0
22376          DO1322I=1,N
22377            IF(X(I).EQ.TAG)THEN
22378              J=J+1
22379              YTEMP(J)=Y(I)
22380            ENDIF
22381 1322     CONTINUE
22382          NI=J
22383          CALL MEAN(YTEMP,NI,IWRITE,YMEAN,IBUGG3,IERROR)
22384          YDIST(K)=YMEAN
22385 1321   CONTINUE
22386      ENDIF
22387C
22388C               ********************************************
22389C               **  STEP 14--                             **
22390C               **  COMPUTE INTERPOLATED VALUES           **
22391C               ********************************************
22392C
22393CCCCC THE REMAINDER OF THIS SUBROUTINE WAS REPLACED    MAY 1989
22394CCCCC BY A CALL TO INTER2                              MAY 1989
22395C
22396CCCCC JUNE, 1990.  MOVE SOME DIMENSIONING FROM INTER2 TO INTERP
22397C
22398      CALL INTER2(YDIST,XDIST,NDIST,X2,N2,Y2,
22399     1            DELX,DELY,DERIV,DELX6,P,B,Z,C,A,MAXNXT,
22400     1            IBUGG3,ISUBRO,IERROR)
22401C
22402C               *****************
22403C               **  STEP 90--  **
22404C               **  EXIT.      **
22405C               *****************
22406C
22407      IF(IBUGG3.EQ.'ON'.OR.ISUBRO.EQ.'TERP')THEN
22408        WRITE(ICOUT,999)
22409        CALL DPWRST('XXX','BUG ')
22410        WRITE(ICOUT,9011)
22411 9011   FORMAT('***** AT THE END       OF INTERP--')
22412        CALL DPWRST('XXX','BUG ')
22413        DO9015I=1,N
22414          WRITE(ICOUT,9016)A(I,1),A(I,2),A(I,3)
22415 9016     FORMAT('A(I,1),A(I,2),A(I,3)        = ',3G15.7)
22416          CALL DPWRST('XXX','BUG ')
22417 9015   CONTINUE
22418        DO9025I=1,N
22419          WRITE(ICOUT,9026)DELX(I),DELY(I),DERIV(I),DELX6(I),B(I),Z(I)
22420 9026     FORMAT('DELX(I),DELY(I),DERIV(I),DELX6(I),B(I),Z(I) = ',
22421     1           6F10.5)
22422          CALL DPWRST('XXX','BUG ')
22423 9025   CONTINUE
22424        DO9035I=1,N
22425          WRITE(ICOUT,9036)C(1,I),C(2,I),C(3,I),C(4,I)
22426 9036     FORMAT('C(1,I),C(2,I),C(3,I),C(4,I) = ',4F10.5)
22427          CALL DPWRST('XXX','BUG ')
22428 9035   CONTINUE
22429        DO9042I=1,N2
22430          WRITE(ICOUT,9043)I,X2(I),Y2(I)
22431 9043     FORMAT('I,X2(I),Y2(I) = ',I8,2E15.7)
22432          CALL DPWRST('XXX','BUG ')
22433 9042   CONTINUE
22434        WRITE(ICOUT,9051)NDIST
22435 9051   FORMAT('NDIST = ',I8)
22436        CALL DPWRST('XXX','BUG ')
22437        DO9052I=1,NDIST
22438          WRITE(ICOUT,9053)I,XDIST(I),YDIST(I)
22439 9053     FORMAT('I,XDIST(I),YDIST(I) = ',I8,2G15.7)
22440          CALL DPWRST('XXX','BUG ')
22441 9052   CONTINUE
22442      ENDIF
22443C
22444      RETURN
22445      END
22446      SUBROUTINE INTER2(Y,X,N,X2,N2,Y2,
22447     1                  DELX,DELY,DERIV,DELX6,P,B,Z,C,A,MAXOBV,
22448     1                  IBUGG3,ISUBRO,IERROR)
22449CCCCC MAY, 1994.  ADD ISUBRO ARGUMENT
22450CCCCC JUNE, 1990.  SOME DIMENSIONING MOVED FROM INTER2 TO INTERP
22451C
22452C     PURPOSE--COMPUTE SPLINE INTERPOLATION OF A VARIABLE
22453C              (GENERATE INTERPOLATED POINTS).
22454C     INPUT  ARGUMENTS--Y      = SINGLE PRECISION VARIABLE
22455C                                CONTAINING THE ORIGINAL
22456C                                VERTICAL AXIS DATA POINTS.
22457C                     --X      = SINGLE PRECISION VARIABLE
22458C                                CONTAINING THE ORIGINAL
22459C                                HORIZONTAL AXIS DATA POINTS.
22460C                     --X2     = SINGLE PRECISION VARIABLE
22461C                                CONTAINING THE DESIRED
22462C                                HORIZONTAL AXIS INTERPOLATION
22463C                                POINTS.
22464C     OUTPUT ARGUMENTS--Y2     = SINGLE PRECISION VARIABLE
22465C                                CONTAINING THE COMPUTED
22466C                                VERTICAL AXIS INTERPOLATION
22467C                                POINTS.
22468C     NOTE--IT IS PROBABLY NOT PERMISSIBLE TO HAVE THE OUTPUT VECTOR Y2(.)
22469C           BEING IDENTICAL TO THE INPUT VECTOR Y(.)
22470C     NOTE--THIS SUBROUTINE DOES NOT ASSUME THAT THE INPUT
22471C           DATA IS ALREADY SORTED ACCORDING TO THE
22472C           HORIZONTAL AXIS VARIABLE.
22473C           SUCH SORTING IS DOEN HEREIN.
22474C     CAUTION--THE INPUT VECTORS Y AND X ARE SORTED HEREIN
22475C              AND SO MAY BE DIFFERENT UPON LEAVING THIS SUBROUTINE
22476C              THAN UPON ENTERING THIS SUBROUTINE.
22477C     WRITTEN BY--JAMES J. FILLIBEN
22478C                 STATISTICAL ENGINEERING DIVISION
22479C                 INFORMATION TECHNOLOGY LABORATORY
22480C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
22481C                 GAITHERSBURG, MD 20899-8980
22482C                 PHONE--301-975-2855
22483C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
22484C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
22485C     LANGUAGE--ANSI FORTRAN (1977)
22486C     VERSION NUMBER--87/4
22487C     ORIGINAL VERSION--APRIL     1987.
22488C     UPDATED         --MAY       1989.  SORT THE INPUT DATA
22489C     UPDATED         --JUNE      1990.  MOVE DIMENSIONS FROM INTER2 TO INTERP
22490C
22491C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
22492C
22493      CHARACTER*4 IBUGG3
22494      CHARACTER*4 ISUBRO
22495      CHARACTER*4 IERROR
22496C
22497      CHARACTER*4 ISUBN1
22498      CHARACTER*4 ISUBN2
22499CCCCC CHARACTER*4 ISTEPN
22500C
22501C---------------------------------------------------------------------
22502C
22503CCCCC JUNE, 1990.  FOLLOWING INCLUDE FILE NO LONGER NEEDED
22504CCCCC      INCLUDE 'DPCOPA.INC'
22505C
22506      DIMENSION Y(*)
22507      DIMENSION X(*)
22508      DIMENSION X2(*)
22509      DIMENSION Y2(*)
22510C
22511CCCCC JUNE, 1990.  FOLLOWING DIMENSIONS NOW DONE IN INTERP
22512CCCCC DIMENSION DELX(MAXOBV)
22513CCCCC DIMENSION DELY(MAXOBV)
22514CCCCC DIMENSION DERIV(MAXOBV)
22515CCCCC DIMENSION DELX6(MAXOBV)
22516CCCCC DIMENSION P(MAXOBV)
22517CCCCCCDIMENSION B(MAXOBV)
22518CCCCC DIMENSION Z(MAXOBV)
22519      DIMENSION DELX(*)
22520      DIMENSION DELY(*)
22521      DIMENSION DERIV(*)
22522      DIMENSION DELX6(*)
22523      DIMENSION P(*)
22524      DIMENSION B(*)
22525      DIMENSION Z(*)
22526      DIMENSION C(4,MAXOBV)
22527      DIMENSION A(MAXOBV,3)
22528C
22529C-----COMMON VARIABLES (GENERAL)--------------------------------------
22530C
22531      INCLUDE 'DPCOP2.INC'
22532C
22533C-----START POINT-----------------------------------------------------
22534C
22535      ISUBN1='INTE'
22536      ISUBN2='RP  '
22537      IERROR='NO'
22538C
22539      IF(IBUGG3.EQ.'ON' .OR. ISUBRO.EQ.'TER2')THEN
22540        WRITE(ICOUT,999)
22541  999   FORMAT(1X)
22542        CALL DPWRST('XXX','BUG ')
22543        WRITE(ICOUT,51)
22544   51   FORMAT('***** AT THE BEGINNING OF INTER2--')
22545        CALL DPWRST('XXX','BUG ')
22546        WRITE(ICOUT,52)N,N2,P(1)
22547   52   FORMAT('N,N2,P(1) = ',2I8,2X,G15.7)
22548        CALL DPWRST('XXX','BUG ')
22549        DO55I=1,N
22550          WRITE(ICOUT,56)I,Y(I),X(I)
22551   56     FORMAT('I,Y(I),X(I) = ',I8,2G15.7)
22552          CALL DPWRST('XXX','BUG ')
22553   55   CONTINUE
22554        DO65I=1,N2
22555          WRITE(ICOUT,66)I,X2(I)
22556   66     FORMAT('I,X2(I) = ',I8,E15.7)
22557          CALL DPWRST('XXX','BUG ')
22558   65   CONTINUE
22559      ENDIF
22560C
22561      NM1=N-1
22562      NM2=N-2
22563C
22564C               ********************************************
22565C               **  STEP 21--                             **
22566C               **  FORM FIRST DIFFERENCES AND THE RATIOS **
22567C               ********************************************
22568C
22569      DO2100I=1,NM1
22570      IP1=I+1
22571      DELX(I)=X(IP1)-X(I)
22572      DELY(I)=Y(IP1)-Y(I)
22573      DERIV(I)=DELY(I)/DELX(I)
22574      DELX6(I)=DELX(I)/6.0
22575 2100 CONTINUE
22576C
22577C               **********************************
22578C               **  STEP 22--                   **
22579C               **  FORM DIFFERENCES OF RATIOS  **
22580C               **********************************
22581C
22582      DO2200I=2,NM1
22583      IM1=I-1
22584      B(I)=DERIV(I)-DERIV(IM1)
22585 2200 CONTINUE
22586C
22587C               **********************
22588C               **  STEP 23--
22589C               **********************
22590C
22591      A(1,2)=(-1.0-DELX(1)/DELX(2))
22592      A(1,3)=DELX(1)/DELX(2)
22593      A(2,3)=DELX6(2)-DELX6(1)*A(1,3)
22594      A(2,2)=2.0*(DELX6(1)+DELX6(2))-DELX6(1)*A(1,2)
22595      A(2,3)=A(2,3)/A(2,2)
22596      B(2)=B(2)/A(2,2)
22597C
22598C               ****************************************
22599C               **  STEP 24--
22600C               ****************************************
22601C
22602      DO2400I=3,NM1
22603      IM1=I-1
22604      A(I,2)=2.0*(DELX6(IM1)+DELX6(I))-DELX6(IM1)*A(IM1,3)
22605      B(I)=B(I)-DELX6(IM1)*B(IM1)
22606      A(I,3)=DELX6(I)/A(I,2)
22607      B(I)=B(I)/A(I,2)
22608 2400 CONTINUE
22609C
22610C               ****************************************
22611C               **  STEP 25--
22612C               ****************************************
22613C
22614      Q=DELX(NM2)/DELX(NM1)
22615      A(N,1)=1.0+Q+A(NM2,3)
22616      A(N,2)=(-Q-A(N,1)*A(NM1,3))
22617      B(N)=B(NM2)-A(N,1)*B(NM1)
22618      Z(N)=B(N)/A(N,2)
22619C
22620C               ****************************************
22621C               **  STEP 26--
22622C               ****************************************
22623C
22624      DO2600I=1,NM2
22625      K=N-I
22626      KP1=K+1
22627      Z(K)=B(K)-A(K,3)*Z(KP1)
22628 2600 CONTINUE
22629      Z(1)=(-A(1,2)*Z(2)-A(1,3)*Z(3))
22630C
22631C               ****************************************
22632C               **  STEP 27--                         **
22633C               ****************************************
22634C
22635      DO2700I=1,NM1
22636      IP1=I+1
22637      Q=1.0/(6.0*DELX(I))
22638      C(1,I)=Z(I)*Q
22639      C(2,I)=Z(IP1)*Q
22640      C(3,I)=Y(I)/DELX(I)-Z(I)*DELX6(I)
22641      C(4,I)=Y(IP1)/DELX(I)-Z(IP1)*DELX6(I)
22642 2700 CONTINUE
22643C
22644C               ****************************************
22645C               **  STEP 28--
22646C               **  PRINT OUT Z'S
22647C               ****************************************
22648C
22649      IF(IBUGG3.EQ.'ON')THEN
22650        DO2800I=1,N
22651          WRITE(ICOUT,2810)I,Z(I)
22652 2810     FORMAT('I,Z(I) = ',I8,E15.7)
22653          CALL DPWRST('XXX','BUG ')
22654 2800   CONTINUE
22655      ENDIF
22656C
22657C               ****************************************
22658C               **  STEP 31--
22659C               **  COMPUTE INTERPOLATION VALUES
22660C               ****************************************
22661C
22662      DO3100J=1,N2
22663      XT=X2(J)
22664      IF(X(1).GT.XT)GOTO3110
22665      GOTO3119
22666C
22667 3110 CONTINUE
22668      WRITE(ICOUT,999)
22669      CALL DPWRST('XXX','BUG ')
22670      WRITE(ICOUT,3111)
22671 3111 FORMAT('***** ERROR IN INTER2--')
22672      CALL DPWRST('XXX','BUG ')
22673      WRITE(ICOUT,3112)
22674 3112 FORMAT('      AN ATTEMPT WAS MADE TO COMPUTE')
22675      CALL DPWRST('XXX','BUG ')
22676      WRITE(ICOUT,3113)
22677 3113 FORMAT('      A SMOOTHED VALUE BEYOND THE RANGE')
22678      CALL DPWRST('XXX','BUG ')
22679      WRITE(ICOUT,3114)
22680 3114 FORMAT('      OF THE DATA--SUCH EXTRAPOLATION')
22681      CALL DPWRST('XXX','BUG ')
22682      WRITE(ICOUT,3115)
22683 3115 FORMAT('      IS UNRELIABLE AND NOT PERMITTED.')
22684      CALL DPWRST('XXX','BUG ')
22685      WRITE(ICOUT,3116)X(1)
22686 3116 FORMAT('         SMALLEST DATA POINT X(1)      = ',E15.7)
22687      CALL DPWRST('XXX','BUG ')
22688      WRITE(ICOUT,3117)XT
22689 3117 FORMAT('         ATTEMPTED EXTRAPOLATION POINT = ',E15.7)
22690      CALL DPWRST('XXX','BUG ')
22691      IERROR='YES'
22692      GOTO9000
22693 3119 CONTINUE
22694C
22695      DO3200I=1,N
22696      I2=I
22697      IF(X(I).EQ.XT)GOTO3210
22698      IF(X(I).GT.XT)GOTO3220
22699 3200 CONTINUE
22700C
22701      WRITE(ICOUT,999)
22702      CALL DPWRST('XXX','BUG ')
22703      WRITE(ICOUT,3201)
22704 3201 FORMAT('***** ERROR IN INTER2--')
22705      CALL DPWRST('XXX','BUG ')
22706      WRITE(ICOUT,3202)
22707 3202 FORMAT('      AN ATTEMPT WAS MADE TO COMPUTE')
22708      CALL DPWRST('XXX','BUG ')
22709      WRITE(ICOUT,3203)
22710 3203 FORMAT('      A SMOOTHED VALUE BEYOND THE RANGE')
22711      CALL DPWRST('XXX','BUG ')
22712      WRITE(ICOUT,3204)
22713 3204 FORMAT('      OF THE DATA--SUCH EXTRAPOLATION')
22714      CALL DPWRST('XXX','BUG ')
22715      WRITE(ICOUT,3205)
22716 3205 FORMAT('      IS UNRELIABLE AND NOT PERMITTED.')
22717      CALL DPWRST('XXX','BUG ')
22718      WRITE(ICOUT,3206)X(1)
22719 3206 FORMAT('         LARGEST  DATA POINT X(1)      = ',E15.7)
22720      CALL DPWRST('XXX','BUG ')
22721      WRITE(ICOUT,3207)XT
22722 3207 FORMAT('         ATTEMPTED EXTRAPOLATION POINT = ',E15.7)
22723      CALL DPWRST('XXX','BUG ')
22724      IERROR='YES'
22725      GOTO9000
22726C
22727 3210 CONTINUE
22728      Y2(J)=Y(I2)
22729      GOTO3100
22730C
22731 3220 CONTINUE
22732      K=I2-1
22733      KP1=K+1
22734      DELU=X(KP1)-XT
22735      DELL=XT-X(K)
22736      TERM1=DELU*(C(1,K)*DELU**2+C(3,K))
22737      TERM2=DELL*(C(2,K)*DELL**2+C(4,K))
22738      Y2(J)=TERM1+TERM2
22739 3100 CONTINUE
22740C
22741C               ****************************************
22742C               **  STEP 41--
22743C               **  IF CALLED FOR,
22744C               **  WRITE OUT INTERPOLATION VALUES
22745C               ****************************************
22746C
22747      IF(IBUGG3.EQ.'ON')THEN
22748        DO4100J=1,N2
22749          WRITE(ICOUT,4110)X2(J),Y2(J)
22750          CALL DPWRST('XXX','BUG ')
22751 4110     FORMAT('X2(J),Y2(J) = ',2E15.7)
22752 4100   CONTINUE
22753      ENDIF
22754C
22755C               *****************
22756C               **  STEP 90--  **
22757C               **  EXIT.      **
22758C               *****************
22759C
22760 9000 CONTINUE
22761      IF(IBUGG3.EQ.'ON' .OR. ISUBRO.EQ.'TER2')THEN
22762        WRITE(ICOUT,999)
22763        CALL DPWRST('XXX','BUG ')
22764        WRITE(ICOUT,9011)
22765 9011   FORMAT('***** AT THE END       OF INTER2--')
22766        CALL DPWRST('XXX','BUG ')
22767        WRITE(ICOUT,9012)N,N2
22768 9012   FORMAT('N,N2 = ',2I8)
22769        CALL DPWRST('XXX','BUG ')
22770        DO9015I=1,N
22771          WRITE(ICOUT,9016)A(I,1),A(I,2),A(I,3)
22772 9016     FORMAT('A(I,1),A(I,2),A(I,3)        = ',3E15.7)
22773          CALL DPWRST('XXX','BUG ')
22774 9015   CONTINUE
22775        DO9025I=1,N
22776         WRITE(ICOUT,9026)DELX(I),DELY(I),DERIV(I),DELX6(I),B(I),Z(I)
22777 9026    FORMAT('DELX(I),DELY(I),DERIV(I),DELX6(I),B(I),Z(I) = ',
22778     1          6F10.5)
22779         CALL DPWRST('XXX','BUG ')
22780 9025   CONTINUE
22781        DO9035I=1,N
22782          WRITE(ICOUT,9036)C(1,I),C(2,I),C(3,I),C(4,I)
22783 9036     FORMAT('C(1,I),C(2,I),C(3,I),C(4,I) = ',4F10.5)
22784          CALL DPWRST('XXX','BUG ')
22785 9035   CONTINUE
22786      ENDIF
22787C
22788      RETURN
22789      END
22790      SUBROUTINE INTFCN(XTEMP,FHAT)
22791C
22792C     PURPOSE--AUXILLARY FUNCTION FOR THE QAGI (INDEFINITE INTEGRATION
22793C              ROUTINES).  IT COMPUTES THE FUNCTION BEING INTEGRATED
22794C              AT THE VALUE X AND RETURNS THE FUNCTION VALUE IN FHAT.
22795C     WRITTEN BY--ALAN HECKERT
22796C                 STATISTICAL ENGINEERING DIVISION
22797C                 INFORMATION TECHNOLOGY LABORATORY
22798C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
22799C                 GAITHERSBURG, MD 20899-8980
22800C                 PHONE--301-975-2899
22801C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
22802C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
22803C     LANGUAGE--ANSI FORTRAN (1977)
22804C     VERSION NUMBER--2013/6
22805C     ORIGINAL VERSION--JUNE      2013.
22806C     UPDATED         --SEPTEMBER 2015. SUPPORT FUNCTION BLOCKS
22807C
22808C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
22809C
22810      REAL XTEMP
22811      REAL FHAT
22812C
22813      CHARACTER*4 IH
22814      CHARACTER*4 IH2
22815C
22816      INCLUDE 'DPCOPA.INC'
22817      INCLUDE 'DPCOHK.INC'
22818      INCLUDE 'DPCODA.INC'
22819      INCLUDE 'DPCOFB.INC'
22820C
22821      COMMON/IFBL2/IFLGFB
22822C
22823      CHARACTER*8 IFBNAM
22824      CHARACTER*8 IFBANS
22825C
22826      CHARACTER*4 IFEESV
22827      COMMON/IFEED/IFEESV
22828C
22829      CHARACTER*4 ZMODEL
22830      CHARACTER*4 IPARN
22831      CHARACTER*4 IPARN2
22832      CHARACTER*4 IANGLU
22833      CHARACTER*4 ITYPEH
22834      CHARACTER*4 IW21HO
22835      CHARACTER*4 IW22HO
22836      CHARACTER*4 IVARN
22837      CHARACTER*4 IVARN2
22838      CHARACTER*4 IBUGA3
22839      CHARACTER*4 IBUGCO
22840      CHARACTER*4 IBUGEV
22841      CHARACTER*4 IERROR
22842C
22843      CHARACTER*4 ISUBN1
22844      CHARACTER*4 ISUBN2
22845      CHARACTER*4 ISTEPN
22846      CHARACTER*4 IFTEXP
22847      CHARACTER*4 IFTORD
22848      CHARACTER*4 IFORSW
22849      CHARACTER*4 ISUBRO
22850      CHARACTER*4 IFOUND
22851C
22852C---------------------------------------------------------------------
22853C
22854      PARAMETER (IOPTCH=1000)
22855      PARAMETER (IOPTC2=100)
22856C
22857      DIMENSION PARAM(IOPTC2)
22858      DIMENSION IPARN(IOPTC2)
22859      DIMENSION IPARN2(IOPTC2)
22860      DIMENSION IVARN(IOPTC2)
22861      DIMENSION IVARN2(IOPTC2)
22862C
22863      DIMENSION ZMODEL(IOPTCH)
22864      DIMENSION ITYPEH(IOPTCH)
22865      DIMENSION IW21HO(IOPTCH)
22866      DIMENSION IW22HO(IOPTCH)
22867      DIMENSION W2HOLD(IOPTCH)
22868C
22869      DIMENSION ILOCV(IOPTC2)
22870CCCCC DIMENSION ILAB(IOPTC2)
22871C
22872      COMMON /OPTCMC/ IBUGA3, ITYPEH, IW21HO, IW22HO, IPARN, IPARN2,
22873     &                IVARN, IVARN2, ZMODEL
22874      COMMON /OPTCMR/ PARAM, W2HOLD,
22875     &                NUMCHA, NUMVAR, NWHOLD, NUMDV, ILOCV
22876C
22877C---------------------------------------------------------------------
22878C
22879      INCLUDE 'DPCOP2.INC'
22880C
22881C-----START POINT-----------------------------------------------------
22882C
22883      IERROR='NO'
22884      IFOUND='NO'
22885      ISUBRO='NULL'
22886      IFTEXP='+'
22887      IFTORD='DATA'
22888      IFORSW='E'
22889C
22890      MAXCP1=MAXCOL+1
22891      MAXCP2=MAXCOL+2
22892      MAXCP3=MAXCOL+3
22893      MAXCP4=MAXCOL+4
22894      MAXCP5=MAXCOL+5
22895      MAXCP6=MAXCOL+6
22896C
22897      IF(IBUGA3.EQ.'ON')THEN
22898        WRITE(ICOUT,999)
22899  999   FORMAT(1X)
22900        CALL DPWRST('XXX','BUG ')
22901        WRITE(ICOUT,51)
22902   51   FORMAT('AT THE BEGINNING OF INTFCN--')
22903        CALL DPWRST('XXX','BUG ')
22904        WRITE(ICOUT,53)NUMCHA,NUMDV,NUMVAR,IFLGFB,XTEMP
22905   53   FORMAT('NUMCHA,NUMDV,NUMVAR,IFLGFB,XTEMP = ',4I8,G15.7)
22906        CALL DPWRST('XXX','BUG ')
22907        WRITE(ICOUT,54)(ZMODEL(J),J=1,MIN(NUMCHA,25))
22908   54   FORMAT('ZMODEL(I) = ',25A4)
22909        CALL DPWRST('XXX','BUG ')
22910        DO55I=1,NUMVAR
22911          WRITE(ICOUT,56)I,PARAM(I),IPARN(I),IPARN2(I)
22912   56     FORMAT('I,PARAM(I),IPARN(I),IPARN2(I) = ',I8,G15.7,A4,A4)
22913          CALL DPWRST('XXX','BUG ')
22914   55   CONTINUE
22915        DO59I=1,NUMDV
22916          WRITE(ICOUT,61)I,IVARN(I),IVARN2(I)
22917   61     FORMAT('I, IVARN(I),IVARN2(I) = ',I8,2X,A4,A4)
22918          CALL DPWRST('XXX','BUG ')
22919   59   CONTINUE
22920      ENDIF
22921C
22922C               ***************************
22923C               **  STEP 3--             **
22924C               **  INITIALIZE PARAMETERS**
22925C               ***************************
22926C
22927      ISTEPN='3'
22928      IF(IBUGA3.EQ.'ON')
22929     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
22930C
22931      IFBNAM=' '
22932      IFBANS=' '
22933      IF(IFLGFB.EQ.1)THEN
22934        IFBNAM=IFBNA1
22935        IFBANS=IFBAN1
22936        IH=IFBPL1(1)(1:4)
22937        IH2=IFBPL1(1)(5:8)
22938      ELSEIF(IFLGFB.EQ.2)THEN
22939        IFBNAM=IFBNA2
22940        IFBANS=IFBAN2
22941        IH=IFBPL2(1)(1:4)
22942        IH2=IFBPL2(1)(5:8)
22943      ELSEIF(IFLGFB.EQ.3)THEN
22944        IFBNAM=IFBNA3
22945        IFBANS=IFBAN3
22946        IH=IFBPL3(1)(1:4)
22947        IH2=IFBPL3(1)(5:8)
22948      ENDIF
22949C
22950      IF(IFLGFB.LE.0)THEN
22951        JLOC=ILOCV(1)
22952        PARAM(JLOC)=XTEMP
22953C
22954        IPASS=2
22955        IBUGCO=IBUGA3
22956        IBUGEV=IBUGA3
22957        FX=0.0
22958        CALL COMPIM(ZMODEL,NUMCHA,IPASS,PARAM,IPARN,IPARN2,NUMVAR,
22959     1              IANGLU,ITYPEH,IW21HO,IW22HO,W2HOLD,NWHOLD,FX,
22960     1              IBUGCO,IBUGEV,IERROR)
22961        FHAT=FX
22962      ELSE
22963C
22964C       FUNCTION BLOCK CASE:
22965C
22966C       STEP 1: COMPUTE FUNCTION BLOCK (BUT FIRST SET CURRENT
22967C               VALUE OF DESIRED PARAMETER)
22968C
22969        DO3305II=1,NUMNAM
22970          IF(IH.EQ.IHNAME(II) .AND. IH2.EQ.IHNAM2(II) .AND.
22971     1       IUSE(II).EQ.'P')THEN
22972            VALUE(II)=XTEMP
22973            IVALUE(II)=INT(XTEMP+0.5)
22974            GOTO3309
22975          ENDIF
22976 3305   CONTINUE
22977C
22978C       PARAMETER NAME NOT FOUND IN CURRENT LIST, SO NEED TO ADD
22979C       TO NAME LIST
22980C
22981        IF(NUMNAM.LT.MAXNAM)THEN
22982          NUMNAM=NUMNAM+1
22983          IHNAME(NUMNAM)=IH
22984          IHNAM2(NUMNAM)=IH2
22985          IUSE(NUMNAM)='P'
22986          VALUE(NUMNAM)=XTEMP
22987          IVALUE(NUMNAM)=INT(XTEMP + 0.5)
22988        ELSE
22989          WRITE(ICOUT,999)
22990          CALL DPWRST('XXX','BUG ')
22991          WRITE(ICOUT,3306)
22992 3306     FORMAT('***** ERROR IN INTEGRATION--')
22993          CALL DPWRST('XXX','BUG ')
22994          WRITE(ICOUT,3307)
22995 3307     FORMAT('      MAXIMUM NUMBER OF NAMES EXCEEDED.')
22996          CALL DPWRST('XXX','BUG ')
22997        ENDIF
22998C
22999 3309   CONTINUE
23000C
23001        IFEEDB='OFF'
23002        CALL DPFBEX(IFBNAM,IANGLU,ISEED,IFTEXP,IFTORD,IFORSW,
23003     1              IBUGA3,IBUGA3,IBUGCO,IBUGEV,IBUGEV,
23004     1              ISUBRO,IFOUND,IERROR)
23005        IFEEDB=IFEESV
23006C
23007C       STEP 2: RETRIEVE RESPONSE
23008C
23009        DO3320II=1,NUMNAM
23010          IF(IFBANS(1:4).EQ.IHNAME(II) .AND.
23011     1       IFBANS(5:8).EQ.IHNAM2(II))THEN
23012            IF(IUSE(II).EQ.'P')THEN
23013              FHAT=VALUE(II)
23014              GOTO3329
23015            ELSEIF(IUSE(II).EQ.'V')THEN
23016              ICOLR=IVALUE(II)
23017              IJ=MAXN*(ICOLR-1)+1
23018              IF(ICOLR.LE.MAXCOL)FHAT=V(IJ)
23019              IF(ICOLR.EQ.MAXCP1)FHAT=PRED(1)
23020              IF(ICOLR.EQ.MAXCP2)FHAT=RES(1)
23021              IF(ICOLR.EQ.MAXCP3)FHAT=YPLOT(1)
23022              IF(ICOLR.EQ.MAXCP4)FHAT=XPLOT(1)
23023              IF(ICOLR.EQ.MAXCP5)FHAT=X2PLOT(1)
23024              IF(ICOLR.EQ.MAXCP6)FHAT=TAGPLO(1)
23025              GOTO3329
23026            ENDIF
23027          ENDIF
23028 3320   CONTINUE
23029C
23030C       PARAMETER/VARIABLE NAME NOT FOUND
23031C
23032        WRITE(ICOUT,3306)
23033        CALL DPWRST('XXX','BUG ')
23034        WRITE(ICOUT,3321)
23035 3321   FORMAT('      EXPECTED PARAMETER/VARIABLE NOT FOUND IN ',
23036     1         'NAME TABLE.')
23037        CALL DPWRST('XXX','BUG ')
23038        WRITE(ICOUT,3323)IFBANS
23039 3323   FORMAT('      EXPECTED NAME = ',A8)
23040        CALL DPWRST('XXX','BUG ')
23041C
23042 3329   CONTINUE
23043C
23044      ENDIF
23045C
23046C               *****************
23047C               **  STEP 90--  **
23048C               **  EXIT       **
23049C               *****************
23050C
23051      IF(IBUGA3.EQ.'ON')THEN
23052        WRITE(ICOUT,9011)
23053 9011   FORMAT('***** AT THE END      OF INTFCN--')
23054        CALL DPWRST('XXX','BUG ')
23055        WRITE(ICOUT,9021)IERROR
23056 9021   FORMAT('IERROR = ',A4)
23057        CALL DPWRST('XXX','BUG ')
23058        WRITE(ICOUT,9101)XTEMP,FHAT
23059 9101   FORMAT('XTEMP,FHAT = ',2G15.7)
23060        CALL DPWRST('XXX','BUG ')
23061      ENDIF
23062C
23063      RETURN
23064      END
23065      SUBROUTINE INTLIN (X1,Y1,X2,Y2,X3,Y3,X4,Y4,N,
23066     1                   XOUT,YOUT,NOUT,
23067     1                   IBUGA3,ISUBRO,IERROR)
23068C
23069C     PURPOSE--THIS ROUTINE FINDS THE INTERSECTION POINT OF TWO
23070C              LINES.  EACH LINE IS DEFINED BY TWO POINTS, SO
23071C              THERE ARE FOUR POINTS IN ALL:
23072C
23073C                 (X1,Y1) = COORDINATES FOR POINT ONE OF LINE ONE
23074C                 (X2,Y2) = COORDINATES FOR POINT TWO OF LINE ONE
23075C                 (X3,Y3) = COORDINATES FOR POINT ONE OF LINE TWO
23076C                 (X4,Y4) = COORDINATES FOR POINT TWO OF LINE TWO
23077C
23078C     WRITTEN BY--ALAN HECKERT
23079C                 STATISTICAL ENGINEERING DIVISION
23080C                 INFORMATION TECHNOLOGY LABORATORY
23081C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
23082C                 GAITHERSBURG, MD 20899-8980
23083C                 PHONE--301-975-2899
23084C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
23085C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
23086C     LANGUAGE--ANSI FORTRAN (1977)
23087C     VERSION NUMBER--2012.10
23088C     ORIGINAL VERSION--OCTOBER   2012.
23089C
23090C-----NON-COMMON VARIABLES (GRAPHICS)-------------------------------------
23091C
23092      CHARACTER*4 IBUGA3
23093      CHARACTER*4 ISUBRO
23094      CHARACTER*4 IERROR
23095C
23096      REAL X1(*)
23097      REAL Y1(*)
23098      REAL X2(*)
23099      REAL Y2(*)
23100      REAL X3(*)
23101      REAL Y3(*)
23102      REAL X4(*)
23103      REAL Y4(*)
23104      REAL XOUT(*)
23105      REAL YOUT(*)
23106      REAL A1
23107      REAL B1
23108      REAL C1
23109      REAL A2
23110      REAL B2
23111      REAL C2
23112      REAL DENOM
23113C
23114C-----COMMON VARIABLES (GENERAL)--------------------------------------
23115C
23116      INCLUDE 'DPCOP2.INC'
23117C
23118C-----START POINT-----------------------------------------------------
23119C
23120      IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'TLIN')THEN
23121        WRITE(ICOUT,51)N
23122   51   FORMAT('AT THE BEGININNING OF INTLIN--N = ',I8)
23123        CALL DPWRST('XXX','BUG ')
23124        DO59I=1,N
23125          WRITE(ICOUT,53)I,X1(I),Y1(I),X2(I),Y2(I)
23126   53     FORMAT('I,X1(I),Y1(I),X2(I),Y2(I) = ',I8,4G15.7)
23127          CALL DPWRST('XXX','BUG ')
23128          WRITE(ICOUT,55)I,X3(I),Y3(I),X4(I),Y4(I)
23129   55     FORMAT('I,X3(I),Y3(I),X4(I),Y4(I) = ',I8,4G15.7)
23130          CALL DPWRST('XXX','BUG ')
23131   59   CONTINUE
23132      ENDIF
23133C
23134      IERROR='NO'
23135C
23136      DO100I=1,N
23137        A1=Y2(I) - Y1(I)
23138        B1=X1(I) - X2(I)
23139        C1=X2(I)*Y1(I) - X1(I)*Y2(I)
23140        A2=Y4(I) - Y3(I)
23141        B2=X3(I) - X4(I)
23142        C2=X4(I)*Y3(I) - X3(I)*Y4(I)
23143        DENOM=A1*B2 - A2*B1
23144        IF(DENOM.EQ.0.0)THEN
23145          XOUT(I)=CPUMIN
23146          YOUT(I)=CPUMIN
23147        ELSE
23148          XOUT(I)=(B1*C2 - B2*C1)/DENOM
23149          YOUT(I)=(A2*C1 - A1*C2)/DENOM
23150        ENDIF
23151  100 CONTINUE
23152      NOUT=N
23153C
23154      IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'TLIN')THEN
23155        WRITE(ICOUT,9051)
23156 9051   FORMAT('AT THE END OF INTLIN')
23157        CALL DPWRST('XXX','BUG ')
23158        DO9059I=1,N
23159          WRITE(ICOUT,9053)I,XOUT(I),YOUT(I)
23160 9053     FORMAT('I,X3(I),Y3(I) = ',I8,2G15.7)
23161          CALL DPWRST('XXX','BUG ')
23162 9059   CONTINUE
23163      ENDIF
23164C
23165      RETURN
23166      END
23167      SUBROUTINE INTLI2 (X1,Y1,X2,Y2,X3,Y3,X4,Y4,
23168     1                   XOUT,YOUT,
23169     1                   IBUGA3,ISUBRO,IERROR)
23170C
23171C     PURPOSE--THIS ROUTINE FINDS THE INTERSECTION POINT OF TWO
23172C              LINES.  EACH LINE IS DEFINED BY TWO POINTS, SO
23173C              THERE ARE FOUR POINTS IN ALL:
23174C
23175C                 (X1,Y1) = COORDINATES FOR POINT ONE OF LINE ONE
23176C                 (X2,Y2) = COORDINATES FOR POINT TWO OF LINE ONE
23177C                 (X3,Y3) = COORDINATES FOR POINT ONE OF LINE TWO
23178C                 (X4,Y4) = COORDINATES FOR POINT TWO OF LINE TWO
23179C
23180C              THIS IS SIMILAR TO INTLIN.  THE DISTINCTION IS THAT
23181C              INTLIN ACCEPTS ARRAY ARGUMENTS WHILE INTLI2 ACCEPTS
23182C              SCALAR ARGUMENTS.
23183C     WRITTEN BY--ALAN HECKERT
23184C                 STATISTICAL ENGINEERING DIVISION
23185C                 INFORMATION TECHNOLOGY LABORATORY
23186C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
23187C                 GAITHERSBURG, MD 20899-8980
23188C                 PHONE--301-975-2899
23189C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
23190C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
23191C     LANGUAGE--ANSI FORTRAN (1977)
23192C     VERSION NUMBER--2012.10
23193C     ORIGINAL VERSION--OCTOBER   2012.
23194C
23195C-----NON-COMMON VARIABLES (GRAPHICS)-------------------------------------
23196C
23197      CHARACTER*4 IBUGA3
23198      CHARACTER*4 ISUBRO
23199      CHARACTER*4 IERROR
23200C
23201      REAL X1
23202      REAL Y1
23203      REAL X2
23204      REAL Y2
23205      REAL X3
23206      REAL Y3
23207      REAL X4
23208      REAL Y4
23209      REAL XOUT
23210      REAL YOUT
23211      REAL A1
23212      REAL B1
23213      REAL C1
23214      REAL A2
23215      REAL B2
23216      REAL C2
23217      REAL DENOM
23218C
23219C-----COMMON VARIABLES (GENERAL)--------------------------------------
23220C
23221      INCLUDE 'DPCOP2.INC'
23222C
23223C-----START POINT-----------------------------------------------------
23224C
23225      IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'TLI2')THEN
23226        WRITE(ICOUT,51)
23227   51   FORMAT('AT THE BEGININNING OF INTLI2')
23228        CALL DPWRST('XXX','BUG ')
23229        WRITE(ICOUT,53)X1,Y1,X2,Y2,X3,Y3,X4,Y4
23230   53   FORMAT('X1,Y1,X2,Y2,X3,Y3,X4,Y4 = ',8G15.7)
23231        CALL DPWRST('XXX','BUG ')
23232      ENDIF
23233C
23234      IERROR='NO'
23235C
23236      A1=Y2 - Y1
23237      B1=X1 - X2
23238      C1=X2*Y1 - X1*Y2
23239      A2=Y4 - Y3
23240      B2=X3 - X4
23241      C2=X4*Y3 - X3*Y4
23242      DENOM=A1*B2 - A2*B1
23243      IF(DENOM.EQ.0.0)THEN
23244        XOUT=CPUMIN
23245        YOUT=CPUMIN
23246      ELSE
23247        XOUT=(B1*C2 - B2*C1)/DENOM
23248        YOUT=(A2*C1 - A1*C2)/DENOM
23249      ENDIF
23250C
23251      IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'TLIN')THEN
23252        WRITE(ICOUT,9051)
23253 9051   FORMAT('AT THE END OF INTLIN')
23254        CALL DPWRST('XXX','BUG ')
23255        WRITE(ICOUT,9053)XOUT,YOUT
23256 9053   FORMAT('X3(I),Y3(I) = ',2G15.7)
23257        CALL DPWRST('XXX','BUG ')
23258      ENDIF
23259C
23260      RETURN
23261      END
23262      SUBROUTINE INTRV(XT,LXT,X,ILO,ILEFT,MFLAG)
23263C***BEGIN PROLOGUE  INTRV
23264C***DATE WRITTEN   800901   (YYMMDD)
23265C***REVISION DATE  820801   (YYMMDD)
23266C***CATEGORY NO.  E3,K6
23267C***KEYWORDS  B-SPLINE,DATA FITTING,INTERPOLATION,SPLINE
23268C***AUTHOR  AMOS, D. E., (SNLA)
23269C***PURPOSE  Computes the largest integer ILEFT in 1.LE.ILEFT.LE.LXT
23270C            such that XT(ILEFT).LE.X where XT(*) is a subdivision
23271C            of the X interval.
23272C***DESCRIPTION
23273C
23274C     Written by Carl de Boor and modified by D. E. Amos
23275C
23276C     Reference
23277C         SIAM J. Numerical Analysis, 14, No. 3, June 1977, pp. 441-472.
23278C
23279C     Abstract
23280C         INTRV is the INTERV routine of the reference.
23281C
23282C         INTRV computes the largest integer ILEFT in 1 .LE. ILEFT .LE.
23283C         LXT such that XT(ILEFT) .LE. X where XT(*) is a subdivision of
23284C         the X interval.  Precisely,
23285C
23286C                      X .LT. XT(1)                1         -1
23287C         if  XT(I) .LE. X .LT. XT(I+1)  then  ILEFT=I  , MFLAG=0
23288C           XT(LXT) .LE. X                         LXT        1,
23289C
23290C         That is, when multiplicities are present in the break point
23291C         to the left of X, the largest index is taken for ILEFT.
23292C
23293C     Description of Arguments
23294C         Input
23295C          XT      - XT is a knot or break point vector of length LXT
23296C          LXT     - length of the XT vector
23297C          X       - argument
23298C          ILO     - an initialization parameter which must be set
23299C                    to 1 the first time the spline array XT is
23300C                    processed by INTRV.
23301C
23302C         Output
23303C          ILO     - ILO contains information for efficient process-
23304C                    ing after the initial call, and ILO must not be
23305C                    changed by the user.  Distinct splines require
23306C                    distinct ILO parameters.
23307C          ILEFT   - largest integer satisfying XT(ILEFT) .LE. X
23308C          MFLAG   - signals when X lies out of bounds
23309C
23310C     Error Conditions
23311C         None
23312C***REFERENCES  C. DE BOOR, *PACKAGE FOR CALCULATING WITH B-SPLINES*,
23313C                 SIAM JOURNAL ON NUMERICAL ANALYSIS, VOLUME 14, NO. 3,
23314C                 JUNE 1977, PP. 441-472.
23315C***ROUTINES CALLED  (NONE)
23316C***END PROLOGUE  INTRV
23317C
23318C
23319      INTEGER IHI, ILEFT, ILO, ISTEP, LXT, MFLAG, MIDDLE
23320      REAL X, XT
23321      DIMENSION XT(LXT)
23322C***FIRST EXECUTABLE STATEMENT  INTRV
23323      IHI = ILO + 1
23324      IF (IHI.LT.LXT) GO TO 10
23325      IF (X.GE.XT(LXT)) GO TO 110
23326      IF (LXT.LE.1) GO TO 90
23327      ILO = LXT - 1
23328      IHI = LXT
23329C
23330   10 IF (X.GE.XT(IHI)) GO TO 40
23331      IF (X.GE.XT(ILO)) GO TO 100
23332C
23333C *** NOW X .LT. XT(IHI) . FIND LOWER BOUND
23334      ISTEP = 1
23335   20 IHI = ILO
23336      ILO = IHI - ISTEP
23337      IF (ILO.LE.1) GO TO 30
23338      IF (X.GE.XT(ILO)) GO TO 70
23339      ISTEP = ISTEP*2
23340      GO TO 20
23341   30 ILO = 1
23342      IF (X.LT.XT(1)) GO TO 90
23343      GO TO 70
23344C *** NOW X .GE. XT(ILO) . FIND UPPER BOUND
23345   40 ISTEP = 1
23346   50 ILO = IHI
23347      IHI = ILO + ISTEP
23348      IF (IHI.GE.LXT) GO TO 60
23349      IF (X.LT.XT(IHI)) GO TO 70
23350      ISTEP = ISTEP*2
23351      GO TO 50
23352   60 IF (X.GE.XT(LXT)) GO TO 110
23353      IHI = LXT
23354C
23355C *** NOW XT(ILO) .LE. X .LT. XT(IHI) . NARROW THE INTERVAL
23356   70 MIDDLE = (ILO+IHI)/2
23357      IF (MIDDLE.EQ.ILO) GO TO 100
23358C     NOTE. IT IS ASSUMED THAT MIDDLE = ILO IN CASE IHI = ILO+1
23359      IF (X.LT.XT(MIDDLE)) GO TO 80
23360      ILO = MIDDLE
23361      GO TO 70
23362   80 IHI = MIDDLE
23363      GO TO 70
23364C *** SET OUTPUT AND RETURN
23365   90 MFLAG = -1
23366      ILEFT = 1
23367      RETURN
23368  100 MFLAG = 0
23369      ILEFT = ILO
23370      RETURN
23371  110 MFLAG = 1
23372      ILEFT = LXT
23373      RETURN
23374      END
23375      SUBROUTINE INTVEC(Y,X,N,NUMVAR,IWRITE,XYINT,IBUGA3,IERROR)
23376C
23377C     PURPOSE--THIS SUBROUTINE COMPUTES THE
23378C              INTEGRAL OF THE DATA IN THE INPUT VECTOR Y (IF NUMVAR = 1)
23379C              OR OF THE INTEGRAL OF Y (VERTICALLY)
23380C              WITH RESPECT TO X (HORIZONTALLY) (IF NUMVAR = 2).
23381C     NOTE--WHEN NUMVAR = 1, IT IS ASSUMED THAT THE
23382C           HORIZONTAL AXIS VARIABLE IS EQUALLY-SPACED
23383C           WITH UNIT SPACING.
23384C     NOTE--THE TRAPEZOID RULE IS USED.
23385C     INPUT  ARGUMENTS--Y      = THE SINGLE PRECISION VECTOR OF
23386C                                VERTICAL AXIS OBSERVATIONS.
23387C                     --X      = THE SINGLE PRECISION VECTOR OF
23388C                     --N      = THE INTEGER NUMBER OF OBSERVATIONS
23389C                                IN THE VECTOR X.
23390C     OUTPUT ARGUMENTS--XYINT  = THE SINGLE PRECISION VALUE OF THE
23391C                                COMPUTED SAMPLE INTEGRAL.
23392C     OUTPUT--THE COMPUTED SINGLE PRECISION VALUE OF THE
23393C             SAMPLE INTEGRAL.
23394C     RESTRICTIONS--THERE IS NO RESTRICTION ON THE MAXIMUM VALUE
23395C                   OF N FOR THIS SUBROUTINE.
23396C     OTHER DATAPAC   SUBROUTINES NEEDED--NONE.
23397C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE.
23398C     MODE OF INTERNAL OPERATIONS--DOUBLE PRECISION.
23399C     LANGUAGE--ANSI FORTRAN (1977)
23400C     WRITTEN BY--JAMES J. FILLIBEN
23401C                 STATISTICAL ENGINEERING DIVISION
23402C                 INFORMATION TECHNOLOGY LABORATORY
23403C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
23404C                 GAITHERSBURG, MD 20899-8980
23405C                 PHONE--301-975-2855
23406C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
23407C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
23408C     LANGUAGE--ANSI FORTRAN (1966)
23409C               EXCEPTION--HOLLERITH STRINGS IN FORMAT STATEMENTS
23410C                          DENOTED BY QUOTES RATHER THAN NH.
23411C     VERSION NUMBER--82.6
23412C     ORIGINAL VERSION--JANUARY   1979.
23413C     UPDATED         --JUNE      1979.
23414C     UPDATED         --JULY      1979.
23415C     UPDATED         --AUGUST    1981.
23416C     UPDATED         --MAY       1982.
23417C
23418C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
23419C
23420      CHARACTER*4 IWRITE
23421      CHARACTER*4 IBUGA3
23422      CHARACTER*4 IERROR
23423C
23424      CHARACTER*4 ISUBN1
23425      CHARACTER*4 ISUBN2
23426C
23427C---------------------------------------------------------------------
23428C
23429      DOUBLE PRECISION DXI
23430      DOUBLE PRECISION DYI
23431      DOUBLE PRECISION DXIM1
23432      DOUBLE PRECISION DYIM1
23433      DOUBLE PRECISION DDELX
23434      DOUBLE PRECISION DDELY
23435      DOUBLE PRECISION DTERM1
23436      DOUBLE PRECISION DTERM2
23437      DOUBLE PRECISION DSUM
23438C
23439      DIMENSION X(*)
23440      DIMENSION Y(*)
23441C
23442C---------------------------------------------------------------------
23443C
23444      INCLUDE 'DPCOP2.INC'
23445C
23446C-----START POINT-----------------------------------------------------
23447C
23448      ISUBN1='INTV'
23449      ISUBN2='EC  '
23450      IERROR='NO'
23451C
23452      DXI=0.0D0
23453      DYI=0.0D0
23454      DXIM1=0.0D0
23455      DYIM1=0.0D0
23456C
23457      IF(IBUGA3.EQ.'OFF')GOTO90
23458      WRITE(ICOUT,999)
23459  999 FORMAT(1X)
23460      CALL DPWRST('XXX','BUG ')
23461      WRITE(ICOUT,51)
23462   51 FORMAT('***** AT THE BEGINNING OF INTVEC--')
23463      CALL DPWRST('XXX','BUG ')
23464      WRITE(ICOUT,52)IBUGA3
23465   52 FORMAT('IBUGA3 = ',A4)
23466      CALL DPWRST('XXX','BUG ')
23467      WRITE(ICOUT,53)N,NUMVAR
23468   53 FORMAT('N,NUMVAR = ',2I8)
23469      CALL DPWRST('XXX','BUG ')
23470      DO55I=1,N
23471      WRITE(ICOUT,56)I,X(I),Y(I)
23472   56 FORMAT('I,X(I),Y(I) = ',I8,2E15.7)
23473      CALL DPWRST('XXX','BUG ')
23474   55 CONTINUE
23475   90 CONTINUE
23476C
23477C               *******************************************
23478C               **  COMPUTE     (NUMERICAL) INTEGRAL     **
23479C               *******************************************
23480C
23481C               ********************************************
23482C               **  STEP 1--                              **
23483C               **  CHECK THE INPUT ARGUMENTS FOR ERRORS  **
23484C               ********************************************
23485C
23486      AN=N
23487C
23488      IF(N.GE.1)GOTO119
23489      IERROR='YES'
23490      WRITE(ICOUT,999)
23491      CALL DPWRST('XXX','BUG ')
23492      WRITE(ICOUT,111)
23493  111 FORMAT('***** ERROR IN INTVEC--')
23494      CALL DPWRST('XXX','BUG ')
23495      WRITE(ICOUT,112)
23496  112 FORMAT('      THE INPUT NUMBER OF OBSERVATIONS')
23497      CALL DPWRST('XXX','BUG ')
23498      WRITE(ICOUT,113)
23499  113 FORMAT('      IN THE VARIABLE FOR WHICH')
23500      CALL DPWRST('XXX','BUG ')
23501      WRITE(ICOUT,114)
23502  114 FORMAT('      THE INTEGRAL IS TO BE')
23503      CALL DPWRST('XXX','BUG ')
23504      WRITE(ICOUT,115)
23505  115 FORMAT('      COMPUTED, MUST BE 1 OR LARGER.')
23506      CALL DPWRST('XXX','BUG ')
23507      WRITE(ICOUT,116)
23508  116 FORMAT('      SUCH WAS NOT THE CASE HERE.')
23509      CALL DPWRST('XXX','BUG ')
23510      WRITE(ICOUT,117)N
23511  117 FORMAT('      THE INPUT NUMBER OF OBSERVATIONS HERE = ',I8,
23512     1'.')
23513      CALL DPWRST('XXX','BUG ')
23514      GOTO9000
23515  119 CONTINUE
23516C
23517      IF(N.EQ.1)GOTO120
23518      GOTO129
23519  120 CONTINUE
23520CCCCC WRITE(ICOUT,999)
23521CCCCC CALL DPWRST('XXX','BUG ')
23522CCCCC WRITE(ICOUT,121)
23523CC121 FORMAT('***** NON-FATAL DIAGNOSTIC IN INTVEC--',
23524CCCCC1'THE THIRD INPUT ARGUMENT (N) HAS THE VALUE 1')
23525CCCCC CALL DPWRST('XXX','BUG ')
23526      XYINT=0.0
23527      GOTO800
23528  129 CONTINUE
23529C
23530      IF(NUMVAR.EQ.1.OR.NUMVAR.EQ.2)GOTO139
23531      IERROR='YES'
23532      WRITE(ICOUT,999)
23533      CALL DPWRST('XXX','BUG ')
23534      WRITE(ICOUT,131)
23535  131 FORMAT('***** INTERNAL ERROR IN INTVEC--',
23536     1'THE FOURTH INPUT ARGUMENT (NUMVAR) HAS VALUE OTHER THAN 1 OR 2')
23537      CALL DPWRST('XXX','BUG ')
23538      WRITE(ICOUT,132)NUMVAR
23539  132 FORMAT('      NUMVAR = ',I8)
23540      CALL DPWRST('XXX','BUG ')
23541      GOTO9000
23542  139 CONTINUE
23543C
23544      HOLD=Y(1)
23545      DO145I=2,N
23546      IF(Y(I).NE.HOLD)GOTO149
23547  145 CONTINUE
23548CCCCC WRITE(ICOUT,999)
23549CCCCC CALL DPWRST('XXX','BUG ')
23550CCCCC WRITE(ICOUT,146)HOLD
23551CC146 FORMAT('***** NON-FATAL DIAGNOSTIC IN INTVEC--',
23552CCCCC1'THE FIRST  INPUT ARGUMENT (A VECTOR Y) HAS ALL ELEMENTS = ',
23553CCCCC1E15.7)
23554CCCCC CALL DPWRST('XXX','BUG ')
23555      GOTO190
23556  149 CONTINUE
23557C
23558      IF(NUMVAR.LE.1)GOTO159
23559      HOLD=X(1)
23560      DO155I=2,N
23561      IF(Y(I).NE.HOLD)GOTO159
23562  155 CONTINUE
23563CCCCC WRITE(ICOUT,999)
23564CCCCC CALL DPWRST('XXX','BUG ')
23565CCCCC WRITE(ICOUT,156)HOLD
23566CC156 FORMAT('***** NON-FATAL DIAGNOSTIC IN INTVEC--',
23567CCCCC1'THE SECOND INPUT ARGUMENT (A VECTOR X) HAS ALL ELEMENTS = ',
23568CCCCC1E15.7)
23569CCCCC CALL DPWRST('XXX','BUG ')
23570      XYINT=0.0
23571      GOTO800
23572  159 CONTINUE
23573C
23574  190 CONTINUE
23575C
23576C               ****************************************
23577C               **  STEP 2--                          **
23578C               **  COMPUTE THE (NUMERICAL) INTEGRAL  **
23579C               ****************************************
23580C
23581      DSUM=0.0D0
23582      I=1
23583      IF(NUMVAR.EQ.1)DXI=I
23584      IF(NUMVAR.EQ.2)DXI=X(I)
23585      DYI=Y(1)
23586      DO200I=2,N
23587      DXIM1=DXI
23588      DYIM1=DYI
23589      IF(NUMVAR.EQ.1)DXI=I
23590      IF(NUMVAR.EQ.2)DXI=X(I)
23591      DYI=Y(I)
23592      DDELX=DXI-DXIM1
23593      DDELY=DYI-DYIM1
23594      DTERM1=DYIM1*DDELX
23595      DTERM2=DDELY*DDELX/2.0D0
23596      DSUM=DSUM+DTERM1+DTERM2
23597  200 CONTINUE
23598      XYINT=DSUM
23599C
23600C               *******************************
23601C               **  STEP 3--                 **
23602C               **  WRITE OUT A LINE         **
23603C               **  OF SUMMARY INFORMATION.  **
23604C               *******************************
23605C
23606  800 CONTINUE
23607      IF(IFEEDB.EQ.'OFF')GOTO890
23608      IF(IWRITE.EQ.'OFF')GOTO890
23609      WRITE(ICOUT,999)
23610      CALL DPWRST('XXX','BUG ')
23611      WRITE(ICOUT,811)N,XYINT
23612  811 FORMAT('THE (TRAPEZOID RULE) INTEGRAL OF THE ',I8,
23613     1' OBSERVATIONS = ',E15.7)
23614      CALL DPWRST('XXX','BUG ')
23615  890 CONTINUE
23616C
23617C               *****************
23618C               **  STEP 90--  **
23619C               **  EXIT.      **
23620C               *****************
23621C
23622 9000 CONTINUE
23623      IF(IBUGA3.EQ.'OFF')GOTO9090
23624      WRITE(ICOUT,999)
23625      CALL DPWRST('XXX','BUG ')
23626      WRITE(ICOUT,9011)
23627 9011 FORMAT('***** AT THE END       OF INTVEC--')
23628      CALL DPWRST('XXX','BUG ')
23629      WRITE(ICOUT,9012)IBUGA3,IERROR
23630 9012 FORMAT('IBUGA3,IERROR = ',A4,2X,A4)
23631      CALL DPWRST('XXX','BUG ')
23632      WRITE(ICOUT,9013)N
23633 9013 FORMAT('N = ',I8)
23634      CALL DPWRST('XXX','BUG ')
23635      WRITE(ICOUT,9014)DXI,DYI,DXIM1,DYIM1
23636 9014 FORMAT('DXI,DYI,DXIM1,DYIM1 = ',4D15.7)
23637      CALL DPWRST('XXX','BUG ')
23638      WRITE(ICOUT,9015)XYINT
23639 9015 FORMAT('XYINT = ',E15.7)
23640      CALL DPWRST('XXX','BUG ')
23641 9090 CONTINUE
23642C
23643      RETURN
23644      END
23645      SUBROUTINE INT2D(Z,Y,X,N,Y2,NY,X2,NX,IWRITE,Z2,N2,
23646     1                 YTEMP,XTEMP,YDIST,XDIST,ZDIST,
23647     1                 ZTEMP,ZTEMP2,XNEW,YNEW,
23648     1                 WORK,IWORK,
23649     1                 IBUGG3,ISUBRO,IERROR)
23650C
23651C     PURPOSE--COMPUTE BIVARIATE INTERPOLATION OF SCATTERED DATA.
23652C              THE INTERPOLATION IS GENERATED ON A GRID.
23653C              THE BILINEAR INTERPOLATION WORKS ON DATA THAT FORMS A
23654C              GRID TO POINTS NOT ON THE GRID WHILE THIS ROUTINE
23655C              INTERPOLATES NON-GRIDDED DATA TO FORM A GRID.
23656C              A TYPICAL USE OF THIS ROUTINE IS TO GENERATE A CONTOUR
23657C              PLOT FROM NON-GRIDDED DATA.
23658C              (GENERATE INTERPOLATED POINTS).
23659C     INPUT  ARGUMENTS--Z      = SINGLE PRECISION VARIABLE
23660C                                CONTAINING THE ORIGINAL
23661C                                Z AXIS DATA POINTS.
23662C                     --Y      = SINGLE PRECISION VARIABLE
23663C                                CONTAINING THE ORIGINAL
23664C                                VERTICAL AXIS DATA POINTS.
23665C                     --X      = SINGLE PRECISION VARIABLE
23666C                                CONTAINING THE ORIGINAL
23667C                                HORIZONTAL AXIS DATA POINTS.
23668C                     --Y2     = SINGLE PRECISION VARIABLE
23669C                                CONTAINING THE DESIRED
23670C                                VERTICAL AXIS INTERPOLATION
23671C                     --X2     = SINGLE PRECISION VARIABLE
23672C                                CONTAINING THE DESIRED
23673C                                HORIZONTAL AXIS INTERPOLATION
23674C                                POINTS.
23675C     OUTPUT ARGUMENTS--Z2     = SINGLE PRECISION VARIABLE
23676C                                CONTAINING THE COMPUTED
23677C                                Z AXIS INTERPOLATION
23678C                                POINTS.
23679C     NOTE--IT IS PROBABLY NOT PERMISSIBLE TO HAVE THE OUTPUT VECTOR
23680C           Y2(.) BEING IDENTICAL TO THE INPUT VECTOR Y(.)
23681C     NOTE--THIS SUBROUTINE DOES NOT ASSUME THAT THE INPUT
23682C           DATA IS ALREADY SORTED ACCORDING TO THE
23683C           HORIZONTAL AXIS VARIABLE.
23684C           SUCH SORTING IS DOEN HEREIN.
23685C     CAUTION--THE INPUT VECTORS Y AND X ARE SORTED HEREIN
23686C              AND SO MAY BE DIFFERENT UPON LEAVING THIS SUBROUTINE
23687C              THAN UPON ENTERING THIS SUBROUTINE.
23688C     WRITTEN BY--JAMES J. FILLIBEN
23689C                 STATISTICAL ENGINEERING DIVISION
23690C                 INFORMATION TECHNOLOGY LABORATORY
23691C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
23692C                 GAITHERSBURG, MD 20899-8980
23693C                 PHONE--301-975-2855
23694C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
23695C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
23696C     LANGUAGE--ANSI FORTRAN (1977)
23697C     VERSION NUMBER--94/5
23698C     ORIGINAL VERSION--MAY       1994.
23699C
23700C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
23701C
23702      CHARACTER*4 IWRITE
23703      CHARACTER*4 IBUGG3
23704      CHARACTER*4 IERROR
23705C
23706      CHARACTER*4 ISUBN1
23707      CHARACTER*4 ISUBN2
23708      CHARACTER*4 ISTEPN
23709      CHARACTER*4 ISUBRO
23710C
23711      CHARACTER*4 IHP
23712      CHARACTER*4 IHP2
23713      CHARACTER*4 IHWUSE
23714      CHARACTER*4 MESSAG
23715C
23716C---------------------------------------------------------------------
23717C
23718      DIMENSION Z(*)
23719      DIMENSION Y(*)
23720      DIMENSION X(*)
23721      DIMENSION X2(*)
23722      DIMENSION Y2(*)
23723      DIMENSION Z2(*)
23724C
23725      DIMENSION YTEMP(*)
23726      DIMENSION XTEMP(*)
23727      DIMENSION YDIST(*)
23728      DIMENSION XDIST(*)
23729      DIMENSION ZDIST(*)
23730      DIMENSION ZTEMP2(*)
23731      DIMENSION ZTEMP(*)
23732      DIMENSION XNEW(*)
23733      DIMENSION YNEW(*)
23734CCCCC DIMENSION IWORK(7*MAXOBV)
23735CCCCC DIMENSION WORK(7*MAXOBV)
23736      DIMENSION IWORK(*)
23737      DIMENSION WORK(*)
23738C
23739C-----COMMON VARIABLES (GENERAL)--------------------------------------
23740C
23741      INCLUDE 'DPCOPA.INC'
23742      INCLUDE 'DPCOHK.INC'
23743      INCLUDE 'DPCOP2.INC'
23744C
23745C-----START POINT-----------------------------------------------------
23746C
23747      ISUBN1='INT2'
23748      ISUBN2='D   '
23749      IERROR='NO'
23750C
23751      ILAST=-99
23752C
23753      IF(IBUGG3.EQ.'ON'.OR.ISUBRO.EQ.'NT2D')THEN
23754        WRITE(ICOUT,999)
23755  999   FORMAT(1X)
23756        CALL DPWRST('XXX','BUG ')
23757        WRITE(ICOUT,51)
23758   51   FORMAT('***** AT THE BEGINNING OF INT2D--')
23759        CALL DPWRST('XXX','BUG ')
23760        WRITE(ICOUT,52)N,NX,NY
23761   52   FORMAT('N,NX,NY = ',3I8)
23762        CALL DPWRST('XXX','BUG ')
23763        DO55I=1,N
23764          WRITE(ICOUT,56)I,Z(I),Y(I),X(I)
23765   56     FORMAT('I,Z(I),Y(I),X(I) = ',I8,3G15.7)
23766          CALL DPWRST('XXX','BUG ')
23767   55   CONTINUE
23768        DO65I=1,NX
23769          WRITE(ICOUT,66)I,X2(I)
23770   66     FORMAT('I,X2(I) = ',I8,G15.7)
23771          CALL DPWRST('XXX','BUG ')
23772   65   CONTINUE
23773        DO75I=1,NY
23774          WRITE(ICOUT,76)I,Y2(I)
23775   76     FORMAT('I,Y2(I) = ',I8,G15.7)
23776          CALL DPWRST('XXX','BUG ')
23777   75   CONTINUE
23778      ENDIF
23779C
23780C               ****************************************
23781C               **  STEP 11--                         **
23782C               **  SORT THE INPUT DATA ACCORDING     **
23783C               **  TO THE HORIZONTAL AXIS VARIABLE   **
23784C               ****************************************
23785C
23786      ISTEPN='11'
23787      IF(IBUGG3.EQ.'ON'.OR.ISUBRO.EQ.'NT2D')
23788     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
23789C
23790      DO1010,I=1,N
23791        XTEMP(I)=X(I)
23792 1010 CONTINUE
23793C
23794      CALL SORTC(X,Y,N,X,Y)
23795      CALL SORTC(XTEMP,Z,N,XTEMP,Z)
23796C
23797C               *******************************************************
23798C               **  STEP 12--                                        **
23799C               **  DETERMINE THE NUMBER OF DISTINCT X VALUES        **
23800C               *******************************************************
23801C
23802      ISTEPN='12'
23803      IF(IBUGG3.EQ.'ON'.OR.ISUBRO.EQ.'NT2D')
23804     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
23805C
23806      NDISTX=0
23807      DO1210I=1,N
23808        IF(NDISTX.EQ.0)GOTO1220
23809        DO1215I2=1,NDISTX
23810          IF(X(I).EQ.XDIST(I2))GOTO1210
23811 1215   CONTINUE
23812 1220   CONTINUE
23813        NDISTX=NDISTX+1
23814        XDIST(NDISTX)=X(I)
23815 1210 CONTINUE
23816C
23817      CALL SORT(XDIST,NDISTX,XDIST)
23818C
23819C               *******************************************************
23820C               **  STEP 13--                                        **
23821C               **  DETERMINE THE NUMBER OF DISTINCT Y VALUES        **
23822C               *******************************************************
23823C
23824      ISTEPN='13'
23825      IF(IBUGG3.EQ.'ON'.OR.ISUBRO.EQ.'NT2D')
23826     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
23827C
23828      NDISTY=0
23829      DO1310I=1,N
23830        IF(NDISTY.EQ.0)GOTO1320
23831        DO1315I2=1,NDISTY
23832          IF(Y(I).EQ.YDIST(I2))GOTO1310
23833 1315   CONTINUE
23834 1320   CONTINUE
23835        NDISTY=NDISTY+1
23836        YDIST(NDISTY)=Y(I)
23837 1310 CONTINUE
23838C
23839      CALL SORT(YDIST,NDISTY,YDIST)
23840C
23841C               *******************************************************
23842C               **  STEP 14--                                        **
23843C               **  SORT Y ASSOCIATED WITH EACH DISTINCT X VALUE     **
23844C               **  CHECK FOR REPLICATION OF POINTS                  **
23845C               **  IF ALL DISTINCT (THAT IS, NO REPLICATION),     **
23846C               **  (THAT IS, HAVE NO REPLICATION),                **
23847C               **  THEN COPY OVER Z VALUES.                       **
23848C               **  IF NOT ALL DISTINCT                            **
23849C               **  (THAT IS, HAVE SOME REPLICATION),              **
23850C               **  THEN COMPUTE A MEAN VALUE OVER THE REPLICATES  **
23851C               **  AND TREAT THAT AS THE COMMON VALUE.            **
23852C               *******************************************************
23853C
23854      ISTEPN='14'
23855      IF(IBUGG3.EQ.'ON'.OR.ISUBRO.EQ.'NT2D')
23856     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
23857C
23858      NUMZ=0
23859      ISTART=1
23860      DO1410I=1,NDISTX
23861        XT=XDIST(I)
23862        ICOUNT=0
23863        DO1420J=ISTART,N
23864        IF(X(J).EQ.XT)THEN
23865          IF(ICOUNT.EQ.0)IFRST=J
23866          ICOUNT=ICOUNT+1
23867          YTEMP(ICOUNT)=Y(J)
23868          ZTEMP(ICOUNT)=Z(J)
23869          ILAST=J
23870        ELSEIF(X(J).GT.XT)THEN
23871          GOTO1421
23872        ENDIF
23873 1420   CONTINUE
23874 1421   CONTINUE
23875C
23876        ISTART=ILAST+1
23877        CALL SORTC(YTEMP,ZTEMP,ICOUNT,YTEMP,ZTEMP)
23878        DO1471K=1,NDISTY
23879          TAG=YDIST(K)
23880          J=0
23881          DO1472II=1,ICOUNT
23882            IF(YTEMP(II).EQ.TAG)THEN
23883              J=J+1
23884              ZTEMP2(J)=ZTEMP(II)
23885            END IF
23886 1472     CONTINUE
23887          NI=J
23888          IF(NI.EQ.1)THEN
23889            NUMZ=NUMZ+1
23890            ZDIST(NUMZ)=ZTEMP2(1)
23891            XNEW(NUMZ)=XT
23892            YNEW(NUMZ)=TAG
23893          ELSE IF(NI.GT.1)THEN
23894            CALL MEAN(ZTEMP2,NI,IWRITE,ZMEAN,IBUGG3,IERROR)
23895            NUMZ=NUMZ+1
23896            ZDIST(NUMZ)=ZMEAN
23897            XNEW(NUMZ)=XT
23898            YNEW(NUMZ)=TAG
23899          ENDIF
23900 1471   CONTINUE
23901C
23902 1410 CONTINUE
23903C
23904C               *******************************************************
23905C               **  STEP 15--                                        **
23906C               **  DETERMINE THE NUMBER OF DISTINCT X VALUES        **
23907C               **  FOR THE INTERPOLATION POINTS                     **
23908C               *******************************************************
23909C
23910      ISTEPN='15'
23911      IF(IBUGG3.EQ.'ON'.OR.ISUBRO.EQ.'NT2D')
23912     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
23913C
23914      NDISTX=0
23915      DO1510I=1,NX
23916        IF(NDISTX.EQ.0)GOTO1520
23917        DO1515I2=1,NDISTX
23918          IF(X2(I).EQ.XDIST(I2))GOTO1510
23919 1515   CONTINUE
23920 1520   CONTINUE
23921        NDISTX=NDISTX+1
23922        XDIST(NDISTX)=X2(I)
23923 1510 CONTINUE
23924C
23925      CALL SORT(XDIST,NDISTX,XDIST)
23926C
23927C               *******************************************************
23928C               **  STEP 16--                                        **
23929C               **  DETERMINE THE NUMBER OF DISTINCT Y VALUES        **
23930C               **  FOR THE INTERPOLATION POINTS                     **
23931C               *******************************************************
23932C
23933      ISTEPN='16'
23934      IF(IBUGG3.EQ.'ON'.OR.ISUBRO.EQ.'NT2D')
23935     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
23936C
23937      NDISTY=0
23938      DO1610I=1,NY
23939        IF(NDISTY.EQ.0)GOTO1620
23940        DO1615I2=1,NDISTY
23941          IF(Y2(I).EQ.YDIST(I2))GOTO1610
23942 1615   CONTINUE
23943 1620   CONTINUE
23944        NDISTY=NDISTY+1
23945        YDIST(NDISTY)=Y2(I)
23946 1610 CONTINUE
23947C
23948      CALL SORT(YDIST,NDISTY,YDIST)
23949C
23950      N2=NDISTX*NDISTY
23951      IF(N2.LE.MAXOBV)GOTO1699
23952C
23953      WRITE(ICOUT,999)
23954      CALL DPWRST('XXX','BUG ')
23955      WRITE(ICOUT,1651)
23956 1651 FORMAT('***** ERROR IN INT2D--')
23957      CALL DPWRST('XXX','BUG ')
23958      WRITE(ICOUT,1652)
23959 1652 FORMAT('      THE NUMBER OF REQUESTED INTERPOLATION POINTS')
23960      CALL DPWRST('XXX','BUG ')
23961      WRITE(ICOUT,1653)MAXOBV
23962 1653 FORMAT('      WILL EXCEED THE MAXIMUM ALLOWABLE OF ',I8,'.')
23963      CALL DPWRST('XXX','BUG ')
23964      WRITE(ICOUT,1654)
23965 1654 FORMAT('      THE NUMBER OF DISTINCT X AND Y INTERPOLATION')
23966      CALL DPWRST('XXX','BUG ')
23967      WRITE(ICOUT,1655)NDISTX,NDISTY
23968 1655 FORMAT('      IS ',I8,' AND ',I8,' RESPECTIVELY.   *****')
23969      CALL DPWRST('XXX','BUG ')
23970      IERROR='YES'
23971      GOTO9000
23972C
23973 1699 CONTINUE
23974C
23975C               ********************************************
23976C               **  STEP 17--                             **
23977C               **  CHECK FOR USER PARAMETER NPPR         **
23978C               ********************************************
23979C
23980      NPPR=10
23981      ANPPR=10.0
23982      IHP='NPPR'
23983      IHP2='    '
23984      IHWUSE='P'
23985      MESSAG='NO'
23986      CALL CHECKN(IHP,IHP2,IHWUSE,
23987     1            IHNAME,IHNAM2,IUSE,IN,IVALUE,VALUE,NUMNAM,MAXNAM,
23988     1            ISUBN1,ISUBN2,MESSAG,IANS,IWIDTH,ILOCP,IERROR)
23989      IF(IERROR.EQ.'YES')GOTO1710
23990      ANPPR=VALUE(ILOCP)
23991 1710 CONTINUE
23992C
23993      NPPR=INT(ANPPR+0.5)
23994      IF(NPPR.GE.3)GOTO1719
23995      WRITE(ICOUT,999)
23996      CALL DPWRST('XXX','BUG ')
23997      WRITE(ICOUT,1651)
23998      CALL DPWRST('XXX','BUG ')
23999      WRITE(ICOUT,1712)
24000 1712 FORMAT('      THE AVERAGE NUMBER OF POINTS PER REGION MUST BE ',
24001     1       'GRETAER')
24002      CALL DPWRST('XXX','BUG ')
24003      WRITE(ICOUT,1715)
24004 1715 FORMAT('      THAN OR EQUAL TO 3;  SUCH WAS NOT THE CASE HERE.')
24005      CALL DPWRST('XXX','BUG ')
24006      WRITE(ICOUT,1716)NPPR
24007 1716 FORMAT('      THE CURRENT VALUE OF NPPR IS ',I8)
24008      CALL DPWRST('XXX','BUG ')
24009      WRITE(ICOUT,1717)
24010 1717 FORMAT('      A VALUE OF 10 WILL BE USED')
24011      CALL DPWRST('XXX','BUG ')
24012      NPPR=10
24013 1719 CONTINUE
24014C
24015C
24016C
24017C               ********************************************
24018C               **  STEP 18--                             **
24019C               **  COMPUTE INTERPOLATED VALUES           **
24020C               ********************************************
24021C
24022      NIWK=7*MAXOBV
24023      NWK=7*MAXOBV
24024      CALL INT2D2(ZDIST,YNEW,XNEW,N,YDIST,NY,XDIST,NX,Z2,N2,
24025     1            NPPR,NIWK,NWK,WORK,IWORK,
24026     1            IBUGG3,ISUBRO,IERROR)
24027C
24028C               *****************
24029C               **  STEP 90--  **
24030C               **  EXIT.      **
24031C               *****************
24032C
24033 9000 CONTINUE
24034      IF(IBUGG3.EQ.'ON'.OR.ISUBRO.EQ.'NT2D')THEN
24035        WRITE(ICOUT,999)
24036        CALL DPWRST('XXX','BUG ')
24037        WRITE(ICOUT,9011)
24038 9011   FORMAT('***** AT THE END       OF INT2D--')
24039        CALL DPWRST('XXX','BUG ')
24040        WRITE(ICOUT,9012)N,N2
24041 9012   FORMAT('N,N2 = ',2I8)
24042        CALL DPWRST('XXX','BUG ')
24043        DO9042I=1,N2
24044          WRITE(ICOUT,9043)I,X2(I),Y2(I),Z2(I)
24045 9043     FORMAT('I,X2(I),Y2(I),Z2(I) = ',I8,3G15.7)
24046          CALL DPWRST('XXX','BUG ')
24047 9042   CONTINUE
24048      ENDIF
24049C
24050      RETURN
24051      END
24052      SUBROUTINE INT2D2(Z,Y,X,N,Y2,NY,X2,NX,Z2,N2,
24053     1NPPR,NIWK,NWK,WORK,IWORK,
24054     1IBUGG3,ISUBRO,IERROR)
24055C
24056C     PURPOSE--COMPUTE BI-VARIATE INTERPOLATION OF A VARIABLE
24057C              (GENERATE INTERPOLATED POINTS).
24058C              THIS ROUTINE STARTS FROM SCATTERED DATA AND INTERPOLATES
24059C              POINTS ON A GRID.  NOTE THAT X2 AND Y2 DEFINE THE GRID
24060C              TO INTERPOLATE OVER.
24061C              THIS ROUTINE USES THE LOTPS ROUTINE WRITTEN BY RICHARD
24062C              FRANKE OF THE NAVAL POSTGRADUATE SCHOOL.
24063C     INPUT  ARGUMENTS--Z      = SINGLE PRECISION VARIABLE
24064C                                CONTAINING THE ORIGINAL
24065C                                Z AXIS DATA POINTS.
24066C                     --Y      = SINGLE PRECISION VARIABLE
24067C                                CONTAINING THE ORIGINAL
24068C                                VERTICAL AXIS DATA POINTS.
24069C                     --X      = SINGLE PRECISION VARIABLE
24070C                                CONTAINING THE ORIGINAL
24071C                                HORIZONTAL AXIS DATA POINTS.
24072C                     --Y2     = SINGLE PRECISION VARIABLE
24073C                                CONTAINING THE DESIRED
24074C                                VERTICAL AXIS INTERPOLATION
24075C                     --X2     = SINGLE PRECISION VARIABLE
24076C                                CONTAINING THE DESIRED
24077C                                HORIZONTAL AXIS INTERPOLATION
24078C                                POINTS.
24079C     OUTPUT ARGUMENTS--Z2     = SINGLE PRECISION VARIABLE
24080C                                CONTAINING THE COMPUTED
24081C                                VERTICAL AXIS INTERPOLATION
24082C                                POINTS.
24083C     NOTE--IT IS PROBABLY NOT PERMISSIBLE TO HAVE THE OUTPUT VECTOR
24084C           Z2(.) BEING IDENTICAL TO THE INPUT VECTOR Z(.)
24085C     NOTE--THE X AND Y POINTS ARE ASSUMED TO LIE ON A RECTANGULAR GRID
24086C     WRITTEN BY--JAMES J. FILLIBEN
24087C                 STATISTICAL ENGINEERING DIVISION
24088C                 INFORMATION TECHNOLOGY LABORATORY
24089C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
24090C                 GAITHERSBURG, MD 20899-8980
24091C                 PHONE--301-975-2855
24092C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
24093C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
24094C     LANGUAGE--ANSI FORTRAN (1977)
24095C     VERSION NUMBER--94/5
24096C     ORIGINAL VERSION--MAY       1994.
24097C
24098C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
24099C
24100      CHARACTER*4 IBUGG3
24101      CHARACTER*4 ISUBRO
24102      CHARACTER*4 IERROR
24103C
24104      CHARACTER*4 ISUBN1
24105      CHARACTER*4 ISUBN2
24106C
24107C---------------------------------------------------------------------
24108C
24109C
24110      DIMENSION Z(*)
24111      DIMENSION Y(*)
24112      DIMENSION X(*)
24113      DIMENSION Z2(*)
24114      DIMENSION Y2(*)
24115      DIMENSION X2(*)
24116      DIMENSION WORK(*)
24117      DIMENSION IWORK(*)
24118C
24119C-----COMMON VARIABLES (GENERAL)--------------------------------------
24120C
24121      INCLUDE 'DPCOP2.INC'
24122C
24123C-----START POINT-----------------------------------------------------
24124C
24125      ISUBN1='INT2'
24126      ISUBN2='D2  '
24127      IERROR='NO'
24128C
24129      ISTART=-99
24130C
24131      DO10I=1,N2
24132      Z2(I)=0.0
24133 10   CONTINUE
24134C
24135      IF(IBUGG3.EQ.'OFF'.AND.ISUBRO.NE.'T2D2')GOTO90
24136      WRITE(ICOUT,999)
24137  999 FORMAT(1X)
24138      CALL DPWRST('XXX','BUG ')
24139      WRITE(ICOUT,51)
24140   51 FORMAT('***** AT THE BEGINNING OF INT2D2--')
24141      CALL DPWRST('XXX','BUG ')
24142      WRITE(ICOUT,52)NX,NY
24143   52 FORMAT('NX, NY = ',2I8)
24144      CALL DPWRST('XXX','BUG ')
24145      DO54I=1,N
24146      WRITE(ICOUT,53)I,X(I),Y(I),Z(I)
24147      CALL DPWRST('XXX','BUG ')
24148 53   FORMAT('I,X(I),Y(I),Z(I) = ',I8,3E15.7)
24149      CALL DPWRST('XXX','BUG ')
24150 54   CONTINUE
24151      WRITE(ICOUT,62)N2
24152   62 FORMAT('N2 = ',I8)
24153      CALL DPWRST('XXX','BUG ')
24154   90 CONTINUE
24155C
24156C               ****************************************
24157C               **  STEP 31--
24158C               **  COMPUTE INTERPOLATION VALUES
24159C               ****************************************
24160C
24161      IMODE=1
24162      CALL LOTPS(IMODE,NPPR,N,X,Y,Z,NX,X2,NY,Y2,IWORK,NIWK,NIWKU,
24163     1WORK,NWK,NWKU,Z2,KERR)
24164      IF(KERR.GT.0)THEN
24165        IERROR='YES'
24166        GOTO9000
24167      ENDIF
24168C
24169C               ****************************************
24170C               **  STEP 41--
24171C               **  IF CALLED FOR,
24172C               **  WRITE OUT INTERPOLATION VALUES
24173C               ****************************************
24174C
24175      IF(IBUGG3.EQ.'OFF'.AND.ISUBRO.NE.'T2D2')GOTO4190
24176      J1=0
24177      DO4100I=1,NX
24178      DO4110J=1,NY
24179      J1=J1+1
24180      WRITE(ICOUT,4112)X2(I),Y2(J),Z2(J1)
24181      CALL DPWRST('XXX','BUG ')
24182 4112 FORMAT('I,J,X2(I),Y2(J),Z2(I,J) = ',2I8,3E15.7)
24183 4110 CONTINUE
24184 4100 CONTINUE
24185 4190 CONTINUE
24186C
24187C               *****************
24188C               **  STEP 90--  **
24189C               **  EXIT.      **
24190C               *****************
24191C
24192 9000 CONTINUE
24193      IF(IBUGG3.EQ.'OFF'.AND.ISUBRO.NE.'T2D2')GOTO9090
24194      WRITE(ICOUT,999)
24195      CALL DPWRST('XXX','BUG ')
24196      WRITE(ICOUT,9011)
24197 9011 FORMAT('***** AT THE END       OF INT2D2--')
24198      CALL DPWRST('XXX','BUG ')
24199 9090 CONTINUE
24200C
24201      RETURN
24202      END
24203      INTEGER FUNCTION ISAMAX(N,SX,INCX)
24204C***BEGIN PROLOGUE  ISAMAX
24205C***DATE WRITTEN   791001   (YYMMDD)
24206C***REVISION DATE  820801   (YYMMDD)
24207C***CATEGORY NO.  D1A2
24208C***KEYWORDS  BLAS,LINEAR ALGEBRA,MAXIMUM COMPONENT,VECTOR
24209C***AUTHOR  LAWSON, C. L., (JPL)
24210C           HANSON, R. J., (SNLA)
24211C           KINCAID, D. R., (U. OF TEXAS)
24212C           KROGH, F. T., (JPL)
24213C***PURPOSE  Find largest component of s.p. vector
24214C***DESCRIPTION
24215C
24216C                B L A S  Subprogram
24217C    Description of Parameters
24218C
24219C     --Input--
24220C        N  number of elements in input vector(s)
24221C       SX  single precision vector with N elements
24222C     INCX  storage spacing between elements of SX
24223C
24224C     --Output--
24225C   ISAMAX  smallest index (zero if N .LE. 0)
24226C
24227C     Find smallest index of maximum magnitude of single precision SX.
24228C     ISAMAX =  first I, I = 1 to N, to minimize  ABS(SX(1-INCX+I*INCX)
24229C***REFERENCES  LAWSON C.L., HANSON R.J., KINCAID D.R., KROGH F.T.,
24230C                 *BASIC LINEAR ALGEBRA SUBPROGRAMS FOR FORTRAN USAGE*,
24231C                 ALGORITHM NO. 539, TRANSACTIONS ON MATHEMATICAL
24232C                 SOFTWARE, VOLUME 5, NUMBER 3, SEPTEMBER 1979, 308-323
24233C***ROUTINES CALLED  (NONE)
24234C***END PROLOGUE  ISAMAX
24235C
24236      REAL SX(*),SMAX,XMAG
24237C***FIRST EXECUTABLE STATEMENT  ISAMAX
24238      ISAMAX = 0
24239      IF(N.LE.0) RETURN
24240      ISAMAX = 1
24241      IF(N.LE.1)RETURN
24242      IF(INCX.EQ.1)GOTO 20
24243C
24244C        CODE FOR INCREMENTS NOT EQUAL TO 1.
24245C
24246      SMAX = ABS(SX(1))
24247      NS = N*INCX
24248      II = 1
24249          DO 10 I=1,NS,INCX
24250          XMAG = ABS(SX(I))
24251          IF(XMAG.LE.SMAX) GO TO 5
24252          ISAMAX = II
24253          SMAX = XMAG
24254    5     II = II + 1
24255   10     CONTINUE
24256      RETURN
24257C
24258C        CODE FOR INCREMENTS EQUAL TO 1.
24259C
24260   20 SMAX = ABS(SX(1))
24261      DO 30 I = 2,N
24262         XMAG = ABS(SX(I))
24263         IF(XMAG.LE.SMAX) GO TO 30
24264         ISAMAX = I
24265         SMAX = XMAG
24266   30 CONTINUE
24267      RETURN
24268      END
24269      subroutine isort (n, ix)
24270c-----------------------------------------------------------------------
24271c  Name:       ISORT  (Used by Fisher Exact Test)
24272c
24273c  Purpose:    Shell sort for an integer vector.
24274c
24275c  Usage:      CALL ISORT (N, IX)
24276c
24277c  Arguments:
24278c     N      - Lenth of vector IX.  (Input)
24279c     IX     - Vector to be sorted.  (Input/output)
24280c-----------------------------------------------------------------------
24281c                                  SPECIFICATIONS FOR ARGUMENTS
24282      integer    n, ix(*)
24283c                                  SPECIFICATIONS FOR LOCAL VARIABLES
24284      integer    i, ikey, il(10), it, iu(10), j, kl, ku, m
24285c                                  SPECIFICATIONS FOR SUBROUTINES
24286CCCCC external   prterr
24287c                                  Sort IX
24288      INCLUDE 'DPCOP2.INC'
24289C
24290      m = 1
24291      i = 1
24292      j = n
24293   10 if (i .ge. j) go to 40
24294      kl   = i
24295      ku   = j
24296      ikey = i
24297      j    = j + 1
24298c                                  Find element in first half
24299   20 i = i + 1
24300      if (i .lt. j) then
24301         if (ix(ikey) .gt. ix(i)) go to 20
24302      end if
24303c                                  Find element in second half
24304   30 j = j - 1
24305      if (ix(j) .gt. ix(ikey)) go to 30
24306c                                  Interchange
24307      if (i .lt. j) then
24308         it    = ix(i)
24309         ix(i) = ix(j)
24310         ix(j) = it
24311         go to 20
24312      end if
24313      it       = ix(ikey)
24314      ix(ikey) = ix(j)
24315      ix(j)    = it
24316c                                  Save upper and lower subscripts of
24317c                                  the array yet to be sorted
24318      if (m .lt. 11) then
24319         if (j-kl .lt. ku-j) then
24320            il(m) = j + 1
24321            iu(m) = ku
24322            i     = kl
24323            j     = j - 1
24324         else
24325            il(m) = kl
24326            iu(m) = j - 1
24327            i     = j + 1
24328            j     = ku
24329         end if
24330         m = m + 1
24331         go to 10
24332      else
24333CCCCC    call prterr (20, 'This should never occur.')
24334      WRITE(ICOUT,999)
24335  999 FORMAT(1X)
24336      CALL DPWRST('XXX','BUG ')
24337      WRITE(ICOUT,9011)
24338 9011 FORMAT('***** ERROR FROM ISORT--')
24339      CALL DPWRST('XXX','BUG ')
24340      WRITE(ICOUT,9013)
24341 9013 FORMAT('      This should never occur.')
24342      CALL DPWRST('XXX','BUG ')
24343      end if
24344c                                  Use another segment
24345   40 m = m - 1
24346      if (m .eq. 0) go to 9000
24347      i = il(m)
24348      j = iu(m)
24349      go to 10
24350c
24351 9000 return
24352      end
24353      SUBROUTINE IWECDF(X,GAMMA,CDF)
24354C
24355C     PURPOSE--THIS SUBROUTINE COMPUTES THE CUMULATIVE DISTRIBUTION
24356C              FUNCTION VALUE FOR THE INVERTED WEIBULL
24357C              DISTRIBUTION WITH SINGLE PRECISION
24358C              TAIL LENGTH PARAMETER = GAMMA.
24359C              THE INVERTED WEIBULL DISTRIBUTION USED
24360C              HEREIN IS DEFINED FOR ALL POSITIVE X,
24361C              AND HAS THE CUMULATIVE DISTRIBUTION  FUNCTION
24362C              F(X) = EXP(-(X**(-GAMMA))).
24363C     INPUT  ARGUMENTS--X      = THE SINGLE PRECISION VALUE AT
24364C                                WHICH THE CUMULATIVE DISTRIBUTION
24365C                                FUNCTION IS TO BE EVALUATED.
24366C                                X SHOULD BE NON-NEGATIVE.
24367C                     --GAMMA  = THE SHAPE PARAMETER
24368C                                GAMMA SHOULD BE POSITIVE.
24369C     OUTPUT ARGUMENTS--CDF    = THE SINGLE PRECISION CUMULATIVE
24370C                                DISTRIBUTION FUNCTION VALUE.
24371C     OUTPUT--THE SINGLE PRECISION CUMULATIVE DISTRIBUTION
24372C             FUNCTION VALUE CDF FOR THE WEIBULL DISTRIBUTION
24373C             WITH TAIL LENGTH PARAMETER = GAMMA.
24374C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
24375C     RESTRICTIONS--X SHOULD BE NON-NEGATIVE.
24376C                 --GAMMA SHOULD BE POSITIVE.
24377C     OTHER DATAPAC   SUBROUTINES NEEDED--NONE.
24378C     FORTRAN LIBRARY SUBROUTINES NEEDED--EXP.
24379C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
24380C     LANGUAGE--ANSI FORTRAN (1977)
24381C     REFERENCES--XX
24382C               --JOHNSON AND KOTZ, CONTINUOUS UNIVARIATE
24383C                 DISTRIBUTIONS--1, XX.
24384C     WRITTEN BY--JAMES J. FILLIBEN
24385C                 STATISTICAL ENGINEERING DIVISION
24386C                 INFORMATION TECHNOLOGY LABORATORY
24387C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
24388C                 GAITHERSBURG, MD 20899-8980
24389C                 PHONE--301-975-2855
24390C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
24391C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
24392C     LANGUAGE--ANSI FORTRAN (1966)
24393C               EXCEPTION--HOLLERITH STRINGS IN FORMAT STATEMENTS
24394C                          DENOTED BY QUOTES RATHER THAN NH.
24395C     VERSION NUMBER--2001.9
24396C     ORIGINAL VERSION--SEPTEMBER 2001.
24397C
24398C---------------------------------------------------------------------
24399C
24400      DOUBLE PRECISION DX
24401      DOUBLE PRECISION DGAMMA
24402      DOUBLE PRECISION DCDF
24403C
24404      INCLUDE 'DPCOP2.INC'
24405C
24406C-----START POINT-----------------------------------------------------
24407C
24408C     CHECK THE INPUT ARGUMENTS FOR ERRORS
24409C
24410      CDF=0.0
24411C
24412      IF(GAMMA.LE.0)THEN
24413        WRITE(ICOUT,15)
24414   15   FORMAT('***** FATAL ERROR--THE SECOND INPUT ARGUMENT TO THE ',
24415     1         'IWECDF SUBROUTINE IS NON-POSITIVE *****')
24416        CALL DPWRST('XXX','BUG ')
24417        WRITE(ICOUT,46)GAMMA
24418   46   FORMAT('***** THE VALUE OF THE ARGUMENT IS ',E15.8,' *****')
24419        CALL DPWRST('XXX','BUG ')
24420        PDF=0.0
24421        GOTO9000
24422      ENDIF
24423C
24424      IF(X.LE.0.0)THEN
24425        CDF=0.0
24426      ELSE
24427        DGAMMA=DBLE(GAMMA)
24428        DX=DBLE(X)
24429        DCDF=DEXP(-(DX**(-DGAMMA)))
24430        CDF=REAL(DCDF)
24431      ENDIF
24432C
24433 9000 CONTINUE
24434C
24435      RETURN
24436      END
24437      SUBROUTINE IWEPDF(X,GAMMA,PDF)
24438C
24439C     PURPOSE--THIS SUBROUTINE COMPUTES THE PROBABILITY DENSITY
24440C              FUNCTION VALUE FOR THE INVERTED WEIBULL
24441C              DISTRIBUTION WITH SINGLE PRECISION
24442C              TAIL LENGTH PARAMETER = GAMMA.
24443C              THE INVERTED WEIBULL DISTRIBUTION USED
24444C              HEREIN IS DEFINED FOR ALL POSITIVE X,
24445C              AND HAS THE PROBABILITY DENSITY FUNCTION
24446C              F(X) = GAMMA*(X**(-GAMMA-1))*EXP(-(X**(-GAMMA))).
24447C     INPUT  ARGUMENTS--X      = THE SINGLE PRECISION VALUE AT
24448C                                WHICH THE PROBABILITY DENSITY
24449C                                FUNCTION IS TO BE EVALUATED.
24450C                     --GAMMA  = THE SHAPE PARAMETER
24451C                                GAMMA SHOULD BE POSITIVE.
24452C     OUTPUT ARGUMENTS--PDF    = THE SINGLE PRECISION PROBABILITY
24453C                                DENSITY FUNCTION VALUE.
24454C     OUTPUT--THE SINGLE PRECISION PROBABILITY DENSITY
24455C             FUNCTION VALUE PDF FOR THE WEIBULL DISTRIBUTION
24456C             WITH TAIL LENGHT PARAMETER = GAMMA.
24457C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
24458C     RESTRICTIONS--GAMMA SHOULD BE POSITIVE.
24459C     OTHER DATAPAC   SUBROUTINES NEEDED--NONE.
24460C     FORTRAN LIBRARY SUBROUTINES NEEDED--EXP.
24461C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
24462C     LANGUAGE--ANSI FORTRAN (1977)
24463C     REFERENCES--XX
24464C               --JOHNSON AND KOTZ, CONTINUOUS UNIVARIATE
24465C                 DISTRIBUTIONS--1, XX.
24466C     WRITTEN BY--JAMES J. FILLIBEN
24467C                 STATISTICAL ENGINEERING DIVISION
24468C                 INFORMATION TECHNOLOGY LABORATORY
24469C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
24470C                 GAITHERSBURG, MD 20899-8980
24471C                 PHONE--301-975-2855
24472C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
24473C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
24474C     LANGUAGE--ANSI FORTRAN (1966)
24475C               EXCEPTION--HOLLERITH STRINGS IN FORMAT STATEMENTS
24476C                          DENOTED BY QUOTES RATHER THAN NH.
24477C     VERSION NUMBER--2001.9
24478C     ORIGINAL VERSION--SEPTEMBER 2001.
24479C
24480      DOUBLE PRECISION DX
24481      DOUBLE PRECISION DGAMMA
24482      DOUBLE PRECISION DPDF
24483C
24484C-----COMMON----------------------------------------------------------
24485C
24486      INCLUDE 'DPCOP2.INC'
24487C
24488C-----START POINT-----------------------------------------------------
24489C
24490C     CHECK THE INPUT ARGUMENTS FOR ERRORS
24491C
24492      IF(GAMMA.LE.0)THEN
24493        WRITE(ICOUT,15)
24494   15   FORMAT('***** FATAL ERROR--THE SECOND INPUT ARGUMENT TO THE ',
24495     1         'IWEPDF SUBROUTINE IS NON-POSITIVE *****')
24496        CALL DPWRST('XXX','BUG ')
24497        WRITE(ICOUT,46)GAMMA
24498   46   FORMAT('***** THE VALUE OF THE ARGUMENT IS ',E15.8,' *****')
24499        CALL DPWRST('XXX','BUG ')
24500        PDF=0.0
24501        GOTO9000
24502      ENDIF
24503C
24504      IF(X.LE.0.0)THEN
24505        PDF=0.0
24506      ELSE
24507        DGAMMA=DBLE(GAMMA)
24508        DX=DBLE(X)
24509        DPDF=DGAMMA*(DX**(-DGAMMA-1.0D0))*DEXP(-(DX**(-DGAMMA)))
24510        PDF=REAL(DPDF)
24511      ENDIF
24512C
24513 9000 CONTINUE
24514      RETURN
24515      END
24516      SUBROUTINE IWEPPF(P,GAMMA,PPF)
24517C
24518C     PURPOSE--THIS SUBROUTINE COMPUTES THE PERCENT POINT
24519C              FUNCTION VALUE FOR THE INVERTED WEIBULL
24520C              DISTRIBUTION WITH SINGLE PRECISION
24521C              TAIL LENGTH PARAMETER = GAMMA.
24522C              THE INVERTED WEIBULL DISTRIBUTION USED
24523C              HEREIN IS DEFINED FOR ALL POSITIVE X,
24524C              AND HAS THE PERCENT POINT FUNCTION
24525C              G(P) = -[LOG(P)]**(-1/GAMMA)
24526C              NOTE THAT THE PERCENT POINT FUNCTION OF A DISTRIBUTION
24527C              IS IDENTICALLY THE SAME AS THE INVERSE CUMULATIVE
24528C              DISTRIBUTION FUNCTION OF THE DISTRIBUTION.
24529C     INPUT  ARGUMENTS--P      = THE SINGLE PRECISION VALUE
24530C                                (BETWEEN 0.0 (INCLUSIVELY)
24531C                                AND 1.0 (EXCLUSIVELY))
24532C                                AT WHICH THE PERCENT POINT
24533C                                FUNCTION IS TO BE EVALUATED.
24534C                     --GAMMA  = THE SINGLE PRECISION VALUE
24535C                                OF THE TAIL LENGTH PARAMETER.
24536C                                GAMMA SHOULD BE POSITIVE.
24537C     OUTPUT ARGUMENTS--PPF    = THE SINGLE PRECISION PERCENT
24538C                                POINT FUNCTION VALUE.
24539C     OUTPUT--THE SINGLE PRECISION PERCENT POINT FUNCTION .
24540C             VALUE PPF FOR THE WEIBULL DISTRIBUTION
24541C             WITH TAIL LENGTH PARAMETER VALUE = GAMMA.
24542C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
24543C     RESTRICTIONS--GAMMA SHOULD BE POSITIVE.
24544C                 --P SHOULD BE BETWEEN 0.0 (INCLUSIVELY)
24545C                   AND 1.0 (EXCLUSIVELY).
24546C     OTHER DATAPAC   SUBROUTINES NEEDED--NONE.
24547C     FORTRAN LIBRARY SUBROUTINES NEEDED--LOG.
24548C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
24549C     LANGUAGE--ANSI FORTRAN (1977)
24550C     REFERENCES--XX
24551C               --JOHNSON AND KOTZ, CONTINUOUS UNIVARIATE
24552C                 DISTRIBUTIONS--1, XX.
24553C     WRITTEN BY--JAMES J. FILLIBEN
24554C                 STATISTICAL ENGINEERING DIVISION
24555C                 INFORMATION TECHNOLOGY LABORATORY
24556C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
24557C                 GAITHERSBURG, MD 20899-8980
24558C                 PHONE--301-975-2855
24559C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
24560C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
24561C     LANGUAGE--ANSI FORTRAN (1966)
24562C               EXCEPTION--HOLLERITH STRINGS IN FORMAT STATEMENTS
24563C                          DENOTED BY QUOTES RATHER THAN NH.
24564C     VERSION NUMBER--2001.9
24565C     ORIGINAL VERSION--SEPTEMBER 2001.
24566C
24567C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
24568C
24569      DOUBLE PRECISION DP
24570      DOUBLE PRECISION DGAMMA
24571      DOUBLE PRECISION DPPF
24572C
24573C-----COMMON----------------------------------------------------------
24574C
24575      INCLUDE 'DPCOP2.INC'
24576C
24577C-----START POINT-----------------------------------------------------
24578C
24579C     CHECK THE INPUT ARGUMENTS FOR ERRORS
24580C
24581      PPF=0.0
24582C
24583      IF(P.LT.0.0.OR.P.GE.1.0)THEN
24584        WRITE(ICOUT,1)
24585        CALL DPWRST('XXX','BUG ')
24586        WRITE(ICOUT,46)P
24587        CALL DPWRST('XXX','BUG ')
24588        PPF=0.0
24589        GOTO9000
24590      ENDIF
24591      IF(GAMMA.LE.0.0)THEN
24592        WRITE(ICOUT,15)
24593        CALL DPWRST('XXX','BUG ')
24594        WRITE(ICOUT,46)GAMMA
24595        CALL DPWRST('XXX','BUG ')
24596        PPF=0.0
24597        GOTO9000
24598      ENDIF
24599    1 FORMAT('***** FATAL ERROR--THE FIRST INPUT ARGUMENT TO THE ',
24600     1'IWEPPF SUBROUTINE IS OUTSIDE THE ALLOWABLE (0,1) INTERVAL')
24601   15 FORMAT('***** FATAL ERROR--THE SECOND INPUT ARGUMENT TO THE ',
24602     1'IWEPPF SUBROUTINE IS NON-POSITIVE *****')
24603   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',E15.8,' *****')
24604C
24605      DGAMMA=DBLE(GAMMA)
24606      DP=DBLE(P)
24607      DTERM1=-DLOG(DP)
24608      DTERM2=-1.0D0/DGAMMA
24609      DPPF=DTERM1**DTERM2
24610      PPF=REAL(DPPF)
24611C
24612 9000 CONTINUE
24613      RETURN
24614      END
24615      SUBROUTINE IWERAN(N,GAMMA,ISEED,X)
24616C
24617C     PURPOSE--THIS SUBROUTINE GENERATES A RANDOM SAMPLE OF SIZE N
24618C              FROM THE INVERTED WEIBULL DISTRIBUTION
24619C              WITH TAIL LENGTH PARAMETER VALUE = GAMMA.
24620C              THE PROTOTYPE WEIBULL DISTRIBUTION USED
24621C              HEREIN IS DEFINED FOR ALL POSITIVE X,
24622C              AND HAS THE PROBABILITY DENSITY FUNCTION
24623C              F(X) = GAMMA * (X**(-GAMMA-1)) * EXP(-(X**-GAMMA)).
24624C     INPUT  ARGUMENTS--N      = THE DESIRED INTEGER NUMBER
24625C                                OF RANDOM NUMBERS TO BE
24626C                                GENERATED.
24627C                     --GAMMA  = THE SINGLE PRECISION VALUE OF THE
24628C                                TAIL LENGTH PARAMETER.
24629C                                GAMMA SHOULD BE POSITIVE.
24630C     OUTPUT ARGUMENTS--X      = A SINGLE PRECISION VECTOR
24631C                                (OF DIMENSION AT LEAST N)
24632C                                INTO WHICH THE GENERATED
24633C                                RANDOM SAMPLE WILL BE PLACED.
24634C     OUTPUT--A RANDOM SAMPLE OF SIZE N
24635C             FROM THE INVERTED WEIBULL DISTRIBUTION
24636C             WITH TAIL LENGTH PARAMETER VALUE = GAMMA.
24637C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
24638C     RESTRICTIONS--THERE IS NO RESTRICTION ON THE MAXIMUM VALUE
24639C                   OF N FOR THIS SUBROUTINE.
24640C                 --GAMMA SHOULD BE POSITIVE.
24641C     OTHER DATAPAC   SUBROUTINES NEEDED--UNIRAN.
24642C     FORTRAN LIBRARY SUBROUTINES NEEDED--LOG.
24643C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
24644C     LANGUAGE--ANSI FORTRAN (1977)
24645C     REFERENCES--XX
24646C               --JOHNSON AND KOTZ, CONTINUOUS UNIVARIATE
24647C                 DISTRIBUTIONS--1, 2ND. ED., 1994.
24648C     WRITTEN BY--JAMES J. FILLIBEN
24649C                 STATISTICAL ENGINEERING DIVISION
24650C                 INFORMATION TECHNOLOGY LABORATORY
24651C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
24652C                 GAITHERSBURG, MD 20899-8980
24653C                 PHONE--301-975-2855
24654C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
24655C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
24656C     LANGUAGE--ANSI FORTRAN (1966)
24657C               EXCEPTION--HOLLERITH STRINGS IN FORMAT STATEMENTS
24658C                          DENOTED BY QUOTES RATHER THAN NH.
24659C     VERSION NUMBER--2001.9
24660C     ORIGINAL VERSION--SEPTEMBER 2001.
24661C
24662C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
24663C
24664C---------------------------------------------------------------------
24665C
24666      DIMENSION X(*)
24667C
24668C-----COMMON----------------------------------------------------------
24669C
24670      INCLUDE 'DPCOP2.INC'
24671C
24672C-----START POINT-----------------------------------------------------
24673C
24674C     CHECK THE INPUT ARGUMENTS FOR ERRORS
24675C
24676      IF(N.LT.1)THEN
24677        WRITE(ICOUT, 5)
24678        CALL DPWRST('XXX','BUG ')
24679        WRITE(ICOUT,47)N
24680        CALL DPWRST('XXX','BUG ')
24681        GOTO9000
24682      ENDIF
24683      IF(GAMMA.LE.0.0)THEN
24684        WRITE(ICOUT,15)
24685        CALL DPWRST('XXX','BUG ')
24686        WRITE(ICOUT,46)GAMMA
24687        CALL DPWRST('XXX','BUG ')
24688        GOTO9000
24689      ENDIF
24690    5 FORMAT('***** FATAL ERROR--THE 1ST INPUT ARGUMENT TO THE ',
24691     1'IWERAN SUBROUTINE IS NON-POSITIVE *****')
24692   15 FORMAT('***** FATAL ERROR--THE 2ND INPUT ARGUMENT TO THE ',
24693     1'IWERAN SUBROUTINE IS NON-POSITIVE *****')
24694   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',E15.8,' *****')
24695   47 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',I8,' *****')
24696C
24697C     GENERATE N UNIFORM (0,1) RANDOM NUMBERS;
24698C
24699      CALL UNIRAN(N,ISEED,X)
24700C
24701C     GENERATE N INVERTED WEIBULL DISTRIBUTION RANDOM NUMBERS
24702C     USING THE PERCENT POINT FUNCTION TRANSFORMATION METHOD.
24703C
24704      DO100I=1,N
24705        CALL IWEPPF(X(I),GAMMA,XTEMP)
24706        X(I)=XTEMP
24707  100 CONTINUE
24708C
24709 9000 CONTINUE
24710      RETURN
24711      END
24712      integer function iwork (iwkmax, iwkpt, number, itype)
24713c-----------------------------------------------------------------------
24714c  Name:       IWORK
24715c
24716c  Purpose:    Routine for allocating workspace.
24717c
24718c  Usage:      IWORK (IWKMAX, IWKPT, NUMBER, ITYPE)
24719c
24720c  Arguments:
24721c     IWKMAX - Maximum length of workspace.  (Input)
24722c     IWKPT  - Amount of workspace currently allocated.  (Input/output)
24723c     NUMBER - Number of elements of workspace desired.  (Input)
24724c     ITYPE  - Worspace type.  (Input)
24725c              ITYPE  TYPE
24726c                2    Integer
24727c                3    Real
24728c                4    Double Precision
24729c     IWORK  - Index in RWRK, DWRK, or IWRK of the beginning of the
24730c              first element in the workspace array.  (Output)
24731c-----------------------------------------------------------------------
24732c                                  SPECIFICATIONS FOR ARGUMENTS
24733      integer    iwkmax, iwkpt, number, itype
24734c                                  SPECIFICATIONS FOR INTRINSICS
24735      intrinsic  mod
24736ccccc integer    mod
24737c                                  SPECIFICATIONS FOR SUBROUTINES
24738CCCCC external   prterr
24739c
24740      INCLUDE 'DPCOP2.INC'
24741C
24742      iwork = iwkpt
24743      if (itype.eq.2 .or. itype.eq.3) then
24744         iwkpt = iwkpt + number
24745      else
24746         if (mod(iwork,2) .ne. 0) iwork = iwork + 1
24747         iwkpt = iwkpt + 2*number
24748         iwork = iwork/2
24749      end if
24750      if (iwkpt .gt. iwkmax+1) then
24751CCCCC    call prterr (40, 'Out of workspace.')
24752      WRITE(ICOUT,999)
24753  999 FORMAT(1X)
24754      CALL DPWRST('XXX','BUG ')
24755      WRITE(ICOUT,9011)
24756 9011 FORMAT('***** ERROR FROM IWORK--')
24757      CALL DPWRST('XXX','BUG ')
24758      WRITE(ICOUT,9013)
24759 9013 FORMAT('      Out of workspace.')
24760      CALL DPWRST('XXX','BUG ')
24761      end if
24762      return
24763      end
24764      DOUBLE PRECISION FUNCTION J1FUN(DX)
24765C
24766C     PURPOSE--THIS FUNCTION COMPUTES THE FOLLOWING FUNCTION:
24767C                 J(X,A) = INTEGRAL[0 to X][T**(A-1)*LOG(T)*EXP(-T)]dt
24768C              THIS FUNCTION IS USED IN COMPUTING MAXIMUM LIKELIHOOD
24769C              ESTIMATES FOR THE GAMMA DISTRIBUTION FOR MULTIPLY
24770C              CENSORED DATA.
24771C     INPUT  ARGUMENTS--DX     = THE DOUBLE PRECISION VALUE AT
24772C                                WHICH THE J(X,A) FUNCTION IS TO BE
24773C                                EVALUATED.
24774C     OUTPUT ARGUMENTS--J1FUN  = THE DOUBLE PRECISION FUNCTION VALUE.
24775C     OUTPUT--THE DOUBLE PRECISION VALUE FOR THE J(X,A) FUNCTION.
24776C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
24777C     RESTRICTIONS--NONE.
24778C     OTHER DATAPAC   SUBROUTINES NEEDED--NONE.
24779C     FORTRAN LIBRARY SUBROUTINES NEEDED--DLOG.
24780C     MODE OF INTERNAL OPERATIONS--DOUBLE PRECISION.
24781C     LANGUAGE--ANSI FORTRAN (1977)
24782C     REFERENCE--KARL BURY, "STATISTICAL DISTRIBUTIONS IN
24783C                ENGINEERING", CAMBRIDGE UNIVERSITY PRESS,
24784C                1999, CHAPTER 13.
24785C     WRITTEN BY--JAMES J. FILLIBEN
24786C                 STATISTICAL ENGINEERING DIVISION
24787C                 INFORMATION TECHNOLOGY LABORATORY
24788C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
24789C                 GAITHERSBURG, MD 20899-8980
24790C                 PHONE--301-975-2855
24791C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
24792C           OF THE NATION INSTITUTE OF STANDARDS AND TECHNOLOGY.
24793C     LANGUAGE--ANSI FORTRAN (1977)
24794C     VERSION NUMBER--2004.11
24795C     ORIGINAL VERSION--NOVEMBER  2004.
24796C
24797C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
24798C
24799C---------------------------------------------------------------------
24800C
24801C
24802      DOUBLE PRECISION DX
24803C
24804      DOUBLE PRECISION DA
24805      COMMON/J1COM/DA
24806C
24807C-----COMMON----------------------------------------------------------
24808C
24809      INCLUDE 'DPCOP2.INC'
24810C
24811C-----DATA STATEMENTS-------------------------------------------------
24812C
24813C-----START POINT-----------------------------------------------------
24814C
24815C               ************************************
24816C               **  STEP 1--                      **
24817C               **  COMPUTE THE DENSITY FUNCTION  **
24818C               ************************************
24819C
24820      J1FUN=DX**(DA-1.0D0)*DLOG(DX)*DEXP(-DX)
24821C
24822      RETURN
24823      END
24824      DOUBLE PRECISION FUNCTION J2FUN(DX)
24825C
24826C     PURPOSE--THIS FUNCTION COMPUTES THE FOLLOWING FUNCTION:
24827C                 J(X,A) = INTEGRAL[0 to X]
24828C                          [T**(A-1)*(LOG(T)**2)**EXP(-T)]dt
24829C              THIS FUNCTION IS USED IN COMPUTING THE STANDARD
24830C              ERRORS OF THE MAXIMUM LIKELIHOOD ESTIMATES FOR THE
24831C              GAMMA DISTRIBUTION FOR MULTIPLY CENSORED DATA.
24832C     INPUT  ARGUMENTS--DX     = THE DOUBLE PRECISION VALUE AT
24833C                                WHICH THE J(X,A) FUNCTION IS TO BE
24834C                                EVALUATED.
24835C     OUTPUT ARGUMENTS--J2FUN  = THE DOUBLE PRECISION FUNCTION VALUE.
24836C     OUTPUT--THE DOUBLE PRECISION VALUE FOR THE J(X,A) FUNCTION.
24837C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
24838C     RESTRICTIONS--NONE.
24839C     OTHER DATAPAC   SUBROUTINES NEEDED--NONE.
24840C     FORTRAN LIBRARY SUBROUTINES NEEDED--DLOG.
24841C     MODE OF INTERNAL OPERATIONS--DOUBLE PRECISION.
24842C     LANGUAGE--ANSI FORTRAN (1977)
24843C     REFERENCE--KARL BURY, "STATISTICAL DISTRIBUTIONS IN
24844C                ENGINEERING", CAMBRIDGE UNIVERSITY PRESS,
24845C                1999, CHAPTER 13.
24846C     WRITTEN BY--JAMES J. FILLIBEN
24847C                 STATISTICAL ENGINEERING DIVISION
24848C                 INFORMATION TECHNOLOGY LABORATORY
24849C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
24850C                 GAITHERSBURG, MD 20899-8980
24851C                 PHONE--301-975-2855
24852C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
24853C           OF THE NATION INSTITUTE OF STANDARDS AND TECHNOLOGY.
24854C     LANGUAGE--ANSI FORTRAN (1977)
24855C     VERSION NUMBER--2004.11
24856C     ORIGINAL VERSION--NOVEMBER  2004.
24857C
24858C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
24859C
24860C---------------------------------------------------------------------
24861C
24862C
24863      DOUBLE PRECISION DX
24864C
24865      DOUBLE PRECISION DA
24866      COMMON/J1COM/DA
24867C
24868C-----COMMON----------------------------------------------------------
24869C
24870      INCLUDE 'DPCOP2.INC'
24871C
24872C-----DATA STATEMENTS-------------------------------------------------
24873C
24874C-----START POINT-----------------------------------------------------
24875C
24876C               ************************************
24877C               **  STEP 1--                      **
24878C               **  COMPUTE THE DENSITY FUNCTION  **
24879C               ************************************
24880C
24881      J2FUN=DX**(DA-1.0D0)*(DLOG(DX)**2)*DEXP(-DX)
24882C
24883      RETURN
24884      END
24885      DOUBLE PRECISION FUNCTION J0INT(XVALUE)
24886C
24887C   DESCRIPTION:
24888C
24889C      This function calculates the integral of the Bessel
24890C      function J0, defined as
24891C
24892C        J0INT(x) = {integral 0 to x} J0(t) dt
24893C
24894C      The code uses Chebyshev expansions whose coefficients are
24895C      given to 20 decimal places.
24896C
24897C
24898C   ERROR RETURNS:
24899C
24900C      If the value of |x| is too large, it is impossible to
24901C      accurately compute the trigonometric functions used. An
24902C      error message is printed, and the function returns the
24903C      value 1.0.
24904C
24905C
24906C   MACHINE-DEPENDENT CONSTANTS:
24907C
24908C      NTERM1 - The no. of terms to be used from the array
24909C                ARJ01. The recommended value is such that
24910C                   ABS(ARJ01(NTERM1)) < EPS/100, provided that
24911C
24912C      NTERM2 - The no. of terms to be used from the array
24913C                ARJ0A1. The recommended value is such that
24914C                   ABS(ARJ0A1(NTERM2)) < EPS/100, provided that
24915C
24916C      NTERM3 - The no. of terms to be used from the array
24917C                ARJ0A2. The recommended value is such that
24918C                   ABS(ARJ0A2(NTERM3)) < EPS/100, provided that
24919C
24920C      XLOW - The value of |x| below which J0INT(x) = x to
24921C             machine-precision. The recommended value is
24922C                 sqrt(12*EPSNEG)
24923C
24924C      XHIGH - The value of |x| above which it is impossible
24925C              to calculate (x-pi/4) accurately. The recommended
24926C              value is      1/EPSNEG
24927C
24928C      For values of EPS and EPSNEG for various machine/compiler
24929C      combinations refer to the file MACHCON.TXT.
24930C
24931C      The machine-dependent constants are computed internally by
24932C      using the D1MACH subroutine.
24933C
24934C
24935C   INTRINSIC FUNCTIONS USED:
24936C
24937C      COS , SIN , SQRT
24938C
24939C
24940C   OTHER MISCFUN SUBROUTINES USED:
24941C
24942C          CHEVAL , ERRPRN, D1MACH
24943C
24944C
24945C   AUTHOR:
24946C          Dr. Allan J. MacLeod,
24947C          Dept. of Mathematics and Statistics,
24948C          University of Paisley,
24949C          Paisley,
24950C          SCOTLAND
24951C          PA1 2BE
24952C
24953C          (e-mail:   macl_ms0@paisley.ac.uk )
24954C
24955C
24956C   LATEST REVISION:
24957C                    23 January, 1996
24958C
24959      INTEGER IND,NTERM1,NTERM2,NTERM3
24960      DOUBLE PRECISION ARJ01(0:23),ARJ0A1(0:21),ARJ0A2(0:18),
24961     1     CHEVAL,FIVE12,ONE,ONEHUN,ONE28,PIB41,PIB411,PIB412,
24962     2     PIB42,RT2BPI,SIXTEN,T,TEMP,TWELVE,X,XHIGH,XLOW,
24963     3     XMPI4,XVALUE,ZERO
24964CCCCC CHARACTER FNNAME*6,ERRMSG*26
24965CCCCC DATA FNNAME/'J0INT '/
24966CCCCC DATA ERRMSG/'ARGUMENT TOO LARGE IN SIZE'/
24967C
24968C-----COMMON----------------------------------------------------------
24969C
24970      INCLUDE 'DPCOMC.INC'
24971      INCLUDE 'DPCOP2.INC'
24972C
24973      DATA ZERO,ONE/ 0.0 D 0 , 1.0 D 0 /
24974      DATA TWELVE,SIXTEN/ 12.0 D 0 , 16.0 D 0 /
24975      DATA ONEHUN,ONE28,FIVE12/ 100.0 D 0 , 128.0 D 0 , 512 D 0 /
24976      DATA RT2BPI/0.79788 45608 02865 35588 D 0/
24977      DATA PIB411,PIB412/ 201.0 D 0 , 256.0 D 0/
24978      DATA PIB42/0.24191 33974 48309 61566 D -3/
24979      DATA ARJ01(0)/  0.38179 27932 16901 73518  D    0/
24980      DATA ARJ01(1)/ -0.21275 63635 05053 21870  D    0/
24981      DATA ARJ01(2)/  0.16754 21340 72157 94187  D    0/
24982      DATA ARJ01(3)/ -0.12853 20977 21963 98954  D    0/
24983      DATA ARJ01(4)/  0.10114 40545 57788 47013  D    0/
24984      DATA ARJ01(5)/ -0.91007 95343 20156 8859   D   -1/
24985      DATA ARJ01(6)/  0.64013 45264 65687 3103   D   -1/
24986      DATA ARJ01(7)/ -0.30669 63029 92675 4312   D   -1/
24987      DATA ARJ01(8)/  0.10308 36525 32506 4201   D   -1/
24988      DATA ARJ01(9)/ -0.25567 06503 99956 918    D   -2/
24989      DATA ARJ01(10)/ 0.48832 75580 57983 04     D   -3/
24990      DATA ARJ01(11)/-0.74249 35126 03607 7      D   -4/
24991      DATA ARJ01(12)/ 0.92226 05637 30861        D   -5/
24992      DATA ARJ01(13)/-0.95522 82830 7083         D   -6/
24993      DATA ARJ01(14)/ 0.83883 55845 986          D   -7/
24994      DATA ARJ01(15)/-0.63318 44888 58           D   -8/
24995      DATA ARJ01(16)/ 0.41560 50422 1            D   -9/
24996      DATA ARJ01(17)/-0.23955 29307              D  -10/
24997      DATA ARJ01(18)/ 0.12228 6885               D  -11/
24998      DATA ARJ01(19)/-0.55697 11                 D  -13/
24999      DATA ARJ01(20)/ 0.22782 0                  D  -14/
25000      DATA ARJ01(21)/-0.8417                     D  -16/
25001      DATA ARJ01(22)/ 0.282                      D  -17/
25002      DATA ARJ01(23)/-0.9                        D  -19/
25003      DATA ARJ0A1(0)/  1.24030 13303 75189 70827  D    0/
25004      DATA ARJ0A1(1)/ -0.47812 53536 32280 693    D   -2/
25005      DATA ARJ0A1(2)/  0.66131 48891 70667 8      D   -4/
25006      DATA ARJ0A1(3)/ -0.18604 27404 86349        D   -5/
25007      DATA ARJ0A1(4)/  0.83627 35565 080          D   -7/
25008      DATA ARJ0A1(5)/ -0.52585 70367 31           D   -8/
25009      DATA ARJ0A1(6)/  0.42606 36325 1            D   -9/
25010      DATA ARJ0A1(7)/ -0.42117 61024              D  -10/
25011      DATA ARJ0A1(8)/  0.48894 6426               D  -11/
25012      DATA ARJ0A1(9)/ -0.64834 929                D  -12/
25013      DATA ARJ0A1(10)/ 0.96172 34                 D  -13/
25014      DATA ARJ0A1(11)/-0.15703 67                 D  -13/
25015      DATA ARJ0A1(12)/ 0.27871 2                  D  -14/
25016      DATA ARJ0A1(13)/-0.53222                    D  -15/
25017      DATA ARJ0A1(14)/ 0.10844                    D  -15/
25018      DATA ARJ0A1(15)/-0.2342                     D  -16/
25019      DATA ARJ0A1(16)/ 0.533                      D  -17/
25020      DATA ARJ0A1(17)/-0.127                      D  -17/
25021      DATA ARJ0A1(18)/ 0.32                       D  -18/
25022      DATA ARJ0A1(19)/-0.8                        D  -19/
25023      DATA ARJ0A1(20)/ 0.2                        D  -19/
25024      DATA ARJ0A1(21)/-0.1                        D  -19/
25025      DATA ARJ0A2(0)/  1.99616 09630 13416 75339  D    0/
25026      DATA ARJ0A2(1)/ -0.19037 98192 46668 161    D   -2/
25027      DATA ARJ0A2(2)/  0.15397 10927 04422 6      D   -4/
25028      DATA ARJ0A2(3)/ -0.31145 08832 8103         D   -6/
25029      DATA ARJ0A2(4)/  0.11108 50971 321          D   -7/
25030      DATA ARJ0A2(5)/ -0.58666 78712 3            D   -9/
25031      DATA ARJ0A2(6)/  0.41399 26949              D  -10/
25032      DATA ARJ0A2(7)/ -0.36539 8763               D  -11/
25033      DATA ARJ0A2(8)/  0.38557 568                D  -12/
25034      DATA ARJ0A2(9)/ -0.47098 00                 D  -13/
25035      DATA ARJ0A2(10)/ 0.65022 0                  D  -14/
25036      DATA ARJ0A2(11)/-0.99624                    D  -15/
25037      DATA ARJ0A2(12)/ 0.16700                    D  -15/
25038      DATA ARJ0A2(13)/-0.3028                     D  -16/
25039      DATA ARJ0A2(14)/ 0.589                      D  -17/
25040      DATA ARJ0A2(15)/-0.122                      D  -17/
25041      DATA ARJ0A2(16)/ 0.27                       D  -18/
25042      DATA ARJ0A2(17)/-0.6                        D  -19/
25043      DATA ARJ0A2(18)/ 0.1                        D  -19/
25044C
25045      XLOW=CPUMIN
25046C
25047C   Start computation
25048C
25049      X = XVALUE
25050      IND = 1
25051      IF ( X .LT. ZERO ) THEN
25052         X = -X
25053         IND = -1
25054      ENDIF
25055C
25056C   Compute the machine-dependent constants.
25057C
25058      TEMP = D1MACH(3)
25059      XHIGH = ONE / TEMP
25060C
25061C   Error test
25062C
25063      IF ( X .GT. XHIGH ) THEN
25064CCCCC    CALL ERRPRN(FNNAME,ERRMSG)
25065         WRITE(ICOUT,999)
25066         CALL DPWRST('XXX','BUG ')
25067         WRITE(ICOUT,101)X
25068         CALL DPWRST('XXX','BUG ')
25069         J0INT = ONE
25070         IF ( IND .EQ. -1 ) J0INT = -J0INT
25071         RETURN
25072      ENDIF
25073  999 FORMAT(1X)
25074  101 FORMAT('***** ERROR FROM J0INT--SIZE OF THE INPUT ARGUMENT ',
25075     1        'IS TOO LARGE, ARGUMENT = ',G15.7)
25076C
25077C   continue with constants
25078C
25079      T = TEMP / ONEHUN
25080      IF ( X .LE. SIXTEN ) THEN
25081         DO 10 NTERM1 = 23 , 0 , -1
25082            IF ( ABS(ARJ01(NTERM1)) .GT. T ) GOTO 19
25083 10      CONTINUE
25084 19      XLOW = SQRT ( TWELVE * TEMP )
25085      ELSE
25086         DO 40 NTERM2 = 21 , 0 , -1
25087            IF ( ABS(ARJ0A1(NTERM2)) .GT. T ) GOTO 49
25088 40      CONTINUE
25089 49      DO 50 NTERM3 = 18 , 0 , -1
25090            IF ( ABS(ARJ0A2(NTERM3)) .GT. T ) GOTO 59
25091 50      CONTINUE
25092 59      CONTINUE
25093      ENDIF
25094C
25095C   Code for 0 <= |x| <= 16
25096C
25097      IF ( X .LE. SIXTEN ) THEN
25098         IF ( X .LT. XLOW ) THEN
25099            J0INT = X
25100         ELSE
25101            T = X * X / ONE28 - ONE
25102            J0INT = X * CHEVAL(NTERM1,ARJ01,T)
25103         ENDIF
25104      ELSE
25105C
25106C   Code for |x| > 16
25107C
25108         T = FIVE12 / ( X * X ) - ONE
25109         PIB41 = PIB411 / PIB412
25110         XMPI4 = ( X - PIB41 ) - PIB42
25111         TEMP = COS(XMPI4) * CHEVAL(NTERM2,ARJ0A1,T) / X
25112         TEMP = TEMP - SIN(XMPI4) * CHEVAL(NTERM3,ARJ0A2,T)
25113         J0INT = ONE - RT2BPI * TEMP / SQRT(X)
25114      ENDIF
25115      IF ( IND .EQ. -1 ) J0INT = -J0INT
25116      RETURN
25117      END
25118      SUBROUTINE JACELL(AX,AMC,SNR,CNR,DNR)
25119C
25120C     PURPOSE--THIS SUBROUTINE COMPUTES THE JACOBIAN ELLIPTIC
25121C              FUNCTIONS.
25122C     INPUT  ARGUMENTS--X      = THE SINGLE PRECISION INPUT ARGUMENT
25123C                       AMC    = THE SINGLE PRECISION VALUE FOR THE
25124C                                PARAMETER OF THE FUNCTIONS
25125C     OUTPUT ARGUMENTS--SN     = THE SINGLE PRECISION VALUE OF THE SN
25126C                                FUNCTION.
25127C                     --CN     = THE SINGLE PRECISION VALUE OF THE CN
25128C                                FUNCTION.
25129C                     --DN     = THE SINGLE PRECISION VALUE OF THE DN
25130C                                FUNCTION.
25131C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
25132C     RESTRICTIONS--
25133C     OTHER DATAPAC   SUBROUTINES NEEDED--NONE
25134C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE
25135C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
25136C     LANGUAGE--ANSI FORTRAN.
25137C     REFERENCES--"NUMERICAL CALCULATION OF ELLIPTIC INTEGRALS AND
25138C                 ELLIPTIC FUNCTIONS", BULIRSCH, NUMERISCHE MATHEMATIK,
25139C                 VOL. 7, PP. 78-90, 1965.
25140C                 THE ROUTINE HERE IS A FORTRAN TRANSLATION OF THE
25141C                 ALGOL-60 CODE GIVEN IN THE REFERENCE.
25142C     WRITTEN BY--JAMES J. FILLIBEN
25143C                 STATISTICAL ENGINEERING LABORATORY (205.03)
25144C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
25145C                 GAITHERSBURG, MD 20899-8980
25146C                 PHONE:  301-975-2855
25147C     ORIGINAL VERSION--NOVEMBER   1994.
25148C
25149C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
25150C
25151      PARAMETER (MAXELE=13)
25152      LOGICAL B0
25153      DOUBLE PRECISION AM(MAXELE)
25154      DOUBLE PRECISION AN(MAXELE)
25155      DOUBLE PRECISION MC, C1, CA, X, A, B, C, D
25156      DOUBLE PRECISION SN, DN, CN
25157C
25158C-----COMMON----------------------------------------------------------
25159C
25160      INCLUDE 'DPCOMC.INC'
25161      INCLUDE 'DPCOP2.INC'
25162C
25163      DATA C1 / 3.96825396825D-4/
25164      DATA CA / 0.0001D0 /
25165C
25166C---------------------------------------------------------------------
25167C
25168C-----START POINT-----------------------------------------------------
25169C
25170      X=DBLE(AX)
25171      MC=DBLE(AMC)
25172      DO10I=1,MAXELE
25173        AN(I)=0.0D0
25174        AM(I)=0.0D0
25175 10   CONTINUE
25176C
25177      IF(MC.EQ.0.0D0)GOTO1000
25178      B0=.TRUE.
25179      IF(MC.LT.0.0D0)THEN
25180        B0=.TRUE.
25181      ELSE
25182        B0=.FALSE.
25183      ENDIF
25184      IF(B0)THEN
25185        D=1.0D0-MC
25186        MC=-MC/D
25187        D=SQRT(D)
25188        X=D*X
25189      ENDIF
25190      DN=1.0D0
25191      A=1.0D0
25192      DO100I=1,MAXELE
25193        L=I
25194        AM(I)=A
25195        MC=DSQRT(MC)
25196        AN(I)=MC
25197        C=0.5D0*(A+MC)
25198        IF(DABS(A-MC).LE.CA*A)GOTO199
25199        MC=A*MC
25200        A=C
25201 100  CONTINUE
25202 199  CONTINUE
25203      X=C*X
25204      SN=DSIN(X)
25205      CN=DCOS(X)
25206      IF(SN.EQ.0.0D0)GOTO299
25207      A=CN/SN
25208      C=A*C
25209      DO200I=L,1,-1
25210        B=AM(I)
25211        A=C*A
25212        C=DN*C
25213        DN=(AN(I)+A)/(B+A)
25214        A=C/B
25215 200  CONTINUE
25216      A=1.0D0/DSQRT(C*C+1.0D0)
25217      IF(SN.LT.0.0D0)THEN
25218        SN=-A
25219      ELSE
25220        SN=A
25221      ENDIF
25222      CN=C*SN
25223 299  CONTINUE
25224      IF(B0)THEN
25225        A=DN
25226        DN=CN
25227        CN=A
25228        SN=SN/D
25229      ENDIF
25230      GOTO9999
25231C
25232 1000 CONTINUE
25233      D=DEXP(X)
25234      A=1.0D0/D
25235      B=A+D
25236      CN=2.0D0/B
25237      DN=2.0D0/B
25238      IF(DABS(X).LT.0.3D0)THEN
25239        D=X*X*X
25240        SN=CN*(D*((1.0D0/3.0D0)+D*X*C1)+DSIN(X))
25241      ELSE
25242        SN=(D-A)/B
25243      ENDIF
25244      GOTO9999
25245C
25246 9999 CONTINUE
25247      SNR=SNGL(SN)
25248      CNR=SNGL(CN)
25249      DNR=SNGL(DN)
25250      RETURN
25251      END
25252      SUBROUTINE JACKIN(A1,A2,IWRITE,
25253     1Y3,N3,IBUGA3,ISUBRO,IERROR)
25254C
25255C     PURPOSE--GENERATE A JACKNIFE INDEX
25256C              THIS WILL BE SEQUENCE 1 1 N WITH A SINGLE ELEMENT
25257C              DELETED
25258C     INPUT  ARGUMENTS--A1     =  ELEMENT TO DELETE
25259C                     --A2     =  SIZE OF SEQUENCE
25260C     OUTPUT ARGUMENTS--Y3     =  JACKNIFE INDEX
25261C
25262C      NOTE--IF A2 IS SMALLER THAN 1 OR LARGER THAN A1,
25263C            THEN THIS WILL BE INTERPRETED AS A NON-OPERATION.
25264C     WRITTEN BY--JAMES J. FILLIBEN
25265C                 STATISTICAL ENGINEERING DIVISION
25266C                 INFORMATION TECHNOLOGY LABORATORY
25267C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
25268C                 GAITHERSBURG, MD 20899-8980
25269C                 PHONE--301-975-2855
25270C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
25271C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
25272C     LANGUAGE--ANSI FORTRAN (1977)
25273C     VERSION NUMBER--93/10
25274C     ORIGINAL VERSION--OCTOBER  1993.
25275C
25276C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
25277C
25278      CHARACTER*4 IWRITE
25279      CHARACTER*4 IBUGA3
25280      CHARACTER*4 ISUBRO
25281      CHARACTER*4 IERROR
25282C
25283      CHARACTER*4 ISUBN1
25284      CHARACTER*4 ISUBN2
25285C
25286C---------------------------------------------------------------------
25287C
25288      DIMENSION Y3(*)
25289C
25290C-----COMMON----------------------------------------------------------
25291C
25292      INCLUDE 'DPCOP2.INC'
25293C
25294C-----START POINT-----------------------------------------------------
25295C
25296      ISUBN1='JACK'
25297      ISUBN2='IN  '
25298      IERROR='NO'
25299C
25300      IF(IBUGA3.EQ.'OFF'.AND.ISUBRO.NE.'CKIN')GOTO90
25301      WRITE(ICOUT,999)
25302  999 FORMAT(1X)
25303      CALL DPWRST('XXX','BUG ')
25304      WRITE(ICOUT,51)
25305   51 FORMAT('***** AT THE BEGINNING OF JACKIN--')
25306      CALL DPWRST('XXX','BUG ')
25307      WRITE(ICOUT,52)IBUGA3,ISUBRO,IWRITE
25308   52 FORMAT('IBUGA3,ISUBRO,IWRITE = ',A4,2X,A4,2X,A4)
25309      CALL DPWRST('XXX','BUG ')
25310      WRITE(ICOUT,53)A1,A2
25311   53 FORMAT('A1,A2 = ',2F8.2)
25312      CALL DPWRST('XXX','BUG ')
25313   90 CONTINUE
25314C
25315C               *************************************
25316C               **  CONSTRUCT A   JACKNIFE INDEX   **
25317C               *************************************
25318C
25319C               ********************************************
25320C               **  STEP 11--                             **
25321C               **  CHECK NUMBER OF INPUT OBSERVATIONS.   **
25322C               ********************************************
25323C
25324      NSKIP=INT(A1+0.5)
25325      N1=INT(A2+0.5)
25326      IF(NSKIP.LT.1.OR.NSKIP.GT.N1)GOTO1110
25327      GOTO1119
25328C
25329 1110 CONTINUE
25330      IERROR='YES'
25331      WRITE(ICOUT,999)
25332      CALL DPWRST('XXX','BUG ')
25333      WRITE(ICOUT,1111)
25334 1111 FORMAT('***** ERROR IN JACKIN--')
25335      CALL DPWRST('XXX','BUG ')
25336      WRITE(ICOUT,1112)
25337 1112 FORMAT('      THE ELEMENT TO SKIP MUST BE')
25338      CALL DPWRST('XXX','BUG ')
25339      WRITE(ICOUT,1113)N1
25340 1113 FORMAT('      BETWEEN 1 AND ',I8)
25341      CALL DPWRST('XXX','BUG ')
25342      WRITE(ICOUT,1116)
25343 1116 FORMAT('      SUCH WAS NOT THE CASE HERE.')
25344      CALL DPWRST('XXX','BUG ')
25345      WRITE(ICOUT,1117)NSKIP
25346 1117 FORMAT('      THE ELEMENT TO SKIP IS = ',I8,'.')
25347      CALL DPWRST('XXX','BUG ')
25348      GOTO9000
25349 1119 CONTINUE
25350C
25351      DO1300I=1,N1
25352      Y3(I)=REAL(I)
25353 1300 CONTINUE
25354      Y3(NSKIP)=0.0
25355      N3=N1
25356C
25357C               *****************
25358C               **  STEP 90--  **
25359C               **  EXIT.      **
25360C               *****************
25361C
25362 9000 CONTINUE
25363C
25364      IF(IBUGA3.EQ.'OFF'.AND.ISUBRO.NE.'PARI')GOTO9090
25365      WRITE(ICOUT,999)
25366      CALL DPWRST('XXX','BUG ')
25367      WRITE(ICOUT,9011)
25368 9011 FORMAT('***** AT THE END       OF JACKIN--')
25369      CALL DPWRST('XXX','BUG ')
25370      WRITE(ICOUT,9012)IBUGA3,ISUBRO,IWRITE
25371 9012 FORMAT('IBUGA3,ISUBRO,IWRITE = ',A4,2X,A4,2X,A4)
25372      CALL DPWRST('XXX','BUG ')
25373      WRITE(ICOUT,9013)IERROR
25374 9013 FORMAT('IERROR = ',A4)
25375      CALL DPWRST('XXX','BUG ')
25376CCCCC WRITE(ICOUT,9017)N1,N2,N3
25377C9017 FORMAT('N1,N2,N3 = ',3I8)
25378      WRITE(ICOUT,9017)N1,N3
25379 9017 FORMAT('N1,N3 = ',2I8)
25380      CALL DPWRST('XXX','BUG ')
25381      IF(N3.LE.0)GOTO9043
25382      DO9041I=1,N3
25383      WRITE(ICOUT,9042)I,Y3(I)
25384 9042 FORMAT('I,Y3(I) = ',I8,E13.5)
25385      CALL DPWRST('XXX','BUG ')
25386 9041 CONTINUE
25387 9043 CONTINUE
25388 9090 CONTINUE
25389C
25390      RETURN
25391      END
25392      SUBROUTINE JACOBP(DEGREE,ALFA,BETA,X,F,FD,E,ED,FLAGF,FLAGD)
25393C
25394C     PURPOSE--THIS SUBROUTINE COMPUTES THE JACOBI
25395C              POLYNOMIAL OF ORDER N.
25396C     INPUT  ARGUMENTS--DEGREE = THE INTEGER VALUE FOR THE ORDER OF
25397C                                THE POLYNOMIAL
25398C                       ALPHA  = THE DOUBLE PRECISION VALUE FOR THE
25399C                                FIRST SHAPE PARAMETER
25400C                       BETA   = THE DOUBLE PRECISION VALUE FOR THE
25401C                                SECOND SHAPE PARAMETER
25402C                       X      = THE DOUBLE PRECISION VALUE FOR THE
25403C                                INPUT ARGUMENT
25404C     OUTPUT ARGUMENTS--F      = THE DOUBLE PRECISION VALUE OF THE
25405C                                JACOBI POLYNOMIAL.
25406C                       FD     = THE DOUBLE PRECISION VALUE OF THE
25407C                                DERIVATIVE OF THE JACOBI POLYNOMIAL.
25408C                       E      = THE SINGLE PRECISION VALUE OF THE
25409C                                RELATIVE ERROR OF F
25410C                       ED     = THE SINGLE PRECISION VALUE OF THE
25411C                                RELATIVE ERROR OF FD
25412C                       FLAGF  = THE INTEGER VALUE WHICH SPECIFIES
25413C                                WHETHER F IS RELATIVE OR ABSOLUTE ERROR
25414C                       FLAGD  = THE INTEGER VALUE WHICH SPECIFIES
25415C                                WHETHER FD IS RELATIVE OR ABSOLUTE ERROR
25416C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
25417C     RESTRICTIONS--
25418C     OTHER DATAPAC   SUBROUTINES NEEDED--NONE
25419C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE
25420C     MODE OF INTERNAL OPERATIONS--SOME DOUBLE PRECISION.
25421C     LANGUAGE--ANSI FORTRAN.
25422C     REFERENCES--"HANDBOOK OF MATHEMATICAL FUNCTIONS, AMS 55",
25423C                 ABRAMOWITZ AND STEGUM.
25424C                 "ALGORITHM 332.  JACOBI POLYNOMIALS", WITTE,
25425C                 COMMUNICATIONS OF THE ACM, VOL. 11, 1968.
25426C                 FOLLOWING CODE USES ACM ALGORTHM 332
25427C     ORIGINAL VERSION--JULY       1995.
25428C
25429C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
25430C
25431C
25432      DOUBLE PRECISION A, ALF, ALFA, B, BET, BETA
25433      DOUBLE PRECISION C, D, F, FD, G, H, P, PD, Q, QD
25434      DOUBLE PRECISION T1, T2, U, V, W, X
25435C
25436      REAL E, ED, EG, E1, E2, S, Y
25437C
25438      INTEGER I, J, K, M, N, DEGREE, FLAGF, FLAGD
25439C
25440      DIMENSION U(25), V(25), W(25), P(25), PD(25), Q(25), QD(25)
25441C
25442C-----COMMON----------------------------------------------------------
25443C
25444      INCLUDE 'DPCOP2.INC'
25445C
25446      DATA M /-2/
25447      DATA ALF /-2.0D0/
25448      DATA BET /-2.0D0/
25449CCCCC DATA Y /3.0E-26/
25450      DATA RMXINT /134217727. /
25451C
25452C-----START POINT-----------------------------------------------------
25453C
25454CCCCC IF(X.LT.-1.0.OR.X.GT.1.0)THEN
25455CCCCC   WRITE(ICOUT,104)
25456CCCCC   CALL DPWRST('XXX','BUG ')
25457CCCCC   WRITE(ICOUT,46)X
25458CCCCC   CALL DPWRST('XXX','BUG ')
25459CCCCC   GOTO9999
25460CCCCC ENDIF
25461CC104 FORMAT('***** NON-FATAL DIAGNOSTIC--THE 1ST INPUT ARGUMENT ',
25462CCCCC1'TO THE JACOBP SUBROUTINE IS OUTSIDE THE (-1,1) INTERVAL *****')
25463CCC46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',E15.8,' *****')
25464      IF(DEGREE.LT.0 .OR. DEGREE.GT.25)THEN
25465        WRITE(ICOUT,106)
25466        CALL DPWRST('XXX','BUG ')
25467        WRITE(ICOUT,47)N
25468        CALL DPWRST('XXX','BUG ')
25469        GOTO12
25470      ENDIF
25471  106 FORMAT('***** NON-FATAL DIAGNOSTIC--THE 2ND INPUT ARGUMENT ',
25472     1'TO THE JACOBP SUBROUTINE IS OUTSIDE THE (0,25) INTERVAL *****')
25473   47 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',I8,' *****')
25474C
25475      CALL SPDIV(RMXINT,2.0,IND,RESULT)
25476      ETA=RESULT+1.0
25477      CALL SPDIV(1.0,ETA,IND,ETA)
25478      Y=ETA
25479C
25480      IF(DEGREE.EQ.0)THEN
25481        F=1.0D0
25482        E=0.0
25483        FD=0.0D0
25484        ED=0.0
25485        FLAGF=2
25486        FLAGD=2
25487        GOTO12
25488      ENDIF
25489C
25490C  CALCULATE THE U(J), V(J), W(J), IN THE RECURRENCE RELATION.
25491C  P(J) = P(J-1)*(U(J)+V(J)*X)-P(J-2)*W(J)
25492C
25493      M = DEGREE
25494      ALF = ALFA
25495      BET = BETA
25496      A = ALF+BET
25497      B = ALF-BET
25498      U(1) = B/2.0D0
25499      V(1) = 1.0D0+A/2.0D0
25500      W(1) = 0.0D0
25501C
25502      IF(DEGREE.EQ.1)GOTO5
25503C
25504      U(2) = A*B*(A+3.0D0)/(4.0D0*(A+2.0D0)**2)
25505      V(2) = (A+3.0D0)*(A+4.0D0)/(4.0D0*(A+2.0D0))
25506      W(2) = (1.0D0 + ALF)*(1.0D0 + BET)*(A+4.0D0)
25507      W(2) = W(2)/(2.0D0*(A+2.0D0)**2)
25508      I = 2
25509      K = DEGREE - 1
25510C
25511      IF((DEGREE.EQ.2) .OR. (I.GT.K))GOTO5
25512C
25513      DO4J=I,K
25514        A = DBLE(2*J+2)
25515        D = ALF+BET
25516        A = A+D
25517        B = D*(A-1.0D0)*(ALF-BET)
25518        C = DBLE(J+1)
25519        C = 2.0D0*C*(A-2.0D0)*(C+D)
25520        U(J+1) = B/C
25521        D = A*(A-1.0D0)*(A-2.0D0)
25522        V(J+1) = D/C
25523        D = J
25524        A = 2.0D0*(D+ALF)*(D+BET)*A
25525        W(J+1) = A/C
25526    4 CONTINUE
25527C
25528C  FIND THE STARTING VALUES FOR J=1 AND J=2 FOR USE IN THE RECURSION.
25529C
25530    5 CONTINUE
25531      T1 = V(1)*X
25532      P(1) = U(1)+T1
25533      S = Y*DMAX1(DABS(U(1)),DABS(T1))
25534      Q(1) = P(1)+S
25535      PD(1) = V(1)
25536      QD(1) = V(1)
25537C
25538      IF(DEGREE.EQ.1)GOTO7
25539C
25540      T1 = V(2)*X
25541      G = U(2)+T1
25542      EG = Y*DMAX1(DABS(U(2)),DABS(T1))
25543      H = G+EG
25544      T1 = G*P(1)
25545      E1 = DABS(EG*P(1))
25546      P(2) = T1 - W(2)
25547      S = Y*DABS(W(2))
25548      S = AMAX1(E1,S)
25549      Q(2) = H*Q(1)-W(2)+S
25550      PD(2) = G*PD(1)+V(2)*P(1)
25551      QD(2) = H*QD(1)+V(2)*Q(1)
25552C
25553      IF(DEGREE.EQ.2)GOTO7
25554C
25555C  USE THE RECURSION
25556C
25557      DO6J=3,DEGREE
25558        T2 = V(J)*X
25559        G = U(J)+T2
25560        EG = Y*DMAX1(DABS(U(J)),DABS(T2))
25561        H = G+EG
25562        T1 = G*P(J-1)
25563        T2 = W(J)*P(J-2)
25564        E1 = DABS(EG*P(J-1))
25565        E2 = DABS(T2)*Y
25566        P(J) = T1 - T2
25567        S = AMAX1(E1,E2)
25568        Q(J) = H*Q(J-1)-W(J)*Q(J-2)+S
25569        PD(J) = G*PD(J-1)-W(J)*PD(J-2)
25570        QD(J) = H*QD(J-1)-W(J)*QD(J-2)
25571        PD(J) = PD(J)+V(J)*P(J-1)
25572        QD(J) = QD(J)+V(J)*Q(J-1)
25573    6 CONTINUE
25574C
25575C  PREPARE THE OUTPUT
25576C
25577    7 CONTINUE
25578      N = DEGREE
25579      F = P(N)
25580      IF(DABS(F).LT.Y)THEN
25581        E=DABS(F-Q(N))
25582        FLAGF = 1
25583      ELSE
25584        E=DABS(1.0D0-Q(N)/F)
25585        FLAGF = 0
25586      ENDIF
25587      FD = PD(N)
25588      IF(DABS(FD).LT.Y)THEN
25589        ED=DABS(FD-QD(N))
25590        FLAGD=1
25591      ELSE
25592        ED=DABS(1.0D0-QD(N)/FD)
25593        FLAGD=0
25594      ENDIF
25595      GOTO12
25596C
25597   12 CONTINUE
25598      RETURN
25599      END
25600      SUBROUTINE JAIRY (X, RX, C, AI, DAI)
25601C***BEGIN PROLOGUE  JAIRY
25602C***SUBSIDIARY
25603C***PURPOSE  Subsidiary to BESJ and BESY
25604C***LIBRARY   SLATEC
25605C***TYPE      SINGLE PRECISION (JAIRY-S, DJAIRY-D)
25606C***AUTHOR  Amos, D. E., (SNLA)
25607C           Daniel, S. L., (SNLA)
25608C           Weston, M. K., (SNLA)
25609C***DESCRIPTION
25610C
25611C                  JAIRY computes the Airy function AI(X)
25612C                   and its derivative DAI(X) for ASYJY
25613C
25614C                                   INPUT
25615C
25616C         X - Argument, computed by ASYJY, X unrestricted
25617C        RX - RX=SQRT(ABS(X)), computed by ASYJY
25618C         C - C=2.*(ABS(X)**1.5)/3., computed by ASYJY
25619C
25620C                                  OUTPUT
25621C
25622C        AI - Value of function AI(X)
25623C       DAI - Value of the derivative DAI(X)
25624C
25625C***SEE ALSO  BESJ, BESY
25626C***ROUTINES CALLED  (NONE)
25627C***REVISION HISTORY  (YYMMDD)
25628C   750101  DATE WRITTEN
25629C   891009  Removed unreferenced variable.  (WRB)
25630C   891214  Prologue converted to Version 4.0 format.  (BAB)
25631C   900328  Added TYPE section.  (WRB)
25632C   910408  Updated the AUTHOR section.  (WRB)
25633C***END PROLOGUE  JAIRY
25634C
25635      INTEGER I, J, M1, M1D, M2, M2D, M3, M3D, M4, M4D, N1, N1D, N2,
25636     1 N2D, N3, N3D, N4, N4D
25637      REAL A, AI, AJN, AJP, AK1, AK2, AK3, B, C, CCV, CON2, CON3,
25638     1 CON4, CON5, CV, DA, DAI, DAJN, DAJP, DAK1, DAK2, DAK3, DB, EC,
25639     2 E1, E2, FPI12, F1, F2, RTRX, RX, SCV, T, TEMP1, TEMP2, TT, X
25640      DIMENSION AJP(19), AJN(19), A(15), B(15)
25641      DIMENSION AK1(14), AK2(23), AK3(14)
25642      DIMENSION DAJP(19), DAJN(19), DA(15), DB(15)
25643      DIMENSION DAK1(14), DAK2(24), DAK3(14)
25644      SAVE N1, N2, N3, N4, M1, M2, M3, M4, FPI12, CON2,
25645     1 CON3, CON4, CON5,AK1, AK2, AK3, AJP, AJN, A, B,
25646     2 N1D, N2D, N3D, N4D, M1D, M2D, M3D, M4D,
25647     3 DAK1, DAK2, DAK3, DAJP, DAJN, DA, DB
25648      DATA N1,N2,N3,N4/14,23,19,15/
25649      DATA M1,M2,M3,M4/12,21,17,13/
25650      DATA FPI12,CON2,CON3,CON4,CON5/
25651     1 1.30899693899575E+00, 5.03154716196777E+00, 3.80004589867293E-01,
25652     2 8.33333333333333E-01, 8.66025403784439E-01/
25653      DATA AK1(1), AK1(2), AK1(3), AK1(4), AK1(5), AK1(6), AK1(7),
25654     1     AK1(8), AK1(9), AK1(10),AK1(11),AK1(12),AK1(13),
25655     2     AK1(14)         / 2.20423090987793E-01,-1.25290242787700E-01,
25656     3 1.03881163359194E-02, 8.22844152006343E-04,-2.34614345891226E-04,
25657     4 1.63824280172116E-05, 3.06902589573189E-07,-1.29621999359332E-07,
25658     5 8.22908158823668E-09, 1.53963968623298E-11,-3.39165465615682E-11,
25659     6 2.03253257423626E-12,-1.10679546097884E-14,-5.16169497785080E-15/
25660      DATA AK2(1), AK2(2), AK2(3), AK2(4), AK2(5), AK2(6), AK2(7),
25661     1     AK2(8), AK2(9), AK2(10),AK2(11),AK2(12),AK2(13),AK2(14),
25662     2     AK2(15),AK2(16),AK2(17),AK2(18),AK2(19),AK2(20),AK2(21),
25663     3     AK2(22),AK2(23) / 2.74366150869598E-01, 5.39790969736903E-03,
25664     4-1.57339220621190E-03, 4.27427528248750E-04,-1.12124917399925E-04,
25665     5 2.88763171318904E-05,-7.36804225370554E-06, 1.87290209741024E-06,
25666     6-4.75892793962291E-07, 1.21130416955909E-07,-3.09245374270614E-08,
25667     7 7.92454705282654E-09,-2.03902447167914E-09, 5.26863056595742E-10,
25668     8-1.36704767639569E-10, 3.56141039013708E-11,-9.31388296548430E-12,
25669     9 2.44464450473635E-12,-6.43840261990955E-13, 1.70106030559349E-13,
25670     1-4.50760104503281E-14, 1.19774799164811E-14,-3.19077040865066E-15/
25671      DATA AK3(1), AK3(2), AK3(3), AK3(4), AK3(5), AK3(6), AK3(7),
25672     1     AK3(8), AK3(9), AK3(10),AK3(11),AK3(12),AK3(13),
25673     2     AK3(14)         / 2.80271447340791E-01,-1.78127042844379E-03,
25674     3 4.03422579628999E-05,-1.63249965269003E-06, 9.21181482476768E-08,
25675     4-6.52294330229155E-09, 5.47138404576546E-10,-5.24408251800260E-11,
25676     5 5.60477904117209E-12,-6.56375244639313E-13, 8.31285761966247E-14,
25677     6-1.12705134691063E-14, 1.62267976598129E-15,-2.46480324312426E-16/
25678      DATA AJP(1), AJP(2), AJP(3), AJP(4), AJP(5), AJP(6), AJP(7),
25679     1     AJP(8), AJP(9), AJP(10),AJP(11),AJP(12),AJP(13),AJP(14),
25680     2     AJP(15),AJP(16),AJP(17),AJP(18),
25681     3     AJP(19)         / 7.78952966437581E-02,-1.84356363456801E-01,
25682     4 3.01412605216174E-02, 3.05342724277608E-02,-4.95424702513079E-03,
25683     5-1.72749552563952E-03, 2.43137637839190E-04, 5.04564777517082E-05,
25684     6-6.16316582695208E-06,-9.03986745510768E-07, 9.70243778355884E-08,
25685     7 1.09639453305205E-08,-1.04716330588766E-09,-9.60359441344646E-11,
25686     8 8.25358789454134E-12, 6.36123439018768E-13,-4.96629614116015E-14,
25687     9-3.29810288929615E-15, 2.35798252031104E-16/
25688      DATA AJN(1), AJN(2), AJN(3), AJN(4), AJN(5), AJN(6), AJN(7),
25689     1     AJN(8), AJN(9), AJN(10),AJN(11),AJN(12),AJN(13),AJN(14),
25690     2     AJN(15),AJN(16),AJN(17),AJN(18),
25691     3     AJN(19)         / 3.80497887617242E-02,-2.45319541845546E-01,
25692     4 1.65820623702696E-01, 7.49330045818789E-02,-2.63476288106641E-02,
25693     5-5.92535597304981E-03, 1.44744409589804E-03, 2.18311831322215E-04,
25694     6-4.10662077680304E-05,-4.66874994171766E-06, 7.15218807277160E-07,
25695     7 6.52964770854633E-08,-8.44284027565946E-09,-6.44186158976978E-10,
25696     8 7.20802286505285E-11, 4.72465431717846E-12,-4.66022632547045E-13,
25697     9-2.67762710389189E-14, 2.36161316570019E-15/
25698      DATA A(1),   A(2),   A(3),   A(4),   A(5),   A(6),   A(7),
25699     1     A(8),   A(9),   A(10),  A(11),  A(12),  A(13),  A(14),
25700     2     A(15)           / 4.90275424742791E-01, 1.57647277946204E-03,
25701     3-9.66195963140306E-05, 1.35916080268815E-07, 2.98157342654859E-07,
25702     4-1.86824767559979E-08,-1.03685737667141E-09, 3.28660818434328E-10,
25703     5-2.57091410632780E-11,-2.32357655300677E-12, 9.57523279048255E-13,
25704     6-1.20340828049719E-13,-2.90907716770715E-15, 4.55656454580149E-15,
25705     7-9.99003874810259E-16/
25706      DATA B(1),   B(2),   B(3),   B(4),   B(5),   B(6),   B(7),
25707     1     B(8),   B(9),   B(10),  B(11),  B(12),  B(13),  B(14),
25708     2     B(15)           / 2.78593552803079E-01,-3.52915691882584E-03,
25709     3-2.31149677384994E-05, 4.71317842263560E-06,-1.12415907931333E-07,
25710     4-2.00100301184339E-08, 2.60948075302193E-09,-3.55098136101216E-11,
25711     5-3.50849978423875E-11, 5.83007187954202E-12,-2.04644828753326E-13,
25712     6-1.10529179476742E-13, 2.87724778038775E-14,-2.88205111009939E-15,
25713     7-3.32656311696166E-16/
25714      DATA N1D,N2D,N3D,N4D/14,24,19,15/
25715      DATA M1D,M2D,M3D,M4D/12,22,17,13/
25716      DATA DAK1(1), DAK1(2), DAK1(3), DAK1(4), DAK1(5), DAK1(6),
25717     1     DAK1(7), DAK1(8), DAK1(9), DAK1(10),DAK1(11),DAK1(12),
25718     2    DAK1(13),DAK1(14)/ 2.04567842307887E-01,-6.61322739905664E-02,
25719     3-8.49845800989287E-03, 3.12183491556289E-03,-2.70016489829432E-04,
25720     4-6.35636298679387E-06, 3.02397712409509E-06,-2.18311195330088E-07,
25721     5-5.36194289332826E-10, 1.13098035622310E-09,-7.43023834629073E-11,
25722     6 4.28804170826891E-13, 2.23810925754539E-13,-1.39140135641182E-14/
25723      DATA DAK2(1), DAK2(2), DAK2(3), DAK2(4), DAK2(5), DAK2(6),
25724     1     DAK2(7), DAK2(8), DAK2(9), DAK2(10),DAK2(11),DAK2(12),
25725     2     DAK2(13),DAK2(14),DAK2(15),DAK2(16),DAK2(17),DAK2(18),
25726     3     DAK2(19),DAK2(20),DAK2(21),DAK2(22),DAK2(23),
25727     4     DAK2(24)        / 2.93332343883230E-01,-8.06196784743112E-03,
25728     5 2.42540172333140E-03,-6.82297548850235E-04, 1.85786427751181E-04,
25729     6-4.97457447684059E-05, 1.32090681239497E-05,-3.49528240444943E-06,
25730     7 9.24362451078835E-07,-2.44732671521867E-07, 6.49307837648910E-08,
25731     8-1.72717621501538E-08, 4.60725763604656E-09,-1.23249055291550E-09,
25732     9 3.30620409488102E-10,-8.89252099772401E-11, 2.39773319878298E-11,
25733     1-6.48013921153450E-12, 1.75510132023731E-12,-4.76303829833637E-13,
25734     2 1.29498241100810E-13,-3.52679622210430E-14, 9.62005151585923E-15,
25735     3-2.62786914342292E-15/
25736      DATA DAK3(1), DAK3(2), DAK3(3), DAK3(4), DAK3(5), DAK3(6),
25737     1     DAK3(7), DAK3(8), DAK3(9), DAK3(10),DAK3(11),DAK3(12),
25738     2    DAK3(13),DAK3(14)/ 2.84675828811349E-01, 2.53073072619080E-03,
25739     3-4.83481130337976E-05, 1.84907283946343E-06,-1.01418491178576E-07,
25740     4 7.05925634457153E-09,-5.85325291400382E-10, 5.56357688831339E-11,
25741     5-5.90889094779500E-12, 6.88574353784436E-13,-8.68588256452194E-14,
25742     6 1.17374762617213E-14,-1.68523146510923E-15, 2.55374773097056E-16/
25743      DATA DAJP(1), DAJP(2), DAJP(3), DAJP(4), DAJP(5), DAJP(6),
25744     1     DAJP(7), DAJP(8), DAJP(9), DAJP(10),DAJP(11),DAJP(12),
25745     2     DAJP(13),DAJP(14),DAJP(15),DAJP(16),DAJP(17),DAJP(18),
25746     3     DAJP(19)        / 6.53219131311457E-02,-1.20262933688823E-01,
25747     4 9.78010236263823E-03, 1.67948429230505E-02,-1.97146140182132E-03,
25748     5-8.45560295098867E-04, 9.42889620701976E-05, 2.25827860945475E-05,
25749     6-2.29067870915987E-06,-3.76343991136919E-07, 3.45663933559565E-08,
25750     7 4.29611332003007E-09,-3.58673691214989E-10,-3.57245881361895E-11,
25751     8 2.72696091066336E-12, 2.26120653095771E-13,-1.58763205238303E-14,
25752     9-1.12604374485125E-15, 7.31327529515367E-17/
25753      DATA DAJN(1), DAJN(2), DAJN(3), DAJN(4), DAJN(5), DAJN(6),
25754     1     DAJN(7), DAJN(8), DAJN(9), DAJN(10),DAJN(11),DAJN(12),
25755     2     DAJN(13),DAJN(14),DAJN(15),DAJN(16),DAJN(17),DAJN(18),
25756     3     DAJN(19)        / 1.08594539632967E-02, 8.53313194857091E-02,
25757     4-3.15277068113058E-01,-8.78420725294257E-02, 5.53251906976048E-02,
25758     5 9.41674060503241E-03,-3.32187026018996E-03,-4.11157343156826E-04,
25759     6 1.01297326891346E-04, 9.87633682208396E-06,-1.87312969812393E-06,
25760     7-1.50798500131468E-07, 2.32687669525394E-08, 1.59599917419225E-09,
25761     8-2.07665922668385E-10,-1.24103350500302E-11, 1.39631765331043E-12,
25762     9 7.39400971155740E-14,-7.32887475627500E-15/
25763      DATA DA(1),  DA(2),  DA(3),  DA(4),  DA(5),  DA(6),  DA(7),
25764     1     DA(8),  DA(9),  DA(10), DA(11), DA(12), DA(13), DA(14),
25765     2     DA(15)          / 4.91627321104601E-01, 3.11164930427489E-03,
25766     3 8.23140762854081E-05,-4.61769776172142E-06,-6.13158880534626E-08,
25767     4 2.87295804656520E-08,-1.81959715372117E-09,-1.44752826642035E-10,
25768     5 4.53724043420422E-11,-3.99655065847223E-12,-3.24089119830323E-13,
25769     6 1.62098952568741E-13,-2.40765247974057E-14, 1.69384811284491E-16,
25770     7 8.17900786477396E-16/
25771      DATA DB(1),  DB(2),  DB(3),  DB(4),  DB(5),  DB(6),  DB(7),
25772     1     DB(8),  DB(9),  DB(10), DB(11), DB(12), DB(13), DB(14),
25773     2     DB(15)          /-2.77571356944231E-01, 4.44212833419920E-03,
25774     3-8.42328522190089E-05,-2.58040318418710E-06, 3.42389720217621E-07,
25775     4-6.24286894709776E-09,-2.36377836844577E-09, 3.16991042656673E-10,
25776     5-4.40995691658191E-12,-5.18674221093575E-12, 9.64874015137022E-13,
25777     6-4.90190576608710E-14,-1.77253430678112E-14, 5.55950610442662E-15,
25778     7-7.11793337579530E-16/
25779C***FIRST EXECUTABLE STATEMENT  JAIRY
25780      IF (X.LT.0.0E0) GO TO 90
25781      IF (C.GT.5.0E0) GO TO 60
25782      IF (X.GT.1.20E0) GO TO 30
25783      T = (X+X-1.2E0)*CON4
25784      TT = T + T
25785      J = N1
25786      F1 = AK1(J)
25787      F2 = 0.0E0
25788      DO 10 I=1,M1
25789        J = J - 1
25790        TEMP1 = F1
25791        F1 = TT*F1 - F2 + AK1(J)
25792        F2 = TEMP1
25793   10 CONTINUE
25794      AI = T*F1 - F2 + AK1(1)
25795C
25796      J = N1D
25797      F1 = DAK1(J)
25798      F2 = 0.0E0
25799      DO 20 I=1,M1D
25800        J = J - 1
25801        TEMP1 = F1
25802        F1 = TT*F1 - F2 + DAK1(J)
25803        F2 = TEMP1
25804   20 CONTINUE
25805      DAI = -(T*F1-F2+DAK1(1))
25806      RETURN
25807C
25808   30 CONTINUE
25809      T = (X+X-CON2)*CON3
25810      TT = T + T
25811      J = N2
25812      F1 = AK2(J)
25813      F2 = 0.0E0
25814      DO 40 I=1,M2
25815        J = J - 1
25816        TEMP1 = F1
25817        F1 = TT*F1 - F2 + AK2(J)
25818        F2 = TEMP1
25819   40 CONTINUE
25820      RTRX = SQRT(RX)
25821      EC = EXP(-C)
25822      AI = EC*(T*F1-F2+AK2(1))/RTRX
25823      J = N2D
25824      F1 = DAK2(J)
25825      F2 = 0.0E0
25826      DO 50 I=1,M2D
25827        J = J - 1
25828        TEMP1 = F1
25829        F1 = TT*F1 - F2 + DAK2(J)
25830        F2 = TEMP1
25831   50 CONTINUE
25832      DAI = -EC*(T*F1-F2+DAK2(1))*RTRX
25833      RETURN
25834C
25835   60 CONTINUE
25836      T = 10.0E0/C - 1.0E0
25837      TT = T + T
25838      J = N1
25839      F1 = AK3(J)
25840      F2 = 0.0E0
25841      DO 70 I=1,M1
25842        J = J - 1
25843        TEMP1 = F1
25844        F1 = TT*F1 - F2 + AK3(J)
25845        F2 = TEMP1
25846   70 CONTINUE
25847      RTRX = SQRT(RX)
25848      EC = EXP(-C)
25849      AI = EC*(T*F1-F2+AK3(1))/RTRX
25850      J = N1D
25851      F1 = DAK3(J)
25852      F2 = 0.0E0
25853      DO 80 I=1,M1D
25854        J = J - 1
25855        TEMP1 = F1
25856        F1 = TT*F1 - F2 + DAK3(J)
25857        F2 = TEMP1
25858   80 CONTINUE
25859      DAI = -RTRX*EC*(T*F1-F2+DAK3(1))
25860      RETURN
25861C
25862   90 CONTINUE
25863      IF (C.GT.5.0E0) GO TO 120
25864      T = 0.4E0*C - 1.0E0
25865      TT = T + T
25866      J = N3
25867      F1 = AJP(J)
25868      E1 = AJN(J)
25869      F2 = 0.0E0
25870      E2 = 0.0E0
25871      DO 100 I=1,M3
25872        J = J - 1
25873        TEMP1 = F1
25874        TEMP2 = E1
25875        F1 = TT*F1 - F2 + AJP(J)
25876        E1 = TT*E1 - E2 + AJN(J)
25877        F2 = TEMP1
25878        E2 = TEMP2
25879  100 CONTINUE
25880      AI = (T*E1-E2+AJN(1)) - X*(T*F1-F2+AJP(1))
25881      J = N3D
25882      F1 = DAJP(J)
25883      E1 = DAJN(J)
25884      F2 = 0.0E0
25885      E2 = 0.0E0
25886      DO 110 I=1,M3D
25887        J = J - 1
25888        TEMP1 = F1
25889        TEMP2 = E1
25890        F1 = TT*F1 - F2 + DAJP(J)
25891        E1 = TT*E1 - E2 + DAJN(J)
25892        F2 = TEMP1
25893        E2 = TEMP2
25894  110 CONTINUE
25895      DAI = X*X*(T*F1-F2+DAJP(1)) + (T*E1-E2+DAJN(1))
25896      RETURN
25897C
25898  120 CONTINUE
25899      T = 10.0E0/C - 1.0E0
25900      TT = T + T
25901      J = N4
25902      F1 = A(J)
25903      E1 = B(J)
25904      F2 = 0.0E0
25905      E2 = 0.0E0
25906      DO 130 I=1,M4
25907        J = J - 1
25908        TEMP1 = F1
25909        TEMP2 = E1
25910        F1 = TT*F1 - F2 + A(J)
25911        E1 = TT*E1 - E2 + B(J)
25912        F2 = TEMP1
25913        E2 = TEMP2
25914  130 CONTINUE
25915      TEMP1 = T*F1 - F2 + A(1)
25916      TEMP2 = T*E1 - E2 + B(1)
25917      RTRX = SQRT(RX)
25918      CV = C - FPI12
25919      CCV = COS(CV)
25920      SCV = SIN(CV)
25921      AI = (TEMP1*CCV-TEMP2*SCV)/RTRX
25922      J = N4D
25923      F1 = DA(J)
25924      E1 = DB(J)
25925      F2 = 0.0E0
25926      E2 = 0.0E0
25927      DO 140 I=1,M4D
25928        J = J - 1
25929        TEMP1 = F1
25930        TEMP2 = E1
25931        F1 = TT*F1 - F2 + DA(J)
25932        E1 = TT*E1 - E2 + DB(J)
25933        F2 = TEMP1
25934        E2 = TEMP2
25935  140 CONTINUE
25936      TEMP1 = T*F1 - F2 + DA(1)
25937      TEMP2 = T*E1 - E2 + DB(1)
25938      E1 = CCV*CON5 + 0.5E0*SCV
25939      E2 = SCV*CON5 - 0.5E0*CCV
25940      DAI = (TEMP1*E1-TEMP2*E2)*RTRX
25941      RETURN
25942      END
25943      SUBROUTINE JNSN(XBAR, SD, RB1, BB2, ITYPE, GAMMA, DELTA,
25944     $  XLAM, XI, IFAULT)
25945CSTART OF AS 99
25946C
25947C        ALGORITHM AS 99  APPL. STATIST. (1976) VOL.25, P.180
25948C
25949C        FINDS TYPE AND PARAMETERS OF A JOHNSON CURVE
25950C        WITH GIVEN FIRST FOUR MOMENTS
25951C
25952      REAL XBAR, SD, RB1, BB2, GAMMA, DELTA, XLAM, XI, TOL,
25953     $  B1, B2, Y, X, U, W, ZERO, ONE, TWO, THREE, FOUR, HALF,
25954     $  QUART, ZABS, ZEXP, ZLOG, ZSIGN, ZSQRT
25955      LOGICAL FAULT
25956C
25957      DATA TOL /0.01/
25958      DATA ZERO, QUART, HALF, ONE, TWO, THREE, FOUR
25959     $     /0.0,  0.25,  0.5, 1.0, 2.0,   3.0,  4.0/
25960C
25961      ZABS(X) = ABS(X)
25962      ZEXP(X) = EXP(X)
25963      ZLOG(X) = LOG(X)
25964      ZSIGN(X, Y) = SIGN(X, Y)
25965      ZSQRT(X) = SQRT(X)
25966C
25967      IFAULT = 1
25968      IF (SD .LT. ZERO) RETURN
25969      IFAULT = 0
25970      XI = ZERO
25971      XLAM = ZERO
25972      GAMMA = ZERO
25973      DELTA = ZERO
25974      IF (SD .GT. ZERO) GOTO 10
25975      ITYPE = 5
25976      XI = XBAR
25977      RETURN
25978   10 B1 = RB1 * RB1
25979      B2 = BB2
25980      FAULT = .FALSE.
25981C
25982C        TEST WHETHER LOGNORMAL (OR NORMAL) REQUESTED
25983C
25984      IF (B2 .GE. ZERO) GOTO 30
25985   20 IF (ZABS(RB1) .LE. TOL) GOTO 70
25986      GOTO 80
25987C
25988C        TEST FOR POSITION RELATIVE TO BOUNDARY LINE
25989C
25990   30 IF (B2 .GT. B1 + TOL + ONE) GOTO 60
25991      IF (B2 .LT. B1 + ONE) GOTO 50
25992C
25993C        ST DISTRIBUTION
25994C
25995   40 ITYPE = 5
25996      Y = HALF + HALF * ZSQRT(ONE - FOUR / (B1 + FOUR))
25997      IF (RB1 .GT. ZERO) Y = ONE - Y
25998      X = SD / ZSQRT(Y * (ONE - Y))
25999      XI = XBAR - Y * X
26000      XLAM = XI + X
26001      DELTA = Y
26002      RETURN
26003   50 IFAULT = 2
26004      RETURN
26005   60 IF (ZABS(RB1) .GT. TOL .OR. ZABS(B2 - THREE) .GT. TOL) GOTO 80
26006C
26007C        NORMAL DISTRIBUTION
26008C
26009   70 ITYPE = 4
26010      DELTA = ONE / SD
26011      GAMMA = -XBAR / SD
26012      RETURN
26013C
26014C        TEST FOR POSITION RELATIVE TO LOGNORMAL LINE
26015C
26016   80 X = HALF * B1 + ONE
26017      Y = ZABS(RB1) * ZSQRT(QUART * B1 + ONE)
26018      U = (X + Y) ** (ONE / THREE)
26019      W = U + ONE / U - ONE
26020      U = W * W * (THREE + W * (TWO + W)) - THREE
26021      IF (B2 .LT. ZERO .OR. FAULT) B2 = U
26022      X = U - B2
26023      IF (ZABS(X) .GT. TOL) GOTO 90
26024C
26025C        LOGNORMAL (SL) DISTRIBUTION
26026C
26027      ITYPE = 1
26028      XLAM = ZSIGN(ONE, RB1)
26029      U = XLAM * XBAR
26030      X = ONE / ZSQRT(ZLOG(W))
26031      DELTA = X
26032      Y = HALF * X * ZLOG(W * (W - ONE) / (SD * SD))
26033      GAMMA = Y
26034      XI = XLAM * (U - ZEXP((HALF / X - Y) / X))
26035      RETURN
26036C
26037C        SB OR SU DISTRIBUTION
26038C
26039   90 IF (X .GT. ZERO) GOTO 100
26040      ITYPE = 2
26041      CALL SUFIT(XBAR, SD, RB1, B2, GAMMA, DELTA, XLAM, XI)
26042      RETURN
26043  100 ITYPE = 3
26044      CALL SBFIT(XBAR, SD, RB1, B2, GAMMA, DELTA, XLAM, XI, FAULT)
26045      IF (.NOT. FAULT) RETURN
26046C
26047C        FAILURE - TRY TO FIT APPROXIMATE RESULT
26048C
26049      IFAULT = 3
26050      IF (B2 .GT. B1 + TWO) GOTO 20
26051      GOTO 40
26052      END
26053      SUBROUTINE JITTER(X,NX,DELTA,Y,NY,ISEED,IBUGA3,IERROR)
26054C
26055C     PURPOSE--JITTER A UNIVARIATE VARIABLE.  THAT IS, ADD A
26056C              UNIFORM RANDOM NUMBER (D DEFINES THE SCALE FOR
26057C              THIS RANDOM NUMBER).  THIS CAN BE HELPFUL IN
26058C              AVOIDING "OVERPLOTTING" ON CERTAIN TYPES OF
26059C              PLOTS.
26060C     NOTE--IT IS PERMISSIBLE TO HAVE THE OUTPUT VECTOR Y(.)
26061C           BEING IDENTICAL TO THE INPUT VECTOR X(.).
26062C     WRITTEN BY--JAMES J. FILLIBEN
26063C                 STATISTICAL ENGINEERING DIVISION
26064C                 INFORMATION TECHNOLOGY LABORATORY
26065C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
26066C                 GAITHERSBURG, MD 20899-8980
26067C                 PHONE--301-975-2855
26068C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
26069C           OF THE NATIONAL BUREAU OF STANDARDS.
26070C     LANGUAGE--ANSI FORTRAN (1977)
26071C     VERSION NUMBER--2007/1
26072C     ORIGINAL VERSION--JANUARY   2007.
26073C
26074C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
26075C
26076      CHARACTER*4 IBUGA3
26077      CHARACTER*4 IERROR
26078C
26079      CHARACTER*4 ISUBN1
26080      CHARACTER*4 ISUBN2
26081C
26082C---------------------------------------------------------------------
26083C
26084      DIMENSION X(*)
26085      DIMENSION Y(*)
26086C
26087      REAL XTEMP(1)
26088C
26089C-----COMMON---------------------------------------------------------
26090C
26091      INCLUDE 'DPCOP2.INC'
26092C
26093C-----START POINT-----------------------------------------------------
26094C
26095      ISUBN1='JITT'
26096      ISUBN2='ER  '
26097      IERROR='NO'
26098C
26099      IF(IBUGA3.EQ.'ON')THEN
26100        WRITE(ICOUT,999)
26101  999   FORMAT(1X)
26102        CALL DPWRST('XXX','BUG ')
26103        WRITE(ICOUT,51)
26104   51   FORMAT('***** AT THE BEGINNING OF JITTER--')
26105        CALL DPWRST('XXX','BUG ')
26106        WRITE(ICOUT,53)NX,DELTA,IBUGA3
26107   53   FORMAT('NX,DELTA,IBUGA3 = ',I8,G15.7,2X,A4)
26108        CALL DPWRST('XXX','BUG ')
26109        DO55I=1,MAX(100,NX)
26110          WRITE(ICOUT,56)I,X(I)
26111   56     FORMAT('I,X(I) = ',I8,G15.7)
26112          CALL DPWRST('XXX','BUG ')
26113   55   CONTINUE
26114        WRITE(ICOUT,999)
26115        CALL DPWRST('XXX','BUG ')
26116      ENDIF
26117C
26118C               ********************************
26119C               **  STEP 1--                  **
26120C               **  COMPUTE JITTERED VALUES   **
26121C               ********************************
26122C
26123      IF(NX.LT.1)THEN
26124        IERROR='YES'
26125        WRITE(ICOUT,999)
26126        CALL DPWRST('XXX','BUG ')
26127        WRITE(ICOUT,151)
26128  151   FORMAT('***** ERROR IN JITTER--')
26129        CALL DPWRST('XXX','BUG ')
26130        WRITE(ICOUT,152)
26131  152   FORMAT('      THE INPUT NUMBER OF OBSERVATIONS IN THE')
26132        CALL DPWRST('XXX','BUG ')
26133        WRITE(ICOUT,154)
26134  154   FORMAT('      VARIABLE FOR WHICH THE DISTINCT VALUES ARE TO')
26135        CALL DPWRST('XXX','BUG ')
26136        WRITE(ICOUT,155)
26137  155   FORMAT('      BE FOUND MUST BE 1 OR LARGER.')
26138        CALL DPWRST('XXX','BUG ')
26139        WRITE(ICOUT,156)
26140  156   FORMAT('      SUCH WAS NOT THE CASE HERE.')
26141        CALL DPWRST('XXX','BUG ')
26142        WRITE(ICOUT,157)NX
26143  157   FORMAT('      THE INPUT NUMBER OF OBSERVATIONS = ',I8,'.')
26144        CALL DPWRST('XXX','BUG ')
26145        GOTO9000
26146      ENDIF
26147C
26148      DELTA=ABS(DELTA)
26149      NTEMP=1
26150      IF(DELTA.EQ.0.0)DELTA=1.0
26151      DO100I=1,NX
26152        CALL UNIRAN(NTEMP,ISEED,XTEMP)
26153        XTEMP(1)=DELTA*XTEMP(1)
26154        ALOC=-DELTA/2.0
26155        ATEMP= ALOC + DELTA*XTEMP(1)
26156        Y(I)=X(I) + ATEMP
26157  100 CONTINUE
26158      NY=NX
26159C
26160C               *****************
26161C               **  STEP 90--  **
26162C               **  EXIT.      **
26163C               *****************
26164C
26165 9000 CONTINUE
26166C
26167      IF(IBUGA3.EQ.'ON')THEN
26168        WRITE(ICOUT,999)
26169        CALL DPWRST('XXX','BUG ')
26170        WRITE(ICOUT,9011)
26171 9011   FORMAT('***** AT THE END       OF JITTER--')
26172        CALL DPWRST('XXX','BUG ')
26173        WRITE(ICOUT,9012)IBUGA3,IERROR
26174 9012   FORMAT('IBUGA3,IERROR = ',A4,2X,A4)
26175        CALL DPWRST('XXX','BUG ')
26176        DO9015I=1,MAX(NY,100)
26177          WRITE(ICOUT,9016)I,X(I),Y(I)
26178 9016     FORMAT('I,X(I),Y(I) = ',I8,2G15.7)
26179          CALL DPWRST('XXX','BUG ')
26180 9015   CONTINUE
26181      ENDIF
26182C
26183      RETURN
26184      END
26185      SUBROUTINE JOIN(Y1,X1,Y2,N1,Y3,X3,TAG3,N3,MAXOBV,
26186     1                  IBUGA3,ISUBRO,IERROR)
26187C
26188C     PURPOSE--GIVEN AN (X,Y) VECTOR AND AN INDEX VARIABLE OF THE SAME
26189C              LENGTH, CREATE AN OUTPUT VARIABLE WHERE EACH ROW OF THE
26190C              (X,Y) VECTOR IS CONNECTED TO THE ROW SPECIFIED BY THE
26191C              INDEX VARIABLE.
26192C
26193C              THIS COMMAND IS TYPICALLY USED TO PLOT 2-D NEAREST
26194C              NEIGHBORS.  THAT IS, NEAREST NEIGHBORS CAN BE PLOTTED
26195C              WITH THE FOLLOWING SEQUENCE OF COMMANDS:
26196C
26197C                  LET INDX = NEAREST NEIGHBOR X Y
26198C                  LET X3 Y3 TAG3 = JOIN X Y INDX
26199C                  PLOT Y3 X3 TAG3
26200C
26201C     INPUT  ARGUMENTS--X1 (REAL)
26202C                     --Y1 (REAL)
26203C                     --Y2 (REAL)
26204C     OUTPUT ARGUMENTS--Y3 (REAL)
26205C                     --X3 (REAL)
26206C                     --TAG3 (REAL)
26207C
26208C     WRITTEN BY--ALAN HECKERT
26209C                 STATISTICAL ENGINEERING DIVISION
26210C                 INFORMATION TECHNOLOGY LABORATORY
26211C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
26212C                 GAITHERSBURG, MD 20899-8980
26213C                 PHONE--301-975-2899
26214C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
26215C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
26216C     LANGUAGE--ANSI FORTRAN (1977)
26217C     VERSION NUMBER--2013/8
26218C     ORIGINAL VERSION--AUGUST     2013
26219C
26220C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
26221C
26222      REAL X1(*)
26223      REAL Y1(*)
26224      REAL Y2(*)
26225      REAL X3(*)
26226      REAL Y3(*)
26227      REAL TAG3(*)
26228C
26229      CHARACTER*4 IBUGA3
26230      CHARACTER*4 ISUBRO
26231      CHARACTER*4 IERROR
26232C
26233C-----COMMON----------------------------------------------------------
26234C
26235      INCLUDE 'DPCOP2.INC'
26236C
26237C-----START POINT-----------------------------------------------------
26238C
26239      IERROR='NO'
26240      N3=0
26241C
26242      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'JOIN')THEN
26243        WRITE(ICOUT,999)
26244  999   FORMAT(1X)
26245        CALL DPWRST('XXX','BUG ')
26246        WRITE(ICOUT,51)
26247   51   FORMAT('***** AT THE BEGINNING OF JOIN--')
26248        CALL DPWRST('XXX','BUG ')
26249        WRITE(ICOUT,52)IBUGA3,ISUBRO,N1,MAXOBV
26250   52   FORMAT('IBUGA3,ISUBRO,N1,MAXOBV = ',2(A4,2X),2I8)
26251        CALL DPWRST('XXX','BUG ')
26252        DO55I=1,N1
26253          WRITE(ICOUT,56)I,X1(I),Y1(I),Y2(I)
26254   56     FORMAT('I,X1(I),Y1(I),Y2(I) = ',I8,3G15.7)
26255          CALL DPWRST('XXX','BUG ')
26256   55   CONTINUE
26257      ENDIF
26258C
26259C               ********************************************
26260C               **  STEP 11--                             **
26261C               **  CHECK NUMBER OF INPUT OBSERVATIONS.   **
26262C               ********************************************
26263C
26264      IF(N1.LT.1)THEN
26265        WRITE(ICOUT,999)
26266        CALL DPWRST('XXX','BUG ')
26267        WRITE(ICOUT,1151)
26268 1151   FORMAT('***** ERROR IN JOIN--')
26269        CALL DPWRST('XXX','BUG ')
26270        WRITE(ICOUT,1152)
26271 1152   FORMAT('      THE INPUT NUMBER OF OBSERVATIONS IS LESS THAN ',
26272     1         'ONE.')
26273        CALL DPWRST('XXX','BUG ')
26274        WRITE(ICOUT,1154)N1
26275 1154   FORMAT('      THE INPUT NUMBER OF OBSERVATIONS = ',I8,'.')
26276        CALL DPWRST('XXX','BUG ')
26277        IERROR='YES'
26278        GOTO9000
26279      ENDIF
26280C
26281C               ************************************************
26282C               **  STEP 2--                                  **
26283C               **  NOW GENERATED THE JOINED VECTOR           **
26284C               ************************************************
26285C
26286      ICNT1=0
26287      ICNT2=0
26288      DO2000K=1,N1
26289        IINDX=INT(Y2(K)+0.5)
26290        IF(IINDX.LT.1 .OR. IINDX.GT.N1)THEN
26291          WRITE(ICOUT,999)
26292          CALL DPWRST('XXX','BUG ')
26293          WRITE(ICOUT,1151)
26294          CALL DPWRST('XXX','BUG ')
26295          WRITE(ICOUT,2011)K
26296 2011     FORMAT('      ROW ',I8,' OF THE INDEX VARIABLE IS LESS THAN ',
26297     1           '1 OR')
26298          CALL DPWRST('XXX','BUG ')
26299          WRITE(ICOUT,2013)N1
26300 2013     FORMAT('      GREATER THAN ',I8,'.  IT HAS THE VALUE ',I8)
26301          CALL DPWRST('XXX','BUG ')
26302          IERROR='YES'
26303          GOTO9000
26304        ENDIF
26305        ICNT1=ICNT1+1
26306        IF(ICNT1.GT.MAXOBV)THEN
26307          WRITE(ICOUT,999)
26308          CALL DPWRST('XXX','BUG ')
26309          WRITE(ICOUT,1151)
26310          CALL DPWRST('XXX','BUG ')
26311          WRITE(ICOUT,2111)
26312 2111     FORMAT('      THE NUMBER OF ROWS IN THE OUTPUT VARIABLE ',
26313     1           'HAS EXCEEDED ')
26314          CALL DPWRST('XXX','BUG ')
26315          WRITE(ICOUT,2113)MAXOBV
26316 2113     FORMAT('      THE MAXIMUM ALLOWABLE OF ',I8,'.')
26317          CALL DPWRST('XXX','BUG ')
26318          IERROR='YES'
26319          GOTO9000
26320        ENDIF
26321        ICNT2=ICNT2+1
26322        X3(ICNT1)=X1(K)
26323        Y3(ICNT1)=Y1(K)
26324        TAG3(ICNT1)=REAL(ICNT2)
26325        ICNT1=ICNT1+1
26326        IF(ICNT1.GT.MAXOBV)THEN
26327          WRITE(ICOUT,999)
26328          CALL DPWRST('XXX','BUG ')
26329          WRITE(ICOUT,1151)
26330          CALL DPWRST('XXX','BUG ')
26331          WRITE(ICOUT,2111)
26332          CALL DPWRST('XXX','BUG ')
26333          WRITE(ICOUT,2113)MAXOBV
26334          CALL DPWRST('XXX','BUG ')
26335          IERROR='YES'
26336          GOTO9000
26337        ENDIF
26338        X3(ICNT1)=X1(IINDX)
26339        Y3(ICNT1)=Y1(IINDX)
26340        TAG3(ICNT1)=REAL(ICNT2)
26341 2000 CONTINUE
26342      N3=ICNT1
26343C
26344C               *****************
26345C               **  STEP 90--  **
26346C               **  EXIT.      **
26347C               *****************
26348C
26349 9000 CONTINUE
26350C
26351      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'JOIN')THEN
26352        WRITE(ICOUT,999)
26353        CALL DPWRST('XXX','BUG ')
26354        WRITE(ICOUT,9011)
26355 9011   FORMAT('***** AT THE END       OF JOIN--')
26356        CALL DPWRST('XXX','BUG ')
26357        WRITE(ICOUT,9013)IERROR,N3
26358 9013   FORMAT('IERROR,N3 = ',A4,2X,I8)
26359        CALL DPWRST('XXX','BUG ')
26360        DO9021I=1,N3
26361          WRITE(ICOUT,9022)I,X3(I),Y3(I),TAG3(I)
26362 9022     FORMAT('I,X3(I),Y3(I),TAG3(I) = ',I8,3G15.7)
26363          CALL DPWRST('XXX','BUG ')
26364 9021   CONTINUE
26365      ENDIF
26366C
26367      RETURN
26368      END
26369      SUBROUTINE JSBCDF(X,ALPHA1,ALPHA2,CDF)
26370C
26371C     PURPOSE--THIS SUBROUTINE COMPUTES THE CUMULATIVE DISTRIBUTION
26372C              FUNCTION VALUE FOR THE JOHNSON SB SYSTEM DISTRIBUTION.
26373C              THIS DISTRIBUTION CAN BE DEFINED IN TERMS OF THE
26374C              NORMAL DISTRIBUTION:
26375C              F(X) = NORCDF(ALPHA1 + ALPHA2*LOG(X/(1-X))
26376C     INPUT  ARGUMENTS--X      = THE SINGLE PRECISION VALUE
26377C                                AT WHICH THE CUMULATIVE DISTRIBUTION
26378C                                FUNCTION IS TO BE EVALUATED.
26379C                                X SHOULD BE POSITIVE.
26380C                     --ALPHA1 = FIRST SHAPE PARAMETER
26381C                     --ALPHA2 = SECOND SHAPE PARAMETER
26382C     OUTPUT ARGUMENTS--CDF    = THE SINGLE PRECISION PROBABILITY
26383C                                DENSITY FUNCTION VALUE.
26384C     OUTPUT--THE SINGLE PRECISION CUMULATIVE DISTRIBUTION
26385C             FUNCTION VALUE CDF FOR THE JOHNSON SB
26386C             DISTRIBUTION.
26387C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
26388C     RESTRICTIONS--X SHOULD BE POSITIVE.
26389C     OTHER DATAPAC   SUBROUTINES NEEDED--NORCDF.
26390C     FORTRAN LIBRARY SUBROUTINES NEEDED--LOG.
26391C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
26392C     LANGUAGE--ANSI FORTRAN.
26393C     REFERENCES--JOHNSON AND KOTZ, CONTINUOUS UNIVARIATE
26394C                 DISTRIBUTIONS--1, 2ND ED., 1994, PAGE 34.
26395C     WRITTEN BY--JAMES J. FILLIBEN
26396C                 STATISTICAL ENGINEERING DIVISION
26397C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
26398C                 GAITHERSBURG, MD 20899-8980
26399C                 PHONE:  301-975-2855
26400C     ORIGINAL VERSION--SEPTEMBER 2001.
26401C
26402C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
26403C
26404      DOUBLE PRECISION DARG
26405      DOUBLE PRECISION DCDF
26406C
26407C-----COMMON----------------------------------------------------------
26408C
26409      INCLUDE 'DPCOP2.INC'
26410C
26411C---------------------------------------------------------------------
26412C
26413C     CHECK THE INPUT ARGUMENTS FOR ERRORS
26414C
26415      IF(X.LE.0.0)THEN
26416        CDF=0.0
26417        GOTO9000
26418      ENDIF
26419      IF(X.GE.1.0)THEN
26420        CDF=1.0
26421        GOTO9000
26422      ENDIF
26423C
26424      IF(ALPHA2.LE.0.0)THEN
26425        WRITE(ICOUT,14)
26426        CALL DPWRST('XXX','BUG ')
26427        WRITE(ICOUT,15)
26428        CALL DPWRST('XXX','BUG ')
26429        WRITE(ICOUT,46)ALPHA1
26430        CALL DPWRST('XXX','BUG ')
26431        CDF=0.0
26432        GOTO9000
26433      ENDIF
26434C
26435   14 FORMAT('***** ERROR--THE THIRD INPUT ARGUMENT TO THE JSBCDF ')
26436   15 FORMAT('      SUBROUTINE IS NON-POSITIVE.')
26437   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',E15.8,' *****')
26438C
26439C-----START POINT-----------------------------------------------------
26440C
26441      CDF=0.0
26442C
26443      ARG=ALPHA1 + ALPHA2*LOG(X/(1.0-X))
26444      DARG=DBLE(ARG)
26445      CALL NODCDF(DARG,DCDF)
26446      CDF=REAL(DCDF)
26447C
26448 9000 CONTINUE
26449      RETURN
26450      END
26451      SUBROUTINE JSBPDF(X,ALPHA1,ALPHA2,PDF)
26452C
26453C     PURPOSE--THIS SUBROUTINE COMPUTES THE PROBABILITY DENSITY
26454C              FUNCTION VALUE FOR THE JOHNSON SB SYSTEM DISTRIBUTION.
26455C              THIS DISTRIBUTION CAN BE DEFINED IN TERMS OF THE
26456C              NORMAL DISTRIBUTION:
26457C              F(X) = (ALPHA2/(X*(1-X))*
26458C                     NORPDF(ALPHA1 + ALPHA2*LOG(X/(1-X))
26459C     INPUT  ARGUMENTS--X      = THE SINGLE PRECISION VALUE
26460C                                AT WHICH THE PROBABILITY DENSITY
26461C                                FUNCTION IS TO BE EVALUATED.
26462C                                X SHOULD BE POSITIVE.
26463C                     --ALPHA1 = FIRST SHAPE PARAMETER
26464C                     --ALPHA2 = SECOND SHAPE PARAMETER
26465C     OUTPUT ARGUMENTS--CDF    = THE SINGLE PRECISION PROBABILITY
26466C                                DENSITY FUNCTION VALUE.
26467C     OUTPUT--THE SINGLE PRECISION PROBABILITY DENSITY
26468C             FUNCTION VALUE PDF FOR THE JOHNSON SB
26469C             DISTRIBUTION.
26470C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
26471C     RESTRICTIONS--X SHOULD BE POSITIVE.
26472C     OTHER DATAPAC   SUBROUTINES NEEDED--NORPDF.
26473C     FORTRAN LIBRARY SUBROUTINES NEEDED--LOG.
26474C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
26475C     LANGUAGE--ANSI FORTRAN.
26476C     REFERENCES--JOHNSON AND KOTZ, CONTINUOUS UNIVARIATE
26477C                 DISTRIBUTIONS--1, 2ND ED., 1994, PAGE 34.
26478C     WRITTEN BY--JAMES J. FILLIBEN
26479C                 STATISTICAL ENGINEERING LABORATORY (205.03)
26480C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
26481C                 GAITHERSBURG, MD 20899-8980
26482C                 PHONE:  301-975-2855
26483C     ORIGINAL VERSION--SEPTEMBER 2001.
26484C
26485C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
26486C
26487      DOUBLE PRECISION DARG
26488      DOUBLE PRECISION DX
26489      DOUBLE PRECISION DPDF
26490C
26491C-----COMMON----------------------------------------------------------
26492C
26493      INCLUDE 'DPCOP2.INC'
26494C
26495C---------------------------------------------------------------------
26496C
26497C     CHECK THE INPUT ARGUMENTS FOR ERRORS
26498C
26499      IF(X.LE.0.0 .OR. X.GE.1.0)THEN
26500        WRITE(ICOUT,4)
26501        CALL DPWRST('XXX','BUG ')
26502        WRITE(ICOUT,5)
26503        CALL DPWRST('XXX','BUG ')
26504        WRITE(ICOUT,46)X
26505        CALL DPWRST('XXX','BUG ')
26506        PDF=0.0
26507        GOTO9000
26508      ENDIF
26509C
26510      IF(ALPHA2.LE.0.0)THEN
26511        WRITE(ICOUT,14)
26512        CALL DPWRST('XXX','BUG ')
26513        WRITE(ICOUT,15)
26514        CALL DPWRST('XXX','BUG ')
26515        WRITE(ICOUT,46)ALPHA1
26516        CALL DPWRST('XXX','BUG ')
26517        PDF=0.0
26518        GOTO9000
26519      ENDIF
26520C
26521    4 FORMAT('***** ERROR--THE FIRST INPUT ARGUMENT TO THE JSBPDF ')
26522    5 FORMAT('      SUBROUTINE IS OUTSIDE THE (0,1) INTERVAL.')
26523   14 FORMAT('***** ERROR--THE THIRD INPUT ARGUMENT TO THE JSBPDF ')
26524   15 FORMAT('      SUBROUTINE IS NON-POSITIVE.')
26525   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',E15.8,' *****')
26526C
26527C-----START POINT-----------------------------------------------------
26528C
26529      PDF=0.0
26530C
26531      ARG=ALPHA1 + ALPHA2*LOG(X/(1.0-X))
26532      DARG=DBLE(ARG)
26533      CALL NODPDF(DARG,DPDF)
26534      DX=DBLE(X)
26535      DPDF=(DBLE(ALPHA2)/(DX*(1.0D0-DX)))*DPDF
26536      PDF=REAL(DPDF)
26537C
26538 9000 CONTINUE
26539      RETURN
26540      END
26541      SUBROUTINE JSBPPF(P,ALPHA1,ALPHA2,PPF)
26542C
26543C     WRITTEN BY--JAMES J. FILLIBEN
26544C                 STATISTICAL ENGINEERING DIVISION
26545C                 INFORMATION TECHNOLOGY LABORATORY
26546C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
26547C                 GAITHERSBURG, MD 20899-8980
26548C                 PHONE--301-975-2855
26549C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
26550C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
26551C     LANGUAGE--ANSI FORTRAN (1977)
26552C     VERSION NUMBER--2001/9
26553C     ORIGINAL VERSION--SEPTEMBER 2001.
26554C
26555C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES----------------
26556C
26557      DOUBLE PRECISION DCDF
26558      DOUBLE PRECISION DALPH1
26559      DOUBLE PRECISION DALPH2
26560      DOUBLE PRECISION DX
26561      DOUBLE PRECISION DARG
26562      DOUBLE PRECISION DP
26563      DOUBLE PRECISION EPS
26564      DOUBLE PRECISION SIG
26565      DOUBLE PRECISION ZERO
26566      DOUBLE PRECISION A
26567      DOUBLE PRECISION B
26568      DOUBLE PRECISION AB
26569      DOUBLE PRECISION XL
26570      DOUBLE PRECISION XR
26571      DOUBLE PRECISION XRML
26572      DOUBLE PRECISION FXL
26573      DOUBLE PRECISION FXR
26574      DOUBLE PRECISION FCS
26575C
26576C-----COMMON-------------------------------------------------------
26577C
26578      INCLUDE 'DPCOP2.INC'
26579C
26580      DATA EPS /1.0D-6/
26581      DATA SIG /1.0D-5/
26582      DATA ZERO /0.D0/
26583      DATA MAXIT /3000/
26584C
26585C-----START POINT---------------------------------------------------
26586C
26587C     CHECK THE INPUT ARGUMENTS FOR ERRORS
26588C
26589      IF(P.LE.0.0)THEN
26590        PPF=0.0
26591        GOTO9999
26592      ELSEIF(P.GE.1.0)THEN
26593        PPF=1.0
26594        GOTO9999
26595      ENDIF
26596C
26597      IF(ALPHA2.LE.0.0)THEN
26598        WRITE(ICOUT,14)
26599        CALL DPWRST('XXX','BUG ')
26600        WRITE(ICOUT,15)
26601        CALL DPWRST('XXX','BUG ')
26602        WRITE(ICOUT,46)ALPHA1
26603        CALL DPWRST('XXX','BUG ')
26604        PPF=0.0
26605        GOTO9999
26606      ENDIF
26607C
26608    4 FORMAT('***** ERROR--THE FIRST INPUT ARGUMENT TO THE JSBPPF ')
26609    5 FORMAT('      SUBROUTINE IS NON-POSITIVE.')
26610   14 FORMAT('***** ERROR--THE THIRD INPUT ARGUMENT TO THE JSBPPF ')
26611   15 FORMAT('      SUBROUTINE IS NON-POSITIVE.')
26612   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',E15.8,' *****')
26613C
26614      A = ALPHA1
26615      B = ALPHA2
26616      DP = DBLE(P)
26617C
26618      IERR=0
26619      IC = 0
26620      AB = A/B
26621      XL = 0.0D0
26622      XR = 1.0D0
26623      FXL = -DP
26624      FXR = 1.0D0 - DP
26625C
26626      IF(FXL*FXR .GT. ZERO)THEN
26627        WRITE(ICOUT,4)
26628        CALL DPWRST('XXX','BUG ')
26629        WRITE(ICOUT,5)
26630        CALL DPWRST('XXX','BUG ')
26631        WRITE(ICOUT,46)P
26632        CALL DPWRST('XXX','BUG ')
26633        PPF=0.0
26634        GOTO9999
26635      ENDIF
26636C
26637C  BISECTION METHOD
26638C
26639  105 CONTINUE
26640      DX = (XL+XR)*0.5D0
26641      DALPH1=DBLE(A)
26642      DALPH2=DBLE(B)
26643      DARG=DALPH1 + DALPH2*DLOG(DX/(1.0D0-DX))
26644      CALL NODCDF(DARG,DCDF)
26645      P1=DCDF
26646      PPF=REAL(DX)
26647C
26648      FCS = P1 - DP
26649      IF(FCS*FXL.GT.ZERO)GOTO110
26650      XR = DX
26651      FXR = FCS
26652      GOTO115
26653  110 CONTINUE
26654      XL = DX
26655      FXL = FCS
26656  115 CONTINUE
26657      XRML = XR - XL
26658      IF(XRML.LE.SIG .AND. ABS(FCS).LE.EPS)GOTO9999
26659      IC = IC + 1
26660      IF(IC.LE.MAXIT)GOTO105
26661      WRITE(ICOUT,130)
26662      CALL DPWRST('XXX','BUG ')
26663  130 FORMAT('***** FATAL ERROR--JSBPPF ROUTINE DID NOT CONVERGE. ',
26664     1       '***')
26665      GOTO9999
26666C
26667 9999 CONTINUE
26668      RETURN
26669      END
26670      SUBROUTINE JSBRAN(N,ALPHA1,ALPHA2,ISEED,X)
26671C
26672C     PURPOSE--THIS SUBROUTINE GENERATES A RANDOM SAMPLE OF SIZE N
26673C              FROM THE JOHNSON SB DISTRIBUTION
26674C              WITH SHAPE PARAMETER VALUES = ALPHA1, ALPHA2.
26675C     INPUT  ARGUMENTS--N      = THE DESIRED INTEGER NUMBER
26676C                                OF RANDOM NUMBERS TO BE
26677C                                GENERATED.
26678C                     --ALPHA1  = THE SINGLE PRECISION VALUE OF THE
26679C                                FIRST SHAPE PARAMETER.
26680C                                ALPHA1 SHOULD BE POSITIVE.
26681C                     --ALPHA2  = THE SINGLE PRECISION VALUE OF THE
26682C                                SECOND SHAPE PARAMETER.
26683C                                ALPHA2 SHOULD BE POSITIVE.
26684C     OUTPUT ARGUMENTS--X      = A SINGLE PRECISION VECTOR
26685C                                (OF DIMENSION AT LEAST N)
26686C                                INTO WHICH THE GENERATED
26687C                                RANDOM SAMPLE WILL BE PLACED.
26688C     OUTPUT--A RANDOM SAMPLE OF SIZE N
26689C             FROM THE JOHNSON SB DISTRIBUTION
26690C             WITH SHAPE PARAMETER VALUES = ALPHA1 AND ALPHA2.
26691C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
26692C     RESTRICTIONS--THERE IS NO RESTRICTION ON THE MAXIMUM VALUE
26693C                   OF N FOR THIS SUBROUTINE.
26694C                 --ALPHA2 SHOULD BE POSITIVE.
26695C     OTHER DATAPAC   SUBROUTINES NEEDED--UNIRAN.
26696C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE.
26697C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
26698C     LANGUAGE--ANSI FORTRAN (1977)
26699C     WRITTEN BY--JAMES J. FILLIBEN
26700C                 STATISTICAL ENGINEERING DIVISION
26701C                 INFORMATION TECHNOLOGY LABORATORY
26702C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
26703C                 GAITHERSBURG, MD 20899-8980
26704C                 PHONE--301-975-2855
26705C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
26706C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
26707C     LANGUAGE--ANSI FORTRAN (1977)
26708C     VERSION NUMBER--2001.10
26709C     ORIGINAL VERSION--OCTOBER   2001.
26710C
26711C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
26712C
26713C---------------------------------------------------------------------
26714C
26715      DIMENSION X(*)
26716C
26717C-----COMMON----------------------------------------------------------
26718C
26719      INCLUDE 'DPCOP2.INC'
26720C
26721C-----START POINT-----------------------------------------------------
26722C
26723C     CHECK THE INPUT ARGUMENTS FOR ERRORS
26724C
26725      IF(N.LT.1)THEN
26726        WRITE(ICOUT, 5)
26727        CALL DPWRST('XXX','BUG ')
26728        WRITE(ICOUT,47)N
26729        CALL DPWRST('XXX','BUG ')
26730        GOTO9000
26731      ENDIF
26732    5 FORMAT('***** FATAL ERROR--THE 1ST INPUT ARGUMENT TO THE ',
26733     1'JSBRAN SUBROUTINE IS NON-POSITIVE *****')
26734   47 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',I8,' *****')
26735C
26736C     GENERATE N STANDARD NORMAL RANDOM NUMBERS;
26737C
26738      CALL NORRAN(N,ISEED,X)
26739C
26740C     GENERATE N JOHNSON SB DISTRIBUTION RANDOM NUMBERS
26741C     USING APPLIED STATISTICS ALGORITHM AS100.
26742C
26743      ITYPE=3
26744      ALOC=0.0
26745      SCALE=1.0
26746      DO100I=1,N
26747        XTEMP=X(I)
26748        XTEMP2=AJV(XTEMP,ITYPE,ALPHA1,ALPHA2,SCALE,ALOC,IFAULT)
26749        X(I)=XTEMP2
26750  100 CONTINUE
26751C
26752 9000 CONTINUE
26753      RETURN
26754      END
26755      SUBROUTINE JSCORE(Z,ROUND,N,IWRITE,XIDTEM,TEMP1,Y,NY,
26756     1                  IBUGA3,ISUBRO,IERROR)
26757C
26758C     PURPOSE--THIS SUBROUTINE COMPUTES THE JSCORE STATISTIC.
26759C              THIS IS USED IN ISO 13528 TYPE PROFICIENCY STUDIES.
26760C              THE INPUT IS ASSUMED TO BE A SERIES OF Z-SCORES
26761C              (THE ISO 13528 DEFINES MULTIPLE WAYS FOR COMPUTING
26762C              THE Z-SCORES, SO THIS COMMAND ASSUMES THAT THE INPUT
26763C              DATA IS ALREADY A Z-SCORE).
26764C
26765C              THE J-SCORE IS TYPICALLY DEFINED AS:
26766C
26767C                  IF  +3 <= Z          THEN J =  8
26768C                  IF  +2 <= Z <  +3    THEN J =  4
26769C                  IF  +1 <= Z <  +2    THEN J =  2
26770C                  IF  -1 <  Z <  +1    THEN J =  0
26771C                  IF  -2 <  Z <= -1    THEN J = -2
26772C                  IF  -3 <  Z <= -2    THEN J = -4
26773C                  IF  -3 <= Z          THEN J = -8
26774C
26775C              Z-SCORES ARE TYPICALLY COMPUTED OVER ONE OR MORE
26776C              MATERIALS AND ONE OR MORE ROUNDS.  J-SCORES ARE
26777C              TYPICALLY SUMMED OVER MULTIPLE ROUNDS UNTIL
26778C              ABS(JSCORE) >= 8.  THIS TYPICALLY TRIGGERS AN
26779C              ACTION SIGNAL AND THE J-SCORE IS RESET TO 0.
26780C              ALSO, WHEN SUCCESSIVE VALUES ARE OF DIFFERENT
26781C              SIGNS, THE JSCORE IS RESET TO 0.
26782C
26783C              THIS SUBROUTINE ASSUMES A SINGLE MATERIAL (I.E.,
26784C              WHEN THERE ARE MULTIPLE MATERIALS, THE DATA FOR A
26785C              SINGLE MATERIAL SHOULD BE EXTRACTED BEFORE CALLING
26786C              THIS ROUTINE).
26787C
26788C              IF THERE IS REPLICATION IN A ROUND, AN AVERAGE
26789C              Z-SCORE IS COMPUTED FOR THE ROUND BEFORE COMPUTING
26790C              THE J-SCORE.  ALTERNATIVELY, THE EXTREME Z-SCORE
26791C              CAN BE COMPUTED.
26792C
26793C              J-SCORES ARE TYPICALLY USED IN SHEWHART CONTROL
26794C              CHARTS AND ZONE PLOTS.
26795C
26796C     INPUT  ARGUMENTS--Z      = THE SINGLE PRECISION VECTOR OF
26797C                                Z-SCORES.
26798C                     --ROUND  = THE SINGLE PRECISION VECTOR THAT
26799C                                IDENTIFIES THE ROUND.
26800C                     --N      = THE INTEGER NUMBER OF OBSERVATIONS
26801C                                IN THE VECTORS Z AND ROUND.
26802C     OUTPUT ARGUMENTS--Y      = THE SINGLE PRECISION VECTOR OF THE
26803C                                COMPUTED JSCORE VALUES (ONE FOR EACH
26804C                                DISTINCT ROUND).
26805C                     --NY     = THE INTEGER NUMBER OF OBSERVATIONS
26806C                                IN THE OUTPUT VECTOR Y.
26807C     OUTPUT--THE COMPUTED SINGLE PRECISION VECTOR OF THE JSCORE VALUES.
26808C     OTHER DATAPAC   SUBROUTINES NEEDED--DISTIN, SORT.
26809C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE.
26810C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
26811C     LANGUAGE--ANSI FORTRAN (1977)
26812C     REFERENCES--THOMPSON, ELLISON, WOOD (2006), "THE INTERNATIONAL
26813C                 HARMONIZED PROTOCOL FOR THE PROFICIENCY TESTING OF
26814C                 ANALYTICAL CHEMISTRY LABORATORIES", PURE APPLIED
26815C                 CHEMISTRY, VOL. 78, NO. 1, PP. 145-196.
26816C     REFERENCES--ISO 13528, FIRST EDITION, STATISTICAL METHODS FOR USE
26817C                 IN PROFICIENCY TESTING BY INTERLABORATORY COMPARISONS,
26818C                 2005, PP. 27-28.
26819C     WRITTEN BY--ALAN HECKERT
26820C                 STATISTICAL ENGINEERING DIVISION
26821C                 INFORMATION TECHNOLOGY LABORATORY
26822C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
26823C                 GAITHERSBURG, MD 20899-8980
26824C                 PHONE--301-975-2899
26825C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
26826C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
26827C     LANGUAGE--ANSI FORTRAN (1977)
26828C     VERSION NUMBER--2012.1
26829C     ORIGINAL VERSION--JANUARY   2012.
26830C     UPDATED         --OCTOBER   2015. WHEN THERE IS REPLICATION, ALLOW
26831C                                       EITHER AN AVERAGE OR AN EXTREME
26832C                                       Z-SCORE TO BE COMPUTED.
26833C
26834C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
26835C
26836      CHARACTER*4 IWRITE
26837      CHARACTER*4 IBUGA3
26838      CHARACTER*4 ISUBRO
26839      CHARACTER*4 IERROR
26840C
26841      CHARACTER*4 ISUBN1
26842      CHARACTER*4 ISUBN2
26843C
26844C---------------------------------------------------------------------
26845C
26846      DIMENSION Z(*)
26847      DIMENSION Y(*)
26848      DIMENSION ROUND(*)
26849      DIMENSION XIDTEM(*)
26850      DIMENSION TEMP1(*)
26851C
26852C-----COMMON----------------------------------------------------------
26853C
26854      INCLUDE 'DPCOST.INC'
26855      INCLUDE 'DPCOP2.INC'
26856C
26857C-----START POINT-----------------------------------------------------
26858C
26859      ISUBN1='JSCO'
26860      ISUBN2='RE  '
26861      IERROR='NO'
26862C
26863      ISIGN=-99
26864C
26865      IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'CORE')THEN
26866        WRITE(ICOUT,999)
26867  999   FORMAT(1X)
26868        CALL DPWRST('XXX','BUG ')
26869        WRITE(ICOUT,51)
26870   51   FORMAT('***** AT THE BEGINNING OF JSCORE--')
26871        CALL DPWRST('XXX','BUG ')
26872        WRITE(ICOUT,52)IBUGA3,ISUBRO,IWRITE,N
26873   52   FORMAT('IBUGA3,ISUBRO,IWRITE,N = ',3(A4,2X),I8)
26874        CALL DPWRST('XXX','BUG ')
26875        DO55I=1,N
26876          WRITE(ICOUT,56)I,Z(I),ROUND(I)
26877   56     FORMAT('I,Z(I),ROUND(I) = ',I8,2G15.7)
26878          CALL DPWRST('XXX','BUG ')
26879   55   CONTINUE
26880      ENDIF
26881C
26882C               ********************************************
26883C               **  STEP 1--                              **
26884C               **  CHECK THE INPUT ARGUMENTS FOR ERRORS  **
26885C               ********************************************
26886C
26887      AN=N
26888C
26889      IF(N.LT.1)THEN
26890        WRITE(ICOUT,999)
26891        CALL DPWRST('XXX','BUG ')
26892        WRITE(ICOUT,111)
26893  111   FORMAT('***** ERROR IN JSCORE--')
26894        CALL DPWRST('XXX','BUG ')
26895        WRITE(ICOUT,112)
26896  112   FORMAT('      THE NUMBER OF OBSERVATIONS IS NON-POSITIVE.')
26897        CALL DPWRST('XXX','BUG ')
26898        WRITE(ICOUT,117)N
26899  117   FORMAT('      THE INPUT NUMBER OF OBSERVATIONS = ',I8,'.')
26900        CALL DPWRST('XXX','BUG ')
26901        IERROR='YES'
26902        GOTO9000
26903      ENDIF
26904C
26905C               ****************************************************
26906C               **  STEP 2--                                     **
26907C               **  DETERMINE (AND SORT) THE UNIQUE VALUES FOR   **
26908C               **  ROUND-ID VARIABLE                            **
26909C               ****************************************************
26910C
26911      CALL DISTIN(ROUND,N,IWRITE,XIDTEM,NY,IBUGA3,IERROR)
26912      CALL SORT(XIDTEM,NY,XIDTEM)
26913C
26914C               ***************************************************
26915C               **  STEP 3--                                     **
26916C               **  COMPUTE THE JSCORE FOR EACH ROUND            **
26917C               **    1) COMPUTE THE AVERAGE Z-SCORE FOR THE     **
26918C               **       ROUND.                                  **
26919C               **    2) COMPUTE THE JSCORE FOR THE ROUND.       **
26920C               ***************************************************
26921C
26922      AJ=0.0
26923      AJPREV=0.0
26924      SUM1=0.0
26925      EPS=0.000001
26926C
26927      DO110IR=1,NY
26928        HOLD1=XIDTEM(IR)
26929        K=0
26930        AMIN=CPUMAX
26931        AMAX=CPUMIN
26932        DO120J=1,N
26933          IF(ROUND(J).EQ.HOLD1)THEN
26934            K=K+1
26935            TEMP1(K)=Z(J)
26936          ENDIF
26937  120   CONTINUE
26938C
26939C       2015/10: SUPPORT FOLLOWING OPTIONS FOR THE CASE WHEN THERE
26940C                IS REPLICATION WITHIN A ROUND.
26941C
26942C                  1. TAKE THE AVERAGE OF THE Z-SCORES (THIS WAS THE
26943C                     PREVIOUSLY IMPLMENTED OPTION.
26944C                  2. TAKE THE MOST EXTREME Z-SCORE IN THE CELL.
26945C
26946CCCCC   ZSCORE=REAL(DSUM2/DBLE(K))
26947C
26948        IF(K.EQ.1)THEN
26949          ZSCORE=TEMP1(1)
26950        ELSE
26951          IF(IJSREP.EQ.'AVER')THEN
26952            CALL MEAN(TEMP1,K,IWRITE,ZSCORE,IBUGA3,IERROR)
26953          ELSEIF(IJSREP.EQ.'EXTR')THEN
26954            CALL MINIM(TEMP1,K,IWRITE,ZMIN,IBUGA3,IERROR)
26955            CALL MAXIM(TEMP1,K,IWRITE,ZMAX,IBUGA3,IERROR)
26956            ZSCORE=ZMIN
26957            IF(ABS(ZMAX).GT.ABS(ZMIN))ZSCORE=ZMAX
26958          ENDIF
26959        ENDIF
26960C
26961C       STEP 1: CONVERT Z-SCORE TO A NON-CUMULATIVE J-SCORE
26962C
26963        IF(ZSCORE.LE.-3.0)THEN
26964          AJSCOR=-8.0
26965        ELSEIF(ZSCORE.LE.-2.0)THEN
26966          AJSCOR=-4.0
26967        ELSEIF(ZSCORE.LE.-1.0)THEN
26968          AJSCOR=-2.0
26969        ELSEIF(ZSCORE.GE.3.0)THEN
26970          AJSCOR=8.0
26971        ELSEIF(ZSCORE.GE.2.0)THEN
26972          AJSCOR=4.0
26973        ELSEIF(ZSCORE.GE.1.0)THEN
26974          AJSCOR=2.0
26975        ELSE
26976          AJSCOR=0.0
26977          ISIGN=1
26978          IF(ZSCORE.LT.0.0)ISIGN=-1
26979        ENDIF
26980C
26981        IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'CORE')THEN
26982          WRITE(ICOUT,211)IR,ZSCORE,AJSCOR
26983  211     FORMAT('STEP 1: IR,ZSCORE,AJSCOR = ',I8,2G15.7)
26984          CALL DPWRST('XXX','BUG ')
26985        ENDIF
26986C
26987C       STEP 2: CONVERT NON-CUMULATIVE J-SCORE TO A CUMULATIVE J-SCORE
26988C
26989C               THERE ARE 2 SPECIAL CASES FOR THE CUMULAIVE Z-SCORE:
26990C
26991C                1) IF THE ABSOLUTE VALUE IS GREATER THAN 8, SET THE
26992C                   THE CURRENT J-SCORE TO 8 BUT RESET THE CUMULATIVE
26993C                   SUM TO 0.
26994C
26995C                2) IF THERE IS A CHANGE OF SIGN, SET THE CUMULATIVE
26996C                   J-SCORE FOR THAT CELL EQUAL TO THE NON-CUMULATIVE
26997C                   J-SCORE.  HOWEVER, RESET THE CUMULATIVE SCORE
26998C                   FOR THE NEXT CELL TO 0.
26999C
27000        IF(AJSCOR.LE.-8.0)THEN
27001          AJ=-8.0
27002          IF(AJPREV.LT.0.0)THEN
27003            SUM1=AJ + AJPREV
27004          ELSE
27005            SUM1=AJ
27006          ENDIF
27007          AJPREV=0.0
27008        ELSEIF(AJSCOR.GE.8.0)THEN
27009          AJ=8.0
27010          IF(AJPREV.GT.0.0)THEN
27011            SUM1=AJ + AJPREV
27012          ELSE
27013            SUM1=AJ
27014          ENDIF
27015          AJPREV=0.0
27016        ELSEIF(AJSCOR.LE.-4.0)THEN
27017          AJ=-4.0
27018          IF(AJPREV.LE.0.0)THEN
27019            SUM1=SUM1+AJ
27020            AJPREV=SUM1
27021          ELSE
27022            SUM1=AJ
27023            AJPREV=AJ
27024          ENDIF
27025        ELSEIF(AJSCOR.GE.4.0)THEN
27026          AJ=4.0
27027          IF(AJPREV.GE.0.0)THEN
27028            SUM1=SUM1+AJ
27029            AJPREV=SUM1
27030          ELSE
27031            SUM1=AJ
27032            AJPREV=AJ
27033          ENDIF
27034        ELSEIF(AJSCOR.LE.-2.0)THEN
27035          AJ=-2.0
27036          IF(AJPREV.LE.0.0)THEN
27037            SUM1=SUM1+AJ
27038            AJPREV=SUM1
27039          ELSE
27040            SUM1=AJ
27041            AJPREV=AJ
27042          ENDIF
27043        ELSEIF(AJSCOR.GE.2.0)THEN
27044          AJ=2.0
27045          IF(AJPREV.GE.0.0)THEN
27046            SUM1=SUM1+AJ
27047            AJPREV=SUM1
27048          ELSE
27049            SUM1=AJ
27050            AJPREV=AJ
27051          ENDIF
27052        ELSE
27053          IF(ISIGN.EQ.-1)THEN
27054            AJ=0.0
27055            IF(AJPREV.LE.0.0)THEN
27056              SUM1=SUM1+AJ
27057              AJPREV=SUM1
27058            ELSE
27059              SUM1=AJ
27060              AJPREV=AJ
27061            ENDIF
27062          ELSEIF(ISIGN.EQ.1)THEN
27063            AJ=0.0
27064            IF(AJPREV.GE.0.0)THEN
27065              SUM1=SUM1+AJ
27066              AJPREV=SUM1
27067            ELSE
27068              SUM1=AJ
27069              AJPREV=AJ
27070            ENDIF
27071          ENDIF
27072        ENDIF
27073C
27074        IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'CORE')THEN
27075          WRITE(ICOUT,131)IR,HOLD1,ZSCORE,AJ,AJPREV,SUM1
27076  131     FORMAT('IR,HOLD1,ZSCORE,AJ,AJPREV,SUM1 = ',I8,5G15.7)
27077          CALL DPWRST('XXX','BUG ')
27078        ENDIF
27079C
27080        Y(IR)=SUM1
27081        SUM1=AJPREV
27082  110 CONTINUE
27083C
27084C               *******************************
27085C               **  STEP 3--                 **
27086C               **  WRITE OUT A LINE         **
27087C               **  OF SUMMARY INFORMATION.  **
27088C               *******************************
27089C
27090      IF(IFEEDB.EQ.'ON' .AND. IWRITE.EQ.'ON')THEN
27091        WRITE(ICOUT,999)
27092        CALL DPWRST('XXX','BUG ')
27093        WRITE(ICOUT,811)NY
27094  811   FORMAT('THE NUMBER OF JSCORE VALUES GENERATED = ',I8)
27095        CALL DPWRST('XXX','BUG ')
27096      ENDIF
27097C
27098C               *****************
27099C               **  STEP 90--  **
27100C               **  EXIT.      **
27101C               *****************
27102C
27103 9000 CONTINUE
27104      IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'CORE')THEN
27105        WRITE(ICOUT,999)
27106        CALL DPWRST('XXX','BUG ')
27107        WRITE(ICOUT,9011)
27108 9011   FORMAT('***** AT THE END OF JSCORE--')
27109        CALL DPWRST('XXX','BUG ')
27110        DO9012I=1,NY
27111          WRITE(ICOUT,9015)I,Y(I)
27112 9015     FORMAT('I,Y(I) = ',I8,G15.7)
27113          CALL DPWRST('XXX','BUG ')
27114 9012   CONTINUE
27115      ENDIF
27116C
27117      RETURN
27118      END
27119      SUBROUTINE JSCTAB(Z,ROUND,MATID,N,IWRITE,
27120     1                  XIDTEM,XIDTE2,TEMP1,
27121     1                  Y,RNDOUT,MATOUT,NY,
27122     1                  IBUGA3,ISUBRO,IERROR)
27123C
27124C     PURPOSE--THIS SUBROUTINE COMPUTES THE JSCORE STATISTIC.
27125C              THIS IS USED IN ISO 13528 TYPE PROFICIENCY STUDIES.
27126C              THE INPUT IS ASSUMED TO BE A SERIES OF Z-SCORES
27127C              (THE ISO 13528 DEFINES MULTIPLE WAYS FOR COMPUTING
27128C              THE Z-SCORES, SO THIS COMMAND ASSUMES THAT THE INPUT
27129C              DATA IS ALREADY A Z-SCORE).
27130C
27131C              THE J-SCORE IS TYPICALLY DEFINED AS:
27132C
27133C                  IF  +3 <= Z          THEN J =  8
27134C                  IF  +2 <= Z <  +3    THEN J =  4
27135C                  IF  +1 <= Z <  +2    THEN J =  2
27136C                  IF  -1 <  Z <  +1    THEN J =  0
27137C                  IF  -2 <  Z <= -1    THEN J = -2
27138C                  IF  -3 <  Z <= -2    THEN J = -4
27139C                  IF  -3 <= Z          THEN J = -8
27140C
27141C              Z-SCORES ARE TYPICALLY COMPUTED OVER ONE OR MORE
27142C              MATERIALS AND ONE OR MORE ROUNDS.  J-SCORES ARE
27143C              TYPICALLY SUMMED OVER MULTIPLE ROUNDS UNTIL
27144C              ABS(JSCORE) >= 8.  THIS TYPICALLY TRIGGERS AN
27145C              ACTION SIGNAL AND THE J-SCORE IS RESET TO 0.
27146C              ALSO, WHEN SUCCESSIVE VALUES ARE OF DIFFERENT
27147C              SIGNS, THE JSCORE IS RESET TO 0.
27148C
27149C              THIS SUBROUTINE IS SIMILAR TO JSCORE.  THE DISTINCTION
27150C              IS THAT THIS ROUTINE PROCESSES MULTIPLE MATERIALS WHILE
27151C              JSCORE ASSUMES A SINGLE MATERIAL.  THIS ROUTINE WILL
27152C              RETURN THE CORRESPONDING ROUND AND MATERIAL ID'S FOR
27153C              THE CORRESPONDING J-SCORES.
27154C
27155C              IF THERE IS REPLICATION IN A ROUND, AN AVERAGE
27156C              Z-SCORE IS COMPUTED FOR THE ROUND BEFORE COMPUTING
27157C              THE J-SCORE.  ALTERNATIVELY, THE EXTREME Z-SCORE
27158C              CAN BE COMPUTED.
27159C
27160C              J-SCORES ARE TYPICALLY USED IN SHEWHART CONTROL
27161C              CHARTS AND ZONE PLOTS.
27162C
27163C     INPUT  ARGUMENTS--Z      = THE SINGLE PRECISION VECTOR OF
27164C                                Z-SCORES.
27165C                     --ROUND  = THE SINGLE PRECISION VECTOR THAT
27166C                                IDENTIFIES THE ROUND.
27167C                     --ROUND  = THE SINGLE PRECISION VECTOR THAT
27168C                                IDENTIFIES THE MATERIAL.
27169C                     --N      = THE INTEGER NUMBER OF OBSERVATIONS
27170C                                IN THE VECTORS Z AND ROUND.
27171C     OUTPUT ARGUMENTS--Y      = THE SINGLE PRECISION VECTOR OF THE
27172C                                COMPUTED JSCORE VALUES (ONE FOR EACH
27173C                                DISTINCT ROUND).
27174C                     --RNDOUT = THE SINGLE PRECISION VECTOR OF THE
27175C                                ROUND-ID CORRESPONDING TO THE J-SCORE.
27176C                     --MATOUT = THE SINGLE PRECISION VECTOR OF THE
27177C                                MATERIAL-ID CORRESPONDING TO THE J-SCORE.
27178C                     --NY     = THE INTEGER NUMBER OF OBSERVATIONS
27179C                                IN THE OUTPUT VECTOR Y.
27180C     OUTPUT--THE COMPUTED SINGLE PRECISION VECTOR OF THE JSCORE VALUES.
27181C     OTHER DATAPAC   SUBROUTINES NEEDED--DISTIN, SORT.
27182C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE.
27183C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
27184C     LANGUAGE--ANSI FORTRAN (1977)
27185C     REFERENCES--THOMPSON, ELLISON, WOOD (2006), "THE INTERNATIONAL
27186C                 HARMONIZED PROTOCOL FOR THE PROFICIENCY TESTING OF
27187C                 ANALYTICAL CHEMISTRY LABORATORIES", PURE APPLIED
27188C                 CHEMISTRY, VOL. 78, NO. 1, PP. 145-196.
27189C     REFERENCES--ISO 13528, FIRST EDITION, STATISTICAL METHODS FOR USE
27190C                 IN PROFICIENCY TESTING BY INTERLABORATORY COMPARISONS,
27191C                 2005, PP. 27-28.
27192C     WRITTEN BY--ALAN HECKERT
27193C                 STATISTICAL ENGINEERING DIVISION
27194C                 INFORMATION TECHNOLOGY LABORATORY
27195C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
27196C                 GAITHERSBURG, MD 20899-8980
27197C                 PHONE--301-975-2899
27198C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
27199C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
27200C     LANGUAGE--ANSI FORTRAN (1977)
27201C     VERSION NUMBER--2015.10
27202C     ORIGINAL VERSION--OCTOBER   2015.
27203C
27204C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
27205C
27206      CHARACTER*4 IWRITE
27207      CHARACTER*4 IBUGA3
27208      CHARACTER*4 ISUBRO
27209      CHARACTER*4 IERROR
27210C
27211      CHARACTER*4 ISUBN1
27212      CHARACTER*4 ISUBN2
27213C
27214C---------------------------------------------------------------------
27215C
27216      REAL Z(*)
27217      REAL ROUND(*)
27218      REAL MATID(*)
27219      REAL Y(*)
27220      REAL RNDOUT(*)
27221      REAL MATOUT(*)
27222      REAL XIDTEM(*)
27223      REAL XIDTE2(*)
27224      REAL TEMP1(*)
27225C
27226C-----COMMON----------------------------------------------------------
27227C
27228      INCLUDE 'DPCOST.INC'
27229      INCLUDE 'DPCOP2.INC'
27230C
27231C-----START POINT-----------------------------------------------------
27232C
27233      ISUBN1='JSCT'
27234      ISUBN2='AB  '
27235      IERROR='NO'
27236C
27237      ISIGN=-99
27238C
27239      IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'CTAB')THEN
27240        WRITE(ICOUT,999)
27241  999   FORMAT(1X)
27242        CALL DPWRST('XXX','BUG ')
27243        WRITE(ICOUT,51)
27244   51   FORMAT('***** AT THE BEGINNING OF JSCTAB--')
27245        CALL DPWRST('XXX','BUG ')
27246        WRITE(ICOUT,52)IBUGA3,ISUBRO,IWRITE,N
27247   52   FORMAT('IBUGA3,ISUBRO,IWRITE,N = ',3(A4,2X),I8)
27248        CALL DPWRST('XXX','BUG ')
27249        DO55I=1,N
27250          WRITE(ICOUT,56)I,Z(I),ROUND(I),MATID(I)
27251   56     FORMAT('I,Z(I),ROUND(I),MATID(I) = ',I8,3G15.7)
27252          CALL DPWRST('XXX','BUG ')
27253   55   CONTINUE
27254      ENDIF
27255C
27256C               ********************************************
27257C               **  STEP 1--                              **
27258C               **  CHECK THE INPUT ARGUMENTS FOR ERRORS  **
27259C               ********************************************
27260C
27261      AN=N
27262C
27263      IF(N.LT.1)THEN
27264        WRITE(ICOUT,999)
27265        CALL DPWRST('XXX','BUG ')
27266        WRITE(ICOUT,101)
27267  101   FORMAT('***** ERROR IN JSCORE--')
27268        CALL DPWRST('XXX','BUG ')
27269        WRITE(ICOUT,102)
27270  102   FORMAT('      THE NUMBER OF OBSERVATIONS IS NON-POSITIVE.')
27271        CALL DPWRST('XXX','BUG ')
27272        WRITE(ICOUT,103)N
27273  103   FORMAT('      THE INPUT NUMBER OF OBSERVATIONS = ',I8,'.')
27274        CALL DPWRST('XXX','BUG ')
27275        IERROR='YES'
27276        GOTO9000
27277      ENDIF
27278C
27279C               ****************************************************
27280C               **  STEP 2--                                     **
27281C               **  DETERMINE (AND SORT) THE UNIQUE VALUES FOR   **
27282C               **  ROUND-ID VARIABLE                            **
27283C               ****************************************************
27284C
27285      CALL DISTIN(ROUND,N,IWRITE,XIDTEM,NRND,IBUGA3,IERROR)
27286      CALL SORT(XIDTEM,NRND,XIDTEM)
27287      CALL DISTIN(MATID,N,IWRITE,XIDTE2,NMAT,IBUGA3,IERROR)
27288      CALL SORT(XIDTE2,NMAT,XIDTE2)
27289C
27290      IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'CTAB')THEN
27291        WRITE(ICOUT,201)NRND,NMAT
27292  201   FORMAT('NRND,NMAT = ',2I8)
27293        CALL DPWRST('XXX','BUG ')
27294      ENDIF
27295C
27296C               ***************************************************
27297C               **  STEP 3--                                     **
27298C               **  LOOP THROUGH EACH MATERIAL                   **
27299C               ***************************************************
27300C
27301      NY=0
27302      DO310IMAT=1,NMAT
27303        HOLD2=XIDTE2(IMAT)
27304C
27305C               ***************************************************
27306C               **  STEP 4--                                     **
27307C               **  COMPUTE THE JSCORE FOR EACH ROUND            **
27308C               **    1) COMPUTE THE AVERAGE Z-SCORE FOR THE     **
27309C               **       ROUND.                                  **
27310C               **    2) COMPUTE THE JSCORE FOR THE ROUND.       **
27311C               ***************************************************
27312C
27313C
27314        AJ=0.0
27315        AJPREV=0.0
27316        SUM1=0.0
27317        EPS=0.000001
27318C
27319        DO410IRND=1,NRND
27320          HOLD1=XIDTEM(IRND)
27321          K=0
27322          AMIN=CPUMAX
27323          AMAX=CPUMIN
27324          DO420J=1,N
27325            IF(ROUND(J).EQ.HOLD1 .AND. MATID(J).EQ.HOLD2)THEN
27326              K=K+1
27327              TEMP1(K)=Z(J)
27328            ENDIF
27329  420     CONTINUE
27330C
27331C         SUPPORT FOLLOWING OPTIONS FOR THE CASE WHEN THERE
27332C         IS REPLICATION WITHIN A ROUND.
27333C
27334C            1. TAKE THE AVERAGE OF THE Z-SCORES (THIS WAS THE
27335C               PREVIOUSLY IMPLMENTED OPTION.
27336C            2. TAKE THE MOST EXTREME Z-SCORE IN THE CELL.
27337C
27338          IF(K.EQ.0)THEN
27339            GOTO410
27340          ELSEIF(K.EQ.1)THEN
27341            ZSCORE=TEMP1(1)
27342          ELSE
27343            IF(IJSREP.EQ.'AVER')THEN
27344              CALL MEAN(TEMP1,K,IWRITE,ZSCORE,IBUGA3,IERROR)
27345            ELSEIF(IJSREP.EQ.'EXTR')THEN
27346              CALL MINIM(TEMP1,K,IWRITE,ZMIN,IBUGA3,IERROR)
27347              CALL MAXIM(TEMP1,K,IWRITE,ZMAX,IBUGA3,IERROR)
27348              ZSCORE=ZMIN
27349              IF(ABS(ZMAX).GT.ABS(ZMIN))ZSCORE=ZMAX
27350            ENDIF
27351          ENDIF
27352C
27353C         STEP 1: CONVERT Z-SCORE TO A NON-CUMULATIVE J-SCORE
27354C
27355          IF(ZSCORE.LE.-3.0)THEN
27356            AJSCOR=-8.0
27357          ELSEIF(ZSCORE.LE.-2.0)THEN
27358            AJSCOR=-4.0
27359          ELSEIF(ZSCORE.LE.-1.0)THEN
27360            AJSCOR=-2.0
27361          ELSEIF(ZSCORE.GE.3.0)THEN
27362            AJSCOR=8.0
27363          ELSEIF(ZSCORE.GE.2.0)THEN
27364            AJSCOR=4.0
27365          ELSEIF(ZSCORE.GE.1.0)THEN
27366            AJSCOR=2.0
27367          ELSE
27368            AJSCOR=0.0
27369            ISIGN=1
27370            IF(ZSCORE.LT.0.0)ISIGN=-1
27371          ENDIF
27372C
27373          IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'CTAB')THEN
27374            WRITE(ICOUT,411)IMAT,IR,ZSCORE,AJSCOR
27375  411       FORMAT('STEP 1: IMAT,IR,ZSCORE,AJSCOR = ',2I8,2G15.7)
27376            CALL DPWRST('XXX','BUG ')
27377          ENDIF
27378C
27379C         STEP 2: CONVERT NON-CUMULATIVE J-SCORE TO A CUMULATIVE J-SCORE
27380C
27381C                 THERE ARE 2 SPECIAL CASES FOR THE CUMULAIVE Z-SCORE:
27382C
27383C                  1) IF THE ABSOLUTE VALUE IS GREATER THAN 8, SET THE
27384C                     THE CURRENT J-SCORE TO 8 BUT RESET THE CUMULATIVE
27385C                     SUM TO 0.
27386C
27387C                  2) IF THERE IS A CHANGE OF SIGN, SET THE CUMULATIVE
27388C                     J-SCORE FOR THAT CELL EQUAL TO THE NON-CUMULATIVE
27389C                     J-SCORE.  HOWEVER, RESET THE CUMULATIVE SCORE
27390C                     FOR THE NEXT CELL TO 0.
27391C
27392          IF(AJSCOR.LE.-8.0)THEN
27393            AJ=-8.0
27394            IF(AJPREV.LT.0.0)THEN
27395              SUM1=AJ + AJPREV
27396            ELSE
27397              SUM1=AJ
27398            ENDIF
27399            AJPREV=0.0
27400          ELSEIF(AJSCOR.GE.8.0)THEN
27401            AJ=8.0
27402            IF(AJPREV.GT.0.0)THEN
27403              SUM1=AJ + AJPREV
27404            ELSE
27405              SUM1=AJ
27406            ENDIF
27407            AJPREV=0.0
27408          ELSEIF(AJSCOR.LE.-4.0)THEN
27409            AJ=-4.0
27410            IF(AJPREV.LE.0.0)THEN
27411              SUM1=SUM1+AJ
27412              AJPREV=SUM1
27413            ELSE
27414              SUM1=AJ
27415              AJPREV=AJ
27416            ENDIF
27417          ELSEIF(AJSCOR.GE.4.0)THEN
27418            AJ=4.0
27419            IF(AJPREV.GE.0.0)THEN
27420              SUM1=SUM1+AJ
27421              AJPREV=SUM1
27422            ELSE
27423              SUM1=AJ
27424              AJPREV=AJ
27425            ENDIF
27426          ELSEIF(AJSCOR.LE.-2.0)THEN
27427            AJ=-2.0
27428            IF(AJPREV.LE.0.0)THEN
27429              SUM1=SUM1+AJ
27430              AJPREV=SUM1
27431            ELSE
27432              SUM1=AJ
27433              AJPREV=AJ
27434            ENDIF
27435          ELSEIF(AJSCOR.GE.2.0)THEN
27436            AJ=2.0
27437            IF(AJPREV.GE.0.0)THEN
27438              SUM1=SUM1+AJ
27439              AJPREV=SUM1
27440            ELSE
27441              SUM1=AJ
27442              AJPREV=AJ
27443            ENDIF
27444          ELSE
27445            IF(ISIGN.EQ.-1)THEN
27446              AJ=0.0
27447              IF(AJPREV.LE.0.0)THEN
27448                SUM1=SUM1+AJ
27449                AJPREV=SUM1
27450              ELSE
27451                SUM1=AJ
27452                AJPREV=AJ
27453              ENDIF
27454            ELSEIF(ISIGN.EQ.1)THEN
27455              AJ=0.0
27456              IF(AJPREV.GE.0.0)THEN
27457                SUM1=SUM1+AJ
27458                AJPREV=SUM1
27459              ELSE
27460                SUM1=AJ
27461                AJPREV=AJ
27462              ENDIF
27463            ENDIF
27464          ENDIF
27465C
27466          IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'CTAB')THEN
27467            WRITE(ICOUT,431)HOLD2,HOLD1,ZSCORE,AJ,AJPREV,SUM1
27468  431       FORMAT('HOLD2,HOLD1,ZSCORE,AJ,AJPREV,SUM1 = ',6G15.7)
27469            CALL DPWRST('XXX','BUG ')
27470          ENDIF
27471C
27472          NY=NY+1
27473          Y(NY)=SUM1
27474          RNDOUT(NY)=HOLD1
27475          MATOUT(NY)=HOLD2
27476          SUM1=AJPREV
27477  410   CONTINUE
27478C
27479  310   CONTINUE
27480C
27481C               *******************************
27482C               **  STEP 3--                 **
27483C               **  WRITE OUT A LINE         **
27484C               **  OF SUMMARY INFORMATION.  **
27485C               *******************************
27486C
27487      IF(IFEEDB.EQ.'ON' .AND. IWRITE.EQ.'ON')THEN
27488        WRITE(ICOUT,999)
27489        CALL DPWRST('XXX','BUG ')
27490        WRITE(ICOUT,811)NY
27491  811   FORMAT('THE NUMBER OF JSCORE VALUES GENERATED = ',I8)
27492        CALL DPWRST('XXX','BUG ')
27493      ENDIF
27494C
27495C               *****************
27496C               **  STEP 90--  **
27497C               **  EXIT.      **
27498C               *****************
27499C
27500 9000 CONTINUE
27501      IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'CTAB')THEN
27502        WRITE(ICOUT,999)
27503        CALL DPWRST('XXX','BUG ')
27504        WRITE(ICOUT,9011)
27505 9011   FORMAT('***** AT THE END OF JSCTAB--')
27506        CALL DPWRST('XXX','BUG ')
27507        WRITE(ICOUT,9013)IERROR,NY
27508 9013   FORMAT('IERROR,NY = ',A4,2X,I8)
27509        CALL DPWRST('XXX','BUG ')
27510        IF(NY.GT.0)THEN
27511          DO9012I=1,NY
27512            WRITE(ICOUT,9015)I,Y(I),RNDOUT(I),MATOUT(I)
27513 9015       FORMAT('I,Y(I),RNDOUT(I),MATOUT(I) = ',I8,3G15.7)
27514            CALL DPWRST('XXX','BUG ')
27515 9012     CONTINUE
27516        ENDIF
27517      ENDIF
27518C
27519      RETURN
27520      END
27521      SUBROUTINE JSUCDF(X,ALPHA1,ALPHA2,CDF)
27522C
27523C     PURPOSE--THIS SUBROUTINE COMPUTES THE CUMULATIVE DISTRIBUTION
27524C              FUNCTION VALUE FOR THE JOHNSON SU SYSTEM DISTRIBUTION.
27525C              THIS DISTRIBUTION CAN BE DEFINED IN TERMS OF THE
27526C              NORMAL DISTRIBUTION:
27527C              F(X) = NORCDF(ALPHA1 + ALPHA2*LOG(X + SQRT(x**2+1))
27528C     INPUT  ARGUMENTS--X      = THE SINGLE PRECISION VALUE
27529C                                AT WHICH THE CUMULATIVE DISTRIBUTION
27530C                                FUNCTION IS TO BE EVALUATED.
27531C                                X SHOULD BE POSITIVE.
27532C                     --ALPHA1 = FIRST SHAPE PARAMETER
27533C                     --ALPHA2 = SECOND SHAPE PARAMETER
27534C     OUTPUT ARGUMENTS--CDF    = THE SINGLE PRECISION PROBABILITY
27535C                                DENSITY FUNCTION VALUE.
27536C     OUTPUT--THE SINGLE PRECISION CUMULATIVE DISTRIBUTION
27537C             FUNCTION VALUE CDF FOR THE JOHNSON SU
27538C             DISTRIBUTION.
27539C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
27540C     RESTRICTIONS--X SHOULD BE POSITIVE.
27541C     OTHER DATAPAC   SUBROUTINES NEEDED--NORCDF.
27542C     FORTRAN LIBRARY SUBROUTINES NEEDED--LOG.
27543C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
27544C     LANGUAGE--ANSI FORTRAN.
27545C     REFERENCES--JOHNSON AND KOTZ, CONTINUOUS UNIVARIATE
27546C                 DISTRIBUTIONS--1, 2ND ED., 1994, PAGE 34.
27547C     WRITTEN BY--JAMES J. FILLIBEN
27548C                 STATISTICAL ENGINEERING DIVISION
27549C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
27550C                 GAITHERSBURG, MD 20899-8980
27551C                 PHONE:  301-975-2855
27552C     ORIGINAL VERSION--SEPTEMBER 2001.
27553C
27554C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
27555C
27556      DOUBLE PRECISION DARG
27557      DOUBLE PRECISION DCDF
27558C
27559C-----COMMON----------------------------------------------------------
27560C
27561      INCLUDE 'DPCOP2.INC'
27562C
27563C---------------------------------------------------------------------
27564C
27565C     CHECK THE INPUT ARGUMENTS FOR ERRORS
27566C
27567      IF(ALPHA2.LE.0.0)THEN
27568        WRITE(ICOUT,14)
27569        CALL DPWRST('XXX','BUG ')
27570        WRITE(ICOUT,15)
27571        CALL DPWRST('XXX','BUG ')
27572        WRITE(ICOUT,46)ALPHA1
27573        CALL DPWRST('XXX','BUG ')
27574        CDF=0.0
27575        GOTO9000
27576      ENDIF
27577C
27578   14 FORMAT('***** ERROR--THE THIRD INPUT ARGUMENT TO THE JSUCDF ')
27579   15 FORMAT('      SUBROUTINE IS NON-POSITIVE.')
27580   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',E15.8,' *****')
27581C
27582C-----START POINT-----------------------------------------------------
27583C
27584      CDF=0.0
27585C
27586      ARG=ALPHA1 + ALPHA2*LOG(X + SQRT(X**2+1))
27587      DARG=DBLE(ARG)
27588      CALL NODCDF(DARG,DCDF)
27589      CDF=REAL(DCDF)
27590C
27591 9000 CONTINUE
27592      RETURN
27593      END
27594      SUBROUTINE JSUPDF(X,ALPHA1,ALPHA2,PDF)
27595C
27596C     PURPOSE--THIS SUBROUTINE COMPUTES THE PROBABILITY DENSITY
27597C              FUNCTION VALUE FOR THE JOHNSON SU SYSTEM DISTRIBUTION.
27598C              THIS DISTRIBUTION CAN BE DEFINED IN TERMS OF THE
27599C              NORMAL DISTRIBUTION:
27600C              F(X) = (ALPHA2/SQRT(X**2 + 1))*
27601C                     NORPDF(ALPHA1 + ALPHA2*LOG(X + SQRT(X**2+1)))
27602C     INPUT  ARGUMENTS--X      = THE SINGLE PRECISION VALUE
27603C                                AT WHICH THE PROBABILITY DENSITY
27604C                                FUNCTION IS TO BE EVALUATED.
27605C                                X SHOULD BE POSITIVE.
27606C                     --ALPHA1 = FIRST SHAPE PARAMETER
27607C                     --ALPHA2 = SECOND SHAPE PARAMETER
27608C     OUTPUT ARGUMENTS--CDF    = THE SINGLE PRECISION PROBABILITY
27609C                                DENSITY FUNCTION VALUE.
27610C     OUTPUT--THE SINGLE PRECISION PROBABILITY DENSITY
27611C             FUNCTION VALUE PDF FOR THE JOHNSON SU
27612C             DISTRIBUTION.
27613C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
27614C     RESTRICTIONS--X SHOULD BE POSITIVE.
27615C     OTHER DATAPAC   SUBROUTINES NEEDED--NORPDF.
27616C     FORTRAN LIBRARY SUBROUTINES NEEDED--LOG.
27617C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
27618C     LANGUAGE--ANSI FORTRAN.
27619C     REFERENCES--JOHNSON AND KOTZ, CONTINUOUS UNIVARIATE
27620C                 DISTRIBUTIONS--1, 2ND ED., 1994, PAGE 34.
27621C     WRITTEN BY--JAMES J. FILLIBEN
27622C                 STATISTICAL ENGINEERING DIVISION
27623C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
27624C                 GAITHERSBURG, MD 20899-8980
27625C                 PHONE:  301-975-2855
27626C     ORIGINAL VERSION--SEPTEMBER 2001.
27627C
27628C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
27629C
27630      DOUBLE PRECISION DARG
27631      DOUBLE PRECISION DX
27632      DOUBLE PRECISION DPDF
27633C
27634C-----COMMON----------------------------------------------------------
27635C
27636      INCLUDE 'DPCOP2.INC'
27637C
27638C---------------------------------------------------------------------
27639C
27640C     CHECK THE INPUT ARGUMENTS FOR ERRORS
27641C
27642      IF(ALPHA2.LE.0.0)THEN
27643        WRITE(ICOUT,14)
27644        CALL DPWRST('XXX','BUG ')
27645        WRITE(ICOUT,15)
27646        CALL DPWRST('XXX','BUG ')
27647        WRITE(ICOUT,46)ALPHA1
27648        CALL DPWRST('XXX','BUG ')
27649        PDF=0.0
27650        GOTO9000
27651      ENDIF
27652C
27653   14 FORMAT('***** ERROR--THE THIRD INPUT ARGUMENT TO THE JSUPDF ')
27654   15 FORMAT('      SUBROUTINE IS NON-POSITIVE.')
27655   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',E15.8,' *****')
27656C
27657C-----START POINT-----------------------------------------------------
27658C
27659      PDF=0.0
27660C
27661      ARG=ALPHA1 + ALPHA2*LOG(X + SQRT(X**2+1.0))
27662      DARG=DBLE(ARG)
27663      CALL NODPDF(DARG,DPDF)
27664      DX=DBLE(X)
27665      DPDF=(DBLE(ALPHA2)/DSQRT(DX*DX+1.0D0))*DPDF
27666      PDF=REAL(DPDF)
27667C
27668 9000 CONTINUE
27669      RETURN
27670      END
27671      SUBROUTINE JSUPPF(P,ALPHA1,ALPHA2,PPF)
27672C
27673C     WRITTEN BY--JAMES J. FILLIBEN
27674C                 STATISTICAL ENGINEERING DIVISION
27675C                 INFORMATION TECHNOLOGY LABORATORY
27676C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
27677C                 GAITHERSBURG, MD 20899-8980
27678C                 PHONE--301-975-2855
27679C     NOTE--THE PERCENT POINT FUNCTION FOR THE JOHNSON SU
27680C           FUNCTION IS:
27681C           G(P,ALPHA1,ALPHA2) = SINH[(NORPPF(P) - ALPHA1)/ALPHA2]
27682C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
27683C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
27684C     LANGUAGE--ANSI FORTRAN (1977)
27685C     VERSION NUMBER--2001/9
27686C     ORIGINAL VERSION--SEPTEMBER 2001.
27687C     UPDATED         --NOVEMBER  2003. USE CLOSED FORMULA BASED
27688C                                       ON NORPPF
27689C
27690C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES----------------
27691C
27692      DOUBLE PRECISION DTERM1
27693      DOUBLE PRECISION DTERM2
27694      DOUBLE PRECISION DTERM3
27695C
27696C-----COMMON-------------------------------------------------------
27697C
27698      INCLUDE 'DPCOP2.INC'
27699C
27700C-----START POINT---------------------------------------------------
27701C
27702C     CHECK THE INPUT ARGUMENTS FOR ERRORS
27703C
27704      IF(P.LE.0.0)THEN
27705        PPF=0.0
27706        GOTO9999
27707      ELSEIF(P.GE.1.0)THEN
27708        PPF=0.0
27709        GOTO9999
27710      ENDIF
27711C
27712      IF(ALPHA2.LE.0.0)THEN
27713        WRITE(ICOUT,14)
27714        CALL DPWRST('XXX','BUG ')
27715        WRITE(ICOUT,15)
27716        CALL DPWRST('XXX','BUG ')
27717        WRITE(ICOUT,46)ALPHA1
27718        CALL DPWRST('XXX','BUG ')
27719        PPF=0.0
27720        GOTO9999
27721      ENDIF
27722C
27723   14 FORMAT('***** ERROR--THE THIRD ARGUMENT TO JSUPPF ')
27724   15 FORMAT('      IS NON-POSITIVE.')
27725   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',G15.7,'.')
27726C
27727C  NOTE: NOVEMBER 2003.  USE CLOSED FORM SOLUTION FOR PPF FUNCTION.
27728C
27729      CALL NODPPF(DBLE(P),DTERM1)
27730      DTERM2=(DTERM1 - DBLE(ALPHA1))/DBLE(ALPHA2)
27731      DTERM3=(DEXP(DTERM2) - DEXP(-DTERM2))/2.0D0
27732      PPF=REAL(DTERM3)
27733C
27734 9999 CONTINUE
27735      RETURN
27736      END
27737      SUBROUTINE JSURAN(N,ALPHA1,ALPHA2,ISEED,X)
27738C
27739C     PURPOSE--THIS SUBROUTINE GENERATES A RANDOM SAMPLE OF SIZE N
27740C              FROM THE JOHNSON SU DISTRIBUTION
27741C              WITH SHAPE PARAMETER VALUES = ALPHA1, ALPHA2.
27742C     INPUT  ARGUMENTS--N      = THE DESIRED INTEGER NUMBER
27743C                                OF RANDOM NUMBERS TO BE
27744C                                GENERATED.
27745C                     --ALPHA1  = THE SINGLE PRECISION VALUE OF THE
27746C                                FIRST SHAPE PARAMETER.
27747C                                ALPHA1 SHOULD BE POSITIVE.
27748C                     --ALPHA2  = THE SINGLE PRECISION VALUE OF THE
27749C                                SECOND SHAPE PARAMETER.
27750C                                ALPHA2 SHOULD BE POSITIVE.
27751C     OUTPUT ARGUMENTS--X      = A SINGLE PRECISION VECTOR
27752C                                (OF DIMENSION AT LEAST N)
27753C                                INTO WHICH THE GENERATED
27754C                                RANDOM SAMPLE WILL BE PLACED.
27755C     OUTPUT--A RANDOM SAMPLE OF SIZE N
27756C             FROM THE JOHNSON SU DISTRIBUTION
27757C             WITH SHAPE PARAMETER VALUES = ALPHA1 AND ALPHA2.
27758C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
27759C     RESTRICTIONS--THERE IS NO RESTRICTION ON THE MAXIMUM VALUE
27760C                   OF N FOR THIS SUBROUTINE.
27761C                 --ALPHA2 SHOULD BE POSITIVE.
27762C     OTHER DATAPAC   SUBROUTINES NEEDED--UNIRAN.
27763C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE.
27764C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
27765C     LANGUAGE--ANSI FORTRAN (1977)
27766C     WRITTEN BY--JAMES J. FILLIBEN
27767C                 STATISTICAL ENGINEERING DIVISION
27768C                 INFORMATION TECHNOLOGY LABORATORY
27769C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
27770C                 GAITHERSBURG, MD 20899-8980
27771C                 PHONE--301-975-2855
27772C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
27773C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
27774C     LANGUAGE--ANSI FORTRAN (1977)
27775C     VERSION NUMBER--2001.10
27776C     ORIGINAL VERSION--OCTOBER   2001.
27777C
27778C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
27779C
27780C---------------------------------------------------------------------
27781C
27782      DIMENSION X(*)
27783C
27784C-----COMMON----------------------------------------------------------
27785C
27786      INCLUDE 'DPCOP2.INC'
27787C
27788C-----START POINT-----------------------------------------------------
27789C
27790C     CHECK THE INPUT ARGUMENTS FOR ERRORS
27791C
27792      IF(N.LT.1)THEN
27793        WRITE(ICOUT, 5)
27794        CALL DPWRST('XXX','BUG ')
27795        WRITE(ICOUT,47)N
27796        CALL DPWRST('XXX','BUG ')
27797        GOTO9000
27798      ENDIF
27799    5 FORMAT('***** FATAL ERROR--THE 1ST INPUT ARGUMENT TO THE ',
27800     1'JSURAN SUBROUTINE IS NON-POSITIVE *****')
27801   47 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',I8,' *****')
27802C
27803C     GENERATE N STANDARD NORMAL RANDOM NUMBERS;
27804C
27805      CALL NORRAN(N,ISEED,X)
27806C
27807C     GENERATE N JOHNSON SU DISTRIBUTION RANDOM NUMBERS
27808C     USING APPLIED STATISTICS ALGORITHM.
27809C
27810C     GENERATE N JOHNSON SU DISTRIBUTION RANDOM NUMBERS
27811C     USING APPLIED STATISTICS ALGORITHM AS100.
27812C
27813      ITYPE=2
27814      ALOC=0.0
27815      SCALE=1.0
27816      DO100I=1,N
27817        XTEMP=X(I)
27818        XTEMP2=AJV(XTEMP,ITYPE,ALPHA1,ALPHA2,SCALE,ALOC,IFAULT)
27819        X(I)=XTEMP2
27820  100 CONTINUE
27821C
27822 9000 CONTINUE
27823      RETURN
27824      END
27825      DOUBLE PRECISION FUNCTION K0INT(XVALUE)
27826C
27827C   DESCRIPTION:
27828C
27829C      This function calculates the integral of the modified Bessel function
27830C      defined by
27831C
27832C         K0INT(x) = {integral 0 to x} K0(t) dt
27833C
27834C      The code uses Chebyshev expansions, whose coefficients are
27835C      given to 20 decimal places.
27836C
27837C
27838C   ERROR RETURNS:
27839C
27840C      If XVALUE < 0.0, the function is undefined. An error message is
27841C      printed and the function returns the value 0.0.
27842C
27843C
27844C   MACHINE-DEPENDENT CONSTANTS:
27845C
27846C      NTERM1 - The no. of terms to be used in the array AK0IN1. The
27847C                recommended value is such that
27848C                   ABS(AK0IN1(NTERM1)) < EPS/100,
27849C
27850C      NTERM2 - The no. of terms to be used in the array AK0IN2. The
27851C                recommended value is such that
27852C                   ABS(AK0IN2(NTERM2)) < EPS/100,
27853C
27854C      NTERM3 - The no. of terms to be used in the array AK0INA. The
27855C                recommended value is such that
27856C                   ABS(AK0INA(NTERM3)) < EPS/100,
27857C
27858C      XLOW - The value below which K0INT = x * ( const - ln(x) ) to
27859C             machine precision. The recommended value is
27860C                   sqrt (18*EPSNEG).
27861C
27862C      XHIGH - The value above which K0INT = pi/2 to machine precision.
27863C              The recommended value is
27864C                   - log (2*EPSNEG)
27865C
27866C      For values of EPS and EPSNEG refer to the file MACHCON.TXT.
27867C
27868C      The machine-dependent constants are computed internally by
27869C      using the D1MACH subroutine.
27870C
27871C
27872C   INTRINSIC FUNCTIONS USED:
27873C
27874C      EXP , LOG , SQRT
27875C
27876C
27877C   OTHER MISCFUN SUBROUTINES USED:
27878C
27879C          CHEVAL , ERRPRN, D1MACH
27880C
27881C
27882C   AUTHOR:
27883C         Dr. Allan J. MacLeod,
27884C         Dept. of Mathematics and Statistics,
27885C         University of Paisley,
27886C         High St.,
27887C         Paisley,
27888C         SCOTLAND
27889C
27890C         (e-mail: macl_ms0@paisley.ac.uk )
27891C
27892C
27893C   LATEST REVISION:
27894C                   23 January, 1996
27895C
27896      INTEGER NTERM1,NTERM2,NTERM3
27897      DOUBLE PRECISION AK0IN1(0:15),AK0IN2(0:15),AK0INA(0:27),
27898     1     CHEVAL,CONST1,CONST2,EIGHTN,FVAL,HALF,
27899     2     ONEHUN,PIBY2,RT2BPI,SIX,T,TEMP,TWELVE,X,
27900     3     XHIGH,XLOW,XVALUE,ZERO
27901C
27902C-----COMMON----------------------------------------------------------
27903C
27904      INCLUDE 'DPCOMC.INC'
27905      INCLUDE 'DPCOP2.INC'
27906C
27907CCCCC CHARACTER FNNAME*8,ERRMSG*14
27908CCCCC DATA FNNAME/'K0INT '/
27909CCCCC DATA ERRMSG/'ARGUMENT < 0.0'/
27910      DATA ZERO,HALF,SIX/ 0.0 D 0 , 0.5 D 0 , 6.0 D 0 /
27911      DATA TWELVE,EIGHTN,ONEHUN/ 12.0 D 0 , 18.0 D 0 , 100.0 D 0 /
27912      DATA CONST1/1.11593 15156 58412 44881 D 0/
27913      DATA CONST2/-0.11593 15156 58412 44881 D 0/
27914      DATA PIBY2/1.57079 63267 94896 61923 D 0/
27915      DATA RT2BPI/0.79788 45608 02865 35588 D 0/
27916      DATA AK0IN1/16.79702 71446 47109 59477  D    0,
27917     1             9.79134 68767 68894 07070  D    0,
27918     2             2.80501 31604 43379 39300  D    0,
27919     3             0.45615 62053 18885 02068  D    0,
27920     4             0.47162 24457 07476 0784   D   -1,
27921     5             0.33526 51482 69698 289    D   -2,
27922     6             0.17335 18119 38747 27     D   -3,
27923     7             0.67995 18893 64702        D   -5,
27924     8             0.20900 26835 9924         D   -6,
27925     9             0.51660 38469 76           D   -8,
27926     X             0.10485 70833 1            D   -9,
27927     1             0.17782 9320               D  -11,
27928     2             0.25568 44                 D  -13,
27929     3             0.31557                    D  -15,
27930     4             0.338                      D  -17,
27931     5             0.3                        D  -19/
27932      DATA AK0IN2/10.76266 55822 78091 74077  D    0,
27933     1             5.62333 47984 99975 11550  D    0,
27934     2             1.43543 66487 92908 67158  D    0,
27935     3             0.21250 41014 37438 96043  D    0,
27936     4             0.20365 37393 10000 9554   D   -1,
27937     5             0.13602 35840 95623 632    D   -2,
27938     6             0.66753 88699 20909 3      D   -4,
27939     7             0.25043 00357 07337        D   -5,
27940     8             0.74064 23741 728          D   -7,
27941     9             0.17697 47043 14           D   -8,
27942     X             0.34857 75254              D  -10,
27943     1             0.57544 785                D  -12,
27944     2             0.80748 1                  D  -14,
27945     3             0.9747                     D  -16,
27946     4             0.102                      D  -17,
27947     5             0.1                        D  -19/
27948      DATA AK0INA(0)/  1.91172 06544 50604 53895  D    0/
27949      DATA AK0INA(1)/ -0.41830 64565 76958 1085   D   -1/
27950      DATA AK0INA(2)/  0.21335 25080 68147 486    D   -2/
27951      DATA AK0INA(3)/ -0.15859 49728 45041 81     D   -3/
27952      DATA AK0INA(4)/  0.14976 24699 85835 1      D   -4/
27953      DATA AK0INA(5)/ -0.16795 59553 22241        D   -5/
27954      DATA AK0INA(6)/  0.21495 47247 8804         D   -6/
27955      DATA AK0INA(7)/ -0.30583 56654 790          D   -7/
27956      DATA AK0INA(8)/  0.47494 64133 43           D   -8/
27957      DATA AK0INA(9)/ -0.79424 66043 2            D   -9/
27958      DATA AK0INA(10)/ 0.14156 55532 5            D   -9/
27959      DATA AK0INA(11)/-0.26678 25359              D  -10/
27960      DATA AK0INA(12)/ 0.52814 9717               D  -11/
27961      DATA AK0INA(13)/-0.10926 3199               D  -11/
27962      DATA AK0INA(14)/ 0.23518 838                D  -12/
27963      DATA AK0INA(15)/-0.52479 91                 D  -13/
27964      DATA AK0INA(16)/ 0.12101 91                 D  -13/
27965      DATA AK0INA(17)/-0.28763 2                  D  -14/
27966      DATA AK0INA(18)/ 0.70297                    D  -15/
27967      DATA AK0INA(19)/-0.17631                    D  -15/
27968      DATA AK0INA(20)/ 0.4530                     D  -16/
27969      DATA AK0INA(21)/-0.1190                     D  -16/
27970      DATA AK0INA(22)/ 0.319                      D  -17/
27971      DATA AK0INA(23)/-0.87                       D  -18/
27972      DATA AK0INA(24)/ 0.24                       D  -18/
27973      DATA AK0INA(25)/-0.7                        D  -19/
27974      DATA AK0INA(26)/ 0.2                        D  -19/
27975      DATA AK0INA(27)/-0.1                        D  -19/
27976C
27977      XLOW=CPUMIN
27978C
27979C   Start computation
27980C
27981      X = XVALUE
27982C
27983C   Error test
27984C
27985      IF ( X .LT. ZERO ) THEN
27986CCCCC    CALL ERRPRN(FNNAME,ERRMSG)
27987         WRITE(ICOUT,999)
27988         CALL DPWRST('XXX','BUG ')
27989         WRITE(ICOUT,101)X
27990         CALL DPWRST('XXX','BUG ')
27991         K0INT = ZERO
27992         RETURN
27993      ENDIF
27994  999 FORMAT(1X)
27995  101 FORMAT('***** ERROR FROM I0INT--ARGUMENT MUST BE ',
27996     1        'NON-NEGATIVE, ARGUMENT = ',G15.7)
27997C
27998C   Compute the machine-dependent constants.
27999C
28000      TEMP = D1MACH(3)
28001      T = TEMP / ONEHUN
28002      IF ( X .LE. SIX ) THEN
28003         DO 10 NTERM1 = 15 , 0 , -1
28004            IF ( ABS(AK0IN1(NTERM1)) .GT. T ) GOTO 19
28005 10      CONTINUE
28006 19      DO 20 NTERM2 = 15 , 0 , -1
28007            IF ( ABS(AK0IN2(NTERM2)) .GT. T ) GOTO 29
28008 20      CONTINUE
28009 29      XLOW = SQRT ( EIGHTN * TEMP )
28010      ELSE
28011         DO 40 NTERM3 = 27 , 0 , -1
28012            IF ( ABS(AK0INA(NTERM3)) .GT. T ) GOTO 49
28013 40      CONTINUE
28014 49      XHIGH = - LOG ( TEMP + TEMP )
28015      ENDIF
28016C
28017C   Code for 0 <= XVALUE <= 6
28018C
28019      IF ( X .LE. SIX ) THEN
28020         IF ( X .LT. XLOW ) THEN
28021            FVAL = X
28022            IF ( X .GT. ZERO ) THEN
28023               FVAL = FVAL * ( CONST1 - LOG(X) )
28024            ENDIF
28025            K0INT = FVAL
28026         ELSE
28027            T = ( ( X * X ) / EIGHTN - HALF ) - HALF
28028            FVAL = ( CONST2 + LOG(X) ) * CHEVAL(NTERM2,AK0IN2,T)
28029            K0INT = X * ( CHEVAL(NTERM1,AK0IN1,T) - FVAL )
28030         ENDIF
28031C
28032C   Code for x > 6
28033C
28034      ELSE
28035         FVAL = PIBY2
28036         IF ( X .LT. XHIGH ) THEN
28037            T = ( TWELVE / X - HALF ) - HALF
28038            TEMP = EXP(-X) * CHEVAL(NTERM3,AK0INA,T)
28039            FVAL = FVAL - TEMP / ( SQRT(X) * RT2BPI)
28040         ENDIF
28041         K0INT = FVAL
28042      ENDIF
28043      RETURN
28044      END
28045      SUBROUTINE KAPCDF(DX,DK,DH,DXI,DALPHA,DCDF)
28046C
28047C     PURPOSE--THIS SUBROUTINE COMPUTES THE CUMULATIVE DISTRIBUTION
28048C              FUNCTION VALUE FOR THE KAPPA DISTRIBUTION
28049C              WITH SHAPE PARAMETERS K AND H.
28050C              THE CDF FOR THE DISTRIBUTION IS
28051C
28052C              F(X) = [1 - H*[1 - k*(X - XI)/ALPHA]**(1/K)]**(1/H)
28053C
28054C                     X < XI + ALPHA*(1 - H**(-K)    IF K >  0
28055C                     X < INFINITY                   IF K <= 0
28056C
28057C                     X > XI + ALPHA*(1 - H**(-K))/K  IF H >  0
28058C                     X > XI ALPHA/K                  IF H <= 0, K <  0
28059C                     X > -INFINITY                   IF H <= 0, K >= 0
28060C
28061C     INPUT  ARGUMENTS--DX     = THE DOUBLE PRECISION VALUE AT
28062C                                WHICH THE CUMULATIVE DISTRIBUTION
28063C                                FUNCTION IS TO BE EVALUATED.
28064C                     --DK     = THE FIRST SHAPE PARAMETER
28065C                     --DH     = THE SECOND SHAPE PARAMETER
28066C                     --DXI    = THE LOCATION PARAMETER
28067C                     --DALPHA = THE SCALE PARAMETER
28068C     OUTPUT ARGUMENTS--DCDF   = THE DOUBLE PRECISION CUMULATIVE
28069C                                DISTRIBUTION FUNCTION VALUE.
28070C     OUTPUT--THE DOUBLE PRECISION CUMULATIVE DISTRIBUTION
28071C             FUNCTION VALUE CDF FOR THE KAPPA DISTRIBUTION
28072C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
28073C     RESTRICTIONS--RANGE OF X DEPENDENT ON H AND K
28074C     LANGUAGE--ANSI FORTRAN (1977)
28075C     REFERENCES--HOSKING AND WALLIS (1997), "REGIONAL FREQUENCY
28076C                 ANALYSIS: xxx", CAMBRIDGE UNVERSITY PRESS,
28077C                 PP. 202-204.
28078C     WRITTEN BY--JAMES J. FILLIBEN
28079C                 STATISTICAL ENGINEERING DIVISION
28080C                 INFORMATION TECHNOLOGY LABORATORY
28081C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
28082C                 GAITHERSBURG, MD 20899-8980
28083C                 PHONE--301-975-2855
28084C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
28085C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
28086C     LANGUAGE--ANSI FORTRAN (1977)
28087C     VERSION NUMBER--2008/5
28088C     ORIGINAL VERSION--MAY       2008.
28089C
28090C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
28091C
28092C---------------------------------------------------------------------
28093C
28094      DOUBLE PRECISION DX
28095      DOUBLE PRECISION DK
28096      DOUBLE PRECISION DH
28097      DOUBLE PRECISION DALPHA
28098      DOUBLE PRECISION DXI
28099      DOUBLE PRECISION DCDF
28100      DOUBLE PRECISION DTERM1
28101      DOUBLE PRECISION CDFKAP
28102      EXTERNAL CDFKAP
28103C
28104      DOUBLE PRECISION PARA(4)
28105C
28106C-----COMMON----------------------------------------------------------
28107C
28108      INCLUDE 'DPCOP2.INC'
28109C
28110C-----DATA STATEMENTS-------------------------------------------------
28111C
28112C-----START POINT-----------------------------------------------------
28113C
28114C     CHECK THE INPUT ARGUMENTS FOR ERRORS
28115C
28116      IF(DALPHA.LE.0.0D0)THEN
28117        WRITE(ICOUT,35)
28118        CALL DPWRST('XXX','BUG ')
28119        WRITE(ICOUT,46)DALPHA
28120        CALL DPWRST('XXX','BUG ')
28121        DCDF=0.0D0
28122        GOTO9999
28123      ENDIF
28124   35 FORMAT('***** ERROR--THE THIRD ARGUMENT TO KAPCDF ',
28125     1       '(THE SCALE PARAMETER) IS NON-POSITIVE')
28126C
28127      DTERM1=DXI + DALPHA/DK
28128      IF(DK.GT.0.0D0 .AND. DX.GT.DTERM1)THEN
28129CCCCC   WRITE(ICOUT,5)
28130CCCCC   CALL DPWRST('XXX','BUG ')
28131CCCCC   WRITE(ICOUT,6)
28132CCCCC   CALL DPWRST('XXX','BUG ')
28133CCCCC   WRITE(ICOUT,46)DX
28134CCCCC   CALL DPWRST('XXX','BUG ')
28135CCCCC   WRITE(ICOUT,7)DTERM1
28136CCCCC   CALL DPWRST('XXX','BUG ')
28137        DCDF=1.0D0
28138        GOTO9999
28139      ENDIF
28140CCCC5 FORMAT('***** ERROR--THE FIRST ARGUMENT TO KAPCDF IS ',
28141CCCCC1       '> XI + ALPHA/K')
28142CCCC6 FORMAT('      WHEN THE FIRST SHAPE PARAMETER (K) IS POSITIVE.')
28143CCCC7 FORMAT('      THE VALUE OF XI + ALPHA/K IS ',G15.7)
28144C
28145      DTERM1=DXI + DALPHA*(1.0D0 - DH**(-DK))/DK
28146      IF(DH.GT.0.0D0 .AND. DX.LT.DTERM1)THEN
28147CCCCC   WRITE(ICOUT,15)
28148CCCCC   CALL DPWRST('XXX','BUG ')
28149CCCCC   WRITE(ICOUT,16)
28150CCCCC   CALL DPWRST('XXX','BUG ')
28151CCCCC   WRITE(ICOUT,46)DX
28152CCCCC   CALL DPWRST('XXX','BUG ')
28153CCCCC   WRITE(ICOUT,17)DTERM1
28154CCCCC   CALL DPWRST('XXX','BUG ')
28155        DCDF=0.0D0
28156        GOTO9999
28157      ENDIF
28158CCC15 FORMAT('***** ERROR--THE FIRST ARGUMENT TO KAPCDF IS ',
28159CCCCC1       '< XI + ALPHA*(1 - H**(-K))')
28160CCC16 FORMAT('      WHEN THE SECOND SHAPE PARAMETER (H) IS POSITIVE.')
28161CCC17 FORMAT('      THE VALUE OF XI + ALPHA*(1 - H**(-K))/K IS ',
28162CCCCC1       G15.7)
28163C
28164      DTERM1=DXI + DALPHA/DK
28165      IF(DH.LE.0.0D0 .AND. DK.GT.0.0D0 .AND. DX.LT.DTERM1)THEN
28166CCCCC   WRITE(ICOUT,25)
28167CCCCC   CALL DPWRST('XXX','BUG ')
28168CCCCC   WRITE(ICOUT,26)
28169CCCCC   CALL DPWRST('XXX','BUG ')
28170CCCCC   WRITE(ICOUT,27)
28171CCCCC   CALL DPWRST('XXX','BUG ')
28172CCCCC   WRITE(ICOUT,46)DX
28173CCCCC   CALL DPWRST('XXX','BUG ')
28174CCCCC   WRITE(ICOUT,28)DTERM1
28175CCCCC   CALL DPWRST('XXX','BUG ')
28176        DCDF=0.0D0
28177        GOTO9999
28178      ENDIF
28179CCC25 FORMAT('***** ERROR--THE FIRST ARGUMENT TO KAPCDF IS ',
28180CCCCC1       '< XI + ALPHA/K')
28181CCC26 FORMAT('      WHEN THE SECOND SHAPE PARAMETER (H) IS POSITIVE')
28182CCC27 FORMAT('      AND THE SECOND SHAPE PARAMETER (K) IS NEGATIVE.')
28183CCC28 FORMAT('      THE VALUE OF XI + ALPHA/K IS ',G15.7)
28184C
28185   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',G15.7)
28186C
28187      PARA(1)=DXI
28188      PARA(2)=DALPHA
28189      PARA(3)=DK
28190      PARA(4)=DH
28191      DCDF=CDFKAP(DX,PARA)
28192C
28193 9999 CONTINUE
28194      RETURN
28195      END
28196      SUBROUTINE KAPML1(Y,N,
28197     1                  DTEMP1,XMOM,NMOM,
28198     1                  XMEAN,XSD,XVAR,XMIN,XMAX,
28199     1                  ALOCLM,SCALLM,SHA1LM,SHA2LM,
28200     1                  ISUBRO,IBUGA3,IERROR)
28201C
28202C     PURPOSE--THIS ROUTINE COMPUTES THE L-MOMENTS ESTIMATES FOR THE
28203C              KAPPA DISTRIBUTION FOR THE RAW DATA CASE (I.E.,
28204C              NO CENSORING AND NO GROUPING).  THIS ROUTINE RETURNS ONLY
28205C              THE POINT ESTIMATES.
28206C
28207C              IT IS ASSUMED THAT BASIC ERROR CHECKING HAS ALREADY BEEN
28208C              PERFORMED.
28209C
28210C              PUT THIS IN A SEPARATE ROUTINE AS IT MAY BE CALLED
28211C              FROM MULTIPLE PLACES (DPMLKP WILL GENERATE THE OUTPUT
28212C              FOR THE KAPPA MLE COMMAND).
28213C
28214C     REFERENCE--FORTRAN CODE WRITTEN FOR INCLUSION IN IBM
28215C                RESEARCH REPORT RC20525, 'FORTRAN ROUTINES FOR
28216C                USE WITH THE METHOD OF L-MOMENTS, VERSION 3',
28217C                J. R. M. HOSKING, IBM RESEARCH DIVISION,
28218C                T. J. WATSON RESEARCH CENTER, YORKTOWN HEIGHTS
28219C                NEW YORK 10598, U.S.A., VERSION 3     AUGUST 1996
28220C     WRITTEN BY--ALAN HECKERT
28221C                 STATISTICAL ENGINEERING DIVISION
28222C                 INFORMATION TECHNOLOGY LABORATORY
28223C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
28224C                 GAITHERSBURG, MD 20899-8980
28225C                 PHONE--301-975-2899
28226C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
28227C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
28228C     LANGUAGE--ANSI FORTRAN (1977)
28229C     VERSION NUMBER--2010/7
28230C     ORIGINAL VERSION--JULY      2010. EXTRACTED AS A SEPARATE
28231C                                       SUBROUTINE (FROM DPMLKP)
28232C
28233C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
28234C
28235      DIMENSION Y(*)
28236      DOUBLE PRECISION DTEMP1(*)
28237      DOUBLE PRECISION XMOM(*)
28238      DOUBLE PRECISION XPAR(4)
28239C
28240      CHARACTER*4 ISUBRO
28241      CHARACTER*4 IBUGA3
28242      CHARACTER*4 IERROR
28243C
28244      CHARACTER*4 IWRITE
28245      CHARACTER*40 IDIST
28246C
28247      CHARACTER*4 ISUBN1
28248      CHARACTER*4 ISUBN2
28249      CHARACTER*4 ISTEPN
28250C
28251C-----COMMON----------------------------------------------------------
28252C
28253      INCLUDE 'DPCOP2.INC'
28254C
28255C-----START POINT-----------------------------------------------------
28256C
28257      ISUBN1='KAPM'
28258      ISUBN2='L1  '
28259      IERROR='NO'
28260      IWRITE='NO'
28261C
28262      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'PML1')THEN
28263        WRITE(ICOUT,999)
28264  999   FORMAT(1X)
28265        CALL DPWRST('XXX','WRIT')
28266        WRITE(ICOUT,51)
28267   51   FORMAT('**** AT THE BEGINNING OF KAPML1--')
28268        CALL DPWRST('XXX','WRIT')
28269        WRITE(ICOUT,52)IBUGA3,ISUBRO,N
28270   52   FORMAT('IBUGA3,ISUBRO,N = ',A4,2X,A4,2X,I8)
28271        CALL DPWRST('XXX','WRIT')
28272        DO56I=1,MIN(N,100)
28273          WRITE(ICOUT,57)I,Y(I)
28274   57     FORMAT('I,Y(I) = ',I8,G15.7)
28275          CALL DPWRST('XXX','WRIT')
28276   56   CONTINUE
28277      ENDIF
28278C
28279C               *******************************************
28280C               **  STEP 2--                             **
28281C               **  CARRY OUT CALCULATIONS               **
28282C               **  FOR KAPPA MLE ESTIMATE               **
28283C               *******************************************
28284C
28285      ISTEPN='2'
28286      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'PML1')
28287     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
28288C
28289      IDIST='KAPPA'
28290      ALOCLM=CPUMIN
28291      SCALLM=CPUMIN
28292      SHA1LM=CPUMIN
28293      SHA2LM=CPUMIN
28294C
28295      IFLAG=0
28296      CALL SUMRAW(Y,N,IDIST,IFLAG,
28297     1            XMEAN,XVAR,XSD,XMIN,XMAX,
28298     1            ISUBRO,IBUGA3,IERROR)
28299C
28300      CALL SORT(Y,N,Y)
28301      NMOM=4
28302      DO2110I=1,N
28303        DTEMP1(I)=DBLE(Y(I))
28304 2110 CONTINUE
28305      CALL SAMLMU(DTEMP1,N,XMOM,NMOM)
28306C
28307      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'PML1')THEN
28308        WRITE(ICOUT,2120)XMOM(1),XMOM(2),XMOM(3),XMOM(4)
28309 2120   FORMAT('XMOM(1),XMOM(2),XMOM(3),XMOM(4) = ',4G15.7)
28310        CALL DPWRST('XXX','WRIT')
28311      ENDIF
28312C
28313      CALL PELKAP(XMOM,XPAR,IFAIL)
28314C
28315      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'MLKP')THEN
28316        WRITE(ICOUT,2130)XPAR(1),XPAR(2),XPAR(3),XPAR(4)
28317 2130   FORMAT('XPAR(1),XPAR(2),XPAR(3),XPAR(4) = ',4G15.7)
28318        CALL DPWRST('XXX','WRIT')
28319      ENDIF
28320C
28321      IF(IFAIL.GE.1)GOTO9000
28322C
28323      ALOCLM=REAL(XPAR(1))
28324      SCALLM=REAL(XPAR(2))
28325      SHA1LM=REAL(XPAR(3))
28326      SHA2LM=REAL(XPAR(4))
28327C
28328 9000 CONTINUE
28329      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'PML1')THEN
28330        WRITE(ICOUT,999)
28331        CALL DPWRST('XXX','WRIT')
28332        WRITE(ICOUT,9011)
28333 9011   FORMAT('**** AT THE END OF KAPML1--')
28334        CALL DPWRST('XXX','WRIT')
28335        WRITE(ICOUT,9013)N,XMEAN,XSD,XMIN,XMAX
28336 9013   FORMAT('N,XMEAN,XSD,XMIN,XMAX = ',I8,4G15.7)
28337        CALL DPWRST('XXX','WRIT')
28338        WRITE(ICOUT,9017)SHA1LM,SHA2LM,SCALLM,ALOCLM
28339 9017   FORMAT('SHA1ML,SHA2ML,SCALML,ALOCML =  ',4G15.7)
28340        CALL DPWRST('XXX','WRIT')
28341      ENDIF
28342C
28343      RETURN
28344      END
28345      SUBROUTINE KAPPDF(DX,DK,DH,DXI,DALPHA,DPDF)
28346C
28347C     PURPOSE--THIS SUBROUTINE COMPUTES THE PROBABILITY DENSITY
28348C              FUNCTION VALUE FOR THE KAPPA DISTRIBUTION
28349C              WITH SHAPE PARAMETERS K AND H.
28350C              THE PDF FOR THE KAPPA DISTRIBUTION IS
28351C
28352C              f(X;K,H,XI,ALPHA) =
28353C                  (1/ALPHA)*[1 - K*(X-XI)/ALPHA]**((1/K)-1)*
28354C                  [F(X;K,H,XI,ALPHA)]**(1-H)
28355C
28356C              WHERE F IS THE KAPPA CUMULATIVE DISTRIBUTION
28357C              FUNCTION.
28358C
28359C                     X < XI + ALPHA*(1 - H**(-K)    IF K >  0
28360C                     X < INFINITY                   IF K <= 0
28361C
28362C                     X > XI + ALPHA*(1 - H**(-K))/K  IF H >  0
28363C                     X > XI ALPHA/K                  IF H <= 0, K <  0
28364C                     X > -INFINITY                   IF H <= 0, K >= 0
28365C
28366C     INPUT  ARGUMENTS--DX     = THE DOUBLE PRECISION VALUE AT
28367C                                WHICH THE PROBABILITY DENSITY
28368C                                FUNCTION IS TO BE EVALUATED.
28369C                     --DK     = THE FIRST SHAPE PARAMETER
28370C                     --DH     = THE SECOND SHAPE PARAMETER
28371C                     --DXI    = THE LOCATION PARAMETER
28372C                     --DALPHA = THE SCALE PARAMETER
28373C     OUTPUT ARGUMENTS--DPDF   = THE DOUBLE PRECISION PROBABILITY
28374C                                DENSITY FUNCTION VALUE.
28375C     OUTPUT--THE DOUBLE PRECISION PROBABILITY DENSITY
28376C             FUNCTION VALUE PDF FOR THE KAPPA DISTRIBUTION
28377C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
28378C     RESTRICTIONS--RANGE OF X DEPENDENT ON H AND K
28379C     LANGUAGE--ANSI FORTRAN (1977)
28380C     REFERENCES--HOSKING AND WALLIS (1997), "REGIONAL FREQUENCY
28381C                 ANALYSIS: xxx", CAMBRIDGE UNVERSITY PRESS,
28382C                 PP. 202-204.
28383C     WRITTEN BY--JAMES J. FILLIBEN
28384C                 STATISTICAL ENGINEERING DIVISION
28385C                 INFORMATION TECHNOLOGY LABORATORY
28386C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
28387C                 GAITHERSBURG, MD 20899-8980
28388C                 PHONE--301-975-2855
28389C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
28390C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
28391C     LANGUAGE--ANSI FORTRAN (1977)
28392C     VERSION NUMBER--2008/5
28393C     ORIGINAL VERSION--MAY       2008.
28394C
28395C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
28396C
28397C---------------------------------------------------------------------
28398C
28399      DOUBLE PRECISION DX
28400      DOUBLE PRECISION DK
28401      DOUBLE PRECISION DH
28402      DOUBLE PRECISION DALPHA
28403      DOUBLE PRECISION DXI
28404      DOUBLE PRECISION DPDF
28405      DOUBLE PRECISION DTERM1
28406      DOUBLE PRECISION DTERM2
28407      DOUBLE PRECISION CDFKAP
28408      EXTERNAL CDFKAP
28409C
28410      DOUBLE PRECISION PARA(4)
28411C
28412C-----COMMON----------------------------------------------------------
28413C
28414      INCLUDE 'DPCOP2.INC'
28415C
28416C-----DATA STATEMENTS-------------------------------------------------
28417C
28418C-----START POINT-----------------------------------------------------
28419C
28420C     CHECK THE INPUT ARGUMENTS FOR ERRORS
28421C
28422      IF(DALPHA.LE.0.0D0)THEN
28423        WRITE(ICOUT,35)
28424        CALL DPWRST('XXX','BUG ')
28425        WRITE(ICOUT,46)DALPHA
28426        CALL DPWRST('XXX','BUG ')
28427        DPDF=0.0D0
28428        GOTO9999
28429      ENDIF
28430   35 FORMAT('***** ERROR--THE THIRD ARGUMENT TO KAPPDF ',
28431     1       '(THE SCALE PARAMETER) IS NON-POSITIVE')
28432C
28433      DTERM1=DXI + DALPHA/DK
28434      IF(DK.GT.0.0D0 .AND. DX.GT.DTERM1)THEN
28435        WRITE(ICOUT,5)
28436        CALL DPWRST('XXX','BUG ')
28437        WRITE(ICOUT,6)
28438        CALL DPWRST('XXX','BUG ')
28439        WRITE(ICOUT,46)DX
28440        CALL DPWRST('XXX','BUG ')
28441        WRITE(ICOUT,7)DTERM1
28442        CALL DPWRST('XXX','BUG ')
28443        DPDF=0.0D0
28444        GOTO9999
28445      ENDIF
28446    5 FORMAT('***** ERROR--THE FIRST ARGUMENT TO KAPPDF IS ',
28447     1       '> XI + ALPHA/K')
28448    6 FORMAT('      WHEN THE FIRST SHAPE PARAMETER (K) IS POSITIVE.')
28449    7 FORMAT('      THE VALUE OF XI + ALPHA/K IS ',G15.7)
28450C
28451      DTERM1=DXI + DALPHA*(1.0D0 - DH**(-DK))/DK
28452      IF(DH.GT.0.0D0 .AND. DX.LT.DTERM1)THEN
28453        WRITE(ICOUT,15)
28454        CALL DPWRST('XXX','BUG ')
28455        WRITE(ICOUT,16)
28456        CALL DPWRST('XXX','BUG ')
28457        WRITE(ICOUT,46)DX
28458        CALL DPWRST('XXX','BUG ')
28459        WRITE(ICOUT,17)DTERM1
28460        CALL DPWRST('XXX','BUG ')
28461        DPDF=0.0D0
28462        GOTO9999
28463      ENDIF
28464   15 FORMAT('***** ERROR--THE FIRST ARGUMENT TO KAPPDF IS ',
28465     1       '< XI + ALPHA*(1 - H**(-K))')
28466   16 FORMAT('      WHEN THE SECOND SHAPE PARAMETER (H) IS POSITIVE.')
28467   17 FORMAT('      THE VALUE OF XI + ALPHA*(1 - H**(-K))/K IS ',
28468     1       G15.7)
28469C
28470      DTERM1=DXI + DALPHA/DK
28471      IF(DH.LE.0.0D0 .AND. DK.GT.0.0D0 .AND. DX.LT.DTERM1)THEN
28472        WRITE(ICOUT,25)
28473        CALL DPWRST('XXX','BUG ')
28474        WRITE(ICOUT,26)
28475        CALL DPWRST('XXX','BUG ')
28476        WRITE(ICOUT,27)
28477        CALL DPWRST('XXX','BUG ')
28478        WRITE(ICOUT,46)DX
28479        CALL DPWRST('XXX','BUG ')
28480        WRITE(ICOUT,28)DTERM1
28481        CALL DPWRST('XXX','BUG ')
28482        DPDF=0.0D0
28483        GOTO9999
28484      ENDIF
28485   25 FORMAT('***** ERROR--THE FIRST ARGUMENT TO KAPPDF IS ',
28486     1       '< XI + ALPHA/K')
28487   26 FORMAT('      WHEN THE SECOND SHAPE PARAMETER (H) IS POSITIVE')
28488   27 FORMAT('      AND THE SECOND SHAPE PARAMETER (K) IS NEGATIVE.')
28489   28 FORMAT('      THE VALUE OF XI + ALPHA/K IS ',G15.7)
28490C
28491   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',G15.7)
28492C
28493      PARA(1)=DXI
28494      PARA(2)=DALPHA
28495      PARA(3)=DK
28496      PARA(4)=DH
28497      DTERM1=CDFKAP(DX,PARA)**(1.0D0 - DH)
28498      DTERM2=(1.0D0/DALPHA)*
28499     1       (1.0D0 - DK*(DX-DXI)/DALPHA)**((1.0D0/DK) - 1.0D0)
28500      DPDF=DTERM1*DTERM2
28501C
28502 9999 CONTINUE
28503      RETURN
28504      END
28505      SUBROUTINE KAPPPF(DP,DK,DH,DXI,DALPHA,DPPF)
28506C
28507C     PURPOSE--THIS SUBROUTINE COMPUTES THE PERCENT POINT
28508C              FUNCTION VALUE FOR THE KAPPA DISTRIBUTION
28509C              WITH SHAPE PARAMETERS K AND H.
28510C              THE PPF FOR THE DISTRIBUTION IS
28511C
28512C              G(P) = XI + (ALPHA/K)*{1 - ((1-P**H)/H)**K}
28513C                     0 < P < 1
28514C
28515C     INPUT  ARGUMENTS--DP     = THE DOUBLE PRECISION VALUE AT
28516C                                WHICH THE PERCENT POINT
28517C                                FUNCTION IS TO BE EVALUATED.
28518C                     --DK     = THE FIRST SHAPE PARAMETER
28519C                     --DH     = THE SECOND SHAPE PARAMETER
28520C                     --DXI    = THE LOCATION PARAMETER
28521C                     --DALPHA = THE SCALE PARAMETER
28522C     OUTPUT ARGUMENTS--DPPF   = THE DOUBLE PRECISION PERCENT POINT
28523C                                FUNCTION VALUE.
28524C     OUTPUT--THE DOUBLE PRECISION PERCENT POINT
28525C             FUNCTION VALUE PPF FOR THE KAPPA DISTRIBUTION
28526C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
28527C     RESTRICTIONS--0 < P < 1
28528C     LANGUAGE--ANSI FORTRAN (1977)
28529C     REFERENCES--HOSKING AND WALLIS (1997), "REGIONAL FREQUENCY
28530C                 ANALYSIS: xxx", CAMBRIDGE UNVERSITY PRESS,
28531C                 PP. 202-204.
28532C     WRITTEN BY--JAMES J. FILLIBEN
28533C                 STATISTICAL ENGINEERING DIVISION
28534C                 INFORMATION TECHNOLOGY LABORATORY
28535C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
28536C                 GAITHERSBURG, MD 20899-8980
28537C                 PHONE--301-975-2855
28538C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
28539C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
28540C     LANGUAGE--ANSI FORTRAN (1977)
28541C     VERSION NUMBER--2008/5
28542C     ORIGINAL VERSION--MAY       2008.
28543C
28544C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
28545C
28546C---------------------------------------------------------------------
28547C
28548      DOUBLE PRECISION DP
28549      DOUBLE PRECISION DK
28550      DOUBLE PRECISION DH
28551      DOUBLE PRECISION DALPHA
28552      DOUBLE PRECISION DXI
28553      DOUBLE PRECISION DPPF
28554      DOUBLE PRECISION QUAKAP
28555      EXTERNAL QUAKAP
28556C
28557      DOUBLE PRECISION PARA(4)
28558C
28559C-----COMMON----------------------------------------------------------
28560C
28561      INCLUDE 'DPCOP2.INC'
28562C
28563C-----DATA STATEMENTS-------------------------------------------------
28564C
28565C-----START POINT-----------------------------------------------------
28566C
28567C     CHECK THE INPUT ARGUMENTS FOR ERRORS
28568C
28569      DPPF=0.0D0
28570      IF(DALPHA.LE.0.0D0)THEN
28571        WRITE(ICOUT,25)
28572   25   FORMAT('***** ERROR--THE THIRD ARGUMENT TO KAPPPF ',
28573     1       '(THE SCALE PARAMETER) IS NON-POSITIVE')
28574        CALL DPWRST('XXX','BUG ')
28575        WRITE(ICOUT,46)DALPHA
28576        CALL DPWRST('XXX','BUG ')
28577        GOTO9999
28578      ELSEIF(DK.GT.0.0D0)THEN
28579        IF(DP.GT.1.0D0)THEN
28580          WRITE(ICOUT,5)
28581    5     FORMAT('***** ERROR--THE FIRST ARGUMENT TO KAPPPF IS ',
28582     1           'GREATER THAN 1.')
28583          CALL DPWRST('XXX','BUG ')
28584          WRITE(ICOUT,46)DP
28585          CALL DPWRST('XXX','BUG ')
28586          GOTO9999
28587        ENDIF
28588      ELSE
28589        IF(DP.GE.1.0D0)THEN
28590          WRITE(ICOUT,6)
28591    6     FORMAT('***** ERROR--THE FIRST ARGUMENT TO KAPPPF IS ',
28592     1           'GREATER THAN OR EQUAL TO 1.')
28593          CALL DPWRST('XXX','BUG ')
28594          WRITE(ICOUT,46)DP
28595          CALL DPWRST('XXX','BUG ')
28596          GOTO9999
28597        ENDIF
28598      ENDIF
28599C
28600      IF(DH.GT.0.0D0)THEN
28601        IF(DP.LT.0.0D0)THEN
28602          WRITE(ICOUT,15)
28603   15     FORMAT('***** ERROR--THE FIRST ARGUMENT TO KAPPPF IS ',
28604     1           'LESS THAN 0.')
28605          CALL DPWRST('XXX','BUG ')
28606          WRITE(ICOUT,46)DP
28607          CALL DPWRST('XXX','BUG ')
28608          GOTO9999
28609        ENDIF
28610      ELSEIF(DH.LE.0.0D0 .AND. DK.LT.0.0D0)THEN
28611        IF(DP.LT.0.0D0)THEN
28612          WRITE(ICOUT,16)
28613   16     FORMAT('***** ERROR--THE FIRST ARGUMENT TO KAPPPF IS ',
28614     1           'LESS THAN OR EQUAL TO 0.')
28615          CALL DPWRST('XXX','BUG ')
28616          WRITE(ICOUT,46)DP
28617          CALL DPWRST('XXX','BUG ')
28618          GOTO9999
28619        ENDIF
28620      ELSEIF(DH.LE.0.0D0 .AND. DK.GT.0.0D0)THEN
28621        IF(DP.LE.0.0D0)THEN
28622          WRITE(ICOUT,16)
28623          CALL DPWRST('XXX','BUG ')
28624          WRITE(ICOUT,46)DP
28625          CALL DPWRST('XXX','BUG ')
28626          GOTO9999
28627        ENDIF
28628      ENDIF
28629C
28630   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',G15.7)
28631C
28632      PARA(1)=DXI
28633      PARA(2)=DALPHA
28634      PARA(3)=DK
28635      PARA(4)=DH
28636      DPPF=QUAKAP(DP,PARA)
28637C
28638 9999 CONTINUE
28639      RETURN
28640      END
28641      SUBROUTINE KAPRAN(N,AK,H,ISEED,X)
28642C
28643C     PURPOSE--THIS SUBROUTINE GENERATES A RANDOM SAMPLE OF SIZE N
28644C              FROM THE KAPPA DISTRIBUTION WITH SHAPE PARAMETERS
28645C              K AND H.
28646C     INPUT  ARGUMENTS--N      = THE DESIRED INTEGER NUMBER
28647C                                OF RANDOM NUMBERS TO BE GENERATED.
28648C                     --K      = THE SINGLE PRECISION VALUE OF THE
28649C                                K SHAPE PARAMETER.
28650C                     --H      = THE SINGLE PRECISION VALUE OF THE
28651C                                H SHAPE PARAMETER.
28652C     OUTPUT ARGUMENTS--X      = A SINGLE PRECISION VECTOR
28653C                                (OF DIMENSION AT LEAST N)
28654C                                INTO WHICH THE GENERATED
28655C                                RANDOM SAMPLE WILL BE PLACED.
28656C     OUTPUT--A RANDOM SAMPLE OF SIZE N FROM THE KAPPA DISTRIBUTION
28657C             WITH SHAPE PARAMETERS K AND H.
28658C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
28659C     RESTRICTIONS--THERE IS NO RESTRICTION ON THE MAXIMUM VALUE
28660C                   OF N FOR THIS SUBROUTINE.
28661C     OTHER DATAPAC   SUBROUTINES NEEDED--UNIRAN, QUAKAP.
28662C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE.
28663C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
28664C     LANGUAGE--ANSI FORTRAN (1977)
28665C     WRITTEN BY--JAMES J. FILLIBEN
28666C                 STATISTICAL ENGINEERING DIVISION
28667C                 INFORMATION TECHNOLOGY LABORATORY
28668C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
28669C                 GAITHERSBURG, MD 20899-8980
28670C                 PHONE--301-975-2855
28671C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
28672C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
28673C     LANGUAGE--ANSI FORTRAN (1977)
28674C     VERSION NUMBER--2008.5
28675C     ORIGINAL VERSION--MAY       2008.
28676C
28677C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
28678C
28679C---------------------------------------------------------------------
28680C
28681      DIMENSION X(*)
28682C
28683      DOUBLE PRECISION DPPF
28684      DOUBLE PRECISION QUAKAP
28685      DOUBLE PRECISION PARA(4)
28686C
28687      EXTERNAL QUAKAP
28688C
28689C-----COMMON----------------------------------------------------------
28690C
28691      INCLUDE 'DPCOP2.INC'
28692C
28693C-----START POINT-----------------------------------------------------
28694C
28695C     CHECK THE INPUT ARGUMENTS FOR ERRORS
28696C
28697      IF(N.LT.1)THEN
28698        WRITE(ICOUT, 5)
28699        CALL DPWRST('XXX','BUG ')
28700        WRITE(ICOUT,47)N
28701        CALL DPWRST('XXX','BUG ')
28702        GOTO9999
28703      ENDIF
28704    5 FORMAT('***** ERROR--THE REQUESTED NUMBER OF KAPPA ',
28705     1       'RANDOM NUMBERS IS NON-POSITIVE.')
28706   47 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',I8)
28707C
28708C     GENERATE N UNIFORM (0,1) RANDOM NUMBERS;
28709C
28710      CALL UNIRAN(N,ISEED,X)
28711C
28712C     GENERATE N KAPPA DISTRIBUTION RANDOM NUMBERS USING THE
28713C     PERCENT POINT FUNCTION TRANSFORMATION METHOD.
28714C
28715      PARA(1)=0.0D0
28716      PARA(2)=1.0D0
28717      PARA(3)=DBLE(AK)
28718      PARA(4)=DBLE(H)
28719C
28720      DO100I=1,N
28721        DPPF=QUAKAP(DBLE(X(I)),PARA)
28722        X(I)=REAL(DPPF)
28723  100 CONTINUE
28724C
28725 9999 CONTINUE
28726      RETURN
28727      END
28728      SUBROUTINE KATCDF(X,ALPHA,BETA,IKATDF,CDF)
28729C
28730C     PURPOSE--THIS SUBROUTINE COMPUTES THE CUMULATIVE DISTRIBUTION
28731C              FUNCTION VALUE FOR THE KATZ DISTRIBUTION WITH SHAPE
28732C              PARAMETERS ALPHA AND BETA.  THIS DISTRIBUTION IS
28733C              DEFINED FOR ALL NON-NEGATIVE INTEGERS  X >= 0.
28734C
28735C              THE KATZ DISTRIBUTION IS DEFINED BY THE
28736C              RELATIONSHIP
28737C                  p(X+1;ALPHA,BETA)/P(X;ALPHA,BETA) =
28738C                  (ALPHA + BETA*X)/(1 + X)
28739C                  X = 0, 1, 2, 3, ,...
28740C                  ALPHA > 0, BETA < 1
28741C
28742C              AND
28743C
28744C                  p(0;ALPHA,BETA) = (1-BETA)**(ALPHA/BETA)
28745C
28746C              THE CUMULATIVE DISTRIBUTION FUNCTION IS COMPUTED
28747C              FROM THE FOLLOWING RECURRENCE RELATION:
28748C
28749C              p(X+1;ALPHA,BETA) = {(ALPHA + BETA*X)/(1 + X)}*
28750C                                  p(X;ALPHA,BETA)
28751C
28752C     INPUT  ARGUMENTS--X      = THE DOUBLE PRECISION VALUE AT
28753C                                WHICH THE CUMULATIVE DISTRIBUTION
28754C                                FUNCTION IS TO BE EVALUATED.
28755C                                X SHOULD BE A NON-NEGATIVE INTEGER.
28756C                     --ALPHA  = THE FIRST SHAPE PARAMETER
28757C                     --BETA   = THE SECOND SHAPE PARAMETER
28758C                     --IKATDF = SPECIFY WHICH PARAMETERIZATION
28759C                                OF THE KATZ DISTRIBUTION TO USE.
28760C     OUTPUT ARGUMENTS--CDF    = THE DOUBLE PRECISION CUMULATIVE
28761C                                DISTRIBUTION FUNCTION VALUE.
28762C     OUTPUT--THE DOUBLE PRECISION CUMULATIVE DISTRIBUTION FUNCTION
28763C             VALUE CDF FOR THE KATZ DISTRIBUTION WITH
28764C             SHAPE PARAMETERS ALPHA AND BETA
28765C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
28766C     RESTRICTIONS--X SHOULD BE A NON-NEGATIVE INTEGER
28767C                 --ALPHA > 0, BETA < 1
28768C     MODE OF INTERNAL OPERATIONS--DOUBLE PRECISION.
28769C     LANGUAGE--ANSI FORTRAN (1977)
28770C     REFERENCES--JOHNSON, KEMP, AND KOTZ (2005), "UNIVARIATE
28771C                 DISCRETE DISTRIBUTIONS", THIRD EDITION, WILEY,
28772C                 PP. 82-83.
28773C               --CONSUL AND FAMOYE (2006), "LAGRANGIAN PROBABILITY
28774C                 DISTRIBUTIONS", BIRKHAUSER, CHAPTER 12.
28775C     WRITTEN BY--JAMES J. FILLIBEN
28776C                 STATISTICAL ENGINEERING DIVISION
28777C                 INFORMATION TECHNOLOGY LABORATORY
28778C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
28779C                 GAITHERSBURG, MD 20899-8980
28780C                 PHONE--301-975-2855
28781C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
28782C           OF THE NATIONAL BUREAU OF STANDARDS.
28783C     LANGUAGE--ANSI FORTRAN (1977)
28784C     VERSION NUMBER--2007/1
28785C     ORIGINAL VERSION--JANUARY   2007.
28786C
28787C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
28788C
28789C---------------------------------------------------------------------
28790C
28791      IMPLICIT DOUBLE PRECISION (A-H, O-Z)
28792      REAL RESULT
28793      CHARACTER*4 IKATDF
28794C
28795C-----COMMON----------------------------------------------------------
28796C
28797      INCLUDE 'DPCOP2.INC'
28798C
28799C-----START POINT-----------------------------------------------------
28800C
28801C     CHECK THE INPUT ARGUMENTS FOR ERRORS
28802C
28803      IX=INT(X+0.5D0)
28804      IF(IX.LT.0)THEN
28805        WRITE(ICOUT,4)
28806        CALL DPWRST('XXX','BUG ')
28807        WRITE(ICOUT,46)X
28808        CALL DPWRST('XXX','BUG ')
28809        CDF=0.0D0
28810        GOTO9000
28811      ENDIF
28812    4 FORMAT('***** ERROR--THE FIRST ARGUMENT TO KATCDF IS LESS ',
28813     1'THAN 0')
28814C
28815      IF(IKATDF.EQ.'DEFA')THEN
28816        IF(ALPHA.LE.0.0D0)THEN
28817          WRITE(ICOUT,15)
28818          CALL DPWRST('XXX','BUG ')
28819          WRITE(ICOUT,46)ALPHA
28820          CALL DPWRST('XXX','BUG ')
28821          CDF=0.0D0
28822          GOTO9000
28823        ENDIF
28824   15   FORMAT('***** ERROR--THE SECOND ARGUMENT TO KATCDF IS ',
28825     1         'NON-POSITIVE.')
28826C
28827        IF(BETA.GE.1.0D0)THEN
28828          WRITE(ICOUT,25)
28829          CALL DPWRST('XXX','BUG ')
28830          WRITE(ICOUT,46)BETA
28831          CALL DPWRST('XXX','BUG ')
28832          CDF=0.0D0
28833          GOTO9000
28834        ENDIF
28835   25   FORMAT('***** ERROR--THE THIRD ARGUMENT TO KATCDF IS ',
28836     1         'GREATER THAN OR EQUAL TO 1.')
28837C
28838      ELSE
28839        DMU=ALPHA
28840        DNU=BETA
28841        IF(DMU.LE.0.0D0)THEN
28842          WRITE(ICOUT,15)
28843          CALL DPWRST('XXX','BUG ')
28844          WRITE(ICOUT,46)DMU
28845          CALL DPWRST('XXX','BUG ')
28846          CDF=0.0D0
28847          GOTO9000
28848        ENDIF
28849        ALPHA=DMU/(DNU+1.0D0)
28850        BETA=DNU/(DNU+1.0D0)
28851      ENDIF
28852   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',G15.7)
28853C
28854C     USE THE RECURRENCE RELATION (PAGE 243 OF CONSUL AND FAMOYE):
28855C
28856      IF(BETA.EQ.0.0D0)THEN
28857        CALL POICDF(REAL(IX),REAL(ALPHA),RESULT)
28858        CDF=DBLE(RESULT)
28859        GOTO9000
28860      ENDIF
28861C
28862      CDF=(1.0D0 - BETA)**(ALPHA/BETA)
28863      IF(IX.EQ.0)GOTO9000
28864      DPDFSV=CDF
28865C
28866      DO100I=1,IX
28867        DX=DBLE(I-1)
28868        DTERM1=ALPHA + BETA*DX
28869        IF(DTERM1.LE.0.0D0)THEN
28870          CDF=1.0D0
28871          GOTO9000
28872        ELSE
28873          DTERM2=DLOG(DTERM1)
28874          DTERM3=DLOG(1.0D0 + DX)
28875          IF(DPDFSV.LE.0.0D0)THEN
28876            GOTO9000
28877          ELSE
28878            DTERM4=DLOG(DPDFSV)
28879          ENDIF
28880C
28881          DPDF=DEXP(DTERM2 - DTERM3 + DTERM4)
28882          CDF=CDF + DPDF
28883          IF(CDF.GE.1.0D0)THEN
28884            CDF=1.0D0
28885            GOTO9000
28886          ENDIF
28887          DPDFSV=DPDF
28888        ENDIF
28889  100 CONTINUE
28890C
28891 9000 CONTINUE
28892      RETURN
28893      END
28894      SUBROUTINE KATPDF(X,ALPHA,BETA,IKATDF,PDF)
28895C
28896C     PURPOSE--THIS SUBROUTINE COMPUTES THE PROBABILITY MASS
28897C              FUNCTION VALUE FOR THE KATZ DISTRIBUTION WITH SHAPE
28898C              PARAMETERS ALPHA AND BETA.  THIS DISTRIBUTION IS
28899C              DEFINED FOR ALL NON-NEGATIVE INTEGERS  X >= 0.
28900C
28901C              THE KATZ DISTRIBUTION IS DEFINED BY THE
28902C              RELATIONSHIP
28903C                  p(X+1;ALPHA,BETA)/P(X;ALPHA,BETA) =
28904C                  (ALPHA + BETA*X)/(1 + X)
28905C                  X = 0, 1, 2, 3, ,...
28906C                  ALPHA > 0, BETA < 1
28907C
28908C              AND
28909C
28910C                  p(0;ALPHA,BETA) = (1-BETA)**(ALPHA/BETA)
28911C
28912C              THE CUMULATIVE DISTRIBUTION FUNCTION IS COMPUTED
28913C              FROM THE FOLLOWING RECURRENCE RELATION:
28914C
28915C              p(X+1;ALPHA,BETA) = {(ALPHA + BETA*X)/(1 + X)}*
28916C                                  p(X;ALPHA,BETA)
28917C
28918C              WE USE THIS RECURRENCE RELATION TO COMPUTE THE
28919C              PROBABILITY MASS FUNCTION AS WELL.
28920C
28921C     INPUT  ARGUMENTS--X      = THE DOUBLE PRECISION VALUE AT
28922C                                WHICH THE PROBABILITY MASS
28923C                                FUNCTION IS TO BE EVALUATED.
28924C                                X SHOULD BE A NON-NEGATIVE INTEGER.
28925C                     --ALPHA  = THE FIRST SHAPE PARAMETER
28926C                     --BETA   = THE SECOND SHAPE PARAMETER
28927C                     --IKATDF = SPECIFY WHICH PARAMETERIZATION
28928C                                OF THE KATZ DISTRIBUTION TO USE.
28929C     OUTPUT ARGUMENTS--CDF    = THE DOUBLE PRECISION PROBABILITY
28930C                                MASS FUNCTION VALUE.
28931C     OUTPUT--THE DOUBLE PRECISION PROBABILITY MASS FUNCTION
28932C             VALUE PDF FOR THE KATZ DISTRIBUTION WITH
28933C             SHAPE PARAMETERS ALPHA AND BETA
28934C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
28935C     RESTRICTIONS--X SHOULD BE A NON-NEGATIVE INTEGER
28936C                 --ALPHA > 0, BETA < 1
28937C     MODE OF INTERNAL OPERATIONS--DOUBLE PRECISION.
28938C     LANGUAGE--ANSI FORTRAN (1977)
28939C     REFERENCES--JOHNSON, KEMP, AND KOTZ (2005), "UNIVARIATE
28940C                 DISCRETE DISTRIBUTIONS", THIRD EDITION, WILEY,
28941C                 PP. 82-83.
28942C               --CONSUL AND FAMOYE (2006), "LAGRANGIAN PROBABILITY
28943C                 DISTRIBUTIONS", BIRKHAUSER, CHAPTER 12.
28944C     WRITTEN BY--JAMES J. FILLIBEN
28945C                 STATISTICAL ENGINEERING DIVISION
28946C                 INFORMATION TECHNOLOGY LABORATORY
28947C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
28948C                 GAITHERSBURG, MD 20899-8980
28949C                 PHONE--301-975-2855
28950C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
28951C           OF THE NATIONAL BUREAU OF STANDARDS.
28952C     LANGUAGE--ANSI FORTRAN (1977)
28953C     VERSION NUMBER--2007/1
28954C     ORIGINAL VERSION--JANUARY   2007.
28955C
28956C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
28957C
28958C---------------------------------------------------------------------
28959C
28960      IMPLICIT DOUBLE PRECISION (A-H, O-Z)
28961      REAL RESLT1
28962      REAL RESLT2
28963      CHARACTER*4 IKATDF
28964C
28965C-----COMMON----------------------------------------------------------
28966C
28967      INCLUDE 'DPCOP2.INC'
28968C
28969C-----START POINT-----------------------------------------------------
28970C
28971C     CHECK THE INPUT ARGUMENTS FOR ERRORS
28972C
28973      IX=INT(X+0.5D0)
28974      IF(IX.LT.0)THEN
28975        WRITE(ICOUT,4)
28976        CALL DPWRST('XXX','BUG ')
28977        WRITE(ICOUT,46)X
28978        CALL DPWRST('XXX','BUG ')
28979        PDF=0.0D0
28980        GOTO9000
28981      ENDIF
28982    4 FORMAT('***** ERROR--THE FIRST ARGUMENT TO KATPDF IS LESS ',
28983     1'THAN 0')
28984C
28985      IF(IKATDF.EQ.'DEFA')THEN
28986        IF(ALPHA.LE.0.0D0)THEN
28987          WRITE(ICOUT,15)
28988          CALL DPWRST('XXX','BUG ')
28989          WRITE(ICOUT,46)ALPHA
28990          CALL DPWRST('XXX','BUG ')
28991          PDF=0.0D0
28992          GOTO9000
28993        ENDIF
28994   15   FORMAT('***** ERROR--THE SECOND ARGUMENT TO KATPDF IS ',
28995     1         'NON-POSITIVE.')
28996C
28997        IF(BETA.GE.1.0D0)THEN
28998          WRITE(ICOUT,25)
28999          CALL DPWRST('XXX','BUG ')
29000          WRITE(ICOUT,46)BETA
29001          CALL DPWRST('XXX','BUG ')
29002          PDF=0.0D0
29003          GOTO9000
29004        ENDIF
29005   25   FORMAT('***** ERROR--THE THIRD ARGUMENT TO KATPDF IS ',
29006     1         'GREATER THAN OR EQUAL TO 1.')
29007C
29008      ELSE
29009        DMU=ALPHA
29010        DNU=BETA
29011        IF(DMU.LE.0.0D0)THEN
29012          WRITE(ICOUT,15)
29013          CALL DPWRST('XXX','BUG ')
29014          WRITE(ICOUT,46)DMU
29015          CALL DPWRST('XXX','BUG ')
29016          PDF=0.0D0
29017          GOTO9000
29018        ENDIF
29019        ALPHA=DMU/(DNU+1.0D0)
29020        BETA=DNU/(DNU+1.0D0)
29021      ENDIF
29022   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',G15.7)
29023C
29024C     USE THE RECURRENCE RELATION (PAGE 82 OF JOHNSON, KEMP, AND
29025C     KOTZ):
29026C
29027      IF(BETA.EQ.0.0D0)THEN
29028        CALL POICDF(REAL(IX),REAL(ALPHA),RESLT1)
29029        IF(IX.EQ.0)THEN
29030          PDF=DBLE(RESLT1)
29031        ELSE
29032          CALL POICDF(REAL(IX-1),REAL(ALPHA),RESLT2)
29033          PDF=DBLE(RESLT1-RESLT2)
29034        ENDIF
29035        GOTO9000
29036      ENDIF
29037C
29038      CDF=(1.0D0 - BETA)**(ALPHA/BETA)
29039      IF(IX.EQ.0)THEN
29040        PDF=CDF
29041        GOTO9000
29042      ENDIF
29043      DPDFSV=CDF
29044C
29045      DO100I=1,IX
29046        DX=DBLE(I-1)
29047        DTERM1=ALPHA + BETA*DX
29048        IF(DTERM1.LE.0.0D0)THEN
29049          PDF=0.0D0
29050          GOTO9000
29051        ELSE
29052          DTERM2=DLOG(DTERM1)
29053          DTERM3=DLOG(1.0D0 + DX)
29054          IF(DPDFSV.LE.0.0D0)THEN
29055            PDF=0.0D0
29056            GOTO9000
29057          ELSE
29058            DTERM4=DLOG(DPDFSV)
29059          ENDIF
29060C
29061          DPDF=DEXP(DTERM2 - DTERM3 + DTERM4)
29062          CDF=CDF + DPDF
29063          IF(CDF.GE.1.0D0)THEN
29064            PDF=0.0D0
29065            GOTO9000
29066          ENDIF
29067          DPDFSV=DPDF
29068        ENDIF
29069  100 CONTINUE
29070      PDF=DPDF
29071C
29072 9000 CONTINUE
29073      RETURN
29074      END
29075      SUBROUTINE KATPPF(P,ALPHA,BETA,IKATDF,PPF)
29076C
29077C     PURPOSE--THIS SUBROUTINE COMPUTES THE PERCENT POINT
29078C              FUNCTION VALUE FOR THE KATZ DISTRIBUTION WITH SHAPE
29079C              PARAMETERS ALPHA AND BETA.  THIS DISTRIBUTION IS
29080C              DEFINED FOR ALL NON-NEGATIVE INTEGERS  X >= 0.
29081C
29082C              THE KATZ DISTRIBUTION IS DEFINED BY THE
29083C              RELATIONSHIP
29084C                  p(X+1;ALPHA,BETA)/P(X;ALPHA,BETA) =
29085C                  (ALPHA + BETA*X)/(1 + X)
29086C                  X = 0, 1, 2, 3, ,...
29087C                  ALPHA > 0, BETA < 1
29088C
29089C              AND
29090C
29091C                  p(0;ALPHA,BETA) = (1-BETA)**(ALPHA/BETA)
29092C
29093C              THE CUMULATIVE DISTRIBUTION FUNCTION IS COMPUTED
29094C              FROM THE FOLLOWING RECURRENCE RELATION:
29095C
29096C              p(X+1;ALPHA,BETA) = {(ALPHA + BETA*X)/(1 + X)}*
29097C                                  p(X;ALPHA,BETA)
29098C
29099C              THE PERCENT POINT FUNCTION IS COMPUTED BY
29100C              CALCULATING THE CDF FUNCTION UNTIL THE SPECIFIED
29101C              PROBABILITY IS OBTAINED.
29102C     INPUT  ARGUMENTS--P      = THE DOUBLE PRECISION VALUE AT
29103C                                WHICH THE PERCENT POINT
29104C                                FUNCTION IS TO BE EVALUATED.
29105C                                0 <= P <= 1
29106C                     --ALPHA  = THE FIRST SHAPE PARAMETER
29107C                     --BETA   = THE SECOND SHAPE PARAMETER
29108C                     --IKATDF = SPECIFY WHICH PARAMETERIZATION
29109C                                OF THE KATZ DISTRIBUTION TO USE.
29110C     OUTPUT ARGUMENTS--PPF    = THE DOUBLE PRECISION PERCENT POINT
29111C                                FUNCTION VALUE.
29112C     OUTPUT--THE DOUBLE PRECISION PERCENT POINT FUNCTION
29113C             VALUE PPF FOR THE KATZ DISTRIBUTION WITH
29114C             SHAPE PARAMETERS ALPHA AND BETA
29115C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
29116C     RESTRICTIONS--0 <= P <= 1 (BETA < 0)
29117C                   0 <= P < 1  (BETA >= 0)
29118C                 --ALPHA > 0, BETA < 1
29119C     MODE OF INTERNAL OPERATIONS--DOUBLE PRECISION.
29120C     LANGUAGE--ANSI FORTRAN (1977)
29121C     REFERENCES--JOHNSON, KEMP, AND KOTZ (2005), "UNIVARIATE
29122C                 DISCRETE DISTRIBUTIONS", THIRD EDITION, WILEY,
29123C                 PP. 82-83.
29124C               --CONSUL AND FAMOYE (2006), "LAGRANGIAN PROBABILITY
29125C                 DISTRIBUTIONS", BIRKHAUSER, CHAPTER 12.
29126C     WRITTEN BY--JAMES J. FILLIBEN
29127C                 STATISTICAL ENGINEERING DIVISION
29128C                 INFORMATION TECHNOLOGY LABORATORY
29129C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
29130C                 GAITHERSBURG, MD 20899-8980
29131C                 PHONE--301-975-2855
29132C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
29133C           OF THE NATIONAL BUREAU OF STANDARDS.
29134C     LANGUAGE--ANSI FORTRAN (1977)
29135C     VERSION NUMBER--2007/1
29136C     ORIGINAL VERSION--JANUARY   2007.
29137C
29138C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
29139C
29140C---------------------------------------------------------------------
29141C
29142      IMPLICIT DOUBLE PRECISION (A-H, O-Z)
29143      REAL RESULT
29144      CHARACTER*4 IKATDF
29145C
29146C-----COMMON----------------------------------------------------------
29147C
29148      REAL R1MACH
29149      INCLUDE 'DPCOMC.INC'
29150      INCLUDE 'DPCOP2.INC'
29151C
29152C-----START POINT-----------------------------------------------------
29153C
29154C     CHECK THE INPUT ARGUMENTS FOR ERRORS
29155C
29156      IF(IKATDF.EQ.'DEFA')THEN
29157C
29158        IF(BETA.GE.0.0D0)THEN
29159          IF(P.LT.0.0D0 .OR. P.GE.1.0D0)THEN
29160            WRITE(ICOUT,4)
29161            CALL DPWRST('XXX','BUG ')
29162            WRITE(ICOUT,46)P
29163            CALL DPWRST('XXX','BUG ')
29164            PPF=0.0D0
29165            GOTO9000
29166          ENDIF
29167        ELSE
29168          IF(P.LT.0.0D0 .OR. P.GT.1.0D0)THEN
29169            WRITE(ICOUT,4)
29170            CALL DPWRST('XXX','BUG ')
29171            WRITE(ICOUT,46)P
29172            CALL DPWRST('XXX','BUG ')
29173            PPF=0.0D0
29174            GOTO9000
29175          ENDIF
29176        ENDIF
29177    4   FORMAT('***** ERROR--THE FIRST ARGUMENT TO KATPPF IS ',
29178     1         'OUTSIDE THE ALLOWABLE (0,1) INTERVAL)')
29179C
29180        IF(ALPHA.LE.0.0D0)THEN
29181          WRITE(ICOUT,15)
29182          CALL DPWRST('XXX','BUG ')
29183          WRITE(ICOUT,46)ALPHA
29184          CALL DPWRST('XXX','BUG ')
29185          PPF=0.0D0
29186          GOTO9000
29187        ENDIF
29188   15   FORMAT('***** ERROR--THE SECOND ARGUMENT TO KATPPF IS ',
29189     1         'NON-POSITIVE.')
29190C
29191        IF(BETA.GE.1.0D0)THEN
29192          WRITE(ICOUT,25)
29193          CALL DPWRST('XXX','BUG ')
29194          WRITE(ICOUT,46)BETA
29195          CALL DPWRST('XXX','BUG ')
29196          PPF=0.0D0
29197          GOTO9000
29198        ENDIF
29199   25   FORMAT('***** ERROR--THE THIRD ARGUMENT TO KATPPF IS ',
29200     1         'GREATER THAN OR EQUAL TO 1.')
29201C
29202      ELSE
29203        IF(P.LT.0.0D0 .OR. P.GT.1.0D0)THEN
29204          WRITE(ICOUT,4)
29205          CALL DPWRST('XXX','BUG ')
29206          WRITE(ICOUT,46)P
29207          CALL DPWRST('XXX','BUG ')
29208          PPF=0.0D0
29209          GOTO9000
29210        ENDIF
29211        DMU=ALPHA
29212        DNU=BETA
29213        IF(DMU.LE.0.0D0)THEN
29214          WRITE(ICOUT,15)
29215          CALL DPWRST('XXX','BUG ')
29216          WRITE(ICOUT,46)DMU
29217          CALL DPWRST('XXX','BUG ')
29218          PPF=0.0D0
29219          GOTO9000
29220        ENDIF
29221        ALPHA=DMU/(DNU+1.0D0)
29222        BETA=DNU/(DNU+1.0D0)
29223      ENDIF
29224   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',G15.7)
29225C
29226C     USE THE RECURRENCE RELATION (PAGE 82 OF
29227C     JOHNSON, KEMP, AND KOTZ)
29228C
29229      IF(P.LE.0.0D0)THEN
29230        PPF=0.0D0
29231        GOTO9000
29232      ENDIF
29233C
29234      IF(BETA.EQ.0.0D0)THEN
29235        CALL POIPPF(REAL(P),REAL(ALPHA),RESULT)
29236        PPF=DBLE(RESULT)
29237        GOTO9000
29238      ENDIF
29239C
29240C     FOR BETA < 0, CHECK FOR MAXIMUM ALLOWABLE X
29241C     (ALPHA + BETA*X >= 0  => X <= ALPHA/ABS(BETA))
29242C
29243      IF(BETA.LT.0.0D0 .AND. P.GE.1.0D0)THEN
29244        IPPF=INT(ALPHA/ABS(BETA))
29245        PPF=DBLE(IPPF)
29246        GOTO9000
29247      ENDIF
29248C
29249C     COMPUTE PDF FOR X = 0
29250C
29251      DEPS=1.0D-7
29252      CDF=(1.0D0 - BETA)**(ALPHA/BETA)
29253      IF(CDF.GE.P-DEPS)THEN
29254         PPF=0.0D0
29255         GOTO9000
29256      ENDIF
29257      DPDFSV=CDF
29258      I=0
29259C
29260  100 CONTINUE
29261        I=I+1
29262        IF(DBLE(I).GE.DBLE(I1MACH(9)))THEN
29263          WRITE(ICOUT,55)
29264   55     FORMAT('***** ERROR--THE COMPUTED PERCENT POINT VALUE ',
29265     1           'EXCEEDS THE LARGEST MACHINE INTEGER.')
29266          CALL DPWRST('XXX','BUG ')
29267          PPF=0.0
29268          GOTO9000
29269        ENDIF
29270        DX=DBLE(I-1)
29271C
29272        DTERM1=ALPHA + BETA*DX
29273        IF(DTERM1.LE.0.0D0)THEN
29274          PPF=DX
29275          GOTO9000
29276        ELSE
29277          DTERM2=DLOG(DTERM1)
29278          DTERM3=DLOG(1.0D0 + DX)
29279          IF(DPDFSV.LE.0.0D0)THEN
29280            PPF=DX
29281            GOTO9000
29282          ELSE
29283            DTERM4=DLOG(DPDFSV)
29284          ENDIF
29285C
29286          DPDF=DEXP(DTERM2 - DTERM3 + DTERM4)
29287          CDF=CDF + DPDF
29288          IF(CDF.GE.P-DEPS)THEN
29289            PPF=DBLE(I)
29290            GOTO9000
29291          ENDIF
29292          DPDFSV=DPDF
29293        ENDIF
29294      GOTO100
29295C
29296 9000 CONTINUE
29297      RETURN
29298      END
29299      SUBROUTINE KATRAN(N,ALPHA,BETA,IKATDF,ISEED,X)
29300C
29301C     PURPOSE--THIS SUBROUTINE GENERATES A RANDOM SAMPLE OF SIZE N
29302C              FROM THE KATZ DISTRIBUTION WITH SHAPE PARAMETERS
29303C              ALPHA AND BETA.
29304C
29305C              THE KATZ DISTRIBUTION IS DEFINED BY THE
29306C              RELATIONSHIP
29307C                  p(X+1;ALPHA,BETA)/P(X;ALPHA,BETA) =
29308C                  (ALPHA + BETA*X)/(1 + X)
29309C                  X = 0, 1, 2, 3, ,...
29310C                  ALPHA > 0, BETA < 1
29311C
29312C              AND
29313C
29314C                  p(0;ALPHA,BETA) = (1-BETA)**(ALPHA/BETA)
29315C
29316C     INPUT  ARGUMENTS--N      = THE DESIRED INTEGER NUMBER
29317C                                OF RANDOM NUMBERS TO BE
29318C                                GENERATED.
29319C                     --A      = THE DOUBLE PRECISION VALUE
29320C                                OF THE FIRST SHAPE PARAMETER.
29321C                     --BETA   = THE DOUBLE PRECISION VALUE
29322C                                OF THE THIRD SHAPE PARAMETER.
29323C                     --IKATDF = SPECIFY WHICH PARAMETERIZATION
29324C                                OF THE KATZ DISTRIBUTION TO USE.
29325C     OUTPUT ARGUMENTS--X      = A SINGLE PRECISION VECTOR
29326C                                (OF DIMENSION AT LEAST N)
29327C                                INTO WHICH THE GENERATED
29328C                                RANDOM SAMPLE WILL BE PLACED.
29329C     OUTPUT--A RANDOM SAMPLE OF SIZE N
29330C             FROM THE KATZ DISTRIBUTION
29331C             WITH SHAPE PARAMETERS ALPHA AND BETA.
29332C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
29333C     RESTRICTIONS--THERE IS NO RESTRICTION ON THE MAXIMUM VALUE
29334C                   OF N FOR THIS SUBROUTINE.
29335C                 --ALPHA > 0, BETA < 1
29336C     OTHER DATAPAC   SUBROUTINES NEEDED--UNIRAN, LKPPF
29337C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE.
29338C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
29339C     LANGUAGE--ANSI FORTRAN (1977)
29340C     REFERENCES--JOHNSON, KEMP, AND KOTZ (2005), "UNIVARIATE
29341C                 DISCRETE DISTRIBUTIONS", THIRD EDITION, WILEY,
29342C                 PP. 82-83.
29343C               --CONSUL AND FAMOYE (2006), "LAGRANGIAN PROBABILITY
29344C                 DISTRIBUTIONS", BIRKHAUSER, CHAPTER 12.
29345C     WRITTEN BY--JAMES J. FILLIBEN
29346C                 STATISTICAL ENGINEERING DIVISION
29347C                 INFORMATION TECHNOLOGY LABORATORY
29348C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
29349C                 GAITHERSBURG, MD 20899-8980
29350C                 PHONE--301-975-2899
29351C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
29352C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
29353C     LANGUAGE--ANSI FORTRAN (1977)
29354C     VERSION NUMBER--2007/1
29355C     ORIGINAL VERSION--JANUARY   2007.
29356C
29357C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
29358C
29359C---------------------------------------------------------------------
29360C
29361      DOUBLE PRECISION ALPHA
29362      DOUBLE PRECISION BETA
29363C
29364      CHARACTER*4 IKATDF
29365C
29366      DOUBLE PRECISION DPPF
29367C
29368      DIMENSION X(*)
29369C
29370C-----COMMON----------------------------------------------------------
29371C
29372      INCLUDE 'DPCOP2.INC'
29373C
29374C-----START POINT-----------------------------------------------------
29375C
29376C     CHECK THE INPUT ARGUMENTS FOR ERRORS
29377C
29378      IF(N.LT.1)THEN
29379        WRITE(ICOUT,5)
29380        CALL DPWRST('XXX','BUG ')
29381        WRITE(ICOUT,6)
29382        CALL DPWRST('XXX','BUG ')
29383        WRITE(ICOUT,47)N
29384        CALL DPWRST('XXX','BUG ')
29385        GOTO9999
29386      ENDIF
29387    5 FORMAT('***** ERROR--THE REQUESTED NUMBER OF KATZ')
29388    6 FORMAT('      RANDOM NUMBERS IS NON-POSITIVE')
29389C
29390      IF(ALPHA.LE.0.0D0)THEN
29391        WRITE(ICOUT,11)
29392        CALL DPWRST('XXX','BUG ')
29393        WRITE(ICOUT,12)
29394        CALL DPWRST('XXX','BUG ')
29395        WRITE(ICOUT,46)ALPHA
29396        CALL DPWRST('XXX','BUG ')
29397        GOTO9999
29398      ENDIF
29399   11 FORMAT('***** ERROR--THE ALPHA PARAMETER FOR THE KATZ')
29400   12 FORMAT('      RANDOM NUMBERS IS NON-POSITIVE.')
29401C
29402      IF(BETA.GE.1.0D0)THEN
29403        WRITE(ICOUT,21)
29404        CALL DPWRST('XXX','BUG ')
29405        WRITE(ICOUT,22)
29406        CALL DPWRST('XXX','BUG ')
29407        WRITE(ICOUT,46)BETA
29408        CALL DPWRST('XXX','BUG ')
29409        GOTO9999
29410      ENDIF
29411   21 FORMAT('***** ERROR--THE BETA PARAMETER FOR THE KATZ')
29412   22 FORMAT('      RANDOM NUMBERS IS GREATER THAN OR EQUAL TO 1.')
29413C
29414   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',G15.7)
29415   47 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',I8)
29416C
29417C     GENERATE N KATZ DISTRIBUTION RANDOM NUMBERS USING
29418C     THE INVERSION METHOD.
29419C
29420      CALL UNIRAN(N,ISEED,X)
29421      DO100I=1,N
29422        ZTEMP=X(I)
29423        CALL KATPPF(DBLE(ZTEMP),ALPHA,BETA,IKATDF,DPPF)
29424        X(I)=REAL(DPPF)
29425  100 CONTINUE
29426C
29427 9999 CONTINUE
29428C
29429      RETURN
29430      END
29431      SUBROUTINE KCONS(Y,X,XIDTEM,TEMP,N,IWRITE,YOUT,NUMSET,
29432     1ISUBRO,IBUGA3,IERROR)
29433C
29434C     PURPOSE--THIS SUBROUTINE COMPUTES THE K CONSISTENCY STATISTIC
29435C              OF THE DATA IN THE INPUT VECTOR Y WITH LAB ID
29436C              VECTOR X.  THE K CONSISTENCY STATISTIC IS DEFINED AS:
29437C
29438C                 K(i) = SD(i)/Sr
29439C
29440C              WITH SD(i) DENOTING THE STANDARD DEVIATION OF
29441C              LAB i AND THE REPEATABILITY STANDARD DEVIATION,
29442C              RESPECTIVELY.  THE REPEATABILITY STANDARD
29443C              DEVIATION IS DEFINED AS:
29444C
29445C                 Sr = SQRT(SUM[i=1 to p][s(i)**2/p]
29446C
29447C              WITH
29448C                 p      = NUMBER OF LABS
29449C                 s(i)   = STANDARD DEVIATION OF GROUP i.
29450C
29451C     INPUT  ARGUMENTS--Y      = THE SINGLE PRECISION VECTOR OF
29452C                                (UNSORTED OR SORTED) OBSERVATIONS.
29453C                     --X      = THE SINGLE PRECISION VECTOR OF
29454C                                GROUP ID's.
29455C                     --N      = THE INTEGER NUMBER OF OBSERVATIONS
29456C                                IN THE VECTOR Y.
29457C     OUTPUT ARGUMENTS--YOUT   = THE SINGLE PRECISION VECTOR OF THE
29458C                                COMPUTED SAMPLE K CONSISTENCY
29459C                                STATISTIC.
29460C                     --NUMSET = THE INTEGER VALUE CONTAINING THE
29461C                                NUMBER OF GROUPS IN X
29462C     OUTPUT--THE COMPUTED SINGLE PRECISION VECTOR OF THE
29463C             SAMPLE K CONSISTENCY STATISTIC.
29464C     RESTRICTIONS--THERE IS NO RESTRICTION ON THE MAXIMUM VALUE
29465C                   OF N FOR THIS SUBROUTINE.
29466C     OTHER DATAPAC   SUBROUTINES NEEDED--SORT, DISTIN, SD.
29467C     FORTRAN LIBRARY SUBROUTINES NEEDED--SQRT.
29468C     MODE OF INTERNAL OPERATIONS--DOUBLE PRECISION.
29469C     LANGUAGE--ANSI FORTRAN (1977)
29470C     REFERENCES--"Standard Practice for Conducting an
29471C                 Interlaboratory Study to Determine the Precision
29472C                 of a Test Method", ASTM International,
29473C                 100 Barr Harbor Drive, PO BOX C700,
29474C                 West Conshohoceken, PA 19428-2959, USA.
29475C                 This document is in support of
29476C                 ASTM Standard E 691 - 99.
29477C     WRITTEN BY--JAMES J. FILLIBEN
29478C                 STATISTICAL ENGINEERING DIVISION
29479C                 INFORMATION TECHNOLOGY LABORATORY
29480C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
29481C                 GAITHERSBURG, MD 20899-8980
29482C                 PHONE--301-975-2855
29483C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
29484C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
29485C     LANGUAGE--ANSI FORTRAN (1977)
29486C     VERSION NUMBER--2005.2
29487C     ORIGINAL VERSION--FEBRUARY  2005.
29488C
29489C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
29490C
29491      CHARACTER*4 IWRITE
29492      CHARACTER*4 IBUGA3
29493      CHARACTER*4 ISUBRO
29494      CHARACTER*4 IERROR
29495C
29496      CHARACTER*4 ISUBN1
29497      CHARACTER*4 ISUBN2
29498C
29499C---------------------------------------------------------------------
29500C
29501      DOUBLE PRECISION DSUM
29502C
29503      DIMENSION Y(*)
29504      DIMENSION X(*)
29505      DIMENSION YOUT(*)
29506      DIMENSION XIDTEM(*)
29507      DIMENSION TEMP(*)
29508C
29509C-----COMMON----------------------------------------------------------
29510C
29511      INCLUDE 'DPCOP2.INC'
29512C
29513C-----START POINT-----------------------------------------------------
29514C
29515      ISUBN1='KCON'
29516      ISUBN2='S   '
29517      IERROR='NO'
29518C
29519      IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'CONS')THEN
29520        WRITE(ICOUT,999)
29521  999   FORMAT(1X)
29522        CALL DPWRST('XXX','BUG ')
29523        WRITE(ICOUT,51)
29524   51   FORMAT('***** AT THE BEGINNING OF KCONS--')
29525        CALL DPWRST('XXX','BUG ')
29526        WRITE(ICOUT,52)IBUGA3,ISUBRO,N
29527   52   FORMAT('IBUGA3,ISUBRO,N = ',A4,1X,A4,1X,I8)
29528        CALL DPWRST('XXX','BUG ')
29529        DO55I=1,N
29530          WRITE(ICOUT,56)I,Y(I),X(I)
29531   56     FORMAT('I,Y(I),X(I) = ',I8,2E15.7)
29532          CALL DPWRST('XXX','BUG ')
29533   55   CONTINUE
29534      ENDIF
29535C
29536C               ********************************************
29537C               **  STEP 1--                              **
29538C               **  CHECK THE INPUT ARGUMENTS FOR ERRORS  **
29539C               ********************************************
29540C
29541      AN=N
29542C
29543      IF(N.LE.1)THEN
29544        IERROR='YES'
29545        WRITE(ICOUT,999)
29546        CALL DPWRST('XXX','BUG ')
29547        WRITE(ICOUT,111)
29548  111   FORMAT('***** ERROR IN COMPUTING K CONSISTENCY STATISTIC--')
29549        CALL DPWRST('XXX','BUG ')
29550        WRITE(ICOUT,112)
29551  112   FORMAT('      THE INPUT NUMBER OF OBSERVATIONS IN THE')
29552        CALL DPWRST('XXX','BUG ')
29553        WRITE(ICOUT,114)
29554  114   FORMAT('      VARIABLES FOR WHICH THE K CONSISTENCY ',
29555     1         'STATISTIC')
29556        CALL DPWRST('XXX','BUG ')
29557        WRITE(ICOUT,115)
29558  115   FORMAT('      IS TO BE COMPUTED MUST BE 2 OR LARGER.')
29559        CALL DPWRST('XXX','BUG ')
29560        WRITE(ICOUT,116)
29561  116   FORMAT('      SUCH WAS NOT THE CASE HERE.')
29562        CALL DPWRST('XXX','BUG ')
29563        WRITE(ICOUT,117)N
29564  117   FORMAT('      THE INPUT NUMBER OF OBSERVATIONS = ',I8,'.')
29565        CALL DPWRST('XXX','BUG ')
29566        IERROR='YES'
29567        GOTO9000
29568      ENDIF
29569C
29570C               ****************************************************
29571C               **  STEP 2--                                      **
29572C               **  COMPUTE THE K CONSISTENCY STATISTIC           **
29573C               ****************************************************
29574C
29575      IWRITE='OFF'
29576      CALL DISTIN(X,N,IWRITE,XIDTEM,NUMSET,IBUGA3,IERROR)
29577      CALL SORT(XIDTEM,NUMSET,XIDTEM)
29578C
29579      IF(NUMSET.LT.1)THEN
29580        WRITE(ICOUT,999)
29581        CALL DPWRST('XXX','BUG ')
29582        WRITE(ICOUT,111)
29583        CALL DPWRST('XXX','BUG ')
29584        WRITE(ICOUT,192)
29585  192   FORMAT('      NUMBER OF LABS    NUMSET < 1')
29586        CALL DPWRST('XXX','BUG ')
29587        IERROR='YES'
29588        GOTO9000
29589      ENDIF
29590C
29591      DSUM=0.0D0
29592      J=0
29593      DO1110ISET1=1,NUMSET
29594        K=0
29595        DO1130I=1,N
29596          IF(XIDTEM(ISET1).EQ.X(I))THEN
29597            K=K+1
29598            TEMP(K)=Y(I)
29599          ENDIF
29600 1130   CONTINUE
29601        NTEMP=K
29602        CALL SD(TEMP,NTEMP,IWRITE,XSD,IBUGA3,IERROR)
29603        DSUM=DSUM + DBLE(XSD)**2
29604        YOUT(ISET1)=XSD
29605        IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'CONS')THEN
29606          WRITE(ICOUT,1131)NUMSET,XSD
29607 1131     FORMAT('***** GROUP ',I8,' SD = ',G15.7)
29608          CALL DPWRST('XXX','BUG ')
29609        ENDIF
29610 1110 CONTINUE
29611C
29612      XREP=REAL(DSQRT(DSUM/DBLE(NUMSET)))
29613      DO1150I=1,NUMSET
29614        YOUT(I)=YOUT(I)/XREP
29615 1150 CONTINUE
29616C
29617C               *****************
29618C               **  STEP 90--  **
29619C               **  EXIT.      **
29620C               *****************
29621C
29622 9000 CONTINUE
29623      IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'CONS')THEN
29624        WRITE(ICOUT,999)
29625        CALL DPWRST('XXX','BUG ')
29626        WRITE(ICOUT,9011)
29627 9011   FORMAT('***** AT THE END       OF KCONS--')
29628        CALL DPWRST('XXX','BUG ')
29629        WRITE(ICOUT,9012)IBUGA3,ISUBRO,IERROR
29630 9012   FORMAT('IBUGA3,ISUBRO,IERROR = ',A4,2X,A4,2X,A4)
29631        CALL DPWRST('XXX','BUG ')
29632        WRITE(ICOUT,9013)N,NUMSET
29633 9013   FORMAT('N,NUMSET = ',I8,1X,I8)
29634        CALL DPWRST('XXX','BUG ')
29635        WRITE(ICOUT,9015)XREP
29636 9015   FORMAT('XREP = ',E15.7)
29637        CALL DPWRST('XXX','BUG ')
29638        DO9018I=1,NUMSET
29639          WRITE(ICOUT,9019)I,YOUT(I)
29640 9019     FORMAT('I,YOUT(I) = ',I8,E15.7)
29641          CALL DPWRST('XXX','BUG ')
29642 9018   CONTINUE
29643      ENDIF
29644C
29645      RETURN
29646      END
29647      SUBROUTINE KCONS2(Y,X1,X2,XIDTEM,XIDTE2,TEMP,N,
29648     1IWRITE,YOUT,TAG,TAG2,NOUT,
29649     1ISUBRO,IBUGA3,IERROR)
29650C
29651C     PURPOSE--THIS SUBROUTINE COMPUTES THE K CONSISTENCY STATISTIC
29652C              OF THE DATA IN THE INPUT VECTOR Y WITH LAB ID
29653C              VECTOR X.  THE K CONSISTENCY STATISTIC IS DEFINED AS:
29654C
29655C                 K(i) = SD(i)/Sr
29656C
29657C              WITH SD(i) DENOTING THE STANDARD DEVIATION OF
29658C              LAB i AND THE REPEATABILITY STANDARD DEVIATION,
29659C              RESPECTIVELY.  THE REPEATABILITY STANDARD
29660C              DEVIATION IS DEFINED AS:
29661C
29662C                 Sr = SQRT(SUM[i=1 to p][s(i)**2/p]
29663C
29664C              WITH
29665C                 p      = NUMBER OF LABS
29666C                 s(i)   = STANDARD DEVIATION OF GROUP i.
29667C
29668C              THE DISTINCTION BETWEEN KCONS AND KCONS2 IS THAT
29669C              KCONS IS USED TO COMPUTE THE K CONSISTENCY STATISTIC
29670C              FOR A SINGLE MATERIAL WHILE KCONS2 COMPUTES THE
29671C              K CONSISTENCY STATISTIC FOR MULTIPLE MATERIALS.
29672C
29673C     INPUT  ARGUMENTS--Y      = THE SINGLE PRECISION VECTOR OF
29674C                                (UNSORTED OR SORTED) OBSERVATIONS.
29675C                     --X1     = THE SINGLE PRECISION VECTOR OF
29676C                                GROUP ID's.
29677C                     --X2     = THE SINGLE PRECISION VECTOR OF
29678C                                MATERIAL ID's.
29679C                     --N      = THE INTEGER NUMBER OF OBSERVATIONS
29680C                                IN THE VECTOR Y.
29681C     OUTPUT ARGUMENTS--YOUT   = THE SINGLE PRECISION VECTOR OF THE
29682C                                COMPUTED SAMPLE K CONSISTENCY
29683C                                STATISTIC.
29684C                     --TAG    = THE SINGLE PRECISION VECTOR OF THE
29685C                                MATERIAL ID's.
29686C                     --TAG2   = THE SINGLE PRECISION VECTOR OF THE
29687C                                LAB ID's.
29688C                     --NOUT   = THE INTEGER VALUE CONTAINING THE
29689C                                NUMBER OF VALUES IN YOUT
29690C     OUTPUT--THE COMPUTED SINGLE PRECISION VECTOR OF THE
29691C             SAMPLE K CONSISTENCY STATISTIC.
29692C     RESTRICTIONS--THERE IS NO RESTRICTION ON THE MAXIMUM VALUE
29693C                   OF N FOR THIS SUBROUTINE.
29694C     OTHER DATAPAC   SUBROUTINES NEEDED--SORT, DISTIN, SD.
29695C     FORTRAN LIBRARY SUBROUTINES NEEDED--SQRT.
29696C     MODE OF INTERNAL OPERATIONS--DOUBLE PRECISION.
29697C     LANGUAGE--ANSI FORTRAN (1977)
29698C     REFERENCES--"Standard Practice for Conducting an
29699C                 Interlaboratory Study to Determine the Precision
29700C                 of a Test Method", ASTM International,
29701C                 100 Barr Harbor Drive, PO BOX C700,
29702C                 West Conshohoceken, PA 19428-2959, USA.
29703C                 This document is in support of
29704C                 ASTM Standard E 691 - 99.
29705C     WRITTEN BY--JAMES J. FILLIBEN
29706C                 STATISTICAL ENGINEERING DIVISION
29707C                 INFORMATION TECHNOLOGY LABORATORY
29708C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
29709C                 GAITHERSBURG, MD 20899-8980
29710C                 PHONE--301-975-2855
29711C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
29712C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
29713C     LANGUAGE--ANSI FORTRAN (1977)
29714C     VERSION NUMBER--2005.2
29715C     ORIGINAL VERSION--FEBRUARY  2005.
29716C
29717C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
29718C
29719      CHARACTER*4 IWRITE
29720      CHARACTER*4 IBUGA3
29721      CHARACTER*4 ISUBRO
29722      CHARACTER*4 IERROR
29723C
29724      CHARACTER*4 ISUBN1
29725      CHARACTER*4 ISUBN2
29726C
29727C---------------------------------------------------------------------
29728C
29729      DOUBLE PRECISION DSUM
29730C
29731      DIMENSION Y(*)
29732      DIMENSION X1(*)
29733      DIMENSION X2(*)
29734      DIMENSION YOUT(*)
29735      DIMENSION TAG(*)
29736      DIMENSION TAG2(*)
29737      DIMENSION XIDTEM(*)
29738      DIMENSION XIDTE2(*)
29739      DIMENSION TEMP(*)
29740C
29741C-----COMMON----------------------------------------------------------
29742C
29743      INCLUDE 'DPCOP2.INC'
29744C
29745C-----START POINT-----------------------------------------------------
29746C
29747      ISUBN1='KCON'
29748      ISUBN2='S2  '
29749      IERROR='NO'
29750C
29751      IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'ONS2')THEN
29752        WRITE(ICOUT,999)
29753  999   FORMAT(1X)
29754        CALL DPWRST('XXX','BUG ')
29755        WRITE(ICOUT,51)
29756   51   FORMAT('***** AT THE BEGINNING OF KCONS--')
29757        CALL DPWRST('XXX','BUG ')
29758        WRITE(ICOUT,52)IBUGA3,ISUBRO,N
29759   52   FORMAT('IBUGA3,ISUBRO,N = ',A4,1X,A4,1X,I8)
29760        CALL DPWRST('XXX','BUG ')
29761        DO55I=1,N
29762          WRITE(ICOUT,56)I,Y(I),X1(I),X2(I)
29763   56     FORMAT('I,Y(I),X1(I),X2(I) = ',I8,3G15.7)
29764          CALL DPWRST('XXX','BUG ')
29765   55   CONTINUE
29766      ENDIF
29767C
29768C               ********************************************
29769C               **  STEP 1--                              **
29770C               **  CHECK THE INPUT ARGUMENTS FOR ERRORS  **
29771C               ********************************************
29772C
29773      AN=N
29774C
29775      IF(N.LE.1)THEN
29776        IERROR='YES'
29777        WRITE(ICOUT,999)
29778        CALL DPWRST('XXX','BUG ')
29779        WRITE(ICOUT,111)
29780  111   FORMAT('***** ERROR IN COMPUTING K CONSISTENCY STATISTIC--')
29781        CALL DPWRST('XXX','BUG ')
29782        WRITE(ICOUT,112)
29783  112   FORMAT('      THE INPUT NUMBER OF OBSERVATIONS IN THE')
29784        CALL DPWRST('XXX','BUG ')
29785        WRITE(ICOUT,114)
29786  114   FORMAT('      VARIABLES FOR WHICH THE K CONSISTENCY ',
29787     1         'STATISTIC')
29788        CALL DPWRST('XXX','BUG ')
29789        WRITE(ICOUT,115)
29790  115   FORMAT('      IS TO BE COMPUTED MUST BE 2 OR LARGER.')
29791        CALL DPWRST('XXX','BUG ')
29792        WRITE(ICOUT,116)
29793  116   FORMAT('      SUCH WAS NOT THE CASE HERE.')
29794        CALL DPWRST('XXX','BUG ')
29795        WRITE(ICOUT,117)N
29796  117   FORMAT('      THE INPUT NUMBER OF OBSERVATIONS = ',I8,'.')
29797        CALL DPWRST('XXX','BUG ')
29798        IERROR='YES'
29799        GOTO9000
29800      ENDIF
29801C
29802C               ****************************************************
29803C               **  STEP 2--                                      **
29804C               **  COMPUTE THE K CONSISTENCY STATISTIC           **
29805C               ****************************************************
29806C
29807      IWRITE='OFF'
29808      CALL DISTIN(X1,N,IWRITE,XIDTEM,NUMSE1,IBUGA3,IERROR)
29809      CALL SORT(XIDTEM,NUMSE1,XIDTEM)
29810      CALL DISTIN(X2,N,IWRITE,XIDTE2,NUMSE2,IBUGA3,IERROR)
29811      CALL SORT(XIDTE2,NUMSE2,XIDTE2)
29812C
29813      IF(NUMSE1.LT.1)THEN
29814        WRITE(ICOUT,999)
29815        CALL DPWRST('XXX','BUG ')
29816        WRITE(ICOUT,111)
29817        CALL DPWRST('XXX','BUG ')
29818        WRITE(ICOUT,192)
29819  192   FORMAT('      NUMBER OF LABS    NUMSE1 < 1')
29820        CALL DPWRST('XXX','BUG ')
29821        IERROR='YES'
29822        GOTO9000
29823      ENDIF
29824C
29825      IF(NUMSE2.LT.1)THEN
29826        WRITE(ICOUT,999)
29827        CALL DPWRST('XXX','BUG ')
29828        WRITE(ICOUT,111)
29829        CALL DPWRST('XXX','BUG ')
29830        WRITE(ICOUT,194)
29831  194   FORMAT('      NUMBER OF MATERIALS    NUMSE2 < 1')
29832        CALL DPWRST('XXX','BUG ')
29833        IERROR='YES'
29834        GOTO9000
29835      ENDIF
29836C
29837      J=0
29838      DO1110ISET2=1,NUMSE2
29839C
29840        DSUM=0.0D0
29841        DO1130ISET1=1,NUMSE1
29842C
29843          K=0
29844          DO1140I=1,N
29845            IF(XIDTEM(ISET1).EQ.X1(I).AND.XIDTE2(ISET2).EQ.X2(I))THEN
29846              K=K+1
29847              TEMP(K)=Y(I)
29848            ENDIF
29849 1140     CONTINUE
29850          NTEMP=K
29851C
29852          CALL SD(TEMP,NTEMP,IWRITE,XSD,IBUGA3,IERROR)
29853          DSUM=DSUM + DBLE(XSD)**2
29854          NOUT=(ISET2-1)*NUMSE1 + ISET1
29855          YOUT(NOUT)=XSD
29856          TAG(NOUT)=XIDTE2(ISET2)
29857          TAG2(NOUT)=XIDTEM(ISET1)
29858C
29859          IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'ONS2')THEN
29860            WRITE(ICOUT,1141)NUMSE1,NUMSE2,XSD
29861 1141       FORMAT('***** GROUP ',I8,' SD = ',G15.7)
29862            CALL DPWRST('XXX','BUG ')
29863          ENDIF
29864C
29865 1130   CONTINUE
29866C
29867        XREP=REAL(DSQRT(DSUM/DBLE(NUMSE1)))
29868        DO1150I=(ISET2-1)*NUMSE1+1,ISET2*NUMSE1
29869          YOUT(I)=YOUT(I)/XREP
29870 1150   CONTINUE
29871C
29872 1110 CONTINUE
29873      NOUT=NUMSE1*NUMSE2
29874C
29875C               *****************
29876C               **  STEP 90--  **
29877C               **  EXIT.      **
29878C               *****************
29879C
29880 9000 CONTINUE
29881      IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'ONS2')THEN
29882        WRITE(ICOUT,999)
29883        CALL DPWRST('XXX','BUG ')
29884        WRITE(ICOUT,9011)
29885 9011   FORMAT('***** AT THE END       OF KCONS--')
29886        CALL DPWRST('XXX','BUG ')
29887        WRITE(ICOUT,9012)IBUGA3,ISUBRO,IERROR
29888 9012   FORMAT('IBUGA3,ISUBRO,IERROR = ',A4,2X,A4,2X,A4)
29889        CALL DPWRST('XXX','BUG ')
29890        WRITE(ICOUT,9013)N,NUMSE1,NUMSE2,XREP
29891 9013   FORMAT('N,NUMSE1,NUMSE2,XREP = ',I8,1X,I8,1X,I8,G15.7)
29892        CALL DPWRST('XXX','BUG ')
29893        DO9018I=1,NOUT
29894          WRITE(ICOUT,9019)I,TAG(I),YOUT(I)
29895 9019     FORMAT('I,TAG(I),YOUT(I) = ',I8,2G15.7)
29896          CALL DPWRST('XXX','BUG ')
29897 9018   CONTINUE
29898      ENDIF
29899C
29900      RETURN
29901      END
29902      SUBROUTINE KENTAU(X,Y,N,ICASAN,IKTATA,IWRITE,XTEMP,YTEMP,MAXNXT,
29903     1                  XYKTAU,KTAUA,KTAUB,KTAUC,
29904     1                  STATCD,PVAL,PVALLT,PVALUT,
29905     1                  CUTU90,CUTU95,CTU975,CUTU99,CTU995,
29906     1                  CUTL90,CUTL95,CTL975,CUTL99,CTL995,
29907     1                  IBUGA3,ISUBRO,IERROR)
29908C
29909C     PURPOSE--THIS SUBROUTINE COMPUTES THE KENDALL'S TAU COEFFICIENT
29910C              BETWEEN THE 2 SETS OF DATA IN THE INPUT VECTORS X AND Y.
29911C     INPUT  ARGUMENTS--X      = THE SINGLE PRECISION VECTOR OF
29912C                                (UNSORTED OR SORTED) OBSERVATIONS
29913C                                WHICH CONSTITUTE THE FIRST SET
29914C                                OF DATA.
29915C                     --Y      = THE SINGLE PRECISION VECTOR OF
29916C                                (UNSORTED OR SORTED) OBSERVATIONS
29917C                                WHICH CONSTITUTE THE SECOND SET
29918C                                OF DATA.
29919C                     --N      = THE INTEGER NUMBER OF OBSERVATIONS
29920C                                IN THE VECTOR X, OR EQUIVALENTLY,
29921C                                THE INTEGER NUMBER OF OBSERVATIONS
29922C                                IN THE VECTOR Y.
29923C     OUTPUT ARGUMENTS--XYKTAU = THE SINGLE PRECISION VALUE OF THE
29924C                                COMPUTED KENDALL'S TAU
29925C                                COEFFICIENT BETWEEN THE 2 SETS OF
29926C                                DATA IN THE INPUT VECTORS X AND Y.
29927C                                THIS SINGLE PRECISION VALUE
29928C                                WILL BE BETWEEN -1.0 AND 1.0
29929C                                (INCLUSIVELY).
29930C     OUTPUT--THE COMPUTED SINGLE PRECISION VALUE OF THE
29931C             KENDALL'S TAU BETWEEN THE 2 SETS
29932C             OF DATA IN THE INPUT VECTORS X AND Y.
29933C     OTHER DATAPAC   SUBROUTINES NEEDED--SORTC.
29934C     FORTRAN LIBRARY SUBROUTINES NEEDED--DSQRT.
29935C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
29936C     LANGUAGE--ANSI FORTRAN (1977)
29937C     REFERENCES--W. J. CONOVER, "PRACTICAL NON-PARAMETRIC
29938C                 STATISTICS", THIRD EDITION, WILEY, 1999,
29939C                 PP. 318-322.
29940C     WRITTEN BY--ALAN HECKERT
29941C                 STATISTICAL ENGINEERING DIVISION
29942C                 INFORMATION TECHNOLOGY LABORATORY
29943C                 NATION INSTITUTE OF STANDARDS AND TECHNOLOGY
29944C                 GAITHERSBURG, MD 20899-8980
29945C                 PHONE--301-975-2899
29946C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
29947C           OF THE NATION INSTITUTE OF STANDARDS AND TECHNOLOGY.
29948C     LANGUAGE--ANSI FORTRAN (1977)
29949C     VERSION NUMBER--2004/10
29950C     ORIGINAL VERSION--OCTOBER   2004.
29951C     UPDATED         --FEBRUARY  2013. RETURN CRITICAL VALUES FOR
29952C                                       SMALL SAMPLES, CDF/PVALUES
29953C                                       FOR LARGE SAMPLES
29954C     UPDATED         --AUGUST    2019. SUPPORT SOME DIFFERENT
29955C                                       FORMULATIONS OF KENDALL'S TAU
29956C
29957C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
29958C
29959      CHARACTER*4 ICASAN
29960      CHARACTER*4 IKTATA
29961      CHARACTER*4 IWRITE
29962      CHARACTER*4 IBUGA3
29963      CHARACTER*4 ISUBRO
29964      CHARACTER*4 IERROR
29965C
29966      CHARACTER*4 ISUBN1
29967      CHARACTER*4 ISUBN2
29968C
29969C---------------------------------------------------------------------
29970C
29971      DIMENSION X(*)
29972      DIMENSION Y(*)
29973C
29974      DIMENSION XTEMP(*)
29975      DIMENSION YTEMP(*)
29976C
29977      DIMENSION WP900(60)
29978      DIMENSION WP950(60)
29979      DIMENSION WP975(60)
29980      DIMENSION WP990(60)
29981      DIMENSION WP995(60)
29982C
29983      REAL KTAUA
29984      REAL KTAUB
29985      REAL KTAUC
29986C
29987C-----COMMON----------------------------------------------------------
29988C
29989      INCLUDE 'DPCOP2.INC'
29990C
29991C     FOLLOWING VALUES ARE FROM TABLE A11 IN CONOVER.
29992C
29993      DATA WP900/
29994     1   0.0000, 0.0000, 0.0000, 0.6667, 0.6000, 0.4667, 0.4286, 0.3571,
29995     1   0.3333, 0.3333, 0.3091, 0.2727, 0.2821, 0.2527, 0.2571, 0.2333,
29996     1   0.2353, 0.2288, 0.2164, 0.2105, 0.2000, 0.1948, 0.1937, 0.1884,
29997     1   0.1867, 0.1815, 0.1738, 0.1746, 0.1675, 0.1678, 0.1613, 0.1613,
29998     1   0.1591, 0.1551, 0.1529, 0.1492, 0.1471, 0.1465, 0.1444, 0.1372,
29999     1   0.1390, 0.1382, 0.1362, 0.1353, 0.1333, 0.1304, 0.1304, 0.1277,
30000     1   0.1276, 0.1249, 0.1247, 0.1222, 0.1219, 0.1209, 0.1192, 0.1182,
30001     1   0.1165, 0.1155, 0.1151, 0.1141/
30002C
30003      DATA WP950/
30004     1   0.0000, 0.0000, 0.0000, 0.6667, 0.6000, 0.6000, 0.5238, 0.5000,
30005     1   0.4444, 0.4222, 0.3818, 0.3636, 0.3333, 0.3407, 0.3143, 0.3000,
30006     1   0.2941, 0.2810, 0.2749, 0.2632, 0.2571, 0.2554, 0.2490, 0.2391,
30007     1   0.2333, 0.2308, 0.2251, 0.2222, 0.2167, 0.2138, 0.2086, 0.2056,
30008     1   0.2008, 0.1979, 0.1933, 0.1905, 0.1892, 0.1863, 0.1849, 0.1821,
30009     1   0.1780, 0.1754, 0.1739, 0.1712, 0.1697, 0.1671, 0.1656, 0.1649,
30010     1   0.1616, 0.1608, 0.1592, 0.1569, 0.1553, 0.1544, 0.1529, 0.1506,
30011     1   0.1504, 0.1482, 0.1467, 0.1458/
30012C
30013      DATA WP975/
30014     1   0.0000, 0.0000, 0.0000, 1.0000, 0.8000, 0.7333, 0.6190, 0.5714,
30015     1   0.5000, 0.4667, 0.4545, 0.4242, 0.4103, 0.3846, 0.3714, 0.3667,
30016     1   0.3529, 0.3333, 0.3216, 0.3158, 0.3048, 0.2987, 0.2885, 0.2826,
30017     1   0.2800, 0.2738, 0.2650, 0.2593, 0.2562, 0.2506, 0.2473, 0.2419,
30018     1   0.2386, 0.2335, 0.2303, 0.2286, 0.2252, 0.2205, 0.2173, 0.2154,
30019     1   0.2122, 0.2102, 0.2071, 0.2051, 0.2020, 0.2000, 0.1970, 0.1950,
30020     1   0.1939, 0.1902, 0.1890, 0.1870, 0.1858, 0.1838, 0.1811, 0.1792,
30021     1   0.1779, 0.1760, 0.1748, 0.1729/
30022C
30023      DATA WP990/
30024     1   0.0000, 0.0000, 0.0000, 1.0000, 0.8000, 0.7333, 0.7143, 0.6429,
30025     1   0.6111, 0.5556, 0.5273, 0.5152, 0.4872, 0.4505, 0.4476, 0.4167,
30026     1   0.4118, 0.3987, 0.3801, 0.3684, 0.3619, 0.3506, 0.3439, 0.3333,
30027     1   0.3267, 0.3231, 0.3162, 0.3069, 0.3054, 0.2966, 0.2903, 0.2863,
30028     1   0.2841, 0.2763, 0.2739, 0.2698, 0.2643, 0.2603, 0.2578, 0.2538,
30029     1   0.2512, 0.2474, 0.2447, 0.2410, 0.2383, 0.2367, 0.2340, 0.2305,
30030     1   0.2279, 0.2261, 0.2235, 0.2217, 0.2192, 0.2173, 0.2148, 0.2130,
30031     1   0.2105, 0.2087, 0.2075, 0.2056/
30032C
30033      DATA WP995/
30034     1   0.0000, 0.0000, 0.0000, 1.0000, 1.0000, 0.8667, 0.8095, 0.7143,
30035     1   0.6667, 0.6000, 0.5636, 0.5455, 0.5285, 0.4945, 0.4857, 0.4667,
30036     1   0.4559, 0.4379, 0.4269, 0.4105, 0.4000, 0.3853, 0.3834, 0.3696,
30037     1   0.3600, 0.3538, 0.3504, 0.3386, 0.3350, 0.3287, 0.3204, 0.3185,
30038     1   0.3106, 0.3084, 0.3008, 0.2984, 0.2943, 0.2888, 0.2848, 0.2821,
30039     1   0.2780, 0.2729, 0.2713, 0.2664, 0.2646, 0.2618, 0.2581, 0.2553,
30040     1   0.2517, 0.2490, 0.2471, 0.2443, 0.2424, 0.2397, 0.2377, 0.2351,
30041     1   0.2331, 0.2305, 0.2285, 0.2271/
30042C
30043C-----START POINT-----------------------------------------------------
30044C
30045C     2019/08: NOTE THAT THERE ARE SEVERAL ALTERNATIVE FORMULATIONS
30046C              OF KENDALL'S TAU IN THE LITERATURE.  OUR ORIGINAL
30047C              IMPLEMENTATION IS FROM CONOVER WHICH IS:
30048C
30049C                 K = (Nc - Nd)/(Nc + Nd)
30050C
30051C              WHERE Nc IS THE NUMBER OF CONCORDANT PAIRS AND Nd IS THE
30052C              NUMBER OF DISCORDANT PAIRS.  THIS IS ALSO CALLED THE
30053C              GOODMAN AND KRUSKAL GAMMA COEFFICIENT.
30054C
30055C              KENDALL'S ORIGINAL FORMULATION IS:
30056C
30057C                K = (Nc - Nd)/{N*(N-1)/2}
30058C
30059C              THIS IS ALSO REFERRED TO AS KENDALL'S TAU-A IN THE
30060C              LITERATURE.
30061C
30062C              THE DISTINCTION BETWEEN THE 2 STATISTICS IS THAT THE
30063C              CONOVER (GAMMA) FORMULATION TAKES TIES INTO ACCOUNT WHILE
30064C              KENDALL'S TAU-A DOES NOT.
30065C
30066C              THERE ARE SEVERAL ADDITIONAL VARIANTS.  THESE USE
30067C              (Nc - Nd) IN THE NUMERATOR, BUT USE DIFFERENT
30068C              DENOMINATORS.
30069C
30070      ISUBN1='KENT'
30071      ISUBN2='AU  '
30072      IERROR='NO'
30073C
30074      IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'NTAU')THEN
30075        WRITE(ICOUT,999)
30076  999   FORMAT(1X)
30077        CALL DPWRST('XXX','BUG ')
30078        WRITE(ICOUT,51)
30079   51   FORMAT('***** AT THE BEGINNING OF KENTAU--')
30080        CALL DPWRST('XXX','BUG ')
30081        WRITE(ICOUT,52)ICASAN,IBUGA3,N
30082   52   FORMAT('ICASAN,IBUGA3,N = ',2(A4,2X),I8)
30083        CALL DPWRST('XXX','BUG ')
30084        DO55I=1,N
30085          WRITE(ICOUT,56)I,X(I),Y(I)
30086   56     FORMAT('I,X(I),Y(I) = ',I8,2G15.7)
30087          CALL DPWRST('XXX','BUG ')
30088   55   CONTINUE
30089       ENDIF
30090C
30091C               ********************************************
30092C               **  COMPUTE RANK CORRELATION COEFFICIENT  **
30093C               ********************************************
30094C
30095C               ********************************************
30096C               **  STEP 1--                              **
30097C               **  CHECK THE INPUT ARGUMENTS FOR ERRORS  **
30098C               ********************************************
30099C
30100      AN=N
30101C
30102      IF(N.LT.1.OR.N.GT.MAXNXT)THEN
30103        IERROR='YES'
30104        WRITE(ICOUT,999)
30105        CALL DPWRST('XXX','BUG ')
30106        WRITE(ICOUT,111)
30107  111   FORMAT('***** ERROR IN KENDALLS TAU--')
30108        CALL DPWRST('XXX','BUG ')
30109        WRITE(ICOUT,112)
30110  112   FORMAT('      THE NUMBER OF OBSERVATIONS FOR THE  RESPONSE ',
30111     1         'VARIABLES')
30112        CALL DPWRST('XXX','BUG ')
30113        WRITE(ICOUT,115)MAXNXT
30114  115   FORMAT('      MUST BE BETWEEN 1 AND ',I8,' (INCLUSIVELY).')
30115        CALL DPWRST('XXX','BUG ')
30116        WRITE(ICOUT,116)
30117  116   FORMAT('      SUCH WAS NOT THE CASE HERE.')
30118        CALL DPWRST('XXX','BUG ')
30119        WRITE(ICOUT,117)N
30120  117   FORMAT('      THE NUMBER OF OBSERVATIONS   = ',I8,'.')
30121        CALL DPWRST('XXX','BUG ')
30122        GOTO9000
30123      ELSEIF(N.EQ.1)THEN
30124        WRITE(ICOUT,999)
30125        CALL DPWRST('XXX','BUG ')
30126        WRITE(ICOUT,121)
30127  121   FORMAT('***** WARNING IN KENDALLS TAU--')
30128        CALL DPWRST('XXX','BUG ')
30129        WRITE(ICOUT,123)
30130  123   FORMAT('      THE NUMBER OF PAIRS (N) HAS THE VALUE 1.')
30131        CALL DPWRST('XXX','BUG ')
30132        XYKTAU=1.0
30133        GOTO9000
30134      ENDIF
30135C
30136C               *************************************************
30137C               **  STEP 2--                                   **
30138C               **  COMPUTE THE RANK CORRELATION COEFFICIENT.  **
30139C               *************************************************
30140C
30141      CALL DISTIN(X,N,IWRITE,XTEMP,NXD,IBUGA3,IERROR)
30142      CALL DISTIN(Y,N,IWRITE,YTEMP,NYD,IBUGA3,IERROR)
30143      M=MIN(NXD,NYD)
30144      AM=REAL(M)
30145CCCCC CALL SORTC(X,Y,N,XTEMP,YTEMP)
30146C
30147      ANC=0.0
30148      AND=0.0
30149      AN=REAL(N)
30150      DENOM1=(AN/2.0)*(AN-1.0)
30151      TX=0.0
30152      TY=0.0
30153      TXY=0.0
30154      ANC2=0.0
30155      AND2=0.0
30156      AN1=0.0
30157      AN2=0.0
30158C
30159      NM1=N-1
30160      DO200J=1,NM1
30161        M=J+1
30162        DO300I=M,N
30163          ANUM=Y(J) - Y(I)
30164          ADENOM=X(J) - X(I)
30165          IF(ADENOM.NE.0.0)THEN
30166            RATIO=ANUM/ADENOM
30167            IF(RATIO.GT.0.0)THEN
30168              ANC=ANC+1.0
30169              ANC2=ANC2+1.0
30170            ELSEIF(RATIO.LT.0.0)THEN
30171              AND=AND+1.0
30172              AND2=AND2+1.0
30173            ELSE
30174              ANC=ANC+0.5
30175              AND=AND+0.5
30176              TY=TY+1.0
30177            ENDIF
30178          ELSE
30179            IF(Y(I).NE.Y(J))THEN
30180              TX=TX+1.0
30181            ELSE
30182              TXY=TXY+1.0
30183            ENDIF
30184          ENDIF
30185  300   CONTINUE
30186  200 CONTINUE
30187      XYKTAU=(ANC-AND)/(ANC+AND)
30188C
30189C     KENDALL'S TAU-A
30190C
30191      KTAUA=(ANC-AND)/DENOM1
30192C
30193C     KENDALL'S TAU-B
30194C
30195      DENOM2=SQRT((ANC2+AND2+TX)*(ANC2+AND2+TY))
30196      KTAUB=(ANC2-AND2)/DENOM2
30197C
30198C     KENDALL'S TAU-C
30199C
30200      DENOM3=(AM-1.0)/AM
30201      DENOM3=DENOM3*AN*AN
30202      KTAUC=2.0*(ANC2-AND2)/DENOM3
30203C
30204C               *************************************************
30205C               **  STEP 2B--                                  **
30206C               **  NOW COMPUTE CDF, PVALUE, AND CRITICAL      **
30207C               **  VALUES.                                    **
30208C               *************************************************
30209C
30210C     USE TABLED CRITICAL VALUES FROM TABLE A11 FOR N <= 60.  OTHERWISE,
30211C     USE
30212C
30213C           W(p) = Z(p)*SQRT(N*(2*N+5))/(3*SQRT(N*(N-1)))
30214C
30215C     ONLY COMPUTE THESE FOR CONOVER DEFINITION OF KENDALL'S TAU.
30216C
30217      AN=REAL(N)
30218      ANUM=SQRT(2.0*(2.0*AN+5.0))
30219      DENOM=3.0*SQRT(AN*(AN-1.0))
30220      AFACT=ANUM/DENOM
30221      ATEMP=XYKTAU/AFACT
30222      CALL NORCDF(ATEMP,STATCD)
30223      PVALLT=STATCD
30224      PVALUT=1.0 - STATCD
30225      PVAL=2.0*MIN(PVALLT,PVALUT)
30226C
30227      IF(N.GT.60 .OR. IKTATA.EQ.'NORM')THEN
30228        P=0.90
30229        CALL NORPPF(P,CUTU90)
30230        P=0.95
30231        CALL NORPPF(P,CUTU95)
30232        P=0.975
30233        CALL NORPPF(P,CTU975)
30234        P=0.99
30235        CALL NORPPF(P,CUTU99)
30236        P=0.995
30237        CALL NORPPF(P,CTU995)
30238        CUTU90=AFACT*CUTU90
30239        CUTU95=AFACT*CUTU95
30240        CTU975=AFACT*CTU975
30241        CUTU99=AFACT*CUTU99
30242        CTU995=AFACT*CTU995
30243      ELSE
30244        CUTU90=WP900(N)
30245        CUTU95=WP950(N)
30246        CTU975=WP975(N)
30247        CUTU99=WP990(N)
30248        CTU995=WP995(N)
30249      ENDIF
30250      CUTL90=-CUTU90
30251      CUTL95=-CUTU95
30252      CTL975=-CTU975
30253      CUTL95=-CUTU95
30254      CUTL99=-CUTU99
30255      CTL995=-CTU995
30256C
30257C
30258C               *******************************
30259C               **  STEP 3--                 **
30260C               **  WRITE OUT A LINE         **
30261C               **  OF SUMMARY INFORMATION.  **
30262C               *******************************
30263C
30264      IF(IFEEDB.EQ.'ON' .AND. IWRITE.EQ.'ON')THEN
30265        WRITE(ICOUT,999)
30266        CALL DPWRST('XXX','BUG ')
30267        WRITE(ICOUT,811)N,XYKTAU
30268  811   FORMAT('THE KENDALLS TAU COEFFICIENT OF THE ',I8,
30269     1         ' OBSERVATIONS = ',G15.7)
30270        CALL DPWRST('XXX','BUG ')
30271      ENDIF
30272C
30273C               *****************
30274C               **  STEP 90--  **
30275C               **  EXIT.      **
30276C               *****************
30277C
30278 9000 CONTINUE
30279      IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'NTAU')THEN
30280        WRITE(ICOUT,999)
30281        CALL DPWRST('XXX','BUG ')
30282        WRITE(ICOUT,9011)
30283 9011   FORMAT('***** AT THE END       OF KENTAU--')
30284        CALL DPWRST('XXX','BUG ')
30285        WRITE(ICOUT,9012)IERROR,ANC,AND,XYKTAU
30286 9012   FORMAT('IERROR,ANC,AND,XYKTAU = ',A4,2X,3G15.7)
30287        CALL DPWRST('XXX','BUG ')
30288        WRITE(ICOUT,9014)KTAUA,KTAUB,KTAUC,TX,TY,TXY
30289 9014   FORMAT('KTAUA,KTAUB,KTAUC,TX,TY,TXY = ',6G15.7)
30290        CALL DPWRST('XXX','BUG ')
30291        WRITE(ICOUT,9016)ANC2,AND2,DENOM1,DENOM2,DENOM3,AM
30292 9016   FORMAT('ANC2,AND2,DENOM1,DENOM2,DENOM3,AM = ',6G15.7)
30293        CALL DPWRST('XXX','BUG ')
30294      ENDIF
30295C
30296      RETURN
30297      END
30298      SUBROUTINE KLVNA(X,BER,BEI,GER,GEI,DER,DEI,HER,HEI)
30299C
30300C       ======================================================
30301C       Purpose: Compute Kelvin functions ber x, bei x, ker x
30302C                and kei x, and their derivatives  ( x > 0 )
30303C       Input :  x   --- Argument of Kelvin functions
30304C       Output:  BER --- ber x
30305C                BEI --- bei x
30306C                GER --- ker x
30307C                GEI --- kei x
30308C                DER --- ber'x
30309C                DEI --- bei'x
30310C                HER --- ker'x
30311C                HEI --- kei'x
30312C       ================================================
30313C
30314        IMPLICIT DOUBLE PRECISION (A-H,O-Z)
30315        PI=3.141592653589793D0
30316        EL=.5772156649015329D0
30317        EPS=1.0D-15
30318        IF (X.EQ.0.0D0) THEN
30319           BER=1.0D0
30320           BEI=0.0D0
30321           GER=1.0D+300
30322           GEI=-0.25D0*PI
30323           DER=0.0D0
30324           DEI=0.0D0
30325           HER=-1.0D+300
30326           HEI=0.0D0
30327           RETURN
30328        ENDIF
30329        X2=0.25D0*X*X
30330        X4=X2*X2
30331        IF (DABS(X).LT.10.0D0) THEN
30332           BER=1.0D0
30333           R=1.0D0
30334           DO 10 M=1,60
30335              R=-0.25D0*R/(M*M)/(2.0D0*M-1.0D0)**2*X4
30336              BER=BER+R
30337              IF (DABS(R).LT.DABS(BER)*EPS) GO TO 15
3033810         CONTINUE
3033915         BEI=X2
30340           R=X2
30341           DO 20 M=1,60
30342              R=-0.25D0*R/(M*M)/(2.0D0*M+1.0D0)**2*X4
30343              BEI=BEI+R
30344              IF (DABS(R).LT.DABS(BEI)*EPS) GO TO 25
3034520         CONTINUE
3034625         GER=-(DLOG(X/2.0D0)+EL)*BER+0.25D0*PI*BEI
30347           R=1.0D0
30348           GS=0.0D0
30349           DO 30 M=1,60
30350              R=-0.25D0*R/(M*M)/(2.0D0*M-1.0D0)**2*X4
30351              GS=GS+1.0D0/(2.0D0*M-1.0D0)+1.0D0/(2.0D0*M)
30352              GER=GER+R*GS
30353              IF (DABS(R*GS).LT.DABS(GER)*EPS) GO TO 35
3035430         CONTINUE
3035535         GEI=X2-(DLOG(X/2.0D0)+EL)*BEI-0.25D0*PI*BER
30356           R=X2
30357           GS=1.0D0
30358           DO 40 M=1,60
30359              R=-0.25D0*R/(M*M)/(2.0D0*M+1.0D0)**2*X4
30360              GS=GS+1.0D0/(2.0D0*M)+1.0D0/(2.0D0*M+1.0D0)
30361              GEI=GEI+R*GS
30362              IF (DABS(R*GS).LT.DABS(GEI)*EPS) GO TO 45
3036340         CONTINUE
3036445         DER=-0.25D0*X*X2
30365           R=DER
30366           DO 50 M=1,60
30367              R=-0.25D0*R/M/(M+1.0D0)/(2.0D0*M+1.0D0)**2*X4
30368              DER=DER+R
30369              IF (DABS(R).LT.DABS(DER)*EPS) GO TO 55
3037050         CONTINUE
3037155         DEI=0.5D0*X
30372           R=DEI
30373           DO 60 M=1,60
30374              R=-0.25D0*R/(M*M)/(2.D0*M-1.D0)/(2.D0*M+1.D0)*X4
30375              DEI=DEI+R
30376              IF (DABS(R).LT.DABS(DEI)*EPS) GO TO 65
3037760            CONTINUE
3037865         R=-0.25D0*X*X2
30379           GS=1.5D0
30380           HER=1.5D0*R-BER/X-(DLOG(X/2.D0)+EL)*DER+0.25*PI*DEI
30381           DO 70 M=1,60
30382              R=-0.25D0*R/M/(M+1.0D0)/(2.0D0*M+1.0D0)**2*X4
30383              GS=GS+1.0D0/(2*M+1.0D0)+1.0D0/(2*M+2.0D0)
30384              HER=HER+R*GS
30385              IF (DABS(R*GS).LT.DABS(HER)*EPS) GO TO 75
3038670         CONTINUE
3038775         R=0.5D0*X
30388           GS=1.0D0
30389           HEI=0.5D0*X-BEI/X-(DLOG(X/2.D0)+EL)*DEI-0.25*PI*DER
30390           DO 80 M=1,60
30391              R=-0.25D0*R/(M*M)/(2*M-1.0D0)/(2*M+1.0D0)*X4
30392              GS=GS+1.0D0/(2.0D0*M)+1.0D0/(2*M+1.0D0)
30393              HEI=HEI+R*GS
30394              IF (DABS(R*GS).LT.DABS(HEI)*EPS) RETURN
3039580         CONTINUE
30396        ELSE
30397           PP0=1.0D0
30398           PN0=1.0D0
30399           QP0=0.0D0
30400           QN0=0.0D0
30401           R0=1.0D0
30402           KM=18
30403           IF (DABS(X).GE.40.0) KM=10
30404           FAC=1.0D0
30405           DO 85 K=1,KM
30406              FAC=-FAC
30407              XT=0.25D0*K*PI-INT(0.125D0*K)*2.0D0*PI
30408              CS=COS(XT)
30409              SS=SIN(XT)
30410              R0=0.125D0*R0*(2.0D0*K-1.0D0)**2/K/X
30411              RC=R0*CS
30412              RS=R0*SS
30413              PP0=PP0+RC
30414              PN0=PN0+FAC*RC
30415              QP0=QP0+RS
30416              QN0=QN0+FAC*RS
3041785         CONTINUE
30418           XD=X/DSQRT(2.0D0)
30419           XE1=DEXP(XD)
30420           XE2=DEXP(-XD)
30421           XC1=1.D0/DSQRT(2.0D0*PI*X)
30422           XC2=DSQRT(.5D0*PI/X)
30423           CP0=DCOS(XD+0.125D0*PI)
30424           CN0=DCOS(XD-0.125D0*PI)
30425           SP0=DSIN(XD+0.125D0*PI)
30426           SN0=DSIN(XD-0.125D0*PI)
30427           GER=XC2*XE2*(PN0*CP0-QN0*SP0)
30428           GEI=XC2*XE2*(-PN0*SP0-QN0*CP0)
30429           BER=XC1*XE1*(PP0*CN0+QP0*SN0)-GEI/PI
30430           BEI=XC1*XE1*(PP0*SN0-QP0*CN0)+GER/PI
30431           PP1=1.0D0
30432           PN1=1.0D0
30433           QP1=0.0D0
30434           QN1=0.0D0
30435           R1=1.0D0
30436           FAC=1.0D0
30437           DO 90 K=1,KM
30438              FAC=-FAC
30439              XT=0.25D0*K*PI-INT(0.125D0*K)*2.0D0*PI
30440              CS=DCOS(XT)
30441              SS=DSIN(XT)
30442              R1=0.125D0*R1*(4.D0-(2.0D0*K-1.0D0)**2)/K/X
30443              RC=R1*CS
30444              RS=R1*SS
30445              PP1=PP1+FAC*RC
30446              PN1=PN1+RC
30447              QP1=QP1+FAC*RS
30448              QN1=QN1+RS
3044990         CONTINUE
30450           HER=XC2*XE2*(-PN1*CN0+QN1*SN0)
30451           HEI=XC2*XE2*(PN1*SN0+QN1*CN0)
30452           DER=XC1*XE1*(PP1*CP0+QP1*SP0)-HEI/PI
30453           DEI=XC1*XE1*(PP1*SP0-QP1*CP0)+HER/PI
30454        ENDIF
30455        RETURN
30456        END
30457      SUBROUTINE KROBOV( NDIM, MINVLS, MAXVLS, FUNCTN, ABSEPS, RELEPS,
30458     &                   ABSERR, FINEST, INFORM )
30459*
30460*  Automatic Multidimensional Integration Subroutine
30461*
30462*         AUTHOR: Alan Genz
30463*                 Department of Mathematics
30464*                 Washington State University
30465*                 Pulman, WA 99164-3113
30466*                 Email: AlanGenz@wsu.edu
30467*
30468*         Last Change: 4/15/98
30469*
30470*  KROBOV computes an approximation to the integral
30471*
30472*      1  1     1
30473*     I  I ... I       F(X)  dx(NDIM)...dx(2)dx(1)
30474*      0  0     0
30475*
30476*
30477*  KROBOV uses randomized Korobov rules. The primary references are
30478*  "Randomization of Number Theoretic Methods for Multiple Integration"
30479*   R. Cranley and T.N.L. Patterson, SIAM J Numer Anal, 13, pp. 904-14,
30480*  and
30481*   "Optimal Parameters for Multidimensional Integration",
30482*    P. Keast, SIAM J Numer Anal, 10, pp.831-838.
30483*
30484***************  Parameters ********************************************
30485****** Input parameters
30486*  NDIM    Number of variables, must exceed 1, but not exceed 40
30487*  MINVLS  Integer minimum number of function evaluations allowed.
30488*          MINVLS must not exceed MAXVLS.  If MINVLS < 0 then the
30489*          routine assumes a previous call has been made with
30490*          the same integrand and continues that calculation.
30491*  MAXVLS  Integer maximum number of function evaluations allowed.
30492*  FUNCTN  EXTERNALly declared user defined function to be integrated.
30493*          It must have parameters (NDIM,Z), where Z is a real array
30494*          of dimension NDIM.
30495*  ABSEPS  Required absolute accuracy.
30496*  RELEPS  Required relative accuracy.
30497****** Output parameters
30498*  MINVLS  Actual number of function evaluations used.
30499*  ABSERR  Estimated absolute accuracy of FINEST.
30500*  FINEST  Estimated value of integral.
30501*  INFORM  INFORM = 0 for normal exit, when
30502*                     ABSERR <= MAX(ABSEPS, RELEPS*ABS(FINEST))
30503*                  and
30504*                     INTVLS <= MAXCLS.
30505*          INFORM = 1 If MAXVLS was too small to obtain the required
30506*          accuracy. In this case a value FINEST is returned with
30507*          estimated absolute accuracy ABSERR.
30508************************************************************************
30509      EXTERNAL FUNCTN
30510      INTEGER NDIM, MINVLS, MAXVLS, INFORM, NP, PLIM, NLIM,
30511     &        SAMPLS, I, INTVLS, MINSMP
30512      PARAMETER ( PLIM = 20, NLIM = 100, MINSMP = 6 )
30513      INTEGER C(PLIM,NLIM), P(PLIM)
30514      DOUBLE PRECISION FUNCTN, ABSEPS, RELEPS, FINEST, ABSERR, DIFINT,
30515     &       FINVAL, VARSQR, VAREST, VARPRD, VALUE
30516      DOUBLE PRECISION ALPHA(NLIM), X(NLIM), VK(NLIM), ONE
30517      PARAMETER ( ONE = 1 )
30518      SAVE P, C, SAMPLS, NP, VAREST
30519C
30520      DATA P( 1), ( C( 1,I), I = 1, 99 ) /    113,
30521     &     42,    54,    55,    32,    13,    26,    26,    13,    26,
30522     &     14,    13,    26,    35,     2,     2,     2,     2,    56,
30523     &     28,     7,     7,    28,     4,    49,     4,    40,    48,
30524     &      5,    35,    27,    16,    16,     2,     2,     7,    28,
30525     &      4,    49,     4,    56,     8,     2,     2,    56,     7,
30526     &     16,    28,     7,     7,    28,     4,    49,     4,    37,
30527     &     55,    21,    33,    40,    16,    16,    28,     7,    16,
30528     &     28,     4,    49,     4,    56,    35,     2,     2,     2,
30529     &     16,    16,    28,     4,    16,    28,     4,    49,     4,
30530     &     40,    40,     5,    42,    27,    16,    16,    28,     4,
30531     &     16,    28,     4,    49,     4,     8,     8,     2,     2/
30532      DATA P( 2), ( C( 2,I), I = 1, 99 ) /    173,
30533     &     64,    34,    57,     9,    72,    86,    16,    75,    75,
30534     &     70,    42,     2,    86,    62,    62,    30,    30,     5,
30535     &     42,    70,    70,    70,    53,    70,    70,    53,    42,
30536     &     62,    53,    53,    53,    69,    75,     5,    53,    86,
30537     &      2,     5,    30,    75,    59,     2,    69,     5,     5,
30538     &     63,    62,     5,    69,    30,    44,    30,    86,    86,
30539     &      2,    69,     5,     5,     2,     2,    61,    69,    17,
30540     &      2,     2,     2,    53,    69,     2,     2,    86,    69,
30541     &     13,     2,     2,    37,    43,    65,     2,     2,    30,
30542     &     86,    45,    16,    32,    18,    86,    86,    86,     9,
30543     &     63,    63,    11,    76,    76,    76,    63,    60,    70/
30544      DATA P( 3), ( C( 3,I), I = 1, 99 ) /    263,
30545     &    111,    67,    98,    36,    48,   110,     2,   131,     2,
30546     &      2,   124,   124,    48,     2,     2,   124,   124,    70,
30547     &     70,    48,   126,    48,   126,    56,    65,    48,    48,
30548     &     70,     2,    92,   124,    92,   126,   131,   124,    70,
30549     &     70,    70,    20,   105,    70,     2,     2,    27,   108,
30550     &     27,    39,     2,   131,   131,    92,    92,    48,     2,
30551     &    126,    20,   126,     2,     2,   131,    38,   117,     2,
30552     &    131,    68,    58,    38,    90,    38,   108,    38,     2,
30553     &    131,   131,   131,    68,    14,    94,   131,   131,   131,
30554     &    108,    18,   131,    56,    85,   117,   117,     9,   131,
30555     &    131,    55,    92,    92,    92,   131,   131,    48,    48/
30556      DATA P( 4), ( C( 4,I), I = 1, 99 ) /    397,
30557     &    151,   168,    46,   197,    69,    64,     2,   198,   191,
30558     &    134,   134,   167,   124,    16,   124,   124,   124,   124,
30559     &    141,   134,   128,     2,     2,    32,    32,    32,    31,
30560     &     31,    64,    64,    99,     4,     4,   167,   124,   124,
30561     &    124,   124,   124,   124,   107,    85,    79,    85,   111,
30562     &     85,   128,    31,    31,    31,    31,    64,   167,     4,
30563     &    107,   167,   124,   124,   124,   124,   124,   124,   107,
30564     &    183,     2,     2,     2,    62,    32,    31,    31,    31,
30565     &     31,    31,   167,     4,   107,   167,   124,   124,   124,
30566     &    124,   124,   124,   107,   142,   184,   184,    65,    65,
30567     &    183,    31,    31,    31,    31,    31,   167,     4,   107/
30568      DATA P( 5), ( C( 5,I), I = 1, 99 ) /    593,
30569     &    229,    40,   268,    42,   153,   294,    71,     2,   130,
30570     &    199,   199,   199,   149,   199,   149,   153,   130,   149,
30571     &    149,    15,   119,   294,    31,    82,   260,   122,   209,
30572     &    209,   122,   296,   130,   130,   260,   260,    30,   206,
30573     &     94,   209,    94,   122,   209,   209,   122,   122,   209,
30574     &    130,     2,   130,   130,    38,    38,    79,    82,    94,
30575     &     82,   122,   122,   209,   209,   122,   122,   168,   220,
30576     &     62,    60,   168,   282,   282,    82,   209,   122,    94,
30577     &    209,   122,   122,   122,   122,   258,   148,   286,   256,
30578     &    256,    62,    62,    82,   122,    82,    82,   122,   122,
30579     &    122,   209,   122,    15,    79,    79,    79,    79,   168/
30580      DATA P( 6), ( C( 6,I), I = 1, 99 ) /    907,
30581     &    264,   402,   406,   147,   452,   153,   224,     2,     2,
30582     &    224,   224,   449,   101,   182,   449,   101,   451,   181,
30583     &    181,   101,   101,   377,    85,   453,   453,   453,    85,
30584     &    197,   451,     2,     2,   101,   449,   449,   449,   173,
30585     &    173,     2,   453,   453,     2,   426,    66,   367,   426,
30586     &    101,   453,     2,    32,    32,    32,   101,     2,     2,
30587     &    453,   223,   147,   449,   290,     2,   453,     2,    83,
30588     &    223,   101,   453,     2,    83,    83,   147,     2,   453,
30589     &    147,   147,   147,   147,   147,   147,   147,   453,   153,
30590     &    153,   147,     2,   224,   290,   320,   453,   147,   431,
30591     &    383,   290,   290,     2,   162,   162,   147,     2,   162/
30592      DATA P( 7), ( C( 7,I), I = 1, 99 ) /   1361,
30593     &    505,   220,   195,   410,   199,   248,   460,   471,     2,
30594     &    331,   662,   547,   209,   547,   547,   209,     2,   680,
30595     &    680,   629,   370,   574,    63,    63,   259,   268,   259,
30596     &    547,   209,   209,   209,   547,   547,   209,   209,   547,
30597     &    547,   108,    63,    63,   108,    63,    63,   108,   259,
30598     &    268,   268,   547,   209,   209,   209,   209,   547,   209,
30599     &    209,   209,   547,   108,    63,    63,    63,   405,   285,
30600     &    234,   259,   259,   259,   259,   209,   209,   209,   209,
30601     &    209,   209,   209,   209,   547,   289,   289,   234,   285,
30602     &    316,     2,   410,   259,   259,   259,   268,   209,   209,
30603     &    209,   209,   547,   547,   209,   209,   209,   285,   316/
30604      DATA P( 8), ( C( 8,I), I = 1, 99 ) /   2053,
30605     &    468,   635,   849,   687,   948,    37,  1014,   513,     2,
30606     &      2,     2,     2,     2,  1026,     2,     2,  1026,   201,
30607     &    201,     2,  1026,   413,  1026,  1026,     2,     2,   703,
30608     &    703,     2,     2,   393,   393,   678,   413,  1026,     2,
30609     &      2,  1026,  1026,     2,   405,   953,     2,  1026,   123,
30610     &    123,   953,   953,   123,   405,   794,   123,   647,   613,
30611     &   1026,   647,   768,   953,   405,   953,   405,   918,   918,
30612     &    123,   953,   953,   918,   953,   536,   405,    70,   124,
30613     &   1005,   529,   207,   405,   405,   953,   953,   123,   918,
30614     &    918,   953,   405,   918,   953,   468,   405,   794,   794,
30615     &    647,   613,   548,   405,   953,   405,   953,   123,   918/
30616      DATA P( 9), ( C( 9,I), I = 1, 99 ) /   3079,
30617     &   1189,  1423,   287,   186,   341,    77,   733,   733,  1116,
30618     &      2,  1539,     2,     2,     2,     2,     2,  1116,   847,
30619     &   1174,     2,   827,   713,   910,   944,   139,  1174,  1174,
30620     &   1539,  1397,  1397,  1174,   370,    33,  1210,     2,   370,
30621     &   1423,   370,   370,  1423,  1423,  1423,   434,  1423,   901,
30622     &    139,  1174,   427,   427,   200,  1247,   114,   114,  1441,
30623     &    139,   728,  1116,  1174,   139,   113,   113,   113,  1406,
30624     &   1247,   200,   200,   200,   200,  1247,  1247,    27,   427,
30625     &    427,  1122,  1122,   696,   696,   427,  1539,   435,  1122,
30626     &    758,  1247,  1247,  1247,   200,   200,   200,  1247,   114,
30627     &     27,   118,   118,   113,   118,   453,   453,  1084,  1406/
30628      DATA P(10), ( C(10,I), I = 1, 99 ) /   4621,
30629     &   1764,  1349,  1859,   693,    78,   438,   531,    68,  2234,
30630     &   2310,  2310,  2310,     2,  2310,  2310,  2102,  2102,   178,
30631     &    314,   921,  1074,  1074,  1074,  2147,   314,  1869,   178,
30632     &    178,  1324,  1324,   510,  2309,  1541,  1541,  1541,  1541,
30633     &    342,  1324,  1324,  1324,  1324,   510,   570,   570,  2197,
30634     &    173,  1202,   998,  1324,  1324,   178,  1324,  1324,  1541,
30635     &   1541,  1541,   342,  1541,   886,   178,  1324,  1324,  1324,
30636     &    510,   784,   784,   501,   652,  1541,  1541,  1324,   178,
30637     &   1324,   178,  1324,  1541,   342,  1541,  2144,   784,  2132,
30638     &   1324,  1324,  1324,  1324,   510,   652,  1804,  1541,  1541,
30639     &   1541,  2132,  1324,  1324,  1324,   178,   510,  1541,   652/
30640      DATA P(11), ( C(11,I), I = 1, 99 ) /   6947,
30641     &   2872,  1238,   387,  2135,   235,  1565,   221,  1515,  2950,
30642     &    486,  3473,     2,  2950,   982,  2950,  3122,  2950,  3172,
30643     &   2091,  2091,     9,  3449,  3122,  2846,  3122,  3122,  1947,
30644     &   2846,  3122,   772,  1387,  2895,  1387,     3,     3,     3,
30645     &   1320,  1320,  2963,  2963,  1320,  1320,  2380,   108,  1284,
30646     &    702,  1429,   907,  3220,  3125,  1320,  2963,  1320,  1320,
30647     &   2963,  1320,  1639,  3168,  1660,  2895,  2895,  2895,  2895,
30648     &   1639,  1297,  1639,   404,  3168,  2963,  2943,  2943,   550,
30649     &   1387,  1387,  2895,  2895,  2895,  1387,  2895,  1387,  2895,
30650     &   1320,  1320,  2963,  1320,  1320,  1320,  2963,  1320,     2,
30651     &   3473,     2,  3473,   772,  2550,     9,  1320,  2963,  1320/
30652      DATA P(12), ( C(12,I), I = 1, 99 ) /  10427,
30653     &   4309,  2339,  4154,  4480,  4967,   630,  5212,  2592,  4715,
30654     &   1808,  1808,  5213,     2,   216,  4014,  3499,  3499,  4204,
30655     &   2701,  2701,  5213,  4157,  1209,  4157,  4460,   335,  4460,
30656     &   1533,  4575,  4013,  4460,  1881,  2701,  4030,  4030,  1881,
30657     &   4030,  1738,   249,   335,    57,  2561,  2561,  2561,  1533,
30658     &   1533,  1533,  4013,  4013,  4013,  4013,  4013,  1533,   856,
30659     &    856,   468,   468,   468,  2561,   468,  2022,  2022,  2434,
30660     &    138,  4605,  1100,  2561,  2561,    57,    57,  3249,   468,
30661     &    468,   468,    57,   468,  1738,   313,   856,     6,  3877,
30662     &    468,   557,   468,    57,   468,  4605,  2022,     2,  4605,
30663     &    138,  1100,    57,  2561,    57,    57,  2022,  5213,  3249/
30664      DATA P(13), ( C(13,I), I = 1, 99 ) /  15641,
30665     &   6610,  1658,  3022,  2603,  5211,   265,  4985,     3,  4971,
30666     &   2127,  1877,  1877,     2,  2925,  3175,  3878,  1940,  1940,
30667     &   1940,  5117,  5117,  5771,  5117,  5117,  5117,  5117,  5117,
30668     &   5771,  5771,  5117,  3658,  3658,  3658,  3658,  3658,  3658,
30669     &   5255,  2925,  2619,  1714,  4100,  6718,  6718,  4100,  2322,
30670     &    842,  4100,  6718,  5119,  4728,  5255,  5771,  5771,  5771,
30671     &   5117,  5771,  5117,  5117,  5117,  5117,  5117,  5117,  5771,
30672     &   5771,  1868,  4483,  4728,  3658,  5255,  3658,  5255,  3658,
30673     &   3658,  5255,  5255,  3658,  6718,  6718,   842,  2322,  6718,
30674     &   4100,  6718,  4100,  4100,  5117,  5771,  5771,  5117,  5771,
30675     &   5771,  5771,  5771,  5117,  5117,  5117,  5771,  5771,  1868/
30676      DATA P(14), ( C(14,I), I = 1, 99 ) /  23473,
30677     &   9861,  7101,  6257,  7878, 11170, 11638,  7542,  2592,  2591,
30678     &   6074,  1428,  8925, 11736,  8925,  5623,  5623,  1535,  6759,
30679     &   9953,  9953, 11459,  9953,  7615,  7615, 11377, 11377,  2762,
30680     &  11734, 11459,  6892,  1535,  6759,  4695,  1535,  6892,     2,
30681     &      2,  6892,  6892,  4177,  4177,  6339,  6950,  1226,  1226,
30682     &   1226,  4177,  6892,  6890,  3640,  3640,  1226, 10590, 10590,
30683     &   6950,  6950,  6950,  1226,  6950,  6950,  7586,  7586,  7565,
30684     &   7565,  3640,  3640,  6950,  7565,  6950,  3599,  3599,  3599,
30685     &   2441,  4885,  4885,  4885,  7565,  7565,  1226,  1226,  1226,
30686     &   6950,  7586,  1346,  2441,  6339,  3640,  6950, 10590,  6339,
30687     &   6950,  6950,  6950,  1226,  1226,  6950,   836,  6891,  7565/
30688      DATA P(15), ( C(15,I), I = 1, 99 ) /  35221,
30689     &  13482,  5629,  6068, 11974,  4732, 14946, 12097, 17609, 11740,
30690     &  15170, 10478, 10478, 17610,     2,     2,  7064,  7064,  7064,
30691     &   5665,  1771,  2947,  4453, 12323, 17610, 14809, 14809,  5665,
30692     &   5665,  2947,  2947,  2947,  2947, 12323, 12323,  4453,  4453,
30693     &   2026, 11772,  2026, 11665, 12323, 12323,  3582,  2940,  2940,
30694     &   6654,  4449,  9254, 11470,   304,   304, 11470,   304, 11470,
30695     &   6156,  9254, 11772,  6654, 11772,  6156, 11470, 11470, 11772,
30696     &  11772, 11772, 11470, 11470,   304, 11470, 11470,   304, 11470,
30697     &    304, 11470,   304,   304,   304,  6654, 11508,   304,   304,
30698     &   6156,  3582, 11470, 11470, 11470, 17274,  6654,  6654,  6744,
30699     &   6711,  6654,  6156,  3370,  6654, 12134,  3370,  6654,  3582/
30700      DATA P(16), ( C(16,I), I = 1, 99 ) /  52837,
30701     &  13482,  5629,  6068, 11974,  4732, 14946, 12097, 17609, 11740,
30702     &  15170, 10478, 10478, 17610,     2,     2,  7064,  7064,  7064,
30703     &   5665,  1771,  2947,  4453, 12323, 17610, 14809, 14809,  5665,
30704     &   5665,  2947,  2947,  2947,  2947, 12323, 12323,  4453,  4453,
30705     &   2026, 11772,  2026, 11665, 12323, 12323,  3582,  2940,  2940,
30706     &   6654,  4449,  9254, 11470,   304,   304, 11470,   304, 11470,
30707     &   6156,  9254, 11772,  6654, 11772,  6156, 11470, 11470, 11772,
30708     &  11772, 11772, 11470, 11470,   304, 11470, 11470,   304, 11470,
30709     &    304, 11470,   304,   304,   304,  6654, 11508,   304,   304,
30710     &   6156,  3582, 11470, 11470, 11470, 17274,  6654,  6654,  6744,
30711     &   6711,  6654,  6156,  3370,  6654, 12134,  3370,  6654,  3582/
30712      DATA P(17), ( C(17,I), I = 1, 99 ) /  79259,
30713     &  34566, 38838, 23965, 17279, 35325, 33471,   330, 36050, 26419,
30714     &   3012, 38428, 36430, 36430, 36755, 39629,  5749,  5749, 36755,
30715     &   5749, 14353, 14353, 14353, 32395, 32395, 32395, 32395, 32396,
30716     &  32396, 32396, 32396, 27739, 14353, 36430, 36430, 36430, 15727,
30717     &  38428, 28987, 28987, 27739, 38428, 27739, 18786, 14353, 15727,
30718     &  28987, 19151, 19757, 19757, 19757, 14353, 22876, 19151, 24737,
30719     &  24737,  4412, 30567, 30537, 19757, 30537, 19757, 30537, 30537,
30720     &   4412, 24737, 28987, 19757, 19757, 19757, 30537, 30537, 33186,
30721     &   4010,  4010,  4010, 17307, 15217, 32789, 37709,  4010,  4010,
30722     &   4010, 33186, 33186,  4010, 11057, 39388, 33186,  1122, 15089,
30723     &  39629,     2,     2, 23899, 16466, 16466, 17038,  9477,  9260/
30724      DATA P(18), ( C(18,I), I = 1, 99 ) / 118891,
30725     &  31929, 40295,  2610,  5177, 17271, 23770,  9140,   952, 39631,
30726     &      3, 11424, 49719, 38267, 25172,     2,     2, 59445,     2,
30727     &  59445, 38267, 44358, 14673, 53892, 14674, 14673, 14674, 41368,
30728     &  17875, 17875, 30190, 20444, 55869, 15644, 25499, 15644, 20983,
30729     &  44358, 15644, 15644,   485, 41428,   485,   485,   485, 41428,
30730     &  53798, 50230, 53798, 50253, 50253, 35677, 35677, 17474,  7592,
30731     &   4098, 17474,   485, 41428,   485, 41428,   485, 41428,   485,
30732     &  41428, 41428, 41428, 41428, 41428,  9020, 22816,  4098,  4098,
30733     &   4098,  7592, 42517,   485, 50006, 50006, 22816, 22816,  9020,
30734     &    485, 41428, 41428, 41428, 41428, 50006,   485, 41428, 41428,
30735     &  41428, 41428, 22816, 41428, 41428,   485,   485,   485,  9020/
30736      DATA P(19), ( C(19,I), I = 1, 99 ) / 178349,
30737     &  73726, 16352, 16297, 74268, 60788,  8555,  1077, 25486, 86595,
30738     &  59450, 19958, 62205, 62205,  4825,  4825, 89174, 89174, 62205,
30739     &  19958, 62205, 19958, 27626, 63080, 62205, 62205, 62205, 19958,
30740     &   8914, 83856, 30760, 47774, 47774, 19958, 62205, 39865, 39865,
30741     &  74988, 75715, 75715, 74988, 34522, 74988, 74988, 25101, 44621,
30742     &  44621, 44621, 25101, 25101, 25101, 44621, 47768, 41547, 44621,
30743     &  10273, 74988, 74988, 74988, 74988, 74988, 74988, 34522, 34522,
30744     &  67796, 67796, 30208,     2, 67062, 18500, 29251, 29251,     2,
30745     &  67796, 67062, 38649, 59302,  6225, 67062,  6475,  6225, 46772,
30746     &  38649, 67062, 46772, 46772, 67062, 46772, 25372, 67062,  6475,
30747     &  25372, 67062, 67062, 67062,  6225, 67062, 67062, 68247, 80676/
30748      DATA P(20), ( C(20,I), I = 1, 99 )/ 267523,
30749     & 103650, 50089, 70223, 41805, 74847,112775, 40889, 64866, 44053,
30750     &   1754,129471, 13630, 53467, 53467, 61378,133761,     2,133761,
30751     &      2,133761,133761, 65531, 65531, 65531, 38080,133761,133761,
30752     & 131061,  5431, 65531, 78250, 11397, 38841, 38841,107233,107233,
30753     & 111286, 19065, 38841, 19065, 19065, 16099,127638, 82411, 96659,
30754     &  96659, 82411, 96659, 82411, 51986,101677, 39264, 39264,101677,
30755     &  39264, 39264, 47996, 96659, 82411, 47996, 10971, 10004, 82411,
30756     &  96659, 82411, 82411, 82411, 96659, 96659, 96659, 82411, 96659,
30757     &  51986,110913, 51986, 51986,110913, 82411, 54713, 54713, 22360,
30758     & 117652, 22360, 78250, 78250, 91996, 22360, 91996, 97781, 91996,
30759     &  97781, 91996, 97781, 97781, 91996, 97781, 97781, 36249, 39779/
30760C
30761      INFORM = 1
30762      INTVLS = 0
30763      IF ( MINVLS .GE. 0 ) THEN
30764         FINEST = 0
30765         VAREST = 0
30766         SAMPLS = MINSMP
30767         DO 100 I = 1, PLIM
30768            NP = I
30769            IF ( MINVLS .LT. 2*SAMPLS*P(I) ) GO TO 10
30770 100     CONTINUE
30771         SAMPLS = MAX( MINSMP, MINVLS/( 2*P(NP) ) )
30772      ENDIF
30773 10   VK(1) = ONE/P(NP)
30774      DO 200 I = 2, NDIM
30775         VK(I) = MOD( C(NP,NDIM-1)*VK(I-1), ONE )
30776 200  CONTINUE
30777      FINVAL = 0
30778      VARSQR = 0
30779      DO 300 I = 1, SAMPLS
30780         CALL KROSUM( NDIM, VALUE, P(NP), VK, FUNCTN, ALPHA, X )
30781         DIFINT = ( VALUE - FINVAL )/I
30782         FINVAL = FINVAL + DIFINT
30783         VARSQR = ( I - 2 )*VARSQR/I + DIFINT**2
30784 300  CONTINUE
30785      INTVLS = INTVLS + 2*SAMPLS*P(NP)
30786      VARPRD = VAREST*VARSQR
30787      FINEST = FINEST + ( FINVAL - FINEST )/( 1 + VARPRD )
30788      IF ( VARSQR .GT. 0 ) VAREST = ( 1 + VARPRD )/VARSQR
30789      ABSERR = 3*SQRT( VARSQR/( 1 + VARPRD ) )
30790      IF ( ABSERR .GT. MAX( ABSEPS, ABS(FINEST)*RELEPS ) ) THEN
30791         IF ( NP .LT. PLIM ) THEN
30792            NP = NP + 1
30793         ELSE
30794            SAMPLS = MIN( 3*SAMPLS/2, ( MAXVLS - INTVLS )/( 2*P(NP) ) )
30795            SAMPLS = MAX( MINSMP, SAMPLS )
30796         ENDIF
30797         IF ( INTVLS + 2*SAMPLS*P(NP) .LE. MAXVLS ) GO TO 10
30798      ELSE
30799         INFORM = 0
30800      ENDIF
30801      MINVLS = INTVLS
30802C
30803      RETURN
30804      END
30805      SUBROUTINE KROMVN( N, LOWER, UPPER, INFIN, CORREL, MAXPTS,
30806     &                   ABSEPS, RELEPS, ERROR, VALUE, INFORM )
30807*
30808*     A subroutine for computing multivariate normal probabilities.
30809*     This subroutine uses an algorithm given in the paper
30810*     "Numerical Computation of Multivariate Normal Probabilities", in
30811*     J. of Computational and Graphical Stat., 1(1992), pp. 141-149, by
30812*          Alan Genz
30813*          Department of Mathematics
30814*          Washington State University
30815*          Pullman, WA 99164-3113
30816*          Email : AlanGenz@wsu.edu
30817*
30818*  Parameters
30819*
30820*     N      INTEGER, the number of variables.
30821*     LOWER  REAL, array of lower integration limits.
30822*     UPPER  REAL, array of upper integration limits.
30823*     INFIN  INTEGER, array of integration limits flags:
30824*            if INFIN(I) < 0, Ith limits are (-infinity, infinity);
30825*            if INFIN(I) = 0, Ith limits are (-infinity, UPPER(I)];
30826*            if INFIN(I) = 1, Ith limits are [LOWER(I), infinity);
30827*            if INFIN(I) = 2, Ith limits are [LOWER(I), UPPER(I)].
30828*     CORREL REAL, array of correlation coefficients; the correlation
30829*            coefficient in row I column J of the correlation matrix
30830*            should be stored in CORREL( J + ((I-2)*(I-1))/2 ), for J < I.
30831*     MAXPTS INTEGER, maximum number of function values allowed. This
30832*            parameter can be used to limit the time. A sensible
30833*            strategy is to start with MAXPTS = 1000*N, and then
30834*            increase MAXPTS if ERROR is too large.
30835*     ABSEPS REAL absolute error tolerance.
30836*     RELEPS REAL relative error tolerance.
30837*     ERROR  REAL estimated absolute error, with 99% confidence level.
30838*     VALUE  REAL estimated value for the integral
30839*     INFORM INTEGER, termination status parameter:
30840*            if INFORM = 0, normal completion with ERROR < EPS;
30841*            if INFORM = 1, completion with ERROR > EPS and MAXPTS
30842*                           function vaules used; increase MAXPTS to
30843*                           decrease ERROR;
30844*            if INFORM = 2, N > 100 or N < 1.
30845*
30846      EXTERNAL MVNFNC
30847      INTEGER N, INFIN(*), MAXPTS, INFORM, INFIS, IVLS
30848      DOUBLE PRECISION CORREL(*), LOWER(*), UPPER(*), RELEPS, ABSEPS,
30849     &       ERROR, VALUE, E, D, MVNNIT, MVNFNC,DVAL
30850      IF ( N .GT. 100 .OR. N .LT. 1 ) THEN
30851         INFORM = 2
30852         VALUE = 0
30853         ERROR = 1
30854      ELSE
30855         DVAL = MVNNIT(N, CORREL, LOWER, UPPER, INFIN, INFIS, D, E)
30856         INFORM = INT(DVAL)
30857         IF ( N-INFIS .EQ. 0 ) THEN
30858            VALUE = 1
30859            ERROR = 0
30860         ELSE IF ( N-INFIS .EQ. 1 ) THEN
30861            VALUE = E - D
30862            ERROR = 2E-16
30863         ELSE
30864*
30865*        Call the lattice rule integration subroutine
30866*
30867            IVLS = 0
30868            CALL KROBOV( N-INFIS-1, IVLS, MAXPTS, MVNFNC,
30869     &                   ABSEPS, RELEPS, ERROR, VALUE, INFORM )
30870         ENDIF
30871      ENDIF
30872      END
30873      SUBROUTINE KROMVT(N, NU, LOWER, UPPER, INFIN, CORREL, MAXPTS,
30874     *      ABSEPS, RELEPS, ERROR, VALUE, INFORM)
30875*
30876*     A subroutine for computing multivariate t probabilities.
30877*          Alan Genz
30878*          Department of Mathematics
30879*          Washington State University
30880*          Pullman, WA 99164-3113
30881*          Email : AlanGenz@wsu.edu
30882*
30883*  Parameters
30884*
30885*     N      INTEGER, the number of variables.
30886*     NU     INTEGER, the number of degrees of freedom.
30887*     LOWER  REAL, array of lower integration limits.
30888*     UPPER  REAL, array of upper integration limits.
30889*     INFIN  INTEGER, array of integration limits flags:
30890*            if INFIN(I) < 0, Ith limits are (-infinity, infinity);
30891*            if INFIN(I) = 0, Ith limits are (-infinity, UPPER(I)];
30892*            if INFIN(I) = 1, Ith limits are [LOWER(I), infinity);
30893*            if INFIN(I) = 2, Ith limits are [LOWER(I), UPPER(I)].
30894*     CORREL REAL, array of correlation coefficients; the correlation
30895*            coefficient in row I column J of the correlation matrix
30896*            should be stored in CORREL( J + ((I-2)*(I-1))/2 ), for J < I.
30897*     MAXPTS INTEGER, maximum number of function values allowed. This
30898*            parameter can be used to limit the time. A sensible
30899*            strategy is to start with MAXPTS = 1000*N, and then
30900*            increase MAXPTS if ERROR is too large.
30901*     ABSEPS    REAL absolute error tolerance.
30902*     RELEPS    REAL relative error tolerance.
30903*     ERROR  REAL estimated absolute error, with 99% confidence level.
30904*     VALUE  REAL estimated value for the integral
30905*     INFORM INTEGER, termination status parameter:
30906*            if INFORM = 0, normal completion with ERROR < EPS;
30907*            if INFORM = 1, completion with ERROR > EPS and MAXPTS
30908*                           function vaules used; increase MAXPTS to
30909*                           decrease ERROR;
30910*            if INFORM = 2, N > 20 or N < 1.
30911*
30912      DOUBLE PRECISION FNCMVT
30913      EXTERNAL FNCMVT
30914      INTEGER N, NU, INFIN(*), MAXPTS, INFORM, INFIS, IVLS
30915      DOUBLE PRECISION
30916     *     CORREL(*), LOWER(*), UPPER(*), RELEPS, ABSEPS,
30917     *     ERROR, VALUE, E, D, MVTNIT,DVAL
30918C
30919      IF ( N .GT. 20 .OR. N .LT. 1 ) THEN
30920         INFORM = 2
30921         VALUE = 0
30922         ERROR = 1
30923         RETURN
30924      ENDIF
30925      DVAL = MVTNIT( N, NU, CORREL, LOWER, UPPER, INFIN, INFIS, D, E )
30926      INFORM = INT(DVAL)
30927      IF ( N-INFIS .EQ. 0 ) THEN
30928         VALUE = 1
30929         ERROR = 0
30930      ELSE IF ( N-INFIS .EQ. 1 ) THEN
30931         VALUE = E - D
30932         ERROR = 2E-16
30933      ELSE
30934*
30935*        Call the lattice rule integration integration subroutine
30936*
30937         IVLS = 0
30938         CALL KROBOV( N-INFIS-1, IVLS, MAXPTS, FNCMVT, ABSEPS, RELEPS,
30939     *                ERROR, VALUE, INFORM )
30940      ENDIF
30941      RETURN
30942      END
30943      SUBROUTINE KROSUM( NDIM, SUMKRO, PRIME, VK, FUNCTN, ALPHA, X )
30944      EXTERNAL FUNCTN
30945      INTEGER NDIM, PRIME, K, J
30946      DOUBLE PRECISION SUMKRO, VK(*), FUNCTN, ALPHA(*), X(*), ONE, UNI
30947      PARAMETER ( ONE = 1 )
30948      SUMKRO = 0
30949      IRESET=0
30950      DO 100 J = 1, NDIM
30951         ALPHA(J) = UNI(IRESET)
30952 100  CONTINUE
30953      DO 200 K = 1, PRIME
30954         DO 300 J = 1, NDIM
30955            X(J) = MOD( K*VK(J) + ALPHA(J), ONE )
30956            X(J) = ABS( 2*X(J) - 1 )
30957 300     CONTINUE
30958         SUMKRO = SUMKRO + ( FUNCTN(NDIM,X) - SUMKRO )/( 2*K - 1 )
30959         DO 400 J = 1, NDIM
30960            X(J) = 1 - X(J)
30961 400     CONTINUE
30962         SUMKRO = SUMKRO + ( FUNCTN(NDIM,X) - SUMKRO )/( 2*K )
30963 200  CONTINUE
30964C
30965      RETURN
30966      END
30967      SUBROUTINE KTRADE (W, K, WPRIME, KPRIME, WS, R)
30968C
30969C        ALGORITHM AS 304.3 APPL.STATIST. (1996), VOL.45, NO.3
30970C
30971C        Generates and sorts the sums of the R-combinations of the
30972C        elements of W
30973C
30974C        DATAPLOT NOTE: UTILITY ROUTINE USED BY FISHER TWO SAMPLE
30975C                       RANDOMIZATION TEST
30976C
30977      INTEGER K, KPRIME, WS(*), R
30978      REAL W(*), WPRIME(*)
30979C
30980      CHARACTER*4 IWRITE
30981      CHARACTER*4 IBUGA3
30982      CHARACTER*4 IERROR
30983C
30984CCCCC INTEGER COMB
30985CCCCC REAL SUM
30986CCCCC EXTERNAL COMB, SUM
30987      REAL BINOM
30988      EXTERNAL BINOM
30989      EXTERNAL CMPLMT, GENER, SORTSH
30990C
30991      IWRITE='OFF'
30992      IBUGA3='OFF'
30993      IERROR='OFF'
30994C
30995CCCCC KPRIME = COMB(K, R)
30996      KPRIME = INT(BINOM(K, R)+0.5)
30997      IF (R .LE. K - R .OR. R .EQ. K) THEN
30998         CALL GENER(W, K, WPRIME, KPRIME, WS, R)
30999         CALL SORTSH(WPRIME, KPRIME)
31000      ELSE
31001         CALL GENER(W, K, WPRIME, KPRIME, WS, K - R)
31002         CALL SORTSH(WPRIME, KPRIME)
31003         CALL SUMDP(W,K,IWRITE,SUMWK,IBUGA3,IERROR)
31004CCCCC    CALL CMPLMT(WPRIME, KPRIME, SUM(W, K))
31005         CALL CMPLMT(WPRIME, KPRIME, SUMWK)
31006      ENDIF
31007C
31008      RETURN
31009      END
31010      SUBROUTINE KUMCDF(X,ALPHA,BETA,CDF)
31011C
31012C     NOTE--KUMARASWAMY CDF IS:
31013C
31014C           F(X;ALPHA,BETA) = 1 - (1 - X**ALPHA)**BETA
31015C                             0 <= X <= 1; ALPHA, BETA > 0
31016C
31017C     WRITTEN BY--JAMES J. FILLIBEN
31018C                 STATISTICAL ENGINEERING DIVISION
31019C                 INFORMATION TECHNOLOGY LABORATORY
31020C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
31021C                 GAITHERSBURG, MD 20899-8980
31022C                 PHONE--301-975-2899
31023C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
31024C           OF THE NATIONAL BUREAU OF STANDARDS.
31025C     LANGUAGE--ANSI FORTRAN (1977)
31026C     REFERENCE--KUMARASWAMY (1980), "A GENERALIZED PROBABILITY
31027C                DENSITY FUNCTION FOR DOUBLE-BOUNDED RANDOM
31028C                PROCESSES", JOURNAL OF HYDROLOGY 46: 79-88.
31029C     VERSION NUMBER--2007/10
31030C     ORIGINAL VERSION--OCTOBER   2007.
31031C
31032C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
31033C
31034      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
31035C
31036C-----COMMON----------------------------------------------------------
31037C
31038      INCLUDE 'DPCOP2.INC'
31039C
31040C-----START POINT-----------------------------------------------------
31041C
31042      CDF=0.0D0
31043C
31044CCCCC IF(X.LT.0.0D0 .OR. X.GT.1.0D0)THEN
31045CCCCC   WRITE(ICOUT,101)
31046CC101   FORMAT('***** ERROR--THE FIRST ARGUMENT TO KUMCDF IS ',
31047CCCCC1         'OUTSIDE THE (0,1) INTERVAL.')
31048CCCCC   CALL DPWRST('XXX','BUG ')
31049CCCCC   WRITE(ICOUT,102)X
31050  102   FORMAT('      THE VALUE OF THE ARGUMENT IS ',G15.7)
31051CCCCC   CALL DPWRST('XXX','BUG ')
31052CCCCC   GOTO9000
31053CCCCC ELSEIF(ALPHA.LE.0.0D0)THEN
31054      IF(ALPHA.LE.0.0D0)THEN
31055        WRITE(ICOUT,201)
31056  201   FORMAT('***** ERROR--THE SECOND ARGUMENT TO KUMCDF IS ',
31057     1         'NON-POSITIVE.')
31058        CALL DPWRST('XXX','BUG ')
31059        WRITE(ICOUT,102)ALPHA
31060        CALL DPWRST('XXX','BUG ')
31061        GOTO9000
31062      ELSEIF(BETA.LE.0.0D0)THEN
31063        WRITE(ICOUT,301)
31064  301   FORMAT('***** ERROR--THE THIRD ARGUMENT TO KUMCDF IS ',
31065     1         'NON-POSITIVE.')
31066        CALL DPWRST('XXX','BUG ')
31067        WRITE(ICOUT,102)BETA
31068        CALL DPWRST('XXX','BUG ')
31069        GOTO9000
31070      ENDIF
31071C
31072      IF(X.LE.0.0D0)THEN
31073        CDF=0.0
31074      ELSEIF(X.GE.1.0D0)THEN
31075        CDF=1.0D0
31076      ELSE
31077        CDF=1.0D0 - (1.0D0 - X**ALPHA)**BETA
31078      ENDIF
31079C
31080 9000 CONTINUE
31081      RETURN
31082      END
31083      SUBROUTINE KUMPDF(X,ALPHA,BETA,PDF)
31084C
31085C     NOTE--KUMARASWAMY PDF IS:
31086C
31087C           f(X;ALPHA,BETA) = ALPHA*BETA*X**(ALPHA-1)*
31088C                             (1-X**ALPHA)**(BETA-1)
31089C                             0 <= X <= 1; ALPHA, BETA > 0
31090C
31091C     WRITTEN BY--JAMES J. FILLIBEN
31092C                 STATISTICAL ENGINEERING DIVISION
31093C                 INFORMATION TECHNOLOGY LABORATORY
31094C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
31095C                 GAITHERSBURG, MD 20899-8980
31096C                 PHONE--301-975-2899
31097C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
31098C           OF THE NATIONAL BUREAU OF STANDARDS.
31099C     LANGUAGE--ANSI FORTRAN (1977)
31100C     REFERENCE--KUMARASWAMY (1980), "A GENERALIZED PROBABILITY
31101C                DENSITY FUNCTION FOR DOUBLE-BOUNDED RANDOM
31102C                PROCESSES", JOURNAL OF HYDROLOGY 46: 79-88.
31103C     VERSION NUMBER--2007/10
31104C     ORIGINAL VERSION--OCTOBER   2007.
31105C
31106C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
31107C
31108      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
31109C
31110C-----COMMON----------------------------------------------------------
31111C
31112      INCLUDE 'DPCOP2.INC'
31113C
31114C-----START POINT-----------------------------------------------------
31115C
31116      PDF=0.0D0
31117C
31118      IF(X.LE.0.0D0 .OR. X.GE.1.0D0)THEN
31119        WRITE(ICOUT,101)
31120  101   FORMAT('***** ERROR--THE FIRST ARGUMENT TO KUMPDF IS ',
31121     1         'OUTSIDE THE (0,1) INTERVAL.')
31122        CALL DPWRST('XXX','BUG ')
31123        WRITE(ICOUT,102)X
31124  102   FORMAT('      THE VALUE OF THE ARGUMENT IS ',G15.7)
31125        CALL DPWRST('XXX','BUG ')
31126        GOTO9000
31127      ELSEIF(ALPHA.LE.0.0D0)THEN
31128        WRITE(ICOUT,201)
31129  201   FORMAT('***** ERROR--THE SECOND ARGUMENT TO KUMPDF IS ',
31130     1         'NON-POSITIVE.')
31131        CALL DPWRST('XXX','BUG ')
31132        WRITE(ICOUT,102)ALPHA
31133        CALL DPWRST('XXX','BUG ')
31134        GOTO9000
31135      ELSEIF(BETA.LE.0.0D0)THEN
31136        WRITE(ICOUT,301)
31137  301   FORMAT('***** ERROR--THE THIRD ARGUMENT TO KUMPDF IS ',
31138     1         'NON-POSITIVE.')
31139        CALL DPWRST('XXX','BUG ')
31140        WRITE(ICOUT,102)BETA
31141        CALL DPWRST('XXX','BUG ')
31142        GOTO9000
31143      ENDIF
31144C
31145      TERM1=DLOG(ALPHA) + DLOG(BETA)
31146      TERM2=(ALPHA-1.0D0)*DLOG(X)
31147      TERM3=(BETA-1.0D0)*DLOG(1.0D0 - X**ALPHA)
31148      TERM4=TERM1+TERM2+TERM3
31149      PDF=DEXP(TERM4)
31150C
31151 9000 CONTINUE
31152      RETURN
31153      END
31154      SUBROUTINE KUMPPF(P,ALPHA,BETA,PPF)
31155C
31156C     NOTE--KUMARASWAMY PPF IS:
31157C
31158C           G(P;ALPHA,BETA) = [1 - (1-P)**((1/BETA)]**(1/ALPHA)
31159C                             0 < P < 1; ALPHA, BETA > 0
31160C
31161C     WRITTEN BY--JAMES J. FILLIBEN
31162C                 STATISTICAL ENGINEERING DIVISION
31163C                 INFORMATION TECHNOLOGY LABORATORY
31164C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
31165C                 GAITHERSBURG, MD 20899-8980
31166C                 PHONE--301-975-2899
31167C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
31168C           OF THE NATIONAL BUREAU OF STANDARDS.
31169C     LANGUAGE--ANSI FORTRAN (1977)
31170C     REFERENCE--KUMARASWAMY (1980), "A GENERALIZED PROBABILITY
31171C                DENSITY FUNCTION FOR DOUBLE-BOUNDED RANDOM
31172C                PROCESSES", JOURNAL OF HYDROLOGY 46: 79-88.
31173C     VERSION NUMBER--2007/10
31174C     ORIGINAL VERSION--OCTOBER   2007.
31175C
31176C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
31177C
31178      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
31179C
31180C-----COMMON----------------------------------------------------------
31181C
31182      INCLUDE 'DPCOP2.INC'
31183C
31184C-----START POINT-----------------------------------------------------
31185C
31186      PPF=0.0D0
31187C
31188      IF(P.LT.0.0D0 .OR. P.GT.1.0D0)THEN
31189        WRITE(ICOUT,101)
31190  101   FORMAT('***** ERROR--THE FIRST ARGUMENT TO KUMPPF IS ',
31191     1         'OUTSIDE THE (0,1) INTERVAL.')
31192        CALL DPWRST('XXX','BUG ')
31193        WRITE(ICOUT,102)X
31194  102   FORMAT('      THE VALUE OF THE ARGUMENT IS ',G15.7)
31195        CALL DPWRST('XXX','BUG ')
31196        GOTO9000
31197      ELSEIF(ALPHA.LE.0.0D0)THEN
31198        WRITE(ICOUT,201)
31199  201   FORMAT('***** ERROR--THE SECOND ARGUMENT TO KUMPPF IS ',
31200     1         'NON-POSITIVE.')
31201        CALL DPWRST('XXX','BUG ')
31202        WRITE(ICOUT,102)ALPHA
31203        CALL DPWRST('XXX','BUG ')
31204        GOTO9000
31205      ELSEIF(BETA.LE.0.0D0)THEN
31206        WRITE(ICOUT,301)
31207  301   FORMAT('***** ERROR--THE THIRD ARGUMENT TO KUMPPF IS ',
31208     1         'NON-POSITIVE.')
31209        CALL DPWRST('XXX','BUG ')
31210        WRITE(ICOUT,102)BETA
31211        CALL DPWRST('XXX','BUG ')
31212        GOTO9000
31213      ENDIF
31214C
31215      IF(P.LE.0.0D0)THEN
31216        PPF=0.0
31217      ELSEIF(P.GE.1.0D0)THEN
31218        PPF=1.0D0
31219      ELSE
31220        PPF=(1.0D0 - (1.0D0 - P)**(1.0D0/BETA))**(1.0D0/ALPHA)
31221      ENDIF
31222C
31223 9000 CONTINUE
31224      RETURN
31225      END
31226      SUBROUTINE KUMRAN(N,ALPHA,BETA,ISEED,X)
31227C
31228C     PURPOSE--THIS SUBROUTINE GENERATES A RANDOM SAMPLE OF SIZE N
31229C              FROM THE KUMARASWAMY
31230C              DISTRIBUTION WITH SHAPE PARAMETERS ALPHA AND BETA.
31231C
31232C     INPUT  ARGUMENTS--N      = THE DESIRED INTEGER NUMBER
31233C                                OF RANDOM NUMBERS TO BE
31234C                                GENERATED.
31235C                     --ALPHA  = THE SINGLE PRECISION FIRST SHAPE
31236C                                PARAMETER
31237C                     --BETA   = THE SINGLE PRECISION VALUE OF THE
31238C                                SHAPE PARAMETER BETA.
31239C     OUTPUT ARGUMENTS--X      = A SINGLE PRECISION VECTOR
31240C                                (OF DIMENSION AT LEAST N)
31241C                                INTO WHICH THE GENERATED
31242C                                RANDOM SAMPLE WILL BE PLACED.
31243C     OUTPUT--A RANDOM SAMPLE OF SIZE N
31244C             FROM THE KUMARASWAMY
31245C             DISTRIBUTION WITH SHAPE PARAMETERS ALPHA AND BETA.
31246C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
31247C     RESTRICTIONS--THERE IS NO RESTRICTION ON THE MAXIMUM VALUE
31248C                   OF N FOR THIS SUBROUTINE.
31249C     OTHER DATAPAC   SUBROUTINES NEEDED--UNIRAN, KUMPPF.
31250C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE.
31251C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
31252C     LANGUAGE--ANSI FORTRAN (1977)
31253C     REFERENCE--KUMARASWAMY (1980), "A GENERALIZED PROBABILITY
31254C                DENSITY FUNCTION FOR DOUBLE-BOUNDED RANDOM
31255C                PROCESSES", JOURNAL OF HYDROLOGY 46: 79-88.
31256C     WRITTEN BY--JAMES J. FILLIBEN
31257C                 STATISTICAL ENGINEERING DIVISION
31258C                 INFORMATION TECHMOLOGY LABORATORY
31259C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
31260C                 GAITHERSBURG, MD 20899-8980
31261C                 PHONE--301-975-2855
31262C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
31263C           OF THE NATIONAL BUREAU OF STANDARDS.
31264C     LANGUAGE--ANSI FORTRAN (1977)
31265C     VERSION NUMBER--2007/10
31266C     ORIGINAL VERSION--OCTOBER   2007.
31267C
31268C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
31269C
31270C---------------------------------------------------------------------
31271C
31272      DOUBLE PRECISION DTEMP
31273      DIMENSION X(*)
31274C
31275C-----COMMON----------------------------------------------------------
31276C
31277      INCLUDE 'DPCOP2.INC'
31278C
31279C-----START POINT-----------------------------------------------------
31280C
31281C     CHECK THE INPUT ARGUMENTS FOR ERRORS
31282C
31283      IF(N.LT.1)THEN
31284        WRITE(ICOUT,5)
31285        CALL DPWRST('XXX','BUG ')
31286        WRITE(ICOUT,6)
31287        CALL DPWRST('XXX','BUG ')
31288        WRITE(ICOUT,47)N
31289        CALL DPWRST('XXX','BUG ')
31290        GOTO9000
31291      ENDIF
31292    5 FORMAT('***** ERROR--THE REQUESTED NUMBER OF KUMARASWAMY')
31293    6 FORMAT('      RANDOM NUMBERS IS NON-POSITIVE')
31294   47 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',I8)
31295C
31296      IF(BETA.LE.0.0)THEN
31297        WRITE(ICOUT,201)
31298  201   FORMAT('***** ERROR--THE BETA SHAPE PARAMETER IS ',
31299     1         'NON-POSITIVE.')
31300        CALL DPWRST('XXX','BUG ')
31301        WRITE(ICOUT,203)BETA
31302  203   FORMAT('      THE VALUE OF BETA IS ',G15.7)
31303        CALL DPWRST('XXX','BUG ')
31304        GOTO9000
31305      ELSEIF(ALPHA.LE.0.0)THEN
31306        WRITE(ICOUT,301)
31307  301   FORMAT('***** ERROR--THE ALPHA SHAPE PARAMETER IS ',
31308     1         'NON-POSITIVE.')
31309        CALL DPWRST('XXX','BUG ')
31310        WRITE(ICOUT,303)ALPHA
31311  303   FORMAT('      THE VALUE OF ALPHA IS ',G15.7)
31312        CALL DPWRST('XXX','BUG ')
31313        GOTO9000
31314      ENDIF
31315C
31316C     GENERATE N UNIFORM (0,1) RANDOM NUMBERS;
31317C
31318      CALL UNIRAN(N,ISEED,X)
31319C
31320C     GENERATE N KUMARASWAMY DISTRIBUTION
31321C     RANDOM NUMBERS USING THE PERCENT POINT FUNCTION TRANSFORMATION
31322C     METHOD.
31323C
31324      DO300I=1,N
31325        ZTEMP=X(I)
31326        CALL KUMPPF(DBLE(ZTEMP),DBLE(ALPHA),DBLE(BETA),DTEMP)
31327        X(I)=REAL(DTEMP)
31328  300 CONTINUE
31329C
31330 9000 CONTINUE
31331      RETURN
31332      END
31333      SUBROUTINE LAGUE(X,AN,ALN)
31334C
31335C     PURPOSE--THIS SUBROUTINE COMPUTES THE LAGUERRE POLYNOMIAL OF
31336C              ORDER N.
31337C     INPUT  ARGUMENTS--X      = THE SINGLE PRECISION INPUT ARGUMENT
31338C                       AN     = THE SINGLE PRECISION VALUE FOR THE
31339C                                ORDER OF THE FUNCTION (SHOULD BE
31340C                                NON-NEGATIVE ORDER)
31341C     OUTPUT ARGUMENTS--ALN    = THE SINGLE PRECISION VALUE OF THE
31342C                                LAGUERRE POLYNOMIAL.
31343C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
31344C     RESTRICTIONS--
31345C     OTHER DATAPAC   SUBROUTINES NEEDED--NONE
31346C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE
31347C     MODE OF INTERNAL OPERATIONS--SOME DOUBLE PRECISION.
31348C     LANGUAGE--ANSI FORTRAN.
31349C     REFERENCES--"HANDBOOK OF MATHEMATICAL FUNCTIONS, AMS 55",
31350C                 ABRAMOWITZ AND STEGUM.
31351C                 USE FOLLOWING RECURRENCE FORMULA:
31352C                    L(N+1) = (((2.*N+1)-x)*L(n)-N*L(N-1))/(N+1)
31353C                 FIRST FEW TERMS ARE FROM TABLE 22.10 OF ABRAMOWITZ
31354C                 AND STEGUM.
31355C     WRITTEN BY--JAMES J. FILLIBEN
31356C                 STATISTICAL ENGINEERING LABORATORY (205.03)
31357C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
31358C                 GAITHERSBURG, MD 20899-8980
31359C                 PHONE:  301-975-2855
31360C     ORIGINAL VERSION--JULY       1995.
31361C
31362C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
31363C
31364      DOUBLE PRECISION DX
31365      DOUBLE PRECISION DN, DN2
31366      DOUBLE PRECISION DLN, DLN1, DLN2
31367C
31368C-----COMMON----------------------------------------------------------
31369C
31370      INCLUDE 'DPCOP2.INC'
31371C
31372C-----START POINT-----------------------------------------------------
31373C
31374      IF(X.LT.0.0)THEN
31375        WRITE(ICOUT,4)
31376        CALL DPWRST('XXX','BUG ')
31377        WRITE(ICOUT,46)X
31378        CALL DPWRST('XXX','BUG ')
31379        GOTO9999
31380      ENDIF
31381    4 FORMAT('***** NON-FATAL DIAGNOSTIC--THE 1ST INPUT ARGUMENT ',
31382     1'TO THE LAGUERRE SUBROUTINE IS NEGATIVE *****')
31383   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',E15.8,' *****')
31384      N=INT(AN+0.5)
31385      IF(N.LT.0)THEN
31386        WRITE(ICOUT,6)
31387        CALL DPWRST('XXX','BUG ')
31388        WRITE(ICOUT,47)N
31389        CALL DPWRST('XXX','BUG ')
31390        GOTO9999
31391      ENDIF
31392    6 FORMAT('***** NON-FATAL DIAGNOSTIC--THE 2ND INPUT ARGUMENT ',
31393     1'TO THE LAGUERRE SUBROUTINE IS NEGATIVE *****')
31394   47 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',I8,' *****')
31395C
31396      DX=DBLE(X)
31397      DN=DBLE(N)
31398C
31399      IF(N.LE.0)THEN
31400        ALN=1.0
31401      ELSEIF(N.EQ.1)THEN
31402        ALN=-X+1.0
31403      ELSEIF(N.EQ.2)THEN
31404        ALN=0.5*(X**2 - 4.0*X + 2.0)
31405      ELSEIF(N.EQ.3)THEN
31406        DLN=(-DX**3 + 9.0D0*DX**2 -18.0D0*DX + 6.0D0)/6.0D0
31407        ALN=REAL(DLN)
31408      ELSE
31409        DLN1=(-DX**3 + 9.0D0*DX**2 -18.0D0*DX + 6.0D0)/6.0D0
31410        DLN2=0.5D0*(DX**2 - 4.0D0*DX + 2.0D0)
31411        DO1000I=4,N
31412          DN2=DBLE(I)-1.0D0
31413          DLN=(((2.0D0*DN2+1.0D0)-DX)*DLN1-DN2*DLN2)/(DN2+1.0D0)
31414          DLN2=DLN1
31415          DLN1=DLN
31416 1000   CONTINUE
31417        ALN=REAL(DLN)
31418      ENDIF
31419C
31420 9999 CONTINUE
31421      RETURN
31422      END
31423      SUBROUTINE LAGUEL(X,AN,ALPHA,IFLAG,ALN)
31424C
31425C     PURPOSE--THIS SUBROUTINE COMPUTES THE GENERALIZED LAGUERRE
31426C              POLYNOMIAL OF ORDER N.
31427C     INPUT  ARGUMENTS--X      = THE SINGLE PRECISION INPUT ARGUMENT
31428C                       AN     = THE SINGLE PRECISION VALUE FOR THE
31429C                                ORDER OF THE FUNCTION (SHOULD BE
31430C                                NON-NEGATIVE ORDER)
31431C                       ALPHA  = THE SINGLE PRECISION VALUE FOR THE
31432C                                PARAMETER OF THE FUNCTION (SHOULD BE
31433C                       IFLAG  = "NORM" FOR NORMALIZED, "UNNO" FOR
31434C                                UNNORMALIZED
31435C     OUTPUT ARGUMENTS--ALN    = THE SINGLE PRECISION VALUE OF THE
31436C                                LAGUERRE POLYNOMIAL.
31437C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
31438C     RESTRICTIONS--
31439C     OTHER DATAPAC   SUBROUTINES NEEDED--NONE
31440C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE
31441C     MODE OF INTERNAL OPERATIONS--SOME DOUBLE PRECISION.
31442C     LANGUAGE--ANSI FORTRAN.
31443C     REFERENCES--"HANDBOOK OF MATHEMATICAL FUNCTIONS, AMS 55",
31444C                 ABRAMOWITZ AND STEGUM.
31445C                 USE FOLLOWING RECURRENCE FORMULA:
31446C                    L(N+1) = (((2.*N+1)-x)*L(n)-N*L(N-1))/(N+1)
31447C                 FIRST FEW TERMS ARE FROM TABLE 22.10 OF ABRAMOWITZ
31448C                 AND STEGUM.
31449C     WRITTEN BY--JAMES J. FILLIBEN
31450C                 STATISTICAL ENGINEERING LABORATORY (205.03)
31451C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
31452C                 GAITHERSBURG, MD 20899-8980
31453C                 PHONE:  301-975-2855
31454C     ORIGINAL VERSION--JULY       1995.
31455C
31456C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
31457C
31458      CHARACTER*4 IFLAG
31459      DOUBLE PRECISION DX
31460      DOUBLE PRECISION DALPHA
31461      DOUBLE PRECISION DN, DN2
31462      DOUBLE PRECISION DLN, DLN1, DLN2
31463      DOUBLE PRECISION AJ, BJ, CJ
31464      DOUBLE PRECISION DFACT
31465      DOUBLE PRECISION DGAMR
31466C
31467C-----COMMON----------------------------------------------------------
31468C
31469      INCLUDE 'DPCOP2.INC'
31470C
31471C-----START POINT-----------------------------------------------------
31472C
31473      IF(X.LT.0.0)THEN
31474        WRITE(ICOUT,4)
31475        CALL DPWRST('XXX','BUG ')
31476        WRITE(ICOUT,46)X
31477        CALL DPWRST('XXX','BUG ')
31478        GOTO9999
31479      ENDIF
31480    4 FORMAT('***** NON-FATAL DIAGNOSTIC--THE 1ST INPUT ARGUMENT ',
31481     1'TO THE LAGUERRE SUBROUTINE IS NEGATIVE *****')
31482   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',E15.8,' *****')
31483      N=INT(AN+0.5)
31484      IF(N.LT.0)THEN
31485        WRITE(ICOUT,6)
31486        CALL DPWRST('XXX','BUG ')
31487        WRITE(ICOUT,47)N
31488        CALL DPWRST('XXX','BUG ')
31489        GOTO9999
31490      ENDIF
31491    6 FORMAT('***** NON-FATAL DIAGNOSTIC--THE 2ND INPUT ARGUMENT ',
31492     1'TO THE LAGUERRE SUBROUTINE IS NEGATIVE *****')
31493   47 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',I8,' *****')
31494C
31495      DX=DBLE(X)
31496      DALPHA=DBLE(ALPHA)
31497      DN=DBLE(N)
31498C
31499      IF(IFLAG.EQ.'NORM')GOTO2000
31500      IF(N.LE.0)THEN
31501        DLN=1.0D0
31502      ELSEIF(N.EQ.1)THEN
31503        DLN=-DX+DALPHA+1.0D0
31504      ELSEIF(N.EQ.2)THEN
31505        DLN=0.5D0*
31506     1   (2.D0+3.D0*DALPHA+DALPHA*DALPHA-4.D0*DX-2.D0*DALPHA*DX+DX*DX)
31507      ELSE
31508        DLN1=0.5D0*
31509     1   (2.D0+3.D0*DALPHA+DALPHA*DALPHA-4.D0*DX-2.D0*DALPHA*DX+DX*DX)
31510        DLN2=-DX+DALPHA+1.0D0
31511        DO1000I=3,N
31512          DN2=DBLE(I)-1.0D0
31513          DLN=(((2.0D0*DN2+DALPHA+1.0D0)-DX)*DLN1-(DN2+DALPHA)*DLN2)/
31514     1        (DN2+1.0D0)
31515CCCCC     DN2=DBLE(I)
31516CCCCC     AJ=(2.D0*DN2-1.0D0+DALPHA)/DN2
31517CCCCC     BJ=-1.D0/DN2
31518CCCCC     CJ=(DN2-1.0D0+DALPHA)/DN2
31519CCCCC     DLN=(AJ+BJ*DX)*DLN1 - CJ*DLN2
31520          DLN2=DLN1
31521          DLN1=DLN
31522 1000   CONTINUE
31523      ENDIF
31524      ALN=REAL(DLN)
31525      GOTO9999
31526C
31527 2000 CONTINUE
31528      IF(N.LE.0)THEN
31529        DLN=1.0D0
31530      ELSEIF(N.EQ.1)THEN
31531        DLN=-DX+DALPHA+1.0D0
31532        DFACT=(-1.0D0)**1/DGAMR(2.0D0)
31533        DLN=DLN/DFACT
31534      ELSEIF(N.EQ.2)THEN
31535        DLN=2.D0+3.D0*DALPHA+DALPHA*DALPHA-4.D0*DX-2.D0*DALPHA*DX+DX*DX
31536        DFACT=(-1.0D0)**2/DGAMR(3.0D0)
31537        DLN=DLN/DFACT
31538      ELSE
31539        DLN1=0.5D0*
31540     1   (2.D0+3.D0*DALPHA+DALPHA*DALPHA-4.D0*DX-2.D0*DALPHA*DX+DX*DX)
31541        DLN2=-DX+DALPHA+1.0D0
31542        DO2100I=3,N
31543          DN2=DBLE(I)
31544          AJ=(2.D0*DN2-1.0D0+DALPHA)/DN2
31545          BJ=-1.D0/DN2
31546          CJ=(DN2-1.0D0+DALPHA)/DN2
31547          DLN=(AJ+BJ*DX)*DLN1 - CJ*DLN2
31548          DLN2=DLN1
31549          DLN1=DLN
31550 2100   CONTINUE
31551      ENDIF
31552        DFACT=(-1.0D0)**N/DGAMR(DN+1.0D0)
31553        DLN=DLN/DFACT
31554      ALN=REAL(DLN)
31555      GOTO9999
31556C
31557 9999 CONTINUE
31558      RETURN
31559      END
31560      SUBROUTINE LAMCDF(X,ALAMBA,CDF)
31561C
31562C     PURPOSE--THIS SUBROUTINE COMPUTES THE CUMULATIVE DISTRIBUTION
31563C              FUNCTION VALUE FOR THE (TUKEY) LAMBDA DISTRIBUTION
31564C              WITH TAIL LENGTH PARAMETER VALUE = ALAMBA.
31565C              IN GENERAL, THE PROBABILITY DENSITY FUNCTION
31566C              FOR THIS DISTRIBUTION IS NOT SIMPLE.
31567C              THE PERCENT POINT FUNCTION FOR THIS DISTRIBUTION IS
31568C              G(P) = ((P**ALAMBA)-((1-P)**ALAMBA))/ALAMBA
31569C     INPUT  ARGUMENTS--X      = THE SINGLE PRECISION VALUE AT
31570C                                WHICH THE CUMULATIVE DISTRIBUTION
31571C                                FUNCTION IS TO BE EVALUATED.
31572C                     --ALAMBA = THE SINGLE PRECISION VALUE OF LAMBDA
31573C                                (THE TAIL LENGTH PARAMETER).
31574C     OUTPUT ARGUMENTS--CDF    = THE SINGLE PRECISION CUMULATIVE
31575C                                DISTRIBUTION FUNCTION VALUE.
31576C     OUTPUT--THE SINGLE PRECISION CUMULATIVE DISTRIBUTION
31577C             FUNCTION VALUE CDF FOR THE TUKEY LAMBDA DISTRIBUTION
31578C             WITH TAIL LENGTH PARAMETER = ALAMBA.
31579C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
31580C     RESTRICTIONS--FOR ALAMBA NON-POSITIVE, NO RESTRICTIONS ON X.
31581C                 --FOR ALAMBA POSITIVE, X SHOULD BE BETWEEN (-1/ALAMBA)
31582C                   AND (+1/ALAMBA), INCLUSIVELY.
31583C     OTHER DATAPAC   SUBROUTINES NEEDED--NONE.
31584C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE.
31585C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
31586C     LANGUAGE--ANSI FORTRAN.
31587C     REFERENCES--HASTINGS, MOSTELLER, TUKEY, AND WINDSOR,
31588C                 'LOW MOMENTS FOR SMALL SAMPLES:  A COMPARATIVE
31589C                 STUDY OF ORDER STATISTICS', ANNALS OF
31590C                 MATHEMATICAL STATISTICS, 18, 1947,
31591C                 PAGES 413-426.
31592C               --FILLIBEN, SIMPLE AND ROBUST LINEAR ESTIMATION
31593C                 OF THE LOCATION PARAMETER OF A SYMMETRIC
31594C                 DISTRIBUTION (UNPUBLISHED PH.D. DISSERTATION,
31595C                 PRINCETON UNIVERSITY), 1969, PAGES 42-44, 53-58.
31596C     WRITTEN BY--JAMES J. FILLIBEN
31597C                 STATISTICAL ENGINEERING LABORATORY (205.03)
31598C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
31599C                 GAITHERSBURG, MD 20899-8980
31600C                 PHONE:  301-921-2315
31601C     ORIGINAL VERSION--APRIL     1994.
31602C
31603C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
31604C
31605C-----COMMON----------------------------------------------------------
31606C
31607      INCLUDE 'DPCOP2.INC'
31608C
31609C---------------------------------------------------------------------
31610C
31611C     CHECK THE INPUT ARGUMENTS FOR ERRORS
31612C
31613      IF(ALAMBA.LE.0.0)GOTO90
31614      XMAX=1.0/ALAMBA
31615      XMIN=-XMAX
31616      IF(X.LT.XMIN.OR.X.GT.XMAX)GOTO50
31617      GOTO90
31618   50 CONTINUE
31619      WRITE(ICOUT,2)
31620      CALL DPWRST('XXX','BUG ')
31621      WRITE(ICOUT,3)
31622      CALL DPWRST('XXX','BUG ')
31623      WRITE(ICOUT,4)
31624      CALL DPWRST('XXX','BUG ')
31625      WRITE(ICOUT,46)X
31626      CALL DPWRST('XXX','BUG ')
31627      WRITE(ICOUT,3)
31628      CALL DPWRST('XXX','BUG ')
31629      IF(X.LT.XMIN)CDF=0.0
31630      IF(X.GT.XMAX)CDF=1.0
31631      RETURN
31632   90 CONTINUE
31633    2 FORMAT('***** NON-FATAL DIAGNOSTIC--THE FIRST INPUT ARGUMENNT')
31634    3 FORMAT('      TO THE LAMCDF SUBROUTINE IS OUTSIDE THE USUAL')
31635    4 FORMAT('      +-(1/ALAMBA) INTERVAL *****')
31636   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',E15.8,' *****')
31637C
31638C-----START POINT-----------------------------------------------------
31639C
31640      IF(ALAMBA.GT.0.0)GOTO110
31641      GOTO120
31642C
31643  110 XMAX=1.0/ALAMBA
31644      XMIN=-XMAX
31645      IF(X.LE.XMIN)CDF=0.0
31646      IF(X.GE.XMAX)CDF=1.0
31647      IF(X.LE.XMIN.OR.X.GE.XMAX)RETURN
31648C
31649  120 CONTINUE
31650      IF(-0.001.LT.ALAMBA.AND.ALAMBA.LT.0.001)GOTO150
31651      GOTO170
31652  150 IF(X.GE.0.0)GOTO160
31653      CDF=EXP(X)/(1.0+EXP(X))
31654      RETURN
31655  160 CDF=1.0/(1.0+EXP(-X))
31656      RETURN
31657C
31658  170 IF(-0.001.LT.ALAMBA.AND.ALAMBA.LT.0.001)GOTO150
31659      PMIN=0.0
31660      PMID=0.5
31661      PMAX=1.0
31662      PLOWER=PMIN
31663      PUPPER=PMAX
31664      ICOUNT=0
31665  210 XCALC=(PMID**ALAMBA-(1.0-PMID)**ALAMBA)/ALAMBA
31666      IF(XCALC.EQ.X)GOTO240
31667      IF(XCALC.GT.X)GOTO220
31668      PLOWER=PMID
31669      PMID=(PMID+PUPPER)/2.0
31670      GOTO230
31671  220 PUPPER=PMID
31672      PMID=(PMID+PLOWER)/2.0
31673  230 PDEL=ABS(PMID-PLOWER)
31674      ICOUNT=ICOUNT+1
31675      IF(PDEL.LT.0.000001.OR.ICOUNT.GT.30)GOTO240
31676      GOTO210
31677  240 CDF=PMID
31678      RETURN
31679C
31680      END
31681      SUBROUTINE LAMN(N,X,NM,BL1,DL1,IERROR)
31682C
31683C       =========================================================
31684C       Purpose: Compute lambda functions and their derivatives
31685C       Input:   x --- Argument of lambda function
31686C                n --- Order of lambda function
31687C       Output:  BL(n) --- Lambda function of order n
31688C                DL(n) --- Derivative of lambda function
31689C                NM --- Highest order computed
31690C       Routines called:
31691C                MSTA1 and MSTA2 for computing the start
31692C                point for backward recurrence
31693C       =========================================================
31694C
31695        PARAMETER(MAXORD=500)
31696        IMPLICIT DOUBLE PRECISION (A-H,O-Z)
31697        DIMENSION BL(0:MAXORD),DL(0:MAXORD)
31698        CHARACTER*4 IERROR
31699C
31700        F=0.0D0
31701C
31702        IF(N.GT.MAXORD)THEN
31703          IERROR='YES'
31704          RETURN
31705        ENDIF
31706C
31707        NM=N
31708        IF (DABS(X).LT.1.0D-100) THEN
31709           DO 10 K=0,N
31710              BL(K)=0.0D0
31711              DL(K)=0.0D0
3171210         CONTINUE
31713           BL(0)=1.0D0
31714           DL(1)=0.5D0
31715           GOTO9999
31716        ENDIF
31717        IF (X.LE.12.0D0) THEN
31718           X2=X*X
31719           DO 25 K=0,N
31720              BK=1.0D0
31721              R=1.0D0
31722              DO 15 I=1,50
31723                 R=-0.25D0*R*X2/(I*(I+K))
31724                 BK=BK+R
31725                 IF (DABS(R).LT.DABS(BK)*1.0D-15) GO TO 20
3172615            CONTINUE
3172720            BL(K)=BK
31728              IF (K.GE.1) DL(K-1)=-0.5D0*X/K*BK
3172925         CONTINUE
31730           UK=1.0D0
31731           R=1.0D0
31732           DO 30 I=1,50
31733              R=-0.25D0*R*X2/(I*(I+N+1.0D0))
31734              UK=UK+R
31735              IF (DABS(R).LT.DABS(UK)*1.0D-15) GO TO 35
3173630         CONTINUE
3173735         DL(N)=-0.5D0*X/(N+1.0D0)*UK
31738           GOTO9999
31739        ENDIF
31740        IF (N.EQ.0) NM=1
31741        M=MSTA1(X,200)
31742        IF (M.LT.NM) THEN
31743           NM=M
31744        ELSE
31745           M=MSTA2(X,NM,15)
31746        ENDIF
31747        BS=0.0D0
31748        F0=0.0D0
31749        F1=1.0D-100
31750        DO 40 K=M,0,-1
31751           F=2.0D0*(K+1.0D0)*F1/X-F0
31752           IF (K.LE.NM) BL(K)=F
31753           IF (K.EQ.2*INT(K/2)) BS=BS+2.0D0*F
31754           F0=F1
31755           F1=F
3175640      CONTINUE
31757        BG=BS-F
31758        DO 45 K=0,NM
31759           BL(K)=BL(K)/BG
3176045      CONTINUE
31761        R0=1.0D0
31762        DO 50 K=1,NM
31763           R0=2.0D0*R0*K/X
31764           BL(K)=R0*BL(K)
3176550      CONTINUE
31766        DL(0)=-0.5D0*X*BL(1)
31767        DO 55 K=1,NM
31768           DL(K)=2.0D0*K/X*(BL(K-1)-BL(K))
3176955      CONTINUE
31770C
31771 9999   CONTINUE
31772        BL1=BL(NM)
31773        DL1=DL(NM)
31774        RETURN
31775        END
31776      SUBROUTINE LAMPDF(X,ALAMBA,PDF)
31777C
31778C     PURPOSE--THIS SUBROUTINE COMPUTES THE PROBABILITY DENSITY
31779C              FUNCTION VALUE FOR THE (TUKEY) LAMBDA DISTRIBUTION
31780C              WITH TAIL LENGTH PARAMETER VALUE = ALAMBA.
31781C              IN GENERAL, THE PROBABILITY DENSITY FUNCTION
31782C              FOR THIS DISTRIBUTION IS NOT SIMPLE.
31783C              THE PERCENT POINT FUNCTION FOR THIS DISTRIBUTION IS
31784C              G(P) = ((P**ALAMBA)-((1-P)**ALAMBA))/ALAMBA
31785C     INPUT  ARGUMENTS--X      = THE SINGLE PRECISION VALUE AT
31786C                                WHICH THE PROBABILITY DENSITY
31787C                                FUNCTION IS TO BE EVALUATED.
31788C                     --ALAMBA = THE SINGLE PRECISION VALUE OF LAMBDA
31789C                                (THE TAIL LENGTH PARAMETER).
31790C     OUTPUT ARGUMENTS--PDF    = THE SINGLE PRECISION PROBABILITY
31791C                                DENSITY FUNCTION VALUE.
31792C     OUTPUT--THE SINGLE PRECISION PROBABILITY DENSITY
31793C             FUNCTION VALUE PDF FOR THE TUKEY LAMBDA DISTRIBUTION
31794C             WITH TAIL LENGTH PARAMETER = ALAMBA.
31795C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
31796C     RESTRICTIONS--FOR ALAMBA NON-POSITIVE, NO RESTRICTIONS ON X.
31797C                 --FOR ALAMBA POSITIVE, X SHOULD BE BETWEEN (-1/ALAMBA)
31798C                   AND (+1/ALAMBA), INCLUSIVELY.
31799C     OTHER DATAPAC   SUBROUTINES NEEDED--LAMCDF.
31800C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE.
31801C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
31802C     LANGUAGE--ANSI FORTRAN.
31803C     REFERENCES--HASTINGS, MOSTELLER, TUKEY, AND WINDSOR,
31804C                 'LOW MOMENTS FOR SMALL SAMPLES:  A COMPARATIVE
31805C                 STUDY OF ORDER STATISTICS', ANNALS OF
31806C                 MATHEMATICAL STATISTICS, 18, 1947,
31807C                 PAGES 413-426.
31808C               --FILLIBEN, SIMPLE AND ROBUST LINEAR ESTIMATION
31809C                 OF THE LOCATION PARAMETER OF A SYMMETRIC
31810C                 DISTRIBUTION (UNPUBLISHED PH.D. DISSERTATION,
31811C                 PRINCETON UNIVERSITY), 1969, PAGES 42-44, 53-58.
31812C     WRITTEN BY--JAMES J. FILLIBEN
31813C                 STATISTICAL ENGINEERING LABORATORY (205.03)
31814C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
31815C                 GAITHERSBURG, MD 20899-8980
31816C                 PHONE:  301-921-2315
31817C     ORIGINAL VERSION--APRIL     1994.
31818C
31819C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
31820C
31821C-----COMMON----------------------------------------------------------
31822C
31823      INCLUDE 'DPCOP2.INC'
31824C
31825C---------------------------------------------------------------------
31826C
31827C     CHECK THE INPUT ARGUMENTS FOR ERRORS
31828C
31829      IF(ALAMBA.LE.0.0)GOTO90
31830      XMAX=1.0/ALAMBA
31831      XMIN=-XMAX
31832      IF(X.LT.XMIN.OR.X.GT.XMAX)GOTO50
31833      GOTO90
31834   50 CONTINUE
31835      WRITE(ICOUT,2)
31836      CALL DPWRST('XXX','BUG ')
31837      WRITE(ICOUT,3)
31838      CALL DPWRST('XXX','BUG ')
31839      WRITE(ICOUT,4)
31840      CALL DPWRST('XXX','BUG ')
31841      WRITE(ICOUT,46)X
31842      CALL DPWRST('XXX','BUG ')
31843      IF(X.LT.XMIN)PDF=0.0
31844      IF(X.GT.XMAX)PDF=1.0
31845      RETURN
31846   90 CONTINUE
31847    2 FORMAT('***** NON-FATAL DIAGNOSTIC--THE FIRST INPUT ARGUMENNT')
31848    3 FORMAT('      TO THE LAMPDF SUBROUTINE IS OUTSIDE THE USUAL')
31849    4 FORMAT('      +-(1/ALAMBA) INTERVAL *****')
31850   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',E15.8,' *****')
31851C
31852C-----START POINT-----------------------------------------------------
31853C
31854      IF(ALAMBA.GT.0.0)GOTO110
31855      GOTO150
31856  110 XMAX=1.0/ALAMBA
31857      XMIN=-XMAX
31858      IF(X.GT.XMIN.AND.X.LT.XMAX)GOTO150
31859      IF(X.LT.XMIN.OR.X.GT.XMAX)PDF=0.0
31860      IF(X.EQ.XMIN.AND.ALAMBA.LT.1.0)PDF=0.0
31861      IF(X.EQ.XMAX.AND.ALAMBA.LT.1.0)PDF=0.0
31862      IF(X.EQ.XMIN.AND.ALAMBA.EQ.1.0)PDF=0.5
31863      IF(X.EQ.XMAX.AND.ALAMBA.EQ.1.0)PDF=0.5
31864      IF(X.EQ.XMIN.AND.ALAMBA.GT.1.0)PDF=1.0
31865      IF(X.EQ.XMAX.AND.ALAMBA.GT.1.0)PDF=1.0
31866      RETURN
31867C
31868  150 CALL LAMCDF(X,ALAMBA,CDF)
31869      SF =CDF**(ALAMBA-1.0)+(1.0-CDF)**(ALAMBA-1.0)
31870      PDF=1.0/SF
31871      RETURN
31872C
31873      END
31874      SUBROUTINE LAMPPF(P,ALAMBA,PPF)
31875C
31876C     PURPOSE--THIS SUBROUTINE COMPUTES THE PERCENT POINT
31877C              FUNCTION VALUE FOR THE (TUKEY) LAMBDA DISTRIBUTION
31878C              WITH TAIL LENGTH PARAMETER VALUE = ALAMBA.
31879C              IN GENERAL, THE PROBABILITY DENSITY FUNCTION
31880C              FOR THIS DISTRIBUTION IS NOT SIMPLE.
31881C              THE PERCENT POINT FUNCTION FOR THIS DISTRIBUTION IS
31882C              G(P) = ((P**ALAMBA)-((1-P)**ALAMBA))/ALAMBA
31883C              NOTE THAT THE PERCENT POINT FUNCTION OF A DISTRIBUTION
31884C              IS IDENTICALLY THE SAME AS THE INVERSE CUMULATIVE
31885C              DISTRIBUTION FUNCTION OF THE DISTRIBUTION.
31886C     INPUT  ARGUMENTS--P      = THE SINGLE PRECISION VALUE
31887C                                (BETWEEN 0.0 AND 1.0)
31888C                                AT WHICH THE PERCENT POINT
31889C                                FUNCTION IS TO BE EVALUATED.
31890C                     --ALAMBA = THE SINGLE PRECISION VALUE OF LAMBDA
31891C                                (THE TAIL LENGTH PARAMETER).
31892C     OUTPUT ARGUMENTS--PPF    = THE SINGLE PRECISION PERCENT
31893C                                POINT FUNCTION VALUE.
31894C     OUTPUT--THE SINGLE PRECISION PERCENT POINT
31895C             FUNCTION VALUE PPF FOR THE TUKEY LAMBDA DISTRIBUTION
31896C             WITH TAIL LENGTH PARAMETER = ALAMBA.
31897C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
31898C     RESTRICTIONS--IF ALAMBA IS POSITIVE,
31899C                   THEN P SHOULD BE BETWEEN 0.0 AND 1.0, INCLUSIVELY.
31900C                   IF ALAMBA IS NON-POSITIVE,
31901C                   THEN P SHOULD BE BETWEEN 0.0 AND 1.0, EXCLUSIVELY.
31902C     OTHER DATAPAC   SUBROUTINES NEEDED--NONE.
31903C     FORTRAN LIBRARY SUBROUTINES NEEDED--LOG.
31904C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
31905C     LANGUAGE--ANSI FORTRAN (1977)
31906C     REFERENCES--FILLIBEN, SIMPLE AND ROBUST LINEAR ESTIMATION
31907C                 OF THE LOCATION PARAMETER OF A SYMMETRIC
31908C                 DISTRIBUTION (UNPUBLISHED PH.D. DISSERTATION,
31909C                 PRINCETON UNIVERSITY), 1969, PAGES 21-44, 229-231,
31910C                 PAGES 53-58.
31911C               --FILLIBEN, 'THE PERCENT POINT FUNCTION',
31912C                 (UNPUBLISHED MANUSCRIPT), 1970, PAGES 28-31.
31913C               --HASTINGS, MOSTELLER, TUKEY, AND WINDSOR,
31914C                 'LOW MOMENTS FOR SMALL SAMPLES:  A COMPARATIVE
31915C                 STUDY OF ORDER STATISTICS', ANNALS OF
31916C                 MATHEMATICAL STATISTICS, 18, 1947,
31917C                 PAGES 413-426.
31918C     WRITTEN BY--JAMES J. FILLIBEN
31919C                 STATISTICAL ENGINEERING DIVISION
31920C                 INFORMATION TECHNOLOGY LABORATORY
31921C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
31922C                 GAITHERSBURG, MD 20899-8980
31923C                 PHONE--301-975-2855
31924C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
31925C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
31926C     LANGUAGE--ANSI FORTRAN (1966)
31927C               EXCEPTION--HOLLERITH STRINGS IN FORMAT STATEMENTS
31928C                          DENOTED BY QUOTES RATHER THAN NH.
31929C     VERSION NUMBER--82.6
31930C     ORIGINAL VERSION--JUNE      1972.
31931C     UPDATED         --SEPTEMBER 1975.
31932C     UPDATED         --NOVEMBER  1975.
31933C     UPDATED         --DECEMBER  1981.
31934C     UPDATED         --MAY       1982.
31935C
31936C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
31937C
31938C-----COMMON----------------------------------------------------------
31939C
31940      INCLUDE 'DPCOP2.INC'
31941C
31942C-----START POINT-----------------------------------------------------
31943C
31944C     CHECK THE INPUT ARGUMENTS FOR ERRORS
31945C
31946      IF(ALAMBA.LE.0.0.AND.P.LE.0.0)GOTO50
31947      IF(ALAMBA.LE.0.0.AND.P.GE.1.0)GOTO50
31948      IF(ALAMBA.GT.0.0.AND.P.LT.0.0)GOTO50
31949      IF(ALAMBA.GT.0.0.AND.P.GT.1.0)GOTO50
31950      GOTO90
31951   50 WRITE(ICOUT,1)
31952      CALL DPWRST('XXX','BUG ')
31953      WRITE(ICOUT,46)P
31954      CALL DPWRST('XXX','BUG ')
31955      RETURN
31956   90 CONTINUE
31957    1 FORMAT('***** FATAL ERROR--THE 1ST INPUT ARGUMENT TO THE ',
31958     1'LAMPPF SUBROUTINE IS OUTSIDE THE ALLOWABLE (0,1) INTERVAL')
31959   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',E15.8,' *****')
31960C
31961      IF(-0.001.LT.ALAMBA.AND.ALAMBA.LT.0.001)GOTO150
31962      GOTO250
31963  150 PPF=LOG(P/(1.0-P))
31964      RETURN
31965C
31966  250 PPF= (P**ALAMBA-(1.0-P)**ALAMBA)/ALAMBA
31967      RETURN
31968C
31969      END
31970      SUBROUTINE LAMRAN(N,ALAMBA,ISEED,X)
31971C
31972C     PURPOSE--THIS SUBROUTINE GENERATES A RANDOM SAMPLE OF SIZE N
31973C              FROM THE (TUKEY) LAMBDA DISTRIBUTION
31974C              WITH TAIL LENGTH PARAMETER VALUE = ALAMBA.
31975C              IN GENERAL, THE PROBABILITY DENSITY FUNCTION
31976C              FOR THIS DISTRIBUTION IS NOT SIMPLE.
31977C              THE PERCENT POINT FUNCTION FOR THIS DISTRIBUTION IS
31978C              G(P) = ((P**ALAMBA)-((1-P)**ALAMBA))/ALAMBA
31979C     INPUT  ARGUMENTS--N      = THE DESIRED INTEGER NUMBER
31980C                                OF RANDOM NUMBERS TO BE
31981C                                GENERATED.
31982C                     --ALAMBA = THE SINGLE PRECISION VALUE OF LAMBDA
31983C                                (THE TAIL LENGTH PARAMETER).
31984C     OUTPUT ARGUMENTS--X      = A SINGLE PRECISION VECTOR
31985C                                (OF DIMENSION AT LEAST N)
31986C                                INTO WHICH THE GENERATED
31987C                                RANDOM SAMPLE WILL BE PLACED.
31988C     OUTPUT--A RANDOM SAMPLE OF SIZE N
31989C             FROM THE (TUKEY) LAMBDA DISTRIBUTION
31990C             WITH TAIL LENGTH PARAMETER VALUE = ALAMBA.
31991C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
31992C     RESTRICTIONS--THERE IS NO RESTRICTION ON THE MAXIMUM VALUE
31993C                   OF N FOR THIS SUBROUTINE.
31994C     OTHER DATAPAC   SUBROUTINES NEEDED--UNIRAN.
31995C     FORTRAN LIBRARY SUBROUTINES NEEDED--LOG.
31996C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
31997C     LANGUAGE--ANSI FORTRAN (1977)
31998C     REFERENCES--TOCHER, THE ART OF SIMULATION,
31999C                 1963, PAGES 14-15.
32000C               --HAMMERSLEY AND HANDSCOMB, MONTE CARLO METHODS,
32001C                 1964, PAGE 36.
32002C               --FILLIBEN, SIMPLE AND ROBUST LINEAR ESTIMATION
32003C                 OF THE LOCATION PARAMETER OF A SYMMETRIC
32004C                 DISTRIBUTION (UNPUBLISHED PH.D. DISSERTATION,
32005C                 PRINCETON UNIVERSITY), 1969, PAGES 21-44, 53-58.
32006C               --FILLIBEN, 'THE PERCENT POINT FUNCTION',
32007C                 (UNPUBLISHED MANUSCRIPT), 1970, PAGES 28-31.
32008C     WRITTEN BY--JAMES J. FILLIBEN
32009C                 STATISTICAL ENGINEERING DIVISION
32010C                 INFORMATION TECHNOLOGY LABORATORY
32011C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
32012C                 GAITHERSBURG, MD 20899-8980
32013C                 PHONE--301-975-2855
32014C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
32015C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
32016C     LANGUAGE--ANSI FORTRAN (1966)
32017C               EXCEPTION--HOLLERITH STRINGS IN FORMAT STATEMENTS
32018C                          DENOTED BY QUOTES RATHER THAN NH.
32019C     VERSION NUMBER--82.6
32020C     ORIGINAL VERSION--JUNE      1972.
32021C     UPDATED         --SEPTEMBER 1975.
32022C     UPDATED         --NOVEMBER  1975.
32023C     UPDATED         --DECEMBER  1981.
32024C     UPDATED         --MAY       1982.
32025C
32026C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
32027C
32028C---------------------------------------------------------------------
32029C
32030      DIMENSION X(*)
32031C
32032C-----COMMON----------------------------------------------------------
32033C
32034      INCLUDE 'DPCOP2.INC'
32035C
32036C-----START POINT-----------------------------------------------------
32037C
32038C     CHECK THE INPUT ARGUMENTS FOR ERRORS
32039C
32040      ALAMB2=ALAMBA
32041      IF(N.LT.1)GOTO50
32042      GOTO90
32043   50 WRITE(ICOUT, 5)
32044      CALL DPWRST('XXX','BUG ')
32045      WRITE(ICOUT,47)N
32046      CALL DPWRST('XXX','BUG ')
32047      RETURN
32048   90 CONTINUE
32049    5 FORMAT('***** FATAL ERROR--THE 1ST INPUT ARGUMENT TO THE ',
32050     1'LAMRAN SUBROUTINE IS NON-POSITIVE *****')
32051   47 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',I8,' *****')
32052C
32053C     GENERATE N UNIFORM (0,1) RANDOM NUMBERS;
32054C
32055      CALL UNIRAN(N,ISEED,X)
32056C
32057C     GENERATE N LAMBDA DISTRIBUTION RANDOM NUMBERS
32058C     USING THE PERCENT POINT FUNCTION TRANSFORMATION METHOD.
32059C
32060      DO100I=1,N
32061      Q=X(I)
32062      IF(-0.001.LT.ALAMB2.AND.ALAMB2.LT.0.001)X(I)=LOG(Q/(1.0-Q))
32063      IF(-0.001.LT.ALAMB2.AND.ALAMB2.LT.0.001)GOTO100
32064      X(I)=(Q**ALAMB2-(1.0-Q)**ALAMB2)/ALAMB2
32065  100 CONTINUE
32066C
32067      RETURN
32068      END
32069      SUBROUTINE LAMSF(P,ALAMBA,SF)
32070C
32071C     PURPOSE--THIS SUBROUTINE COMPUTES THE SPARSITY
32072C              FUNCTION VALUE FOR THE (TUKEY) LAMBDA DISTRIBUTION
32073C              WITH TAIL LENGTH PARAMETER VALUE = ALAMBA.
32074C              IN GENERAL, THE PROBABILITY DENSITY FUNCTION
32075C              FOR THIS DISTRIBUTION IS NOT SIMPLE.
32076C              THE PERCENT POINT FUNCTION FOR THIS DISTRIBUTION IS
32077C              G(P) = ((P**ALAMBA)-((1-P)**ALAMBA))/ALAMBA
32078C              NOTE THAT THE SPARSITY FUNCTION OF A DISTRIBUTION
32079C              IS THE DERIVATIVE OF THE PERCENT POINT FUNCTION,
32080C              AND ALSO IS THE RECIPROCAL OF THE PROBABILITY
32081C              DENSITY FUNCTION (BUT IN UNITS OF P RATHER THAN X).
32082C     INPUT  ARGUMENTS--P      = THE SINGLE PRECISION VALUE
32083C                                (BETWEEN 0.0 AND 1.0)
32084C                                AT WHICH THE SPARSITY
32085C                                FUNCTION IS TO BE EVALUATED.
32086C                     --ALAMBA = THE SINGLE PRECISION VALUE OF LAMBDA
32087C                                (THE TAIL LENGTH PARAMETER).
32088C     OUTPUT ARGUMENTS--SF     = THE SINGLE PRECISION
32089C                                SPARSITY FUNCTION VALUE.
32090C     OUTPUT--THE SINGLE PRECISION SPARSITY
32091C             FUNCTION VALUE SF FOR THE TUKEY LAMBDA DISTRIBUTION
32092C             WITH TAIL LENGTH PARAMETER = ALAMBA.
32093C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
32094C     RESTRICTIONS--IF ALAMBA IS POSITIVE,
32095C                   THEN P SHOULD BE BETWEEN 0.0 AND 1.0, INCLUSIVELY.
32096C                   IF ALAMBA IS NON-POSITIVE,
32097C                   THEN P SHOULD BE BETWEEN 0.0 AND 1.0, EXCLUSIVELY.
32098C     OTHER DATAPAC   SUBROUTINES NEEDED--NONE.
32099C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE.
32100C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
32101C     LANGUAGE--ANSI FORTRAN.
32102C     REFERENCES--FILLIBEN, SIMPLE AND ROBUST LINEAR ESTIMATION
32103C                 OF THE LOCATION PARAMETER OF A SYMMETRIC
32104C                 DISTRIBUTION (UNPUBLISHED PH.D. DISSERTATION,
32105C                 PRINCETON UNIVERSITY), 1969, PAGES 21-44, 229-231,
32106C                 PAGES 53-58.
32107C               --FILLIBEN, 'THE PERCENT POINT FUNCTION',
32108C                 (UNPUBLISHED MANUSCRIPT), 1970, PAGES 28-31.
32109C               --HASTINGS, MOSTELLER, TUKEY, AND WINDSOR,
32110C                 'LOW MOMENTS FOR SMALL SAMPLES:  A COMPARATIVE
32111C                 STUDY OF ORDER STATISTICS', ANNALS OF
32112C                 MATHEMATICAL STATISTICS, 18, 1947,
32113C                 PAGES 413-426.
32114C     WRITTEN BY--JAMES J. FILLIBEN
32115C                 STATISTICAL ENGINEERING LABORATORY (205.03)
32116C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
32117C                 GAITHERSBURG, MD 20899-8980
32118C                 PHONE:  301-921-2315
32119C     ORIGINAL VERSION--APRIL     1994.
32120C
32121C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
32122C
32123C-----COMMON----------------------------------------------------------
32124C
32125      INCLUDE 'DPCOP2.INC'
32126C
32127C---------------------------------------------------------------------
32128C
32129C     CHECK THE INPUT ARGUMENTS FOR ERRORS
32130C
32131      IF(ALAMBA.LE.0.0.AND.P.LE.0.0)GOTO50
32132      IF(ALAMBA.LE.0.0.AND.P.GE.1.0)GOTO50
32133      IF(ALAMBA.GT.0.0.AND.P.LT.0.0)GOTO50
32134      IF(ALAMBA.GT.0.0.AND.P.GT.1.0)GOTO50
32135      GOTO90
32136   50 CONTINUE
32137      WRITE(ICOUT,1)
32138      CALL DPWRST('XXX','BUG ')
32139      WRITE(ICOUT,2)
32140      CALL DPWRST('XXX','BUG ')
32141      WRITE(ICOUT,46)P
32142      CALL DPWRST('XXX','BUG ')
32143      RETURN
32144   90 CONTINUE
32145    1 FORMAT(
32146     1'***** FATAL ERROR--THE FIRST  INPUT ARGUMENT TO THE LAMSF')
32147    2 FORMAT(
32148     1'      SUBROUTINE IS OUTSIDE THE ALLOWABLE (0,1) INTERVAL *****')
32149   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',E15.8,' *****')
32150C
32151C-----START POINT-----------------------------------------------------
32152C
32153      SF=P**(ALAMBA-1.0)+(1.0-P)**(ALAMBA-1.0)
32154C
32155      RETURN
32156      END
32157      SUBROUTINE LAMV(V,X,VM,VL1,DL1,IERROR)
32158C
32159C       =========================================================
32160C       Purpose: Compute lambda function with arbitrary order v,
32161C                and their derivative
32162C       Input :  x --- Argument of lambda function
32163C                v --- Order of lambda function
32164C       Output:  VL(n) --- Lambda function of order n+v0
32165C                DL(n) --- Derivative of lambda function
32166C                VM --- Highest order computed
32167C       Routines called:
32168C            (1) MSTA1 and MSTA2 for computing the starting
32169C                point for backward recurrence
32170C            (2) GAM0 for computing gamma function (|x|   1)
32171C                (USE SLATEC VERSION: DGAMMA)
32172C       =========================================================
32173C
32174      PARAMETER(MAXORD=500)
32175      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
32176      DIMENSION VL(0:MAXORD),DL(0:MAXORD)
32177      CHARACTER*4 IERROR
32178C
32179      VL(0:MAXORD)=0.0D0
32180      DL(0:MAXORD)=0.0D0
32181      CS=0.0D0
32182      F=0.0D0
32183      BJV0=0.0D0
32184C
32185        IF(V.GT.REAL(MAXORD))THEN
32186          IERROR='YES'
32187          RETURN
32188        ENDIF
32189C
32190      PI=3.141592653589793D0
32191      RP2=0.63661977236758D0
32192      X=DABS(X)
32193      X2=X*X
32194      N=INT(V)
32195      V0=V-N
32196      VM=V
32197      IF (X.LE.12.0D0) THEN
32198         DO 25 K=0,N
32199            VK=V0+K
32200            BK=1.0D0
32201            R=1.0D0
32202            DO 10 I=1,50
32203              R=-0.25D0*R*X2/(I*(I+VK))
32204              BK=BK+R
32205              IF (DABS(R).LT.DABS(BK)*1.0D-15) GO TO 15
3220610          CONTINUE
3220715          CONTINUE
32208            VL(K)=BK
32209            UK=1.0D0
32210            R=1.0D0
32211            DO 20 I=1,50
32212              R=-0.25D0*R*X2/(I*(I+VK+1.0D0))
32213              UK=UK+R
32214              IF (DABS(R).LT.DABS(UK)*1.0D-15) GO TO 25
3221520          CONTINUE
32216            DL(K)=-0.5D0*X/(VK+1.0D0)*UK
3221725       CONTINUE
32218         GOTO9999
32219      ENDIF
32220      K0=11
32221      IF (X.GE.35.0D0) K0=10
32222      IF (X.GE.50.0D0) K0=8
32223      DO 40 J=0,1
32224         VV=4.0D0*(J+V0)*(J+V0)
32225         PX=1.0D0
32226         RP=1.0D0
32227         DO 30 K=1,K0
32228            RP=-0.78125D-2*RP*(VV-(4.0*K-3.0)**2.0)*(VV-
32229     &            (4.0*K-1.0)**2.0)/(K*(2.0*K-1.0)*X2)
32230              PX=PX+RP
3223130       CONTINUE
32232         QX=1.0D0
32233         RQ=1.0D0
32234         DO 35 K=1,K0
32235            RQ=-0.78125D-2*RQ*(VV-(4.0*K-1.0)**2.0)*(VV-
32236     &            (4.0*K+1.0)**2.0)/(K*(2.0*K+1.0)*X2)
32237              QX=QX+RQ
3223835       CONTINUE
32239         QX=0.125D0*(VV-1.0D0)*QX/X
32240         XK=X-(0.5D0*(J+V0)+0.25D0)*PI
32241         A0=DSQRT(RP2/X)
32242         CK=DCOS(XK)
32243         SK=DSIN(XK)
32244         IF (J.EQ.0) BJV0=A0*(PX*CK-QX*SK)
32245         IF (J.EQ.1) BJV1=A0*(PX*CK-QX*SK)
3224640    CONTINUE
32247      IF (V0.EQ.0.0D0) THEN
32248        GA=1.0D0
32249      ELSE
32250CCCCC USE SLATEC GAMMA FUNCTION
32251CCCCC   CALL GAM0(V0,GA)
32252        GA=DGAMMA(V0)
32253        GA=V0*GA
32254      ENDIF
32255      FAC=(2.0D0/X)**V0*GA
32256      VL(0)=BJV0
32257      DL(0)=-BJV1+V0/X*BJV0
32258      VL(1)=BJV1
32259      DL(1)=BJV0-(1.0D0+V0)/X*BJV1
32260      R0=2.0D0*(1.0D0+V0)/X
32261      IF (N.LE.1) THEN
32262         VL(0)=FAC*VL(0)
32263         DL(0)=FAC*DL(0)-V0/X*VL(0)
32264         VL(1)=FAC*R0*VL(1)
32265         DL(1)=FAC*R0*DL(1)-(1.0D0+V0)/X*VL(1)
32266         GOTO9999
32267      ENDIF
32268      IF (N.GE.2.AND.N.LE.INT(0.9*X)) THEN
32269         F0=BJV0
32270         F1=BJV1
32271         DO 45 K=2,N
32272            F=2.0D0*(K+V0-1.0D0)/X*F1-F0
32273            F0=F1
32274            F1=F
32275            VL(K)=F
3227645       CONTINUE
32277      ELSE IF (N.GE.2) THEN
32278         M=MSTA1(X,200)
32279         IF (M.LT.N) THEN
32280            N=M
32281         ELSE
32282            M=MSTA2(X,N,15)
32283         ENDIF
32284         F2=0.0D0
32285         F1=1.0D-100
32286         DO 50 K=M,0,-1
32287            F=2.0D0*(V0+K+1.0D0)/X*F1-F2
32288            IF (K.LE.N) VL(K)=F
32289            F2=F1
32290            F1=F
3229150       CONTINUE
32292         IF (DABS(BJV0).GT.DABS(BJV1)) CS=BJV0/F
32293         IF (DABS(BJV0).LE.DABS(BJV1)) CS=BJV1/F2
32294         DO 55 K=0,N
32295            VL(K)=CS*VL(K)
3229655       CONTINUE
32297      ENDIF
32298      VL(0)=FAC*VL(0)
32299      DO 65 J=1,N
32300         RC=FAC*R0
32301         VL(J)=RC*VL(J)
32302         DL(J-1)=-0.5D0*X/(J+V0)*VL(J)
32303         R0=2.0D0*(J+V0+1)/X*R0
3230465    CONTINUE
32305      DL(N)=2.0D0*(V0+N)*(VL(N-1)-VL(N))/X
32306      VM=N+V0
32307C
32308 9999 CONTINUE
32309      VL1=VL(N)
32310      DL1=DL(N)
32311      RETURN
32312      END
32313      DOUBLE PRECISION FUNCTION LANCDF(X)
32314* From CERNLIB, remame DISLAN to LANCDF
32315*
32316* $Id: dislan.F,v 1.1.1.1 1996/04/01 15:02:43 mclareni Exp $
32317*
32318* $Log: dislan.F,v $
32319* Revision 1.1.1.1  1996/04/01 15:02:43  mclareni
32320* Mathlib gen
32321*
32322*
32323
32324      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
32325
32326      DIMENSION P1(0:4),P2(0:3),P3(0:3),P4(0:3),P5(0:3),P6(0:3)
32327      DIMENSION Q1(0:4),Q2(0:3),Q3(0:3),Q4(0:3),Q5(0:3),Q6(0:3)
32328      DIMENSION A1(1:3),A2(1:3)
32329
32330      DATA (P1(I),I=0,4),(Q1(I),I=0,4)
32331     1/ 0.25140 91491D+0,-0.62505 80444D-1, 0.14583 81230D-1,
32332     2 -0.21088 17737D-2, 0.74112 47290D-3,
32333     3  1.0             ,-0.55711 75625D-2, 0.62253 10236D-1,
32334     4 -0.31373 78427D-2, 0.19314 96439D-2/
32335
32336      DATA (P2(I),I=0,3),(Q2(I),I=0,3)
32337     1/ 0.28683 28584D+0, 0.35643 63231D+0, 0.15235 18695D+0,
32338     2  0.22513 04883D-1,
32339     3  1.0             , 0.61911 36137D+0, 0.17207 21448D+0,
32340     4  0.22785 94771D-1/
32341
32342      DATA (P3(I),I=0,3),(Q3(I),I=0,3)
32343     1/ 0.28683 29066D+0, 0.30038 28436D+0, 0.99509 51941D-1,
32344     2  0.87338 27185D-2,
32345     3  1.0             , 0.42371 90502D+0, 0.10956 31512D+0,
32346     4  0.86938 51567D-2/
32347
32348      DATA (P4(I),I=0,3),(Q4(I),I=0,3)
32349     1/ 0.10003 51630D+1, 0.45035 92498D+1, 0.10858 83880D+2,
32350     2  0.75360 52269D+1,
32351     3  1.0             , 0.55399 69678D+1, 0.19335 81111D+2,
32352     4  0.27213 21508D+2/
32353
32354      DATA (P5(I),I=0,3),(Q5(I),I=0,3)
32355     1/ 0.10000 06517D+1, 0.49094 14111D+2, 0.85055 44753D+2,
32356     2  0.15321 53455D+3,
32357     3  1.0             , 0.50099 28881D+2, 0.13998 19104D+3,
32358     4  0.42000 02909D+3/
32359
32360      DATA (P6(I),I=0,3),(Q6(I),I=0,3)
32361     1/ 0.10000 00983D+1, 0.13298 68456D+3, 0.91621 49244D+3,
32362     2 -0.96050 54274D+3,
32363     3  1.0             , 0.13398 87843D+3, 0.10559 90413D+4,
32364     4  0.55322 24619D+3/
32365
32366      DATA (A1(I),I=1,3)
32367     1/-0.45833 33333D+0, 0.66753 47222D+0,-0.16417 41416D+1/
32368
32369      DATA (A2(I),I=1,3)
32370     1/ 1.0             ,-0.42278 43351D+0,-0.20434 03138D+1/
32371
32372      V=X
32373      IF(V .LT. -5.5) THEN
32374       U=EXP(V+1.0)
32375       LANCDF=0.3989422803*EXP(-1/U)*SQRT(U)*
32376     1        (1.0+(A1(1)+(A1(2)+A1(3)*U)*U)*U)
32377      ELSEIF(V .LT. -1.0) THEN
32378       U=EXP(-V-1.0)
32379       LANCDF=(EXP(-U)/SQRT(U))*
32380     1        (P1(0)+(P1(1)+(P1(2)+(P1(3)+P1(4)*V)*V)*V)*V)/
32381     2        (Q1(0)+(Q1(1)+(Q1(2)+(Q1(3)+Q1(4)*V)*V)*V)*V)
32382      ELSEIF(V .LT. 1.0) THEN
32383       LANCDF=(P2(0)+(P2(1)+(P2(2)+P2(3)*V)*V)*V)/
32384     1        (Q2(0)+(Q2(1)+(Q2(2)+Q2(3)*V)*V)*V)
32385      ELSEIF(V .LT. 4.0) THEN
32386       LANCDF=(P3(0)+(P3(1)+(P3(2)+P3(3)*V)*V)*V)/
32387     1        (Q3(0)+(Q3(1)+(Q3(2)+Q3(3)*V)*V)*V)
32388      ELSEIF(V .LT. 12.0) THEN
32389       U=1.0/V
32390       LANCDF=(P4(0)+(P4(1)+(P4(2)+P4(3)*U)*U)*U)/
32391     1        (Q4(0)+(Q4(1)+(Q4(2)+Q4(3)*U)*U)*U)
32392      ELSEIF(V .LT. 50.0) THEN
32393       U=1.0/V
32394       LANCDF=(P5(0)+(P5(1)+(P5(2)+P5(3)*U)*U)*U)/
32395     1        (Q5(0)+(Q5(1)+(Q5(2)+Q5(3)*U)*U)*U)
32396      ELSEIF(V .LT. 300.0) THEN
32397       U=1.0/V
32398       LANCDF=(P6(0)+(P6(1)+(P6(2)+P6(3)*U)*U)*U)/
32399     1        (Q6(0)+(Q6(1)+(Q6(2)+Q6(3)*U)*U)*U)
32400      ELSE
32401       U=1.0/(V-V*LOG(V)/(V+1.0))
32402       LANCDF=1.0-(A2(1)+(A2(2)+A2(3)*U)*U)*U
32403      ENDIF
32404      RETURN
32405      END
32406      DOUBLE PRECISION FUNCTION LANDIF(X)
32407* From CERNLIB.  Rename DIFLAN to LANDIF
32408*
32409* $Id: diflan.F,v 1.1.1.1 1996/04/01 15:02:43 mclareni Exp $
32410*
32411* $Log: diflan.F,v $
32412* Revision 1.1.1.1  1996/04/01 15:02:43  mclareni
32413* Mathlib gen
32414*
32415*
32416
32417      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
32418
32419      DIMENSION P1(0:4),P2(0:4),P3(0:4),P4(0:4),P5(0:4),P6(0:4),P7(0:5)
32420      DIMENSION Q1(0:4),Q2(0:4),Q3(0:4),Q4(0:4),Q5(0:4),Q6(0:4),Q7(0:5)
32421      DIMENSION A1(1:6),A2(1:3)
32422
32423      DATA (P1(I),I=0,4),(Q1(I),I=0,4)
32424     1/-0.30620 16156E-1,-0.12514 24734E+0,-0.95514 20540E-1,
32425     2 -0.26943 56206E-1,-0.26175 52485E-2,
32426     3  1.0             , 0.11777 46655E+1, 0.61309 93990E+0,
32427     4  0.15727 03422E+0, 0.17262 95027E-1/
32428
32429      DATA (P2(I),I=0,4),(Q2(I),I=0,4)
32430     1/-0.15491 26548E-1,-0.75512 22105E-1,-0.25986 23886E-1,
32431     2  0.54712 70049E-2, 0.21522 70275E-2,
32432     3  1.0             , 0.99974 60723E+0, 0.49882 64176E+0,
32433     4  0.12891 04987E+0, 0.16396 32530E-1/
32434
32435      DATA (P3(I),I=0,4),(Q3(I),I=0,4)
32436     1/-0.15471 35743E-1,-0.73041 84799E-1,-0.15341 51353E-1,
32437     2  0.35687 80079E-2,-0.92961 96751E-4,
32438     3  1.0             , 0.83941 07748E+0, 0.41280 36830E+0,
32439     4  0.10502 22892E+0, 0.17008 94650E-1/
32440
32441      DATA (P4(I),I=0,4),(Q4(I),I=0,4)
32442     1/-0.15462 73317E-1,-0.68561 27408E-1, 0.46112 67324E-2,
32443     2 -0.25499 45537E-3, 0.58761 90635E-5,
32444     3  1.0             , 0.54532 66037E+0, 0.28025 11577E+0,
32445     4  0.47491 21515E-1, 0.10962 78827E-1/
32446
32447      DATA (P5(I),I=0,4),(Q5(I),I=0,4)
32448     1/ 0.86420 27131E-5,-0.74742 91951E-3, 0.29356 78494E-1,
32449     2 -0.27696 95199E+1,-0.77695 42153E+1,
32450     3  1.0             , 0.90003 29289E+0, 0.34619 66768E+2,
32451     4  0.46668 93094E+1, 0.19264 64264E+3/
32452
32453      DATA (P6(I),I=0,4),(Q6(I),I=0,4)
32454     1/-0.20124 96309E+1,-0.27484 32206E+3,-0.57590 40086E+4,
32455     2 -0.16000 68673E+5, 0.53346 52087E+5,
32456     3  1.0             , 0.12295 70501E+3, 0.18746 82285E+4,
32457     4  0.56780 25130E+4, 0.52823 54475E5/
32458
32459      DATA (P7(I),I=0,5),(Q7(I),I=0,5)
32460     1/-0.20015 84932E+1,-0.24074 20185E+4,-0.54566 69704E+6,
32461     2 -0.28170 17048E+8,-0.20643 92982E+9, 0.90496 05994E+9,
32462     3  1.0             , 0.11829 29609E+4, 0.25522 99337E+6,
32463     4  0.11392 05796E+8, 0.39347 02081E+8, 0.21080 69087E+9/
32464
32465      DATA (A1(I),I=1,6)
32466     1/-0.45833 33333E+0, 0.86805 55556E-3,-0.28525 27006E-2,
32467     2  0.53868 92562E-2,-0.14312 07031E-1, 0.50629 96176E-1/
32468
32469      DATA (A2(I),I=1,3)
32470     1/-0.75367 06011E+1,-0.96018 56962E+1, 0.17146 15239E+3/
32471
32472      V=X
32473      IF(V .LT. -2.6D0) THEN
32474       U=EXP(V+1.0D0)
32475       LANDIF=0.3989422803D0*(EXP(-1.0D0/U)/U**1.5)*
32476     1  (1.0D0+(A1(1)+(A1(2)+(A1(3)+
32477     1  (A1(4)+(A1(5)+A1(6)*U)*U)*U)*U)*U)*U)
32478      ELSEIF(V .LT. -1.75D0) THEN
32479       LANDIF=(P1(0)+(P1(1)+(P1(2)+(P1(3)+P1(4)*V)*V)*V)*V)/
32480     1        (Q1(0)+(Q1(1)+(Q1(2)+(Q1(3)+Q1(4)*V)*V)*V)*V)
32481      ELSEIF(V .LT. -1.25D0) THEN
32482       LANDIF=(P2(0)+(P2(1)+(P2(2)+(P2(3)+P2(4)*V)*V)*V)*V)/
32483     1        (Q2(0)+(Q2(1)+(Q2(2)+(Q2(3)+Q2(4)*V)*V)*V)*V)
32484      ELSEIF(V .LT. 0.5D0) THEN
32485       LANDIF=(P3(0)+(P3(1)+(P3(2)+(P3(3)+P3(4)*V)*V)*V)*V)/
32486     1        (Q3(0)+(Q3(1)+(Q3(2)+(Q3(3)+Q3(4)*V)*V)*V)*V)
32487      ELSEIF(V .LT. 5.0D0) THEN
32488       LANDIF=(P4(0)+(P4(1)+(P4(2)+(P4(3)+P4(4)*V)*V)*V)*V)/
32489     1        (Q4(0)+(Q4(1)+(Q4(2)+(Q4(3)+Q4(4)*V)*V)*V)*V)
32490      ELSEIF(V .LT. 15.D0) THEN
32491       U=1.0D0/V
32492       LANDIF=(P5(0)+(P5(1)+(P5(2)+(P5(3)+P5(4)*U)*U)*U)*U)/
32493     1        (Q5(0)+(Q5(1)+(Q5(2)+(Q5(3)+Q5(4)*U)*U)*U)*U)
32494      ELSEIF(V .LT. 50.0D0) THEN
32495       U=1.0D0/V
32496       LANDIF=U**3*(P6(0)+(P6(1)+(P6(2)+(P6(3)+P6(4)*U)*U)*U)*U)/
32497     1             (Q6(0)+(Q6(1)+(Q6(2)+(Q6(3)+Q6(4)*U)*U)*U)*U)
32498      ELSEIF(V .LT. 300.0D0) THEN
32499       U=1.0D0/V
32500       LANDIF=U**3*
32501     1       (P7(0)+(P7(1)+(P7(2)+(P7(3)+(P7(4)+P7(5)*U)*U)*U)*U)*U)/
32502     2       (Q7(0)+(Q7(1)+(Q7(2)+(Q7(3)+(Q7(4)+Q7(5)*U)*U)*U)*U)*U)
32503      ELSE
32504       U=V-V*LOG(V)/(V+1.0D0)
32505       U=1.0D0/(U-U*(U+LOG(U)-V)/(U+1.0D0))
32506       LANDIF=-U**3*(2.0D0+(A2(1)+(A2(2)+A2(3)*U)*U)*U)
32507      ENDIF
32508      RETURN
32509      END
32510      DOUBLE PRECISION FUNCTION LANPDF(X)
32511* From CERNLIB, Rename LANPDF to LANPDF
32512*
32513* $Id: denlan.F,v 1.1.1.1 1996/04/01 15:02:43 mclareni Exp $
32514*
32515* $Log: denlan.F,v $
32516* Revision 1.1.1.1  1996/04/01 15:02:43  mclareni
32517* Mathlib gen
32518*
32519*
32520
32521      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
32522
32523      DIMENSION P1(0:4),P2(0:4),P3(0:4),P4(0:4),P5(0:4),P6(0:4)
32524      DIMENSION Q1(0:4),Q2(0:4),Q3(0:4),Q4(0:4),Q5(0:4),Q6(0:4)
32525      DIMENSION A1(1:3),A2(1:2)
32526
32527      DATA (P1(I),I=0,4),(Q1(I),I=0,4)
32528     1/ 0.42598 94875D+0,-0.12497 62550D+0, 0.39842 43700D-1,
32529     2 -0.62982 87635D-2, 0.15111 62253D-2,
32530     3  1.0             ,-0.33882 60629D+0, 0.95943 93323D-1,
32531     4 -0.16080 42283D-1, 0.37789 42063D-2/
32532
32533      DATA (P2(I),I=0,4),(Q2(I),I=0,4)
32534     1/ 0.17885 41609D+0, 0.11739 57403D+0, 0.14888 50518D-1,
32535     2 -0.13949 89411D-2, 0.12836 17211D-3,
32536     3  1.0             , 0.74287 95082D+0, 0.31539 32961D+0,
32537     4  0.66942 19548D-1, 0.87906 09714D-2/
32538
32539      DATA (P3(I),I=0,4),(Q3(I),I=0,4)
32540     1/ 0.17885 44503D+0, 0.93591 61662D-1, 0.63253 87654D-2,
32541     2  0.66116 67319D-4,-0.20310 49101D-5,
32542     3  1.0             , 0.60978 09921D+0, 0.25606 16665D+0,
32543     4  0.47467 22384D-1, 0.69573 01675D-2/
32544
32545      DATA (P4(I),I=0,4),(Q4(I),I=0,4)
32546     1/ 0.98740 54407D+0, 0.11867 23273D+3, 0.84927 94360D+3,
32547     2 -0.74377 92444D+3, 0.42702 62186D+3,
32548     3  1.0             , 0.10686 15961D+3, 0.33764 96214D+3,
32549     4  0.20167 12389D+4, 0.15970 63511D+4/
32550
32551      DATA (P5(I),I=0,4),(Q5(I),I=0,4)
32552     1/ 0.10036 75074D+1, 0.16757 02434D+3, 0.47897 11289D+4,
32553     2  0.21217 86767D+5,-0.22324 94910D+5,
32554     3  1.0             , 0.15694 24537D+3, 0.37453 10488D+4,
32555     4  0.98346 98876D+4, 0.66924 28357D+5/
32556
32557      DATA (P6(I),I=0,4),(Q6(I),I=0,4)
32558     1/ 0.10008 27619D+1, 0.66491 43136D+3, 0.62972 92665D+5,
32559     2  0.47555 46998D+6,-0.57436 09109D+7,
32560     3  1.0             , 0.65141 01098D+3, 0.56974 73333D+5,
32561     4  0.16591 74725D+6,-0.28157 59939D+7/
32562
32563      DATA (A1(I),I=1,3)
32564     1/ 0.41666 66667D-1,-0.19965 27778D-1, 0.27095 38966D-1/
32565
32566      DATA (A2(I),I=1,2)
32567     1/-0.18455 68670D+1,-0.42846 40743D+1/
32568
32569      V=X
32570      IF(V .LT. -5.5) THEN
32571       U=EXP(V+1.0)
32572       LANPDF=0.3989422803*(EXP(-1.0/U)/SQRT(U))*
32573     1        (1.0+(A1(1)+(A1(2)+A1(3)*U)*U)*U)
32574      ELSEIF(V .LT. -1.0) THEN
32575       U=EXP(-V-1.0)
32576       LANPDF=EXP(-U)*SQRT(U)*
32577     1        (P1(0)+(P1(1)+(P1(2)+(P1(3)+P1(4)*V)*V)*V)*V)/
32578     2        (Q1(0)+(Q1(1)+(Q1(2)+(Q1(3)+Q1(4)*V)*V)*V)*V)
32579      ELSEIF(V .LT. 1.0) THEN
32580       LANPDF=(P2(0)+(P2(1)+(P2(2)+(P2(3)+P2(4)*V)*V)*V)*V)/
32581     1        (Q2(0)+(Q2(1)+(Q2(2)+(Q2(3)+Q2(4)*V)*V)*V)*V)
32582      ELSEIF(V .LT. 5.0) THEN
32583       LANPDF=(P3(0)+(P3(1)+(P3(2)+(P3(3)+P3(4)*V)*V)*V)*V)/
32584     1        (Q3(0)+(Q3(1)+(Q3(2)+(Q3(3)+Q3(4)*V)*V)*V)*V)
32585      ELSEIF(V .LT. 12.0) THEN
32586       U=1.0/V
32587       LANPDF=U**2*(P4(0)+(P4(1)+(P4(2)+(P4(3)+P4(4)*U)*U)*U)*U)/
32588     1             (Q4(0)+(Q4(1)+(Q4(2)+(Q4(3)+Q4(4)*U)*U)*U)*U)
32589      ELSEIF(V .LT. 50.0) THEN
32590       U=1.0/V
32591       LANPDF=U**2*(P5(0)+(P5(1)+(P5(2)+(P5(3)+P5(4)*U)*U)*U)*U)/
32592     1             (Q5(0)+(Q5(1)+(Q5(2)+(Q5(3)+Q5(4)*U)*U)*U)*U)
32593      ELSEIF(V .LT. 300.0) THEN
32594       U=1.0/V
32595       LANPDF=U**2*(P6(0)+(P6(1)+(P6(2)+(P6(3)+P6(4)*U)*U)*U)*U)/
32596     1             (Q6(0)+(Q6(1)+(Q6(2)+(Q6(3)+Q6(4)*U)*U)*U)*U)
32597      ELSE
32598       U=1.0/(V-V*LOG(V)/(V+1.0))
32599       LANPDF=U**2*(1.0+(A2(1)+A2(2)*U)*U)
32600      ENDIF
32601      RETURN
32602      END
32603      DOUBLE PRECISION FUNCTION LANPPF(X)
32604* From CERNLIB, rename LANPPF to LANPPF
32605*
32606* $Id: ranlan.F,v 1.1.1.1 1996/04/01 15:02:43 mclareni Exp $
32607*
32608* $Log: ranlan.F,v $
32609* Revision 1.1.1.1  1996/04/01 15:02:43  mclareni
32610* Mathlib gen
32611*
32612*
32613C
32614      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
32615C
32616      INCLUDE 'DPCOP2.INC'
32617C
32618      DIMENSION F(6:982)
32619
32620      DATA (F(I),I= 6,100)
32621     A/                                                  -2.244733,
32622     B -2.204365,-2.168163,-2.135219,-2.104898,-2.076740,-2.050397,
32623     C -2.025605,-2.002150,-1.979866,-1.958612,-1.938275,-1.918760,
32624     D -1.899984,-1.881879,-1.864385,-1.847451,-1.831030,-1.815083,
32625     E -1.799574,-1.784473,-1.769751,-1.755383,-1.741346,-1.727620,
32626     F -1.714187,-1.701029,-1.688130,-1.675477,-1.663057,-1.650858,
32627     G -1.638868,-1.627078,-1.615477,-1.604058,-1.592811,-1.581729,
32628     H -1.570806,-1.560034,-1.549407,-1.538919,-1.528565,-1.518339,
32629     I -1.508237,-1.498254,-1.488386,-1.478628,-1.468976,-1.459428,
32630     J -1.449979,-1.440626,-1.431365,-1.422195,-1.413111,-1.404112,
32631     K -1.395194,-1.386356,-1.377594,-1.368906,-1.360291,-1.351746,
32632     L -1.343269,-1.334859,-1.326512,-1.318229,-1.310006,-1.301843,
32633     M -1.293737,-1.285688,-1.277693,-1.269752,-1.261863,-1.254024,
32634     N -1.246235,-1.238494,-1.230800,-1.223153,-1.215550,-1.207990,
32635     O -1.200474,-1.192999,-1.185566,-1.178172,-1.170817,-1.163500,
32636     P -1.156220,-1.148977,-1.141770,-1.134598,-1.127459,-1.120354,
32637     Q -1.113282,-1.106242,-1.099233,-1.092255/
32638
32639      DATA (F(I),I=101,200)
32640     A/-1.085306,-1.078388,-1.071498,-1.064636,-1.057802,-1.050996,
32641     B -1.044215,-1.037461,-1.030733,-1.024029,-1.017350,-1.010695,
32642     C -1.004064, -.997456, -.990871, -.984308, -.977767, -.971247,
32643     D  -.964749, -.958271, -.951813, -.945375, -.938957, -.932558,
32644     E  -.926178, -.919816, -.913472, -.907146, -.900838, -.894547,
32645     F  -.888272, -.882014, -.875773, -.869547, -.863337, -.857142,
32646     G  -.850963, -.844798, -.838648, -.832512, -.826390, -.820282,
32647     H  -.814187, -.808106, -.802038, -.795982, -.789940, -.783909,
32648     I  -.777891, -.771884, -.765889, -.759906, -.753934, -.747973,
32649     J  -.742023, -.736084, -.730155, -.724237, -.718328, -.712429,
32650     K  -.706541, -.700661, -.694791, -.688931, -.683079, -.677236,
32651     L  -.671402, -.665576, -.659759, -.653950, -.648149, -.642356,
32652     M  -.636570, -.630793, -.625022, -.619259, -.613503, -.607754,
32653     N  -.602012, -.596276, -.590548, -.584825, -.579109, -.573399,
32654     O  -.567695, -.561997, -.556305, -.550618, -.544937, -.539262,
32655     P  -.533592, -.527926, -.522266, -.516611, -.510961, -.505315,
32656     Q  -.499674, -.494037, -.488405, -.482777/
32657
32658      DATA (F(I),I=201,300)
32659     A/ -.477153, -.471533, -.465917, -.460305, -.454697, -.449092,
32660     B  -.443491, -.437893, -.432299, -.426707, -.421119, -.415534,
32661     C  -.409951, -.404372, -.398795, -.393221, -.387649, -.382080,
32662     D  -.376513, -.370949, -.365387, -.359826, -.354268, -.348712,
32663     E  -.343157, -.337604, -.332053, -.326503, -.320955, -.315408,
32664     F  -.309863, -.304318, -.298775, -.293233, -.287692, -.282152,
32665     G  -.276613, -.271074, -.265536, -.259999, -.254462, -.248926,
32666     H  -.243389, -.237854, -.232318, -.226783, -.221247, -.215712,
32667     I  -.210176, -.204641, -.199105, -.193568, -.188032, -.182495,
32668     J  -.176957, -.171419, -.165880, -.160341, -.154800, -.149259,
32669     K  -.143717, -.138173, -.132629, -.127083, -.121537, -.115989,
32670     L  -.110439, -.104889, -.099336, -.093782, -.088227, -.082670,
32671     M  -.077111, -.071550, -.065987, -.060423, -.054856, -.049288,
32672     N  -.043717, -.038144, -.032569, -.026991, -.021411, -.015828,
32673     O  -.010243, -.004656,  .000934,  .006527,  .012123,  .017722,
32674     P   .023323,  .028928,  .034535,  .040146,  .045759,  .051376,
32675     Q   .056997,  .062620,  .068247,  .073877/
32676
32677      DATA (F(I),I=301,400)
32678     A/  .079511,  .085149,  .090790,  .096435,  .102083,  .107736,
32679     B   .113392,  .119052,  .124716,  .130385,  .136057,  .141734,
32680     C   .147414,  .153100,  .158789,  .164483,  .170181,  .175884,
32681     D   .181592,  .187304,  .193021,  .198743,  .204469,  .210201,
32682     E   .215937,  .221678,  .227425,  .233177,  .238933,  .244696,
32683     F   .250463,  .256236,  .262014,  .267798,  .273587,  .279382,
32684     G   .285183,  .290989,  .296801,  .302619,  .308443,  .314273,
32685     H   .320109,  .325951,  .331799,  .337654,  .343515,  .349382,
32686     I   .355255,  .361135,  .367022,  .372915,  .378815,  .384721,
32687     J   .390634,  .396554,  .402481,  .408415,  .414356,  .420304,
32688     K   .426260,  .432222,  .438192,  .444169,  .450153,  .456145,
32689     L   .462144,  .468151,  .474166,  .480188,  .486218,  .492256,
32690     M   .498302,  .504356,  .510418,  .516488,  .522566,  .528653,
32691     N   .534747,  .540850,  .546962,  .553082,  .559210,  .565347,
32692     O   .571493,  .577648,  .583811,  .589983,  .596164,  .602355,
32693     P   .608554,  .614762,  .620980,  .627207,  .633444,  .639689,
32694     Q   .645945,  .652210,  .658484,  .664768/
32695
32696      DATA (F(I),I=401,500)
32697     A/  .671062,  .677366,  .683680,  .690004,  .696338,  .702682,
32698     B   .709036,  .715400,  .721775,  .728160,  .734556,  .740963,
32699     C   .747379,  .753807,  .760246,  .766695,  .773155,  .779627,
32700     D   .786109,  .792603,  .799107,  .805624,  .812151,  .818690,
32701     E   .825241,  .831803,  .838377,  .844962,  .851560,  .858170,
32702     F   .864791,  .871425,  .878071,  .884729,  .891399,  .898082,
32703     G   .904778,  .911486,  .918206,  .924940,  .931686,  .938446,
32704     H   .945218,  .952003,  .958802,  .965614,  .972439,  .979278,
32705     I   .986130,  .992996,  .999875, 1.006769, 1.013676, 1.020597,
32706     J  1.027533, 1.034482, 1.041446, 1.048424, 1.055417, 1.062424,
32707     K  1.069446, 1.076482, 1.083534, 1.090600, 1.097681, 1.104778,
32708     L  1.111889, 1.119016, 1.126159, 1.133316, 1.140490, 1.147679,
32709     M  1.154884, 1.162105, 1.169342, 1.176595, 1.183864, 1.191149,
32710     N  1.198451, 1.205770, 1.213105, 1.220457, 1.227826, 1.235211,
32711     O  1.242614, 1.250034, 1.257471, 1.264926, 1.272398, 1.279888,
32712     P  1.287395, 1.294921, 1.302464, 1.310026, 1.317605, 1.325203,
32713     Q  1.332819, 1.340454, 1.348108, 1.355780/
32714
32715      DATA (F(I),I=501,600)
32716     A/ 1.363472, 1.371182, 1.378912, 1.386660, 1.394429, 1.402216,
32717     B  1.410024, 1.417851, 1.425698, 1.433565, 1.441453, 1.449360,
32718     C  1.457288, 1.465237, 1.473206, 1.481196, 1.489208, 1.497240,
32719     D  1.505293, 1.513368, 1.521465, 1.529583, 1.537723, 1.545885,
32720     E  1.554068, 1.562275, 1.570503, 1.578754, 1.587028, 1.595325,
32721     F  1.603644, 1.611987, 1.620353, 1.628743, 1.637156, 1.645593,
32722     G  1.654053, 1.662538, 1.671047, 1.679581, 1.688139, 1.696721,
32723     H  1.705329, 1.713961, 1.722619, 1.731303, 1.740011, 1.748746,
32724     I  1.757506, 1.766293, 1.775106, 1.783945, 1.792810, 1.801703,
32725     J  1.810623, 1.819569, 1.828543, 1.837545, 1.846574, 1.855631,
32726     K  1.864717, 1.873830, 1.882972, 1.892143, 1.901343, 1.910572,
32727     L  1.919830, 1.929117, 1.938434, 1.947781, 1.957158, 1.966566,
32728     M  1.976004, 1.985473, 1.994972, 2.004503, 2.014065, 2.023659,
32729     N  2.033285, 2.042943, 2.052633, 2.062355, 2.072110, 2.081899,
32730     O  2.091720, 2.101575, 2.111464, 2.121386, 2.131343, 2.141334,
32731     P  2.151360, 2.161421, 2.171517, 2.181648, 2.191815, 2.202018,
32732     Q  2.212257, 2.222533, 2.232845, 2.243195/
32733
32734      DATA (F(I),I=601,700)
32735     A/ 2.253582, 2.264006, 2.274468, 2.284968, 2.295507, 2.306084,
32736     B  2.316701, 2.327356, 2.338051, 2.348786, 2.359562, 2.370377,
32737     C  2.381234, 2.392131, 2.403070, 2.414051, 2.425073, 2.436138,
32738     D  2.447246, 2.458397, 2.469591, 2.480828, 2.492110, 2.503436,
32739     E  2.514807, 2.526222, 2.537684, 2.549190, 2.560743, 2.572343,
32740     F  2.583989, 2.595682, 2.607423, 2.619212, 2.631050, 2.642936,
32741     G  2.654871, 2.666855, 2.678890, 2.690975, 2.703110, 2.715297,
32742     H  2.727535, 2.739825, 2.752168, 2.764563, 2.777012, 2.789514,
32743     I  2.802070, 2.814681, 2.827347, 2.840069, 2.852846, 2.865680,
32744     J  2.878570, 2.891518, 2.904524, 2.917588, 2.930712, 2.943894,
32745     K  2.957136, 2.970439, 2.983802, 2.997227, 3.010714, 3.024263,
32746     L  3.037875, 3.051551, 3.065290, 3.079095, 3.092965, 3.106900,
32747     M  3.120902, 3.134971, 3.149107, 3.163312, 3.177585, 3.191928,
32748     N  3.206340, 3.220824, 3.235378, 3.250005, 3.264704, 3.279477,
32749     O  3.294323, 3.309244, 3.324240, 3.339312, 3.354461, 3.369687,
32750     P  3.384992, 3.400375, 3.415838, 3.431381, 3.447005, 3.462711,
32751     Q  3.478500, 3.494372, 3.510328, 3.526370/
32752
32753      DATA (F(I),I=701,800)
32754     A/ 3.542497, 3.558711, 3.575012, 3.591402, 3.607881, 3.624450,
32755     B  3.641111, 3.657863, 3.674708, 3.691646, 3.708680, 3.725809,
32756     C  3.743034, 3.760357, 3.777779, 3.795300, 3.812921, 3.830645,
32757     D  3.848470, 3.866400, 3.884434, 3.902574, 3.920821, 3.939176,
32758     E  3.957640, 3.976215, 3.994901, 4.013699, 4.032612, 4.051639,
32759     F  4.070783, 4.090045, 4.109425, 4.128925, 4.148547, 4.168292,
32760     G  4.188160, 4.208154, 4.228275, 4.248524, 4.268903, 4.289413,
32761     H  4.310056, 4.330832, 4.351745, 4.372794, 4.393982, 4.415310,
32762     I  4.436781, 4.458395, 4.480154, 4.502060, 4.524114, 4.546319,
32763     J  4.568676, 4.591187, 4.613854, 4.636678, 4.659662, 4.682807,
32764     K  4.706116, 4.729590, 4.753231, 4.777041, 4.801024, 4.825179,
32765     L  4.849511, 4.874020, 4.898710, 4.923582, 4.948639, 4.973883,
32766     M  4.999316, 5.024942, 5.050761, 5.076778, 5.102993, 5.129411,
32767     N  5.156034, 5.182864, 5.209903, 5.237156, 5.264625, 5.292312,
32768     O  5.320220, 5.348354, 5.376714, 5.405306, 5.434131, 5.463193,
32769     P  5.492496, 5.522042, 5.551836, 5.581880, 5.612178, 5.642734,
32770     Q  5.673552, 5.704634, 5.735986, 5.767610/
32771
32772      DATA (F(I),I=801,900)
32773     A/ 5.799512, 5.831694, 5.864161, 5.896918, 5.929968, 5.963316,
32774     B  5.996967, 6.030925, 6.065194, 6.099780, 6.134687, 6.169921,
32775     C  6.205486, 6.241387, 6.277630, 6.314220, 6.351163, 6.388465,
32776     D  6.426130, 6.464166, 6.502578, 6.541371, 6.580553, 6.620130,
32777     E  6.660109, 6.700495, 6.741297, 6.782520, 6.824173, 6.866262,
32778     F  6.908795, 6.951780, 6.995225, 7.039137, 7.083525, 7.128398,
32779     G  7.173764, 7.219632, 7.266011, 7.312910, 7.360339, 7.408308,
32780     H  7.456827, 7.505905, 7.555554, 7.605785, 7.656608, 7.708035,
32781     I  7.760077, 7.812747, 7.866057, 7.920019, 7.974647, 8.029953,
32782     J  8.085952, 8.142657, 8.200083, 8.258245, 8.317158, 8.376837,
32783     K  8.437300, 8.498562, 8.560641, 8.623554, 8.687319, 8.751955,
32784     L  8.817481, 8.883916, 8.951282, 9.019600, 9.088889, 9.159174,
32785     M  9.230477, 9.302822, 9.376233, 9.450735, 9.526355, 9.603118,
32786     N  9.681054, 9.760191, 9.840558, 9.922186,10.005107,10.089353,
32787     O 10.174959,10.261958,10.350389,10.440287,10.531693,10.624646,
32788     P 10.719188,10.815362,10.913214,11.012789,11.114137,11.217307,
32789     Q 11.322352,11.429325,11.538283,11.649285/
32790
32791      DATA (F(I),I=901,982)
32792     A/11.762390,11.877664,11.995170,12.114979,12.237161,12.361791,
32793     B 12.488946,12.618708,12.751161,12.886394,13.024498,13.165570,
32794     C 13.309711,13.457026,13.607625,13.761625,13.919145,14.080314,
32795     D 14.245263,14.414134,14.587072,14.764233,14.945778,15.131877,
32796     E 15.322712,15.518470,15.719353,15.925570,16.137345,16.354912,
32797     F 16.578520,16.808433,17.044929,17.288305,17.538873,17.796967,
32798     G 18.062943,18.337176,18.620068,18.912049,19.213574,19.525133,
32799     H 19.847249,20.180480,20.525429,20.882738,21.253102,21.637266,
32800     I 22.036036,22.450278,22.880933,23.329017,23.795634,24.281981,
32801     J 24.789364,25.319207,25.873062,26.452634,27.059789,27.696581,
32802     K 28.365274,29.068370,29.808638,30.589157,31.413354,32.285060,
32803     L 33.208568,34.188705,35.230920,36.341388,37.527131,38.796172,
32804     M 40.157721,41.622399,43.202525,44.912465,46.769077,48.792279,
32805     N 51.005773,53.437996,56.123356,59.103894/
32806C
32807      LANPPF=0.0
32808C
32809      IF(X.LT.0.000001D0 .OR. X.GT.0.999999D0)THEN
32810        WRITE(ICOUT, 5)
32811 5      FORMAT('**** ERROR IN LANPPF: ARGUMENT NOT IN THE ',
32812     1         '(0.000001,0.999999) INTERVAL')
32813        CALL DPWRST('XXX','BUG ')
32814        GOTO9000
32815      ENDIF
32816      U=1000.0D0*X
32817      I=INT(U)
32818      U=U-I
32819      IF(I .GE. 70 .AND. I .LE. 800) THEN
32820        LANPPF=F(I)+U*(F(I+1)-F(I))
32821      ELSEIF(I .GE.  7 .AND. I .LE. 980) THEN
32822        LANPPF=
32823     1  F(I)+U*(F(I+1)-F(I)-0.25D0*
32824     1  (1.0D0-U)*(F(I+2)-F(I+1)-F(I)+F(I-1)))
32825      ELSEIF(I. LT. 7) THEN
32826        V=LOG(X)
32827        U=1.0D0/V
32828        LANPPF=((0.99858950D0+(3.45213058D1+1.70854528D1*U)*U)/
32829     1         (1.0D0     +(3.41760202D1+4.01244582D0  *U)*U))*
32830     2         (-LOG(-0.91893853D0-V)-1.0D0)
32831      ELSE
32832C
32833C  NOTE: I HAD A BIT OF A PROBLEM WITH LAST CASE.  RECODE
32834C  SLIGHTLY.
32835C
32836        X=X*10**6 + 0.1
32837        I=INT(X)
32838        I=1000000-I
32839        U=I
32840        U=U/(1.0D0*10**6)
32841CCCCC   U=1.0D0-X
32842        V=U**2
32843        IF(X .LE. 0.999D0) THEN
32844          LANPPF=(1.00060006D0+2.63991156D2*U+4.37320068D3*V)/
32845     1    ((1.0D0     +2.57368075D2*U+3.41448018D3*V)*U)
32846        ELSE
32847CCCCC      print *,'u,v=',u,v
32848           D1 = 1.00001538D0
32849           D2 = 6.075141193D0*10**3
32850           D3 = 7.34266409D0*10**5
32851           D4 = 6.06511919D0*10**3
32852           D5 = 6.94021044D0*10**5
32853           DNUM = D1 + D2*U + D3*V
32854           DDEN = (1.0D0 + D4*U + D5*V)*U
32855           LANPPF = DNUM/DDEN
32856CCCCC     LANPPF=(1.00001538D0+6.07514119D3*U+7.34266409D5*V)/
32857CCCCC1           ((1.0D0     +6.06511919D3*U+6.94021044D5*V)*U)
32858        ENDIF
32859      ENDIF
32860C
32861 9000 CONTINUE
32862      RETURN
32863      END
32864      SUBROUTINE LANRAN(N,ISEED,X)
32865C
32866C     PURPOSE--THIS SUBROUTINE GENERATES A RANDOM SAMPLE OF SIZE N
32867C              FROM THE LANDAU DISTRIBUTION
32868C     INPUT  ARGUMENTS--N      = THE DESIRED INTEGER NUMBER
32869C                                OF RANDOM NUMBERS TO BE
32870C                                GENERATED.
32871C     OUTPUT ARGUMENTS--X      = A SINGLE PRECISION VECTOR
32872C                                (OF DIMENSION AT LEAST N)
32873C                                INTO WHICH THE GENERATED
32874C                                RANDOM SAMPLE WILL BE PLACED.
32875C     OUTPUT--A RANDOM SAMPLE OF SIZE N
32876C             FROM THE LANDAU DISTRIBUTION
32877C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
32878C     RESTRICTIONS--THERE IS NO RESTRICTION ON THE MAXIMUM VALUE
32879C                   OF N FOR THIS SUBROUTINE.
32880C     OTHER DATAPAC   SUBROUTINES NEEDED--UNIRAN.
32881C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
32882C     LANGUAGE--ANSI FORTRAN (1977)
32883C     WRITTEN BY--JAMES J. FILLIBEN
32884C                 STATISTICAL ENGINEERING DIVISION
32885C                 INFORMATION TECHNOLOGY LABORATORY
32886C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
32887C                 GAITHERSBURG, MD 20899-8980
32888C                 PHONE--301-975-2855
32889C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
32890C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
32891C     LANGUAGE--ANSI FORTRAN (1966)
32892C               EXCEPTION--HOLLERITH STRINGS IN FORMAT STATEMENTS
32893C                          DENOTED BY QUOTES RATHER THAN NH.
32894C     VERSION NUMBER--2003.4
32895C     ORIGINAL VERSION--APRIL     2003.
32896C
32897C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
32898C
32899C---------------------------------------------------------------------
32900C
32901      DIMENSION X(*)
32902      EXTERNAL LANPPF
32903      DOUBLE PRECISION LANPPF
32904C
32905C-----COMMON----------------------------------------------------------
32906C
32907      INCLUDE 'DPCOP2.INC'
32908C
32909C-----START POINT-----------------------------------------------------
32910C
32911C     CHECK THE INPUT ARGUMENTS FOR ERRORS
32912C
32913      IF(N.LT.1)THEN
32914        WRITE(ICOUT, 5)
32915    5   FORMAT('***** ERROR--THE FIRST ARGUMENT TO LANRAN IS ',
32916     1         'NON-POSITIVE.')
32917        CALL DPWRST('XXX','BUG ')
32918        WRITE(ICOUT,47)N
32919   47   FORMAT('***** THE VALUE OF THE ARGUMENT IS ',I8)
32920        CALL DPWRST('XXX','BUG ')
32921        GOTO9000
32922      ENDIF
32923C
32924C     GENERATE N UNIFORM (0,1) RANDOM NUMBERS;
32925C
32926      CALL UNIRAN(N,ISEED,X)
32927C
32928C     GENERATE N LANDAU DISTRIBUTION RANDOM NUMBERS
32929C     USING THE PERCENT POINT FUNCTION TRANSFORMATION METHOD.
32930C
32931      DO100I=1,N
32932  105   CONTINUE
32933        IF(X(I).LT.0.000001 .OR. X(I).GT.0.999999)THEN
32934          CALL UNIRAN(1,ISEED,X(I))
32935          IF(X(I).LT.0.000001 .OR. X(I).GT.0.999999)GOTO105
32936        ENDIF
32937        XTEMP=REAL(LANPPF(DBLE(X(I))))
32938        X(I)=XTEMP
32939  100 CONTINUE
32940C
32941 9000 CONTINUE
32942      RETURN
32943      END
32944      DOUBLE PRECISION FUNCTION LANXM1(X)
32945* From CERNLIB, rename XM1LAN to LANXM1
32946*
32947* $Id: xm1lan.F,v 1.1.1.1 1996/04/01 15:02:44 mclareni Exp $
32948*
32949* $Log: xm1lan.F,v $
32950* Revision 1.1.1.1  1996/04/01 15:02:44  mclareni
32951* Mathlib gen
32952*
32953*
32954
32955      IMPLICIT DOUBLE PRECISION (A-H, O-Z)
32956C
32957      DIMENSION P1(0:4),P2(0:4),P3(0:4),P4(0:3),P5(0:3)
32958      DIMENSION Q1(0:4),Q2(0:4),Q3(0:4),Q4(0:3),Q5(0:3)
32959      DIMENSION A0(0:5),A1(1:3),A2(1:4)
32960
32961      DATA (P1(I),I=0,4),(Q1(I),I=0,4)
32962     1/-0.89493 74280E+0, 0.46317 83434E+0,-0.40533 32915E-1,
32963     2  0.15800 75560E-1,-0.34238 74194E-2,
32964     3  1.0             , 0.10029 30749E+0, 0.35752 71633E-1,
32965     4 -0.19158 82099E-2, 0.48110 72364E-4/
32966
32967      DATA (P2(I),I=0,4),(Q2(I),I=0,4)
32968     1/-0.89333 84046E+0, 0.11612 96496E+0, 0.12000 82940E+0,
32969     2  0.21856 99725E-1, 0.21288 92058E-2,
32970     3  1.0             , 0.49355 31886E+0, 0.10663 47067E+0,
32971     4  0.12501 61833E-1, 0.54942 43254E-3/
32972
32973      DATA (P3(I),I=0,4),(Q3(I),I=0,4)
32974     1/-0.89333 22067E+0, 0.23395 44896E+0, 0.82576 53222E-1,
32975     2  0.14112 26998E-1, 0.28922 40953E-3,
32976     3  1.0             , 0.36165 38408E+0, 0.66280 26743E-1,
32977     4  0.48392 98984E-2, 0.52483 10361E-4/
32978
32979      DATA (P4(I),I=0,3),(Q4(I),I=0,3)
32980     1/ 0.93584 19425E+0, 0.67168 31438E+2,-0.67650 69077E+3,
32981     2  0.90266 61865E+3,
32982     3  1.0             , 0.77525 62854E+2,-0.56378 11998E+3,
32983     4 -0.55131 56752E+3/
32984
32985      DATA (P5(I),I=0,3),(Q5(I),I=0,3)
32986     1/ 0.94893 35583E+0, 0.55612 46706E+3, 0.32082 74617E+5,
32987     2 -0.48899 26524E+5,
32988     3  1.0             , 0.60282 75940E+3, 0.37169 62017E+5,
32989     4  0.36862 72898E+5/
32990
32991      DATA (A0(I),I=0,5)
32992     1/-0.42278 43351E+0,-0.15443 13298E+0, 0.42278 43351E+0,
32993     2  0.32764 96874E+1, 0.20434 03138E+1,-0.86812 96500E+1/
32994
32995      DATA (A1(I),I=1,3)
32996     1/-0.45833 33333E+0, 0.66753 47222E+0,-0.16417 41416E+1/
32997
32998      DATA (A2(I),I=1,4)
32999     1/-0.19583 33333E+1, 0.55633 68056E+1,-0.21113 52961E+2,
33000     2  0.10069 46266E+3/
33001
33002      V=X
33003      IF(V .LT. -4.5D0) THEN
33004       U=EXP(V+1.0)
33005       LANXM1=V-U*(1.0D0+(A2(1)+(A2(2)+(A2(3)+A2(4)*U)*U)*U)*U)/
33006     1            (1.0D0+(A1(1)+(A1(2)+A1(3)*U)*U)*U)
33007      ELSEIF(V .LT. -2.0D0) THEN
33008       LANXM1=(P1(0)+(P1(1)+(P1(2)+(P1(3)+P1(4)*V)*V)*V)*V)/
33009     1        (Q1(0)+(Q1(1)+(Q1(2)+(Q1(3)+Q1(4)*V)*V)*V)*V)
33010      ELSEIF(V .LT. 2.0D0) THEN
33011       LANXM1=(P2(0)+(P2(1)+(P2(2)+(P2(3)+P2(4)*V)*V)*V)*V)/
33012     1        (Q2(0)+(Q2(1)+(Q2(2)+(Q2(3)+Q2(4)*V)*V)*V)*V)
33013      ELSEIF(V .LT. 10.0D0) THEN
33014       LANXM1=(P3(0)+(P3(1)+(P3(2)+(P3(3)+P3(4)*V)*V)*V)*V)/
33015     1        (Q3(0)+(Q3(1)+(Q3(2)+(Q3(3)+Q3(4)*V)*V)*V)*V)
33016      ELSEIF(V .LT. 40.0D0) THEN
33017       U=1.0D0/V
33018       LANXM1=LOG(V)*(P4(0)+(P4(1)+(P4(2)+P4(3)*U)*U)*U)/
33019     1                (Q4(0)+(Q4(1)+(Q4(2)+Q4(3)*U)*U)*U)
33020      ELSEIF(V .LT. 200.0D0) THEN
33021       U=1.0D0/V
33022       LANXM1=LOG(V)*(P5(0)+(P5(1)+(P5(2)+P5(3)*U)*U)*U)/
33023     1                (Q5(0)+(Q5(1)+(Q5(2)+Q5(3)*U)*U)*U)
33024      ELSE
33025       U=V-V*LOG(V)/(V+1.0D0)
33026       V=1.0D0/(U-U*(U+LOG(U)-V)/(U+1.0D0))
33027       U=-LOG(V)
33028       LANXM1=
33029     1    (U+A0(0)+(-U+A0(1)+(A0(2)*U+A0(3)+(A0(4)*U+A0(5))*V)*V)*V)
33030     1    /(1.0D0-(1.0D0-(A0(2)+A0(4)*V)*V)*V)
33031      ENDIF
33032      RETURN
33033      END
33034      DOUBLE PRECISION FUNCTION LANXM2(X)
33035* From Cernlib, renam XM2LAN to LANXM2
33036* $Id: xm2lan.F,v 1.1.1.1 1996/04/01 15:02:45 mclareni Exp $
33037*
33038* $Log: xm2lan.F,v $
33039* Revision 1.1.1.1  1996/04/01 15:02:45  mclareni
33040* Mathlib gen
33041*
33042*
33043
33044      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
33045
33046      DIMENSION P1(0:4),P2(0:4),P3(0:3),P4(0:4),P5(0:3)
33047      DIMENSION Q1(0:4),Q2(0:4),Q3(0:3),Q4(0:4),Q5(0:3)
33048      DIMENSION A0(0:6),A1(1:3),A2(0:3),A3(0:3)
33049
33050      DATA (P1(I),I=0,4),(Q1(I),I=0,4)
33051     1/ 0.11698 37582E+1,-0.48348 74539E+0, 0.43837 74644E+0,
33052     2  0.32871 75228E-2, 0.18791 29206E-1,
33053     3  1.0             , 0.17951 54326E+0, 0.46127 95899E-1,
33054     4  0.21834 59337E-2, 0.72266 23623E-4/
33055
33056      DATA (P2(I),I=0,4),(Q2(I),I=0,4)
33057     1/ 0.11579 39823E+1,-0.38428 09495E+0, 0.33175 32899E+0,
33058     2  0.35476 06781E-1, 0.67256 45279E-2,
33059     3  1.0             , 0.29168 24021E+0, 0.52598 53480E-1,
33060     4  0.38400 11061E-2, 0.99503 24173E-4/
33061
33062      DATA (P3(I),I=0,3),(Q3(I),I=0,3)
33063     1/ 0.11781 91282E+1, 0.10116 23342E+2,-0.12855 85291E+2,
33064     2  0.36413 61437E+2,
33065     3  1.0             , 0.86141 60194E+1, 0.31189 29630E+2,
33066     4  0.15143 51300E+0/
33067
33068      DATA (P4(I),I=0,4),(Q4(I),I=0,4)
33069     1/ 0.10307 63698E+1, 0.12167 58660E+3, 0.16374 31386E+4,
33070     2 -0.21714 66507E+4, 0.70101 68358E+4,
33071     3  1.0             , 0.10224 87911E+3, 0.13776 46350E+4,
33072     4  0.36991 84961E+4, 0.42513 15610E+4/
33073
33074      DATA (P5(I),I=0,3),(Q5(I),I=0,3)
33075     1/ 0.10100 84827E+1, 0.39442 24824E+3, 0.17730 25353E+5,
33076     2 -0.70759 63938E+5,
33077     3  1.0             , 0.36059 50254E+3, 0.13927 84158E+5,
33078     4 -0.18816 80027E+5/
33079
33080      DATA (A0(I),I=0,6)
33081     1/-0.20434 03138E+1,-0.84556 86702E+0,-0.30886 26596E+0,
33082     2  0.58213 46754E+1, 0.42278 43351E+0, 0.65529 93748E+1,
33083     3 -0.10767 14945E+2/
33084
33085      DATA (A1(I),I=1,3)
33086     1/-0.45833 33333E+0, 0.66753 47222E+0,-0.16417 41416E+1/
33087
33088      DATA (A2(I),I=0,3)
33089     1/-0.19583 33333E+1, 0.55633 68056E+1,-0.21113 52961E+2,
33090     2  0.10069 46266E+3/
33091
33092      DATA (A3(I),I=0,3)
33093     1/-1.0             , 0.44583 33333E+1,-0.21167 53472E+2,
33094     2  0.11636 74359E+3/
33095
33096      V=X
33097      IF(V .LT. -4.5D0) THEN
33098       U=EXP(V+1.0D0)
33099       LANXM2=V**2-2.0D0*U**2*
33100     1        (V/U+A2(0)*V+A3(0)+(A2(1)*V+A3(1)+(A2(2)*V+A3(2)+
33101     2        (A2(3)*V+A3(3))*U)*U)*U)/
33102     3        (1.0D0+(A1(1)+(A1(2)+A1(3)*U)*U)*U)
33103      ELSEIF(V .LT. -2.0D0) THEN
33104       LANXM2=(P1(0)+(P1(1)+(P1(2)+(P1(3)+P1(4)*V)*V)*V)*V)/
33105     1        (Q1(0)+(Q1(1)+(Q1(2)+(Q1(3)+Q1(4)*V)*V)*V)*V)
33106      ELSEIF(V .LT. 2.0D0) THEN
33107       LANXM2=(P2(0)+(P2(1)+(P2(2)+(P2(3)+P2(4)*V)*V)*V)*V)/
33108     1        (Q2(0)+(Q2(1)+(Q2(2)+(Q2(3)+Q2(4)*V)*V)*V)*V)
33109      ELSEIF(V .LT. 5.0D0) THEN
33110       U=1.0D0/V
33111       LANXM2=V*(P3(0)+(P3(1)+(P3(2)+P3(3)*U)*U)*U)/
33112     1          (Q3(0)+(Q3(1)+(Q3(2)+Q3(3)*U)*U)*U)
33113      ELSEIF(V .LT. 50.0D0) THEN
33114       U=1.0D0/V
33115       LANXM2=V*(P4(0)+(P4(1)+(P4(2)+(P4(3)+P4(4)*U)*U)*U)*U)/
33116     1          (Q4(0)+(Q4(1)+(Q4(2)+(Q4(3)+Q4(4)*U)*U)*U)*U)
33117      ELSEIF(V .LT. 200.0D0) THEN
33118       U=1.0D0/V
33119       LANXM2=V*(P5(0)+(P5(1)+(P5(2)+P5(3)*U)*U)*U)/
33120     1          (Q5(0)+(Q5(1)+(Q5(2)+Q5(3)*U)*U)*U)
33121      ELSE
33122       U=V-V*LOG(V)/(V+1.0D0)
33123       V=1.0D0/(U-U*(U+LOG(U)-V)/(U+1.0D0))
33124       U=-LOG(V)
33125       LANXM2=(1.0D0/V+U**2+A0(0)+A0(1)*U+(-U**2+A0(2)*U+A0(3)+
33126     1   (A0(4)*U**2+A0(5)*U+A0(6))*V)*V)/(1.0D0-(1.0D0-A0(4)*V)*V)
33127      ENDIF
33128      RETURN
33129      END
33130      Function lcmrnd(ix)
33131C
33132C  THIS FUNCTION USED BY THE "R250" RANDOM NUMBER GENERATOR
33133C
33134C     The minimal standard PRNG for 31 bit unsigned integers
33135C     designed with automatic overflow protection
33136C     uses ix as the seed value if it is greater than zero
33137C     otherwise it is ignored
33138      Integer*4 ix
33139      Integer*4 a, b, m, q, r
33140      Integer*4 hi, lo, test
33141      Integer*4 x
33142      SAVE x
33143      Parameter (a = 16807, b = 0, m = 2147483647)
33144      Parameter (q = 127773, r = 2836)
33145C
33146      If ( ix .gt. 0 ) x = ix
33147C
33148      hi = x / q
33149      lo = mod( x, q )
33150      test = a * lo - r * hi
33151      if ( test .gt. 0 ) then
33152          x = test
33153      else
33154          x = test + m
33155      endif
33156C
33157      lcmrnd = x
33158C
33159      return
33160      End
33161      SUBROUTINE LATCON(IA,IWIDTH,IB,IWIDT2,MAXWID,ISUBRO,IERROR)
33162C
33163C     PURPOSE--CONVERT DATAPLOT SPECIAL CHARACTERS (E.G., GREEK
33164C              CHARACTERS, SUBSCRIPTS, SUPERSCRIPTS, MATH SYMBOLS)
33165C              FROM DATAPLOT CODING TO COMPARABLE LATEX CODING.
33166C
33167C     INPUT  ARGUMENTS--IA     = INITIAL CHARACTER STRING
33168C                       IWIDTH = NUMBER OF CHARACTERS IN IA
33169C                       ISUBRO = BUG TRACE VARIABLE
33170C     OUTPUT ARGUMENTS--IB     = OUTPUT CHARACTER STRING
33171C                       IWIDT2 = NUMBER OF CHARACTERS IN IB
33172C                       IERROR = HOLLERITH VARIABLE
33173C
33174C     WRITTEN BY--JAMES J. FILLIBEN
33175C                 STATISTICAL ENGINEERING DIVISION
33176C                 INFORMATION TECHNOLOGY LABORATORY
33177C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
33178C                 GAITHERSBURG, MD 20899-8980
33179C                 PHONE--301-975-2855
33180C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
33181C           OF THE NATIONAL BUREAU OF STANDARDS.
33182C     LANGUAGE--ANSI FORTRAN (1977)
33183C     VERSION NUMBER--2006/2
33184C     ORIGINAL VERSION--FEBRUARY  2006.
33185C
33186C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
33187C
33188      CHARACTER*(*) IA
33189      CHARACTER*(*) IB
33190C
33191      CHARACTER*4 ICASFL
33192      CHARACTER*4 IBASLC
33193C
33194      CHARACTER*4 ISUBRO
33195      CHARACTER*4 IERROR
33196C
33197C-----COMMON----------------------------------------------------------
33198C
33199      INCLUDE 'DPCOP2.INC'
33200C
33201C-----START POINT-----------------------------------------------------
33202C
33203      IF(ISUBRO.EQ.'ON')THEN
33204        WRITE(ICOUT,999)
33205  999   FORMAT(1X)
33206        CALL DPWRST('XXX','BUG ')
33207        WRITE(ICOUT,51)
33208   51   FORMAT('***** AT THE BEGINNING OF LATCON--')
33209        CALL DPWRST('XXX','BUG ')
33210        WRITE(ICOUT,52)IWIDTH,MAXWID,ISUBRO,IERROR
33211   52   FORMAT('IWIDTH,MAXWID,ISUBRO,IERROR = ',I8,2X,I8,2X,A4,2X,A4)
33212        CALL DPWRST('XXX','BUG ')
33213        WRITE(ICOUT,53)(IA(I:I),I=1,MIN(100,IWIDTH))
33214   53   FORMAT('(IA(I),I=1,IWIDTH) = ',100A1)
33215        CALL DPWRST('XXX','BUG ')
33216      ENDIF
33217C
33218      IBASLC=CHAR(92)
33219C
33220C               *****************************************************
33221C               **  THE FOLLOWING CODE WILL SEARCH FOR DATAPLOT'S  **
33222C               **  SPECIAL CHARACTER CODES AND CONVERT THEM TO    **
33223C               **  EQUIVALENT LATEX CODES.                        **
33224C               *****************************************************
33225C
33226C
33227C     UC()   = UPPER CASE
33228C     LC()   = LOWER CASE
33229C     MU()   = GREEK MU
33230C     NU()   = GREEK NU
33231C     XI()   = GREEK XI
33232C     PI()   = GREEK PI
33233C     LT()   = LESS THAN
33234C     GT()   = GREATER THAN
33235C     +-()   = + OR -
33236C     -+()   = - OR +
33237C     SP()   = SPACE
33238C     SUB()  = ENTER SUBSCRIPT MODE
33239C     SUP()  = ENTER SUPERSCRIPT MODE
33240C     ETA()  = GREEK ETA
33241C     RHO()  = GREEK RHO
33242C     TAU()  = GREEK TAU
33243C     PHI()  = GREEK PHI
33244C     CHI()  = GREEK CHI
33245C     PSI()  = GREEK PSI
33246C     DEL()  = VECTOR PRODUCT
33247C     UNSB() = LEAVE SUBSCRIPT MODE
33248C     UNSP() = LEAVE SUPERSCRIPT MODE
33249C     ALPH() = GREEK ALPHA
33250C     BETA() = GREEK BETA
33251C     GAMM() = GREEK GAMMA
33252C     DELT() = GREEK DELTA
33253C     EPSI() = GREEK EPSILON
33254C     ZETA() = GREEK ZETA
33255C     THET() = GREEK THETA
33256C     IOTA() = GREEK IOTA
33257C     KAPP() = GREEK KAPPA
33258C     LAMB() = GREEK LAMBDA
33259C     OMIC() = GREEK OMICON
33260C     SIGM() = GREEK SIGMA
33261C     UPSI() = GREEK UPSILON
33262C     OMEG() = GREEK OMEGA
33263C     PART() = PARTIAL DERIVATIVE
33264C     INTE() = INTEGRAL
33265C     CINT() = CIRCULAR INTEGRAL
33266C     SUMM() = SUMMATION
33267C     PROD() = PRODUCT
33268C     INFI() = INFINITY
33269C     TIME() = TIMES
33270C     DOTP() = DOT PRODUCT
33271C     DIVI() = DIVISION
33272C     LTEQ() = LESS THAN OR EQUAL TO
33273C     GTEQ() = GREATER THAN OR EQUAL TO
33274C     NOT=() = NOT EQUAL
33275C     APPR() = APPROXIMATELY EQUAL TO
33276C     EQUI() = EQUIVALENCE
33277C     VARI() = VARIES
33278C     TILD() = TILDE
33279C     CARA() = CARAT
33280C     PRIM() = PRIME
33281C     RADI() = RADICAL
33282C     LRAD() = LARGE RADICAL
33283C     SUBS() = SUBSET
33284C     SUPE() = SUPERSET
33285C     UNIO() = UNION
33286C     INTR() = INTERSECTION
33287C     ELEM() = IS AN ELEMENT OF
33288C     THEX() = THERE EXISTS
33289C     THFO() = THEREFORE
33290C     LAPO() = LEFT APOSTROPHE
33291C     RAPO() = RIGHT APOSTROPHE
33292C     LBRA() = LEFT BRACKET
33293C     RBRA() = RIGHT BRACKET
33294C     LCBR() = LEFT CURLY BRACKET
33295C     RCBR() = RIGHT CURLY BRACKET
33296C     LELB() = LEFT ELBOW
33297C     RELB() = RIGHT ELBOW
33298C     LACC() = LEFT ACCENT
33299C     BREV() = BREVE
33300C     RQUO() = RIGHT QUOTE
33301C     LQUO() = LEFT QUOTE
33302C     NASP() = NORMAL ASPIRATE    (NOT CURRENTLY SUPPORTED)
33303C     IASP() = INVERTED ASPIRATE  (NOT CURRENTLY SUPPORTED)
33304C     RARR() = RIGHT ARROW
33305C     LARR() = LEFT ARROW
33306C     UARR() = UP ARROW
33307C     DARR() = DOWN ARROW
33308C     PARA() = PARAGRAPH
33309C     DAGG() = DAGGER
33310C     DDAG() = DOUBLE DAGGER
33311C     VBAR() = VERTICAL BAR
33312C     DVBA() = DOUBLE VERTICAL BAR
33313C     LVBA() = LONG VERTICAL BAR
33314C     HBAR() = HORIZONTAL BAR
33315C     LHBA() = LONG HORIZONTAL BAR
33316C     DEGR() = DEGREE
33317C
33318      IWIDT2=0
33319      IB(1:MAXWID)=' '
33320      ICASFL='UPPE'
33321      ISUBFL=0
33322      ISUPFL=0
33323      NSKIP=0
33324C
33325      IF(IWIDTH.GE.4)THEN
33326        NTEMP=IWIDTH-3
33327        DO100I=1,NTEMP
33328C
33329          IF(ISUBRO.EQ.'TCON')THEN
33330            WRITE(ICOUT,151)I,IWIDT2,NSKIP,IA(I:I)
33331  151       FORMAT('I,IWIDT2,NSKIP,IA(I:I) = ',3I8,A1)
33332            CALL DPWRST('XXX','BUG ')
33333          ENDIF
33334C
33335          IF(NSKIP.GT.0)THEN
33336            NSKIP=NSKIP-1
33337            GOTO100
33338          ENDIF
33339C
33340C         SET UPPER CASE FLAG
33341C
33342          IF((IA(I:I).EQ.'U'.OR.IA(I:I).EQ.'u') .AND.
33343     1       (IA(I+1:I+1).EQ.'C'.OR.IA(I+1:I+1).EQ.'c') .AND.
33344     1       IA(I+2:I+2).EQ.'(' .AND. IA(I+3:I+3).EQ.')')THEN
33345            ICASFL='UPPE'
33346            NSKIP=3
33347C
33348C         SET LOWER CASE FLAG
33349C
33350          ELSEIF((IA(I:I).EQ.'L'.OR.IA(I:I).EQ.'l') .AND.
33351     1       (IA(I+1:I+1).EQ.'C'.OR.IA(I+1:I+1).EQ.'c') .AND.
33352     1       IA(I+2:I+2).EQ.'(' .AND. IA(I+3:I+3).EQ.')')THEN
33353            ICASFL='UPPE'
33354            NSKIP=3
33355C
33356C         SET SPACE
33357C
33358          ELSEIF((IA(I:I).EQ.'S'.OR.IA(I:I).EQ.'s') .AND.
33359     1       (IA(I+1:I+1).EQ.'P'.OR.IA(I+1:I+1).EQ.'p') .AND.
33360     1       IA(I+2:I+2).EQ.'(' .AND. IA(I+3:I+3).EQ.')')THEN
33361            IWIDT2=IWIDT2+1
33362            IB(IWIDT2:IWIDT2)=' '
33363            NSKIP=3
33364C
33365C         SET GREEK MU = $\mu$
33366C
33367          ELSEIF((IA(I:I).EQ.'M'.OR.IA(I:I).EQ.'m') .AND.
33368     1           (IA(I+1:I+1).EQ.'U'.OR.IA(I+1:I+1).EQ.'u') .AND.
33369     1           IA(I+2:I+2).EQ.'(' .AND. IA(I+3:I+3).EQ.')')THEN
33370            IWIDT2=IWIDT2+1
33371            NLAST=IWIDT2+4
33372            IF(NLAST.GT.MAXWID)GOTO8010
33373            IB(IWIDT2:NLAST)='$ mu$'
33374            IB(IWIDT2+1:IWIDT2+1)=IBASLC
33375            IWIDT2=IWIDT2+4
33376            NSKIP=3
33377C
33378C         SET GREEK NU = $\nu$
33379C
33380          ELSEIF((IA(I:I).EQ.'N'.OR.IA(I:I).EQ.'n') .AND.
33381     1           (IA(I+1:I+1).EQ.'U'.OR.IA(I+1:I+1).EQ.'u') .AND.
33382     1           IA(I+2:I+2).EQ.'(' .AND. IA(I+3:I+3).EQ.')')THEN
33383            IWIDT2=IWIDT2+1
33384            NLAST=IWIDT2+4
33385            IF(NLAST.GT.MAXWID)GOTO8010
33386            IB(IWIDT2:NLAST)='$ nu$'
33387            IB(IWIDT2+1:IWIDT2+1)=IBASLC
33388            IWIDT2=IWIDT2+4
33389            NSKIP=3
33390C
33391C         SET GREEK XI = $\xi$ OR $\XI$
33392C
33393          ELSEIF((IA(I:I).EQ.'X'.OR.IA(I:I).EQ.'x') .AND.
33394     1           (IA(I+1:I+1).EQ.'i'.OR.IA(I+1:I+1).EQ.'i') .AND.
33395     1           IA(I+2:I+2).EQ.'(' .AND. IA(I+3:I+3).EQ.')')THEN
33396            IWIDT2=IWIDT2+1
33397            NLAST=IWIDT2+4
33398            IF(NLAST.GT.MAXWID)GOTO8010
33399            IF(ICASFL.EQ.'UPPE')THEN
33400              IB(IWIDT2:NLAST)='$ Xi$'
33401            ELSE
33402              IB(IWIDT2:NLAST)='$ xi$'
33403            ENDIF
33404            IB(IWIDT2+1:IWIDT2+1)=IBASLC
33405            IWIDT2=IWIDT2+4
33406            NSKIP=3
33407C
33408C         SET GREEK PI = $\pi$ OR $\PI$
33409C
33410          ELSEIF((IA(I:I).EQ.'P'.OR.IA(I:I).EQ.'p') .AND.
33411     1           (IA(I+1:I+1).EQ.'I'.OR.IA(I+1:I+1).EQ.'i') .AND.
33412     1           IA(I+2:I+2).EQ.'(' .AND. IA(I+3:I+3).EQ.')')THEN
33413            IWIDT2=IWIDT2+1
33414            NLAST=IWIDT2+4
33415            IF(NLAST.GT.MAXWID)GOTO8010
33416            IF(ICASFL.EQ.'UPPE')THEN
33417              IB(IWIDT2:NLAST)='$ Pi$'
33418            ELSE
33419              IB(IWIDT2:NLAST)='$ pi$'
33420            ENDIF
33421            IB(IWIDT2+1:IWIDT2+1)=IBASLC
33422            IWIDT2=IWIDT2+4
33423            NSKIP=3
33424C
33425C         SET LESS THAN = <
33426C
33427          ELSEIF((IA(I:I).EQ.'L'.OR.IA(I:I).EQ.'L') .AND.
33428     1           (IA(I+1:I+1).EQ.'T'.OR.IA(I+1:I+1).EQ.'t') .AND.
33429     1           IA(I+2:I+2).EQ.'(' .AND. IA(I+3:I+3).EQ.')')THEN
33430            IWIDT2=IWIDT2+1
33431            NLAST=IWIDT2
33432            IF(NLAST.GT.MAXWID)GOTO8010
33433            IB(IWIDT2:NLAST)='<'
33434            NSKIP=3
33435C
33436C         SET GREATER THAN = >
33437C
33438          ELSEIF((IA(I:I).EQ.'G'.OR.IA(I:I).EQ.'g') .AND.
33439     1           (IA(I+1:I+1).EQ.'T'.OR.IA(I+1:I+1).EQ.'t') .AND.
33440     1           IA(I+2:I+2).EQ.'(' .AND. IA(I+3:I+3).EQ.')')THEN
33441            IWIDT2=IWIDT2+1
33442            NLAST=IWIDT2
33443            IF(NLAST.GT.MAXWID)GOTO8010
33444            IB(IWIDT2:NLAST)='>'
33445            NSKIP=3
33446C
33447C         SET +/-  = $\pm$
33448C
33449          ELSEIF(IA(I:I).EQ.'+' .AND. IA(I+1:I+1).EQ.'-' .AND.
33450     1           IA(I+2:I+2).EQ.'(' .AND. IA(I+3:I+3).EQ.')')THEN
33451            IWIDT2=IWIDT2+1
33452            NLAST=IWIDT2+4
33453            IF(NLAST.GT.MAXWID)GOTO8010
33454            IB(IWIDT2:NLAST)='$ pm$'
33455            IB(IWIDT2+1:IWIDT2+1)=IBASLC
33456            IWIDT2=IWIDT2+4
33457            NSKIP=3
33458C
33459C         SET -/+  = $\mp$
33460C
33461          ELSEIF(IA(I:I).EQ.'-' .AND. IA(I+1:I+1).EQ.'+' .AND.
33462     1           IA(I+2:I+2).EQ.'(' .AND. IA(I+3:I+3).EQ.')')THEN
33463            IWIDT2=IWIDT2+1
33464            NLAST=IWIDT2+4
33465            IF(NLAST.GT.MAXWID)GOTO8010
33466            IB(IWIDT2:NLAST)='$ mp$'
33467            IB(IWIDT2+1:IWIDT2+1)=IBASLC
33468            IWIDT2=IWIDT2+4
33469            NSKIP=3
33470C
33471C         SET SUBSCRIPT MODE = $_{
33472C
33473          ELSEIF(I.LE.IWIDTH-4.AND.
33474     1           (IA(I:I).EQ.'S'.OR.IA(I:I).EQ.'s') .AND.
33475     1           (IA(I+1:I+1).EQ.'U'.OR.IA(I+1:I+1).EQ.'u') .AND.
33476     1           (IA(I+2:I+2).EQ.'B'.OR.IA(I+2:I+2).EQ.'b') .AND.
33477     1           IA(I+3:I+3).EQ.'(' .AND. IA(I+4:I+4).EQ.')')THEN
33478            IWIDT2=IWIDT2+1
33479            NLAST=IWIDT2+2
33480            IF(NLAST.GT.MAXWID)GOTO8010
33481            IB(IWIDT2:NLAST)='$_{'
33482            IWIDT2=IWIDT2+2
33483            ISUBFL=ISUBFL+1
33484            NSKIP=4
33485C
33486C         SET SUPERSCRIPT MODE = $^{
33487C
33488          ELSEIF(I.LE.IWIDTH-4.AND.
33489     1           (IA(I:I).EQ.'S'.OR.IA(I:I).EQ.'s') .AND.
33490     1           (IA(I+1:I+1).EQ.'U'.OR.IA(I+1:I+1).EQ.'u') .AND.
33491     1           (IA(I+2:I+2).EQ.'P'.OR.IA(I+2:I+2).EQ.'p') .AND.
33492     1           IA(I+3:I+3).EQ.'(' .AND. IA(I+4:I+4).EQ.')')THEN
33493            IWIDT2=IWIDT2+1
33494            NLAST=IWIDT2+2
33495            IF(NLAST.GT.MAXWID)GOTO8010
33496            IB(IWIDT2:NLAST)='$^{'
33497            IWIDT2=IWIDT2+2
33498            ISUPFL=ISUPFL+1
33499            NSKIP=4
33500C
33501C         SET GREEK ETA = $\eta$
33502C
33503          ELSEIF(I.LE.IWIDTH-4.AND.
33504     1           (IA(I:I).EQ.'E'.OR.IA(I:I).EQ.'e') .AND.
33505     1           (IA(I+1:I+1).EQ.'T'.OR.IA(I+1:I+1).EQ.'t') .AND.
33506     1           (IA(I+2:I+2).EQ.'A'.OR.IA(I+2:I+2).EQ.'a') .AND.
33507     1           IA(I+3:I+3).EQ.'(' .AND. IA(I+4:I+4).EQ.')')THEN
33508            IWIDT2=IWIDT2+1
33509            NLAST=IWIDT2+5
33510            IF(NLAST.GT.MAXWID)GOTO8010
33511            IB(IWIDT2:NLAST)='$ eta$'
33512            IB(IWIDT2+1:IWIDT2+1)=IBASLC
33513            IWIDT2=IWIDT2+5
33514            NSKIP=4
33515C
33516C         SET GREEK RHO = $\rho$
33517C
33518          ELSEIF(I.LE.IWIDTH-4.AND.
33519     1           (IA(I:I).EQ.'R'.OR.IA(I:I).EQ.'r') .AND.
33520     1           (IA(I+1:I+1).EQ.'H'.OR.IA(I+1:I+1).EQ.'h') .AND.
33521     1           (IA(I+2:I+2).EQ.'O'.OR.IA(I+2:I+2).EQ.'o') .AND.
33522     1           IA(I+3:I+3).EQ.'(' .AND. IA(I+4:I+4).EQ.')')THEN
33523            IWIDT2=IWIDT2+1
33524            NLAST=IWIDT2+5
33525            IF(NLAST.GT.MAXWID)GOTO8010
33526            IB(IWIDT2:NLAST)='$ rho$'
33527            IB(IWIDT2+1:IWIDT2+1)=IBASLC
33528            IWIDT2=IWIDT2+5
33529            NSKIP=4
33530C
33531C         SET GREEK TAU = $\tau$
33532C
33533          ELSEIF(I.LE.IWIDTH-4.AND.
33534     1           (IA(I:I).EQ.'T'.OR.IA(I:I).EQ.'t') .AND.
33535     1           (IA(I+1:I+1).EQ.'A'.OR.IA(I+1:I+1).EQ.'a') .AND.
33536     1           (IA(I+2:I+2).EQ.'U'.OR.IA(I+2:I+2).EQ.'u') .AND.
33537     1           IA(I+3:I+3).EQ.'(' .AND. IA(I+4:I+4).EQ.')')THEN
33538            IWIDT2=IWIDT2+1
33539            NLAST=IWIDT2+5
33540            IF(NLAST.GT.MAXWID)GOTO8010
33541            IB(IWIDT2:NLAST)='$ tau$'
33542            IB(IWIDT2+1:IWIDT2+1)=IBASLC
33543            IWIDT2=IWIDT2+5
33544            NSKIP=4
33545C
33546C         SET GREEK PHI = $\phi$ or $\Ph$}
33547C
33548          ELSEIF(I.LE.IWIDTH-4.AND.
33549     1           (IA(I:I).EQ.'P'.OR.IA(I:I).EQ.'p') .AND.
33550     1           (IA(I+1:I+1).EQ.'H'.OR.IA(I+1:I+1).EQ.'h') .AND.
33551     1           (IA(I+2:I+2).EQ.'I'.OR.IA(I+2:I+2).EQ.'i') .AND.
33552     1           IA(I+3:I+3).EQ.'(' .AND. IA(I+4:I+4).EQ.')')THEN
33553            IWIDT2=IWIDT2+1
33554            NLAST=IWIDT2+5
33555            IF(NLAST.GT.MAXWID)GOTO8010
33556            IF(ICASFL.EQ.'UPPE')THEN
33557              IB(IWIDT2:NLAST)='$ Phi$'
33558            ELSE
33559              IB(IWIDT2:NLAST)='$ phi$'
33560            ENDIF
33561            IB(IWIDT2+1:IWIDT2+1)=IBASLC
33562            IWIDT2=IWIDT2+5
33563            NSKIP=4
33564C
33565C         SET GREEK CHI = $\chi$
33566C
33567          ELSEIF(I.LE.IWIDTH-4.AND.
33568     1           (IA(I:I).EQ.'P'.OR.IA(I:I).EQ.'p') .AND.
33569     1           (IA(I+1:I+1).EQ.'H'.OR.IA(I+1:I+1).EQ.'h') .AND.
33570     1           (IA(I+2:I+2).EQ.'I'.OR.IA(I+2:I+2).EQ.'i') .AND.
33571     1           IA(I+3:I+3).EQ.'(' .AND. IA(I+4:I+4).EQ.')')THEN
33572            IWIDT2=IWIDT2+1
33573            NLAST=IWIDT2+5
33574            IF(NLAST.GT.MAXWID)GOTO8010
33575            IB(IWIDT2:NLAST)='$ chi$'
33576            IB(IWIDT2+1:IWIDT2+1)=IBASLC
33577            IWIDT2=IWIDT2+5
33578            NSKIP=4
33579C
33580C         SET GREEK PSI = $\psi$ or $\Psi$
33581C
33582          ELSEIF(I.LE.IWIDTH-4.AND.
33583     1           (IA(I:I).EQ.'P'.OR.IA(I:I).EQ.'p') .AND.
33584     1           (IA(I+1:I+1).EQ.'S'.OR.IA(I+1:I+1).EQ.'s') .AND.
33585     1           (IA(I+2:I+2).EQ.'I'.OR.IA(I+2:I+2).EQ.'i') .AND.
33586     1           IA(I+3:I+3).EQ.'(' .AND. IA(I+4:I+4).EQ.')')THEN
33587            IWIDT2=IWIDT2+1
33588            NLAST=IWIDT2+5
33589            IF(NLAST.GT.MAXWID)GOTO8010
33590            IF(ICASFL.EQ.'UPPE')THEN
33591              IB(IWIDT2:NLAST)='$ Psi$'
33592            ELSE
33593              IB(IWIDT2:NLAST)='$ psi$'
33594            ENDIF
33595            IB(IWIDT2+1:IWIDT2+1)=IBASLC
33596            IWIDT2=IWIDT2+5
33597            NSKIP=4
33598C
33599C         SET VECTOR PRODUCT = I DON'T KNOW IF THERE IS A LATEX
33600C                              EQUIVALENT
33601C
33602CCCCC     ELSEIF((IA(I:I).EQ.'D'.OR.IA(I:I).EQ.'d') .AND.
33603CCCCC1           (IA(I+1:I+1).EQ.'E'.OR.IA(I+1:I+1).EQ.'e') .AND.
33604CCCCC1           (IA(I+2:I+2).EQ.'L'.OR.IA(I+2:I+2).EQ.'l') .AND.
33605CCCCC1           IA(I+3:I+3).EQ.'(' .AND. IA(I+4:I+4).EQ.')')THEN
33606CCCCC       IWIDT2=IWIDT2+1
33607CCCCC       NLAST=IWIDT2+5
33608CCCCC       IF(NLAST.GT.MAXWID)GOTO8010
33609CCCCC       IB(IWIDT2:NLAST)='$ chi$'
33610CCCCC       IB(IWIDT2+1:IWIDT2+1)=IBASLC
33611CCCCC       IWIDT2=IWIDT2+5
33612CCCCC       NSKIP=4
33613C
33614C         SET UNSUBSCRIPT MODE = }$
33615C
33616          ELSEIF(I.LE.IWIDTH-5.AND.
33617     1           (IA(I:I).EQ.'U'.OR.IA(I:I).EQ.'u') .AND.
33618     1           (IA(I+1:I+1).EQ.'N'.OR.IA(I+1:I+1).EQ.'n') .AND.
33619     1           (IA(I+2:I+2).EQ.'S'.OR.IA(I+2:I+2).EQ.'s') .AND.
33620     1           (IA(I+3:I+3).EQ.'B'.OR.IA(I+3:I+3).EQ.'b') .AND.
33621     1           IA(I+4:I+4).EQ.'(' .AND. IA(I+5:I+5).EQ.')')THEN
33622            IWIDT2=IWIDT2+1
33623            NLAST=IWIDT2+1
33624            IF(NLAST.GT.MAXWID)GOTO8010
33625            IB(IWIDT2:NLAST)='}$'
33626            IWIDT2=IWIDT2+1
33627            ISUBFL=ISUBFL-1
33628            NSKIP=5
33629C
33630C         SET UNSUPERSCRIPT MODE = }$
33631C
33632          ELSEIF(I.LE.IWIDTH-5.AND.
33633     1           (IA(I:I).EQ.'U'.OR.IA(I:I).EQ.'u') .AND.
33634     1           (IA(I+1:I+1).EQ.'N'.OR.IA(I+1:I+1).EQ.'n') .AND.
33635     1           (IA(I+2:I+2).EQ.'S'.OR.IA(I+2:I+2).EQ.'s') .AND.
33636     1           (IA(I+3:I+3).EQ.'P'.OR.IA(I+3:I+3).EQ.'p') .AND.
33637     1           IA(I+4:I+4).EQ.'(' .AND. IA(I+5:I+5).EQ.')')THEN
33638            IWIDT2=IWIDT2+1
33639            NLAST=IWIDT2+1
33640            IF(NLAST.GT.MAXWID)GOTO8010
33641            IB(IWIDT2:NLAST)='}$'
33642            IWIDT2=IWIDT2+1
33643            ISUPFL=ISUPFL-1
33644            NSKIP=5
33645C
33646C         SET GREEK ALPHA = $\alpha$
33647C
33648          ELSEIF(I.LE.IWIDTH-5.AND.
33649     1           (IA(I:I).EQ.'A'.OR.IA(I:I).EQ.'a') .AND.
33650     1           (IA(I+1:I+1).EQ.'L'.OR.IA(I+1:I+1).EQ.'l') .AND.
33651     1           (IA(I+2:I+2).EQ.'P'.OR.IA(I+2:I+2).EQ.'p') .AND.
33652     1           (IA(I+3:I+3).EQ.'H'.OR.IA(I+3:I+3).EQ.'h') .AND.
33653     1           IA(I+4:I+4).EQ.'(' .AND. IA(I+5:I+5).EQ.')')THEN
33654            IWIDT2=IWIDT2+1
33655            NLAST=IWIDT2+7
33656            IF(NLAST.GT.MAXWID)GOTO8010
33657            IB(IWIDT2:NLAST)='$ alpha$'
33658            IB(IWIDT2+1:IWIDT2+1)=IBASLC
33659            IWIDT2=IWIDT2+7
33660            NSKIP=5
33661C
33662C         SET GREEK BETA = $\beta$
33663C
33664          ELSEIF(I.LE.IWIDTH-5.AND.
33665     1           (IA(I:I).EQ.'B'.OR.IA(I:I).EQ.'b') .AND.
33666     1           (IA(I+1:I+1).EQ.'E'.OR.IA(I+1:I+1).EQ.'e') .AND.
33667     1           (IA(I+2:I+2).EQ.'T'.OR.IA(I+2:I+2).EQ.'t') .AND.
33668     1           (IA(I+3:I+3).EQ.'A'.OR.IA(I+3:I+3).EQ.'a') .AND.
33669     1           IA(I+4:I+4).EQ.'(' .AND. IA(I+5:I+5).EQ.')')THEN
33670            IWIDT2=IWIDT2+1
33671            NLAST=IWIDT2+6
33672            IF(NLAST.GT.MAXWID)GOTO8010
33673            IB(IWIDT2:NLAST)='$ beta$'
33674            IB(IWIDT2+1:IWIDT2+1)=IBASLC
33675            IWIDT2=IWIDT2+6
33676            NSKIP=5
33677C
33678C         SET GREEK GAMMA = $\gamma$ or $\Gamma$
33679C
33680          ELSEIF(I.LE.IWIDTH-5.AND.
33681     1           (IA(I:I).EQ.'G'.OR.IA(I:I).EQ.'g') .AND.
33682     1           (IA(I+1:I+1).EQ.'A'.OR.IA(I+1:I+1).EQ.'a') .AND.
33683     1           (IA(I+2:I+2).EQ.'M'.OR.IA(I+2:I+2).EQ.'m') .AND.
33684     1           (IA(I+3:I+3).EQ.'M'.OR.IA(I+3:I+3).EQ.'m') .AND.
33685     1           IA(I+4:I+4).EQ.'(' .AND. IA(I+5:I+5).EQ.')')THEN
33686            IWIDT2=IWIDT2+1
33687            NLAST=IWIDT2+7
33688            IF(NLAST.GT.MAXWID)GOTO8010
33689            IF(ICASFL.EQ.'UPPE')THEN
33690              IB(IWIDT2:NLAST)='$ Gamma$'
33691            ELSE
33692              IB(IWIDT2:NLAST)='$ gamma$'
33693            ENDIF
33694            IB(IWIDT2+1:IWIDT2+1)=IBASLC
33695            IWIDT2=IWIDT2+7
33696            NSKIP=5
33697C
33698C         SET GREEK DELTA = $\delta$ or $\Delta$
33699C
33700          ELSEIF(I.LE.IWIDTH-5.AND.
33701     1           (IA(I:I).EQ.'D'.OR.IA(I:I).EQ.'d') .AND.
33702     1           (IA(I+1:I+1).EQ.'E'.OR.IA(I+1:I+1).EQ.'e') .AND.
33703     1           (IA(I+2:I+2).EQ.'L'.OR.IA(I+2:I+2).EQ.'l') .AND.
33704     1           (IA(I+3:I+3).EQ.'T'.OR.IA(I+3:I+3).EQ.'t') .AND.
33705     1           IA(I+4:I+4).EQ.'(' .AND. IA(I+5:I+5).EQ.')')THEN
33706            IWIDT2=IWIDT2+1
33707            NLAST=IWIDT2+7
33708            IF(NLAST.GT.MAXWID)GOTO8010
33709            IF(ICASFL.EQ.'UPPE')THEN
33710              IB(IWIDT2:NLAST)='$ Delta$'
33711            ELSE
33712              IB(IWIDT2:NLAST)='$ delta$'
33713            ENDIF
33714            IB(IWIDT2+1:IWIDT2+1)=IBASLC
33715            IWIDT2=IWIDT2+7
33716            NSKIP=5
33717C
33718C         SET GREEK EPSILON = $\epsilon$
33719C
33720          ELSEIF(I.LE.IWIDTH-5.AND.
33721     1           (IA(I:I).EQ.'E'.OR.IA(I:I).EQ.'e') .AND.
33722     1           (IA(I+1:I+1).EQ.'P'.OR.IA(I+1:I+1).EQ.'p') .AND.
33723     1           (IA(I+2:I+2).EQ.'S'.OR.IA(I+2:I+2).EQ.'s') .AND.
33724     1           (IA(I+3:I+3).EQ.'I'.OR.IA(I+3:I+3).EQ.'i') .AND.
33725     1           IA(I+4:I+4).EQ.'(' .AND. IA(I+5:I+5).EQ.')')THEN
33726            IWIDT2=IWIDT2+1
33727            NLAST=IWIDT2+9
33728            IF(NLAST.GT.MAXWID)GOTO8010
33729            IB(IWIDT2:NLAST)='$ epsilon$'
33730            IB(IWIDT2+1:IWIDT2+1)=IBASLC
33731            IWIDT2=IWIDT2+9
33732            NSKIP=5
33733C
33734C         SET GREEK ZETA = $\zeta$
33735C
33736          ELSEIF(I.LE.IWIDTH-5.AND.
33737     1           (IA(I:I).EQ.'Z'.OR.IA(I:I).EQ.'z') .AND.
33738     1           (IA(I+1:I+1).EQ.'E'.OR.IA(I+1:I+1).EQ.'e') .AND.
33739     1           (IA(I+2:I+2).EQ.'T'.OR.IA(I+2:I+2).EQ.'t') .AND.
33740     1           (IA(I+3:I+3).EQ.'A'.OR.IA(I+3:I+3).EQ.'a') .AND.
33741     1           IA(I+4:I+4).EQ.'(' .AND. IA(I+5:I+5).EQ.')')THEN
33742            IWIDT2=IWIDT2+1
33743            NLAST=IWIDT2+6
33744            IF(NLAST.GT.MAXWID)GOTO8010
33745            IB(IWIDT2:NLAST)='$ zeta$'
33746            IB(IWIDT2+1:IWIDT2+1)=IBASLC
33747            IWIDT2=IWIDT2+6
33748            NSKIP=5
33749C
33750C         SET GREEK THETA = $\theta$ or $\Theta$
33751C
33752          ELSEIF(I.LE.IWIDTH-5.AND.
33753     1           (IA(I:I).EQ.'T'.OR.IA(I:I).EQ.'t') .AND.
33754     1           (IA(I+1:I+1).EQ.'H'.OR.IA(I+1:I+1).EQ.'h') .AND.
33755     1           (IA(I+2:I+2).EQ.'E'.OR.IA(I+2:I+2).EQ.'e') .AND.
33756     1           (IA(I+3:I+3).EQ.'T'.OR.IA(I+3:I+3).EQ.'t') .AND.
33757     1           IA(I+4:I+4).EQ.'(' .AND. IA(I+5:I+5).EQ.')')THEN
33758            IWIDT2=IWIDT2+1
33759            NLAST=IWIDT2+7
33760            IF(NLAST.GT.MAXWID)GOTO8010
33761            IF(ICASFL.EQ.'UPPE')THEN
33762              IB(IWIDT2:NLAST)='$ Theta$'
33763            ELSE
33764              IB(IWIDT2:NLAST)='$ theta$'
33765            ENDIF
33766            IB(IWIDT2+1:IWIDT2+1)=IBASLC
33767            IWIDT2=IWIDT2+7
33768            NSKIP=5
33769C
33770C         SET GREEK IOTA = $\iota$
33771C
33772          ELSEIF(I.LE.IWIDTH-5.AND.
33773     1           (IA(I:I).EQ.'I'.OR.IA(I:I).EQ.'i') .AND.
33774     1           (IA(I+1:I+1).EQ.'O'.OR.IA(I+1:I+1).EQ.'o') .AND.
33775     1           (IA(I+2:I+2).EQ.'T'.OR.IA(I+2:I+2).EQ.'t') .AND.
33776     1           (IA(I+3:I+3).EQ.'A'.OR.IA(I+3:I+3).EQ.'a') .AND.
33777     1           IA(I+4:I+4).EQ.'(' .AND. IA(I+5:I+5).EQ.')')THEN
33778            IWIDT2=IWIDT2+1
33779            NLAST=IWIDT2+6
33780            IF(NLAST.GT.MAXWID)GOTO8010
33781            IB(IWIDT2:NLAST)='$ iota$'
33782            IB(IWIDT2+1:IWIDT2+1)=IBASLC
33783            IWIDT2=IWIDT2+6
33784            NSKIP=5
33785C
33786C         SET GREEK KAPPA = $\kappa$
33787C
33788          ELSEIF(I.LE.IWIDTH-5.AND.
33789     1           (IA(I:I).EQ.'K'.OR.IA(I:I).EQ.'k') .AND.
33790     1           (IA(I+1:I+1).EQ.'A'.OR.IA(I+1:I+1).EQ.'a') .AND.
33791     1           (IA(I+2:I+2).EQ.'P'.OR.IA(I+2:I+2).EQ.'p') .AND.
33792     1           (IA(I+3:I+3).EQ.'P'.OR.IA(I+3:I+3).EQ.'p') .AND.
33793     1           IA(I+4:I+4).EQ.'(' .AND. IA(I+5:I+5).EQ.')')THEN
33794            IWIDT2=IWIDT2+1
33795            NLAST=IWIDT2+7
33796            IF(NLAST.GT.MAXWID)GOTO8010
33797            IB(IWIDT2:NLAST)='$ kappa$'
33798            IB(IWIDT2+1:IWIDT2+1)=IBASLC
33799            IWIDT2=IWIDT2+7
33800            NSKIP=5
33801C
33802C         SET GREEK LAMBDA = $\lambda$ or $\Lambda$
33803C
33804          ELSEIF(I.LE.IWIDTH-5.AND.
33805     1           (IA(I:I).EQ.'L'.OR.IA(I:I).EQ.'l') .AND.
33806     1           (IA(I+1:I+1).EQ.'A'.OR.IA(I+1:I+1).EQ.'a') .AND.
33807     1           (IA(I+2:I+2).EQ.'M'.OR.IA(I+2:I+2).EQ.'m') .AND.
33808     1           (IA(I+3:I+3).EQ.'B'.OR.IA(I+3:I+3).EQ.'b') .AND.
33809     1           IA(I+4:I+4).EQ.'(' .AND. IA(I+5:I+5).EQ.')')THEN
33810            IWIDT2=IWIDT2+1
33811            NLAST=IWIDT2+8
33812            IF(NLAST.GT.MAXWID)GOTO8010
33813            IF(ICASFL.EQ.'UPPE')THEN
33814              IB(IWIDT2:NLAST)='$ Lambda$'
33815            ELSE
33816              IB(IWIDT2:NLAST)='$ lambda$'
33817            ENDIF
33818            IB(IWIDT2+1:IWIDT2+1)=IBASLC
33819            IWIDT2=IWIDT2+8
33820            NSKIP=5
33821C
33822C         SET GREEK OMICON = $\omicon$
33823C
33824          ELSEIF(I.LE.IWIDTH-5.AND.
33825     1           (IA(I:I).EQ.'O'.OR.IA(I:I).EQ.'o') .AND.
33826     1           (IA(I+1:I+1).EQ.'M'.OR.IA(I+1:I+1).EQ.'m') .AND.
33827     1           (IA(I+2:I+2).EQ.'I'.OR.IA(I+2:I+2).EQ.'i') .AND.
33828     1           (IA(I+3:I+3).EQ.'C'.OR.IA(I+3:I+3).EQ.'c') .AND.
33829     1           IA(I+4:I+4).EQ.'(' .AND. IA(I+5:I+5).EQ.')')THEN
33830            IWIDT2=IWIDT2+1
33831            NLAST=IWIDT2+8
33832            IF(NLAST.GT.MAXWID)GOTO8010
33833            IB(IWIDT2:NLAST)='$ omicon$'
33834            IB(IWIDT2+1:IWIDT2+1)=IBASLC
33835            IWIDT2=IWIDT2+8
33836            NSKIP=5
33837C
33838C         SET GREEK SIGMA = $\sigma$ or $\Sigma$
33839C
33840          ELSEIF(I.LE.IWIDTH-5.AND.
33841     1           (IA(I:I).EQ.'S'.OR.IA(I:I).EQ.'s') .AND.
33842     1           (IA(I+1:I+1).EQ.'I'.OR.IA(I+1:I+1).EQ.'i') .AND.
33843     1           (IA(I+2:I+2).EQ.'G'.OR.IA(I+2:I+2).EQ.'g') .AND.
33844     1           (IA(I+3:I+3).EQ.'M'.OR.IA(I+3:I+3).EQ.'m') .AND.
33845     1           IA(I+4:I+4).EQ.'(' .AND. IA(I+5:I+5).EQ.')')THEN
33846            IWIDT2=IWIDT2+1
33847            NLAST=IWIDT2+7
33848            IF(NLAST.GT.MAXWID)GOTO8010
33849            IF(ICASFL.EQ.'UPPE')THEN
33850              IB(IWIDT2:NLAST)='$ Sigma$'
33851            ELSE
33852              IB(IWIDT2:NLAST)='$ sigma$'
33853            ENDIF
33854            IB(IWIDT2+1:IWIDT2+1)=IBASLC
33855            IWIDT2=IWIDT2+7
33856            NSKIP=5
33857C
33858C         SET GREEK UPSILON = $\upsilon$ or $\Upsilon$
33859C
33860          ELSEIF(I.LE.IWIDTH-5.AND.
33861     1           (IA(I:I).EQ.'U'.OR.IA(I:I).EQ.'u') .AND.
33862     1           (IA(I+1:I+1).EQ.'P'.OR.IA(I+1:I+1).EQ.'p') .AND.
33863     1           (IA(I+2:I+2).EQ.'S'.OR.IA(I+2:I+2).EQ.'s') .AND.
33864     1           (IA(I+3:I+3).EQ.'I'.OR.IA(I+3:I+3).EQ.'i') .AND.
33865     1           IA(I+4:I+4).EQ.'(' .AND. IA(I+5:I+5).EQ.')')THEN
33866            IWIDT2=IWIDT2+1
33867            NLAST=IWIDT2+10
33868            IF(NLAST.GT.MAXWID)GOTO8010
33869            IF(ICASFL.EQ.'UPPE')THEN
33870              IB(IWIDT2:NLAST)='$ Upsilon$'
33871            ELSE
33872              IB(IWIDT2:NLAST)='$ upsilon$'
33873            ENDIF
33874            IB(IWIDT2+1:IWIDT2+1)=IBASLC
33875            IWIDT2=IWIDT2+10
33876            NSKIP=5
33877C
33878C         SET GREEK OMEGA = $\omega$ or $\Omega$
33879C
33880          ELSEIF(I.LE.IWIDTH-5.AND.
33881     1           (IA(I:I).EQ.'O'.OR.IA(I:I).EQ.'o') .AND.
33882     1           (IA(I+1:I+1).EQ.'M'.OR.IA(I+1:I+1).EQ.'m') .AND.
33883     1           (IA(I+2:I+2).EQ.'E'.OR.IA(I+2:I+2).EQ.'e') .AND.
33884     1           (IA(I+3:I+3).EQ.'G'.OR.IA(I+3:I+3).EQ.'g') .AND.
33885     1           IA(I+4:I+4).EQ.'(' .AND. IA(I+5:I+5).EQ.')')THEN
33886            IWIDT2=IWIDT2+1
33887            NLAST=IWIDT2+7
33888            IF(NLAST.GT.MAXWID)GOTO8010
33889            IF(ICASFL.EQ.'UPPE')THEN
33890              IB(IWIDT2:NLAST)='$ Omega$'
33891            ELSE
33892              IB(IWIDT2:NLAST)='$ omega$'
33893            ENDIF
33894            IB(IWIDT2+1:IWIDT2+1)=IBASLC
33895            IWIDT2=IWIDT2+7
33896            NSKIP=5
33897C
33898C         SET PARTIAL DERIVATIVE = $\partial$
33899C
33900          ELSEIF(I.LE.IWIDTH-5.AND.
33901     1           (IA(I:I).EQ.'P'.OR.IA(I:I).EQ.'p') .AND.
33902     1           (IA(I+1:I+1).EQ.'A'.OR.IA(I+1:I+1).EQ.'a') .AND.
33903     1           (IA(I+2:I+2).EQ.'R'.OR.IA(I+2:I+2).EQ.'r') .AND.
33904     1           (IA(I+3:I+3).EQ.'T'.OR.IA(I+3:I+3).EQ.'t') .AND.
33905     1           IA(I+4:I+4).EQ.'(' .AND. IA(I+5:I+5).EQ.')')THEN
33906            IWIDT2=IWIDT2+1
33907            NLAST=IWIDT2+9
33908            IF(NLAST.GT.MAXWID)GOTO8010
33909            IB(IWIDT2:NLAST)='$ partial$'
33910            IB(IWIDT2+1:IWIDT2+1)=IBASLC
33911            IWIDT2=IWIDT2+9
33912            NSKIP=5
33913C
33914C         SET INTEGRAL = $\int$
33915C
33916          ELSEIF(I.LE.IWIDTH-5.AND.
33917     1           (IA(I:I).EQ.'I'.OR.IA(I:I).EQ.'i') .AND.
33918     1           (IA(I+1:I+1).EQ.'N'.OR.IA(I+1:I+1).EQ.'n') .AND.
33919     1           (IA(I+2:I+2).EQ.'T'.OR.IA(I+2:I+2).EQ.'t') .AND.
33920     1           (IA(I+3:I+3).EQ.'E'.OR.IA(I+3:I+3).EQ.'e') .AND.
33921     1           IA(I+4:I+4).EQ.'(' .AND. IA(I+5:I+5).EQ.')')THEN
33922            IWIDT2=IWIDT2+1
33923            NLAST=IWIDT2+5
33924            IF(NLAST.GT.MAXWID)GOTO8010
33925            IB(IWIDT2:NLAST)='$ int$'
33926            IB(IWIDT2+1:IWIDT2+1)=IBASLC
33927            IWIDT2=IWIDT2+5
33928            NSKIP=5
33929C
33930C         SET CIRCULAR INTEGRAL = $\oint$
33931C
33932          ELSEIF(I.LE.IWIDTH-5.AND.
33933     1           (IA(I:I).EQ.'C'.OR.IA(I:I).EQ.'c') .AND.
33934     1           (IA(I+1:I+1).EQ.'I'.OR.IA(I+1:I+1).EQ.'i') .AND.
33935     1           (IA(I+2:I+2).EQ.'N'.OR.IA(I+2:I+2).EQ.'n') .AND.
33936     1           (IA(I+3:I+3).EQ.'T'.OR.IA(I+3:I+3).EQ.'t') .AND.
33937     1           IA(I+4:I+4).EQ.'(' .AND. IA(I+5:I+5).EQ.')')THEN
33938            IWIDT2=IWIDT2+1
33939            NLAST=IWIDT2+6
33940            IF(NLAST.GT.MAXWID)GOTO8010
33941            IB(IWIDT2:NLAST)='$ oint$'
33942            IB(IWIDT2+1:IWIDT2+1)=IBASLC
33943            IWIDT2=IWIDT2+6
33944            NSKIP=5
33945C
33946C         SET SUMMATION = $\sum$
33947C
33948          ELSEIF(I.LE.IWIDTH-5.AND.
33949     1           (IA(I:I).EQ.'S'.OR.IA(I:I).EQ.'s') .AND.
33950     1           (IA(I+1:I+1).EQ.'U'.OR.IA(I+1:I+1).EQ.'u') .AND.
33951     1           (IA(I+2:I+2).EQ.'M'.OR.IA(I+2:I+2).EQ.'m') .AND.
33952     1           (IA(I+3:I+3).EQ.'M'.OR.IA(I+3:I+3).EQ.'m') .AND.
33953     1           IA(I+4:I+4).EQ.'(' .AND. IA(I+5:I+5).EQ.')')THEN
33954            IWIDT2=IWIDT2+1
33955            NLAST=IWIDT2+5
33956            IF(NLAST.GT.MAXWID)GOTO8010
33957            IB(IWIDT2:NLAST)='$ sum$'
33958            IB(IWIDT2+1:IWIDT2+1)=IBASLC
33959            IWIDT2=IWIDT2+5
33960            NSKIP=5
33961C
33962C         SET PRODUCT = $\prod$
33963C
33964          ELSEIF(I.LE.IWIDTH-5.AND.
33965     1           (IA(I:I).EQ.'P'.OR.IA(I:I).EQ.'p') .AND.
33966     1           (IA(I+1:I+1).EQ.'R'.OR.IA(I+1:I+1).EQ.'r') .AND.
33967     1           (IA(I+2:I+2).EQ.'O'.OR.IA(I+2:I+2).EQ.'o') .AND.
33968     1           (IA(I+3:I+3).EQ.'D'.OR.IA(I+3:I+3).EQ.'d') .AND.
33969     1           IA(I+4:I+4).EQ.'(' .AND. IA(I+5:I+5).EQ.')')THEN
33970            IWIDT2=IWIDT2+1
33971            NLAST=IWIDT2+6
33972            IF(NLAST.GT.MAXWID)GOTO8010
33973            IB(IWIDT2:NLAST)='$ prod$'
33974            IB(IWIDT2+1:IWIDT2+1)=IBASLC
33975            IWIDT2=IWIDT2+6
33976            NSKIP=5
33977C
33978C         SET INFINITY = $\infty$
33979C
33980          ELSEIF(I.LE.IWIDTH-5.AND.
33981     1           (IA(I:I).EQ.'I'.OR.IA(I:I).EQ.'i') .AND.
33982     1           (IA(I+1:I+1).EQ.'N'.OR.IA(I+1:I+1).EQ.'n') .AND.
33983     1           (IA(I+2:I+2).EQ.'F'.OR.IA(I+2:I+2).EQ.'f') .AND.
33984     1           (IA(I+3:I+3).EQ.'I'.OR.IA(I+3:I+3).EQ.'i') .AND.
33985     1           IA(I+4:I+4).EQ.'(' .AND. IA(I+5:I+5).EQ.')')THEN
33986            IWIDT2=IWIDT2+1
33987            NLAST=IWIDT2+7
33988            IF(NLAST.GT.MAXWID)GOTO8010
33989            IB(IWIDT2:NLAST)='$ infty$'
33990            IB(IWIDT2+1:IWIDT2+1)=IBASLC
33991            IWIDT2=IWIDT2+7
33992            NSKIP=5
33993C
33994C         SET TIMES = $\times$
33995C
33996          ELSEIF(I.LE.IWIDTH-5.AND.
33997     1           (IA(I:I).EQ.'T'.OR.IA(I:I).EQ.'t') .AND.
33998     1           (IA(I+1:I+1).EQ.'I'.OR.IA(I+1:I+1).EQ.'i') .AND.
33999     1           (IA(I+2:I+2).EQ.'M'.OR.IA(I+2:I+2).EQ.'m') .AND.
34000     1           (IA(I+3:I+3).EQ.'E'.OR.IA(I+3:I+3).EQ.'e') .AND.
34001     1           IA(I+4:I+4).EQ.'(' .AND. IA(I+5:I+5).EQ.')')THEN
34002            IWIDT2=IWIDT2+1
34003            NLAST=IWIDT2+7
34004            IF(NLAST.GT.MAXWID)GOTO8010
34005            IB(IWIDT2:NLAST)='$ times$'
34006            IB(IWIDT2+1:IWIDT2+1)=IBASLC
34007            IWIDT2=IWIDT2+7
34008            NSKIP=5
34009C
34010C         SET DOT PRODUCT = $\cdot$
34011C
34012          ELSEIF(I.LE.IWIDTH-5.AND.
34013     1           (IA(I:I).EQ.'D'.OR.IA(I:I).EQ.'d') .AND.
34014     1           (IA(I+1:I+1).EQ.'O'.OR.IA(I+1:I+1).EQ.'o') .AND.
34015     1           (IA(I+2:I+2).EQ.'T'.OR.IA(I+2:I+2).EQ.'t') .AND.
34016     1           (IA(I+3:I+3).EQ.'P'.OR.IA(I+3:I+3).EQ.'p') .AND.
34017     1           IA(I+4:I+4).EQ.'(' .AND. IA(I+5:I+5).EQ.')')THEN
34018            IWIDT2=IWIDT2+1
34019            NLAST=IWIDT2+6
34020            IF(NLAST.GT.MAXWID)GOTO8010
34021            IB(IWIDT2:NLAST)='$ cdot$'
34022            IB(IWIDT2+1:IWIDT2+1)=IBASLC
34023            IWIDT2=IWIDT2+6
34024            NSKIP=5
34025C
34026C         SET DIVISION = $\div$
34027C
34028          ELSEIF(I.LE.IWIDTH-5.AND.
34029     1           (IA(I:I).EQ.'D'.OR.IA(I:I).EQ.'d') .AND.
34030     1           (IA(I+1:I+1).EQ.'I'.OR.IA(I+1:I+1).EQ.'i') .AND.
34031     1           (IA(I+2:I+2).EQ.'V'.OR.IA(I+2:I+2).EQ.'v') .AND.
34032     1           (IA(I+3:I+3).EQ.'I'.OR.IA(I+3:I+3).EQ.'i') .AND.
34033     1           IA(I+4:I+4).EQ.'(' .AND. IA(I+5:I+5).EQ.')')THEN
34034            IWIDT2=IWIDT2+1
34035            NLAST=IWIDT2+5
34036            IF(NLAST.GT.MAXWID)GOTO8010
34037            IB(IWIDT2:NLAST)='$ div$'
34038            IB(IWIDT2+1:IWIDT2+1)=IBASLC
34039            IWIDT2=IWIDT2+5
34040            NSKIP=5
34041C
34042C         SET LESS THAN OR EQUAL TO = $\le$
34043C
34044          ELSEIF(I.LE.IWIDTH-5.AND.
34045     1           (IA(I:I).EQ.'L'.OR.IA(I:I).EQ.'l') .AND.
34046     1           (IA(I+1:I+1).EQ.'T'.OR.IA(I+1:I+1).EQ.'t') .AND.
34047     1           (IA(I+2:I+2).EQ.'E'.OR.IA(I+2:I+2).EQ.'e') .AND.
34048     1           (IA(I+3:I+3).EQ.'Q'.OR.IA(I+3:I+3).EQ.'q') .AND.
34049     1           IA(I+4:I+4).EQ.'(' .AND. IA(I+5:I+5).EQ.')')THEN
34050            IWIDT2=IWIDT2+1
34051            NLAST=IWIDT2+4
34052            IF(NLAST.GT.MAXWID)GOTO8010
34053            IB(IWIDT2:NLAST)='$ le$'
34054            IB(IWIDT2+1:IWIDT2+1)=IBASLC
34055            IWIDT2=IWIDT2+4
34056            NSKIP=5
34057C
34058C         SET GREATER THAN OR EQUAL TO = $\ge$
34059C
34060          ELSEIF(I.LE.IWIDTH-5.AND.
34061     1           (IA(I:I).EQ.'G'.OR.IA(I:I).EQ.'g') .AND.
34062     1           (IA(I+1:I+1).EQ.'T'.OR.IA(I+1:I+1).EQ.'t') .AND.
34063     1           (IA(I+2:I+2).EQ.'E'.OR.IA(I+2:I+2).EQ.'e') .AND.
34064     1           (IA(I+3:I+3).EQ.'Q'.OR.IA(I+3:I+3).EQ.'q') .AND.
34065     1           IA(I+4:I+4).EQ.'(' .AND. IA(I+5:I+5).EQ.')')THEN
34066            IWIDT2=IWIDT2+1
34067            NLAST=IWIDT2+4
34068            IF(NLAST.GT.MAXWID)GOTO8010
34069            IB(IWIDT2:NLAST)='$ ge$'
34070            IB(IWIDT2+1:IWIDT2+1)=IBASLC
34071            IWIDT2=IWIDT2+4
34072            NSKIP=5
34073C
34074C         SET GREATER THAN OR EQUAL TO = $\ge$
34075C
34076          ELSEIF(I.LE.IWIDTH-5.AND.
34077     1           (IA(I:I).EQ.'G'.OR.IA(I:I).EQ.'g') .AND.
34078     1           (IA(I+1:I+1).EQ.'T'.OR.IA(I+1:I+1).EQ.'t') .AND.
34079     1           (IA(I+2:I+2).EQ.'E'.OR.IA(I+2:I+2).EQ.'e') .AND.
34080     1           (IA(I+3:I+3).EQ.'Q'.OR.IA(I+3:I+3).EQ.'q') .AND.
34081     1           IA(I+4:I+4).EQ.'(' .AND. IA(I+5:I+5).EQ.')')THEN
34082            IWIDT2=IWIDT2+1
34083            NLAST=IWIDT2+4
34084            IF(NLAST.GT.MAXWID)GOTO8010
34085            IB(IWIDT2:NLAST)='$ ge$'
34086            IB(IWIDT2+1:IWIDT2+1)=IBASLC
34087            IWIDT2=IWIDT2+4
34088            NSKIP=5
34089C
34090C         SET NOT EQUAL TO = $\ne$
34091C
34092          ELSEIF(I.LE.IWIDTH-5.AND.
34093     1           (IA(I:I).EQ.'N'.OR.IA(I:I).EQ.'n') .AND.
34094     1           (IA(I+1:I+1).EQ.'O'.OR.IA(I+1:I+1).EQ.'o') .AND.
34095     1           (IA(I+2:I+2).EQ.'T'.OR.IA(I+2:I+2).EQ.'t') .AND.
34096     1           (IA(I+3:I+3).EQ.'='.OR.IA(I+3:I+3).EQ.'=') .AND.
34097     1           IA(I+4:I+4).EQ.'(' .AND. IA(I+5:I+5).EQ.')')THEN
34098            IWIDT2=IWIDT2+1
34099            NLAST=IWIDT2+4
34100            IF(NLAST.GT.MAXWID)GOTO8010
34101            IB(IWIDT2:NLAST)='$ ne$'
34102            IB(IWIDT2+1:IWIDT2+1)=IBASLC
34103            IWIDT2=IWIDT2+4
34104            NSKIP=5
34105C
34106C         SET APPROXIMATELY = $\approx$
34107C
34108          ELSEIF(I.LE.IWIDTH-5.AND.
34109     1           (IA(I:I).EQ.'A'.OR.IA(I:I).EQ.'a') .AND.
34110     1           (IA(I+1:I+1).EQ.'P'.OR.IA(I+1:I+1).EQ.'p') .AND.
34111     1           (IA(I+2:I+2).EQ.'P'.OR.IA(I+2:I+2).EQ.'p') .AND.
34112     1           (IA(I+3:I+3).EQ.'R'.OR.IA(I+3:I+3).EQ.'r') .AND.
34113     1           IA(I+4:I+4).EQ.'(' .AND. IA(I+5:I+5).EQ.')')THEN
34114            IWIDT2=IWIDT2+1
34115            NLAST=IWIDT2+8
34116            IF(NLAST.GT.MAXWID)GOTO8010
34117            IB(IWIDT2:NLAST)='$ approx$'
34118            IB(IWIDT2+1:IWIDT2+1)=IBASLC
34119            IWIDT2=IWIDT2+8
34120            NSKIP=5
34121C
34122C         SET EQUIVALENCE = $\equiv$
34123C
34124          ELSEIF(I.LE.IWIDTH-5.AND.
34125     1           (IA(I:I).EQ.'E'.OR.IA(I:I).EQ.'e') .AND.
34126     1           (IA(I+1:I+1).EQ.'Q'.OR.IA(I+1:I+1).EQ.'q') .AND.
34127     1           (IA(I+2:I+2).EQ.'U'.OR.IA(I+2:I+2).EQ.'u') .AND.
34128     1           (IA(I+3:I+3).EQ.'I'.OR.IA(I+3:I+3).EQ.'i') .AND.
34129     1           IA(I+4:I+4).EQ.'(' .AND. IA(I+5:I+5).EQ.')')THEN
34130            IWIDT2=IWIDT2+1
34131            NLAST=IWIDT2+7
34132            IF(NLAST.GT.MAXWID)GOTO8010
34133            IB(IWIDT2:NLAST)='$ equiv$'
34134            IB(IWIDT2+1:IWIDT2+1)=IBASLC
34135            IWIDT2=IWIDT2+7
34136            NSKIP=5
34137C
34138C         SET VARIES = I DON'T KNOW HOW TO DO THIS ONE
34139C
34140CCCCC     ELSEIF((IA(I:I).EQ.'E'.OR.IA(I:I).EQ.'e') .AND.
34141CCCCC1           (IA(I+1:I+1).EQ.'Q'.OR.IA(I+1:I+1).EQ.'q') .AND.
34142CCCCC1           (IA(I+2:I+2).EQ.'U'.OR.IA(I+2:I+2).EQ.'u') .AND.
34143CCCCC1           (IA(I+3:I+3).EQ.'I'.OR.IA(I+3:I+3).EQ.'i') .AND.
34144CCCCC1           IA(I+4:I+4).EQ.'(' .AND. IA(I+5:I+5).EQ.')')THEN
34145CCCCC       IWIDT2=IWIDT2+1
34146CCCCC       NLAST=IWIDT2+7
34147CCCCC       IF(NLAST.GT.MAXWID)GOTO8010
34148CCCCC       IB(IWIDT2:NLAST)='$ equiv$'
34149CCCCC       IB(IWIDT2+1:IWIDT2+1)=IBASLC
34150CCCCC       IWIDT2=IWIDT2+7
34151CCCCC       NSKIP=5
34152C
34153C         SET TILDE = ~
34154C
34155          ELSEIF(I.LE.IWIDTH-5.AND.
34156     1           (IA(I:I).EQ.'T'.OR.IA(I:I).EQ.'t') .AND.
34157     1           (IA(I+1:I+1).EQ.'I'.OR.IA(I+1:I+1).EQ.'i') .AND.
34158     1           (IA(I+2:I+2).EQ.'L'.OR.IA(I+2:I+2).EQ.'l') .AND.
34159     1           (IA(I+3:I+3).EQ.'D'.OR.IA(I+3:I+3).EQ.'d') .AND.
34160     1           IA(I+4:I+4).EQ.'(' .AND. IA(I+5:I+5).EQ.')')THEN
34161            IWIDT2=IWIDT2+1
34162            NLAST=IWIDT2
34163            IF(NLAST.GT.MAXWID)GOTO8010
34164            IB(IWIDT2:NLAST)='~'
34165            NSKIP=5
34166C
34167C         SET CARAT = ^
34168C
34169          ELSEIF(I.LE.IWIDTH-5.AND.
34170     1           (IA(I:I).EQ.'C'.OR.IA(I:I).EQ.'c') .AND.
34171     1           (IA(I+1:I+1).EQ.'A'.OR.IA(I+1:I+1).EQ.'a') .AND.
34172     1           (IA(I+2:I+2).EQ.'R'.OR.IA(I+2:I+2).EQ.'r') .AND.
34173     1           (IA(I+3:I+3).EQ.'A'.OR.IA(I+3:I+3).EQ.'a') .AND.
34174     1           IA(I+4:I+4).EQ.'(' .AND. IA(I+5:I+5).EQ.')')THEN
34175            IWIDT2=IWIDT2+1
34176            NLAST=IWIDT2
34177            IF(NLAST.GT.MAXWID)GOTO8010
34178            IB(IWIDT2:NLAST)='^'
34179            NSKIP=5
34180C
34181C         SET RADICAL = $\sqrt$
34182C
34183          ELSEIF(I.LE.IWIDTH-5.AND.
34184     1           (IA(I:I).EQ.'R'.OR.IA(I:I).EQ.'r') .AND.
34185     1           (IA(I+1:I+1).EQ.'A'.OR.IA(I+1:I+1).EQ.'a') .AND.
34186     1           (IA(I+2:I+2).EQ.'D'.OR.IA(I+2:I+2).EQ.'d') .AND.
34187     1           (IA(I+3:I+3).EQ.'I'.OR.IA(I+3:I+3).EQ.'i') .AND.
34188     1           IA(I+4:I+4).EQ.'(' .AND. IA(I+5:I+5).EQ.')')THEN
34189            IWIDT2=IWIDT2+1
34190            NLAST=IWIDT2+6
34191            IF(NLAST.GT.MAXWID)GOTO8010
34192            IB(IWIDT2:NLAST)='$ sqrt$'
34193            IB(IWIDT2+1:IWIDT2+1)=IBASLC
34194            IWIDT2=IWIDT2+6
34195            NSKIP=5
34196C
34197C         SET LARGE RADICAL = $\sqrt$
34198C
34199          ELSEIF(I.LE.IWIDTH-5.AND.
34200     1           (IA(I:I).EQ.'L'.OR.IA(I:I).EQ.'l') .AND.
34201     1           (IA(I+1:I+1).EQ.'R'.OR.IA(I+1:I+1).EQ.'r') .AND.
34202     1           (IA(I+2:I+2).EQ.'A'.OR.IA(I+2:I+2).EQ.'a') .AND.
34203     1           (IA(I+3:I+3).EQ.'D'.OR.IA(I+3:I+3).EQ.'d') .AND.
34204     1           IA(I+4:I+4).EQ.'(' .AND. IA(I+5:I+5).EQ.')')THEN
34205            IWIDT2=IWIDT2+1
34206            NLAST=IWIDT2+6
34207            IF(NLAST.GT.MAXWID)GOTO8010
34208            IB(IWIDT2:NLAST)='$ sqrt$'
34209            IB(IWIDT2+1:IWIDT2+1)=IBASLC
34210            IWIDT2=IWIDT2+6
34211            NSKIP=5
34212C
34213C         SET SUBSET = $\subset$
34214C
34215          ELSEIF(I.LE.IWIDTH-5.AND.
34216     1           (IA(I:I).EQ.'S'.OR.IA(I:I).EQ.'s') .AND.
34217     1           (IA(I+1:I+1).EQ.'U'.OR.IA(I+1:I+1).EQ.'u') .AND.
34218     1           (IA(I+2:I+2).EQ.'B'.OR.IA(I+2:I+2).EQ.'b') .AND.
34219     1           (IA(I+3:I+3).EQ.'S'.OR.IA(I+3:I+3).EQ.'s') .AND.
34220     1           IA(I+4:I+4).EQ.'(' .AND. IA(I+5:I+5).EQ.')')THEN
34221            IWIDT2=IWIDT2+1
34222            NLAST=IWIDT2+8
34223            IF(NLAST.GT.MAXWID)GOTO8010
34224            IB(IWIDT2:NLAST)='$ subset$'
34225            IB(IWIDT2+1:IWIDT2+1)=IBASLC
34226            IWIDT2=IWIDT2+8
34227            NSKIP=5
34228C
34229C         SET SUPERSET = $\supset$
34230C
34231          ELSEIF(I.LE.IWIDTH-5.AND.
34232     1           (IA(I:I).EQ.'S'.OR.IA(I:I).EQ.'s') .AND.
34233     1           (IA(I+1:I+1).EQ.'U'.OR.IA(I+1:I+1).EQ.'u') .AND.
34234     1           (IA(I+2:I+2).EQ.'P'.OR.IA(I+2:I+2).EQ.'p') .AND.
34235     1           (IA(I+3:I+3).EQ.'E'.OR.IA(I+3:I+3).EQ.'e') .AND.
34236     1           IA(I+4:I+4).EQ.'(' .AND. IA(I+5:I+5).EQ.')')THEN
34237            IWIDT2=IWIDT2+1
34238            NLAST=IWIDT2+8
34239            IF(NLAST.GT.MAXWID)GOTO8010
34240            IB(IWIDT2:NLAST)='$ supset$'
34241            IB(IWIDT2+1:IWIDT2+1)=IBASLC
34242            IWIDT2=IWIDT2+8
34243            NSKIP=5
34244C
34245C         SET UNION = $\cup$
34246C
34247          ELSEIF(I.LE.IWIDTH-5.AND.
34248     1           (IA(I:I).EQ.'U'.OR.IA(I:I).EQ.'u') .AND.
34249     1           (IA(I+1:I+1).EQ.'N'.OR.IA(I+1:I+1).EQ.'n') .AND.
34250     1           (IA(I+2:I+2).EQ.'I'.OR.IA(I+2:I+2).EQ.'i') .AND.
34251     1           (IA(I+3:I+3).EQ.'O'.OR.IA(I+3:I+3).EQ.'o') .AND.
34252     1           IA(I+4:I+4).EQ.'(' .AND. IA(I+5:I+5).EQ.')')THEN
34253            IWIDT2=IWIDT2+1
34254            NLAST=IWIDT2+5
34255            IF(NLAST.GT.MAXWID)GOTO8010
34256            IB(IWIDT2:NLAST)='$ cup$'
34257            IB(IWIDT2+1:IWIDT2+1)=IBASLC
34258            IWIDT2=IWIDT2+5
34259            NSKIP=5
34260C
34261C         SET INTERSECTION = $\cap$
34262C
34263          ELSEIF(I.LE.IWIDTH-5.AND.
34264     1           (IA(I:I).EQ.'I'.OR.IA(I:I).EQ.'i') .AND.
34265     1           (IA(I+1:I+1).EQ.'N'.OR.IA(I+1:I+1).EQ.'n') .AND.
34266     1           (IA(I+2:I+2).EQ.'T'.OR.IA(I+2:I+2).EQ.'t') .AND.
34267     1           (IA(I+3:I+3).EQ.'R'.OR.IA(I+3:I+3).EQ.'r') .AND.
34268     1           IA(I+4:I+4).EQ.'(' .AND. IA(I+5:I+5).EQ.')')THEN
34269            IWIDT2=IWIDT2+1
34270            NLAST=IWIDT2+5
34271            IF(NLAST.GT.MAXWID)GOTO8010
34272            IB(IWIDT2:NLAST)='$ cap$'
34273            IB(IWIDT2+1:IWIDT2+1)=IBASLC
34274            IWIDT2=IWIDT2+5
34275            NSKIP=5
34276C
34277C         SET IS AN ELEMENT OF = $\in$
34278C
34279          ELSEIF(I.LE.IWIDTH-5.AND.
34280     1           (IA(I:I).EQ.'E'.OR.IA(I:I).EQ.'e') .AND.
34281     1           (IA(I+1:I+1).EQ.'L'.OR.IA(I+1:I+1).EQ.'l') .AND.
34282     1           (IA(I+2:I+2).EQ.'E'.OR.IA(I+2:I+2).EQ.'e') .AND.
34283     1           (IA(I+3:I+3).EQ.'M'.OR.IA(I+3:I+3).EQ.'m') .AND.
34284     1           IA(I+4:I+4).EQ.'(' .AND. IA(I+5:I+5).EQ.')')THEN
34285            IWIDT2=IWIDT2+1
34286            NLAST=IWIDT2+4
34287            IF(NLAST.GT.MAXWID)GOTO8010
34288            IB(IWIDT2:NLAST)='$ in$'
34289            IB(IWIDT2+1:IWIDT2+1)=IBASLC
34290            IWIDT2=IWIDT2+4
34291            NSKIP=5
34292C
34293C         SET THERE EXISTS = $\exists$
34294C
34295          ELSEIF(I.LE.IWIDTH-5.AND.
34296     1           (IA(I:I).EQ.'T'.OR.IA(I:I).EQ.'t') .AND.
34297     1           (IA(I+1:I+1).EQ.'H'.OR.IA(I+1:I+1).EQ.'h') .AND.
34298     1           (IA(I+2:I+2).EQ.'E'.OR.IA(I+2:I+2).EQ.'e') .AND.
34299     1           (IA(I+3:I+3).EQ.'X'.OR.IA(I+3:I+3).EQ.'x') .AND.
34300     1           IA(I+4:I+4).EQ.'(' .AND. IA(I+5:I+5).EQ.')')THEN
34301            IWIDT2=IWIDT2+1
34302            NLAST=IWIDT2+8
34303            IF(NLAST.GT.MAXWID)GOTO8010
34304            IB(IWIDT2:NLAST)='$ exists$'
34305            IB(IWIDT2+1:IWIDT2+1)=IBASLC
34306            IWIDT2=IWIDT2+8
34307            NSKIP=5
34308C
34309C         SET THEREFORE = I DON'T KNOW WHAT THIS SHOULD BE
34310C
34311CCCCC     ELSEIF((IA(I:I).EQ.'T'.OR.IA(I:I).EQ.'t') .AND.
34312CCCCC1           (IA(I+1:I+1).EQ.'H'.OR.IA(I+1:I+1).EQ.'h') .AND.
34313CCCCC1           (IA(I+2:I+2).EQ.'E'.OR.IA(I+2:I+2).EQ.'e') .AND.
34314CCCCC1           (IA(I+3:I+3).EQ.'X'.OR.IA(I+3:I+3).EQ.'x') .AND.
34315CCCCC1           IA(I+4:I+4).EQ.'(' .AND. IA(I+5:I+5).EQ.')')THEN
34316CCCCC       IWIDT2=IWIDT2+1
34317CCCCC       NLAST=IWIDT2+8
34318CCCCC       IF(NLAST.GT.MAXWID)GOTO8010
34319CCCCC       IB(IWIDT2:NLAST)='$ exists$'
34320CCCCC       IB(IWIDT2+1:IWIDT2+1)=IBASLC
34321CCCCC       IWIDT2=IWIDT2+8
34322CCCCC       NSKIP=5
34323C
34324C         SET LEFT APOSTROPHE = `
34325C
34326          ELSEIF(I.LE.IWIDTH-5.AND.
34327     1           (IA(I:I).EQ.'L'.OR.IA(I:I).EQ.'l') .AND.
34328     1           (IA(I+1:I+1).EQ.'A'.OR.IA(I+1:I+1).EQ.'a') .AND.
34329     1           (IA(I+2:I+2).EQ.'P'.OR.IA(I+2:I+2).EQ.'p') .AND.
34330     1           (IA(I+3:I+3).EQ.'O'.OR.IA(I+3:I+3).EQ.'o') .AND.
34331     1           IA(I+4:I+4).EQ.'(' .AND. IA(I+5:I+5).EQ.')')THEN
34332            IWIDT2=IWIDT2+1
34333            NLAST=IWIDT2
34334            IF(NLAST.GT.MAXWID)GOTO8010
34335            IB(IWIDT2:NLAST)='`'
34336            NSKIP=5
34337C
34338C         SET RIGHT APOSTROPHE = '
34339C
34340          ELSEIF(I.LE.IWIDTH-5.AND.
34341     1           (IA(I:I).EQ.'R'.OR.IA(I:I).EQ.'r') .AND.
34342     1           (IA(I+1:I+1).EQ.'A'.OR.IA(I+1:I+1).EQ.'a') .AND.
34343     1           (IA(I+2:I+2).EQ.'P'.OR.IA(I+2:I+2).EQ.'p') .AND.
34344     1           (IA(I+3:I+3).EQ.'O'.OR.IA(I+3:I+3).EQ.'o') .AND.
34345     1           IA(I+4:I+4).EQ.'(' .AND. IA(I+5:I+5).EQ.')')THEN
34346            IWIDT2=IWIDT2+1
34347            NLAST=IWIDT2
34348            IF(NLAST.GT.MAXWID)GOTO8010
34349            IB(IWIDT2:NLAST)="`"
34350            NSKIP=5
34351C
34352C         SET LEFT BRACKET = [
34353C
34354          ELSEIF(I.LE.IWIDTH-5.AND.
34355     1           (IA(I:I).EQ.'L'.OR.IA(I:I).EQ.'l') .AND.
34356     1           (IA(I+1:I+1).EQ.'B'.OR.IA(I+1:I+1).EQ.'b') .AND.
34357     1           (IA(I+2:I+2).EQ.'R'.OR.IA(I+2:I+2).EQ.'r') .AND.
34358     1           (IA(I+3:I+3).EQ.'A'.OR.IA(I+3:I+3).EQ.'a') .AND.
34359     1           IA(I+4:I+4).EQ.'(' .AND. IA(I+5:I+5).EQ.')')THEN
34360            IWIDT2=IWIDT2+1
34361            NLAST=IWIDT2
34362            IF(NLAST.GT.MAXWID)GOTO8010
34363            IB(IWIDT2:NLAST)='['
34364            NSKIP=5
34365C
34366C         SET LEFT CURLY BRACKET = {
34367C
34368          ELSEIF(I.LE.IWIDTH-5.AND.
34369     1           (IA(I:I).EQ.'L'.OR.IA(I:I).EQ.'l') .AND.
34370     1           (IA(I+1:I+1).EQ.'C'.OR.IA(I+1:I+1).EQ.'c') .AND.
34371     1           (IA(I+2:I+2).EQ.'B'.OR.IA(I+2:I+2).EQ.'b') .AND.
34372     1           (IA(I+3:I+3).EQ.'R'.OR.IA(I+3:I+3).EQ.'r') .AND.
34373     1           IA(I+4:I+4).EQ.'(' .AND. IA(I+5:I+5).EQ.')')THEN
34374            IWIDT2=IWIDT2+1
34375            NLAST=IWIDT2
34376            IF(NLAST.GT.MAXWID)GOTO8010
34377            IB(IWIDT2:NLAST)='{'
34378            NSKIP=5
34379C
34380C         SET RIGHT CURLY BRACKET = }
34381C
34382          ELSEIF(I.LE.IWIDTH-5.AND.
34383     1           (IA(I:I).EQ.'R'.OR.IA(I:I).EQ.'r') .AND.
34384     1           (IA(I+1:I+1).EQ.'C'.OR.IA(I+1:I+1).EQ.'c') .AND.
34385     1           (IA(I+2:I+2).EQ.'B'.OR.IA(I+2:I+2).EQ.'b') .AND.
34386     1           (IA(I+3:I+3).EQ.'R'.OR.IA(I+3:I+3).EQ.'r') .AND.
34387     1           IA(I+4:I+4).EQ.'(' .AND. IA(I+5:I+5).EQ.')')THEN
34388            IWIDT2=IWIDT2+1
34389            NLAST=IWIDT2
34390            IF(NLAST.GT.MAXWID)GOTO8010
34391            IB(IWIDT2:NLAST)='}'
34392            NSKIP=5
34393C
34394C         SET RIGHT BRACKET = ]
34395C
34396          ELSEIF(I.LE.IWIDTH-5.AND.
34397     1           (IA(I:I).EQ.'R'.OR.IA(I:I).EQ.'r') .AND.
34398     1           (IA(I+1:I+1).EQ.'B'.OR.IA(I+1:I+1).EQ.'b') .AND.
34399     1           (IA(I+2:I+2).EQ.'R'.OR.IA(I+2:I+2).EQ.'r') .AND.
34400     1           (IA(I+3:I+3).EQ.'A'.OR.IA(I+3:I+3).EQ.'a') .AND.
34401     1           IA(I+4:I+4).EQ.'(' .AND. IA(I+5:I+5).EQ.')')THEN
34402            IWIDT2=IWIDT2+1
34403            NLAST=IWIDT2
34404            IF(NLAST.GT.MAXWID)GOTO8010
34405            IB(IWIDT2:NLAST)=']'
34406            NSKIP=5
34407C
34408C         SET LEFT ELBOW = I DON'T KNOW HOW TO DO THIS ONE
34409C
34410CCCCC     ELSEIF((IA(I:I).EQ.'L'.OR.IA(I:I).EQ.'l') .AND.
34411CCCCC1           (IA(I+1:I+1).EQ.'E'.OR.IA(I+1:I+1).EQ.'e') .AND.
34412CCCCC1           (IA(I+2:I+2).EQ.'L'.OR.IA(I+2:I+2).EQ.'l') .AND.
34413CCCCC1           (IA(I+3:I+3).EQ.'B'.OR.IA(I+3:I+3).EQ.'b') .AND.
34414CCCCC1           IA(I+4:I+4).EQ.'(' .AND. IA(I+5:I+5).EQ.')')THEN
34415CCCCC       IWIDT2=IWIDT2+1
34416CCCCC       NLAST=IWIDT2+8
34417CCCCC       IF(NLAST.GT.MAXWID)GOTO8010
34418CCCCC       IB(IWIDT2:NLAST)='$ exists$'
34419CCCCC       IB(IWIDT2+1:IWIDT2+1)=IBASLC
34420CCCCC       IWIDT2=IWIDT2+8
34421CCCCC       NSKIP=5
34422C
34423C         SET RIGHT ELBOW = I DON'T KNOW HOW TO DO THIS ONE
34424C
34425CCCCC     ELSEIF((IA(I:I).EQ.'R'.OR.IA(I:I).EQ.'r') .AND.
34426CCCCC1           (IA(I+1:I+1).EQ.'E'.OR.IA(I+1:I+1).EQ.'e') .AND.
34427CCCCC1           (IA(I+2:I+2).EQ.'L'.OR.IA(I+2:I+2).EQ.'l') .AND.
34428CCCCC1           (IA(I+3:I+3).EQ.'B'.OR.IA(I+3:I+3).EQ.'b') .AND.
34429CCCCC1           IA(I+4:I+4).EQ.'(' .AND. IA(I+5:I+5).EQ.')')THEN
34430CCCCC       IWIDT2=IWIDT2+1
34431CCCCC       NLAST=IWIDT2+8
34432CCCCC       IF(NLAST.GT.MAXWID)GOTO8010
34433CCCCC       IB(IWIDT2:NLAST)='$ exists$'
34434CCCCC       IB(IWIDT2+1:IWIDT2+1)=IBASLC
34435CCCCC       IWIDT2=IWIDT2+8
34436CCCCC       NSKIP=5
34437C
34438C         SET LEFT ACCENT = $\`$
34439C
34440          ELSEIF(I.LE.IWIDTH-5.AND.
34441     1           (IA(I:I).EQ.'L'.OR.IA(I:I).EQ.'l') .AND.
34442     1           (IA(I+1:I+1).EQ.'A'.OR.IA(I+1:I+1).EQ.'a') .AND.
34443     1           (IA(I+2:I+2).EQ.'C'.OR.IA(I+2:I+2).EQ.'c') .AND.
34444     1           (IA(I+3:I+3).EQ.'C'.OR.IA(I+3:I+3).EQ.'c') .AND.
34445     1           IA(I+4:I+4).EQ.'(' .AND. IA(I+5:I+5).EQ.')')THEN
34446            IWIDT2=IWIDT2+1
34447            NLAST=IWIDT2+4
34448            IF(NLAST.GT.MAXWID)GOTO8010
34449            IB(IWIDT2:NLAST)='$ `$'
34450            IB(IWIDT2+1:IWIDT2+1)=IBASLC
34451            IWIDT2=IWIDT2+4
34452            NSKIP=5
34453C
34454C         SET BREVE = $\vee$
34455C
34456          ELSEIF(I.LE.IWIDTH-5.AND.
34457     1           (IA(I:I).EQ.'B'.OR.IA(I:I).EQ.'b') .AND.
34458     1           (IA(I+1:I+1).EQ.'R'.OR.IA(I+1:I+1).EQ.'r') .AND.
34459     1           (IA(I+2:I+2).EQ.'E'.OR.IA(I+2:I+2).EQ.'e') .AND.
34460     1           (IA(I+3:I+3).EQ.'V'.OR.IA(I+3:I+3).EQ.'v') .AND.
34461     1           IA(I+4:I+4).EQ.'(' .AND. IA(I+5:I+5).EQ.')')THEN
34462            IWIDT2=IWIDT2+1
34463            NLAST=IWIDT2+5
34464            IF(NLAST.GT.MAXWID)GOTO8010
34465            IB(IWIDT2:NLAST)='$ vee$'
34466            IB(IWIDT2+1:IWIDT2+1)=IBASLC
34467            IWIDT2=IWIDT2+5
34468            NSKIP=5
34469C
34470C         SET LEFT QUOTE = "
34471C
34472          ELSEIF(I.LE.IWIDTH-5.AND.
34473     1           (IA(I:I).EQ.'L'.OR.IA(I:I).EQ.'l') .AND.
34474     1           (IA(I+1:I+1).EQ.'Q'.OR.IA(I+1:I+1).EQ.'q') .AND.
34475     1           (IA(I+2:I+2).EQ.'U'.OR.IA(I+2:I+2).EQ.'u') .AND.
34476     1           (IA(I+3:I+3).EQ.'O'.OR.IA(I+3:I+3).EQ.'o') .AND.
34477     1           IA(I+4:I+4).EQ.'(' .AND. IA(I+5:I+5).EQ.')')THEN
34478            IWIDT2=IWIDT2+1
34479            NLAST=IWIDT2
34480            IF(NLAST.GT.MAXWID)GOTO8010
34481            IB(IWIDT2:NLAST)='"'
34482            NSKIP=5
34483C
34484C         SET RIGHT QUOTE = "
34485C
34486          ELSEIF(I.LE.IWIDTH-5.AND.
34487     1           (IA(I:I).EQ.'R'.OR.IA(I:I).EQ.'r') .AND.
34488     1           (IA(I+1:I+1).EQ.'Q'.OR.IA(I+1:I+1).EQ.'q') .AND.
34489     1           (IA(I+2:I+2).EQ.'U'.OR.IA(I+2:I+2).EQ.'u') .AND.
34490     1           (IA(I+3:I+3).EQ.'O'.OR.IA(I+3:I+3).EQ.'o') .AND.
34491     1           IA(I+4:I+4).EQ.'(' .AND. IA(I+5:I+5).EQ.')')THEN
34492            IWIDT2=IWIDT2+1
34493            NLAST=IWIDT2
34494            IF(NLAST.GT.MAXWID)GOTO8010
34495            IB(IWIDT2:NLAST)='"'
34496            NSKIP=5
34497C
34498C         SET RIGHT ARROW = $\rightarrow$
34499C
34500          ELSEIF(I.LE.IWIDTH-5.AND.
34501     1           (IA(I:I).EQ.'R'.OR.IA(I:I).EQ.'r') .AND.
34502     1           (IA(I+1:I+1).EQ.'A'.OR.IA(I+1:I+1).EQ.'a') .AND.
34503     1           (IA(I+2:I+2).EQ.'R'.OR.IA(I+2:I+2).EQ.'r') .AND.
34504     1           (IA(I+3:I+3).EQ.'R'.OR.IA(I+3:I+3).EQ.'r') .AND.
34505     1           IA(I+4:I+4).EQ.'(' .AND. IA(I+5:I+5).EQ.')')THEN
34506            IWIDT2=IWIDT2+1
34507            NLAST=IWIDT2+12
34508            IF(NLAST.GT.MAXWID)GOTO8010
34509            IB(IWIDT2:NLAST)='$ rightarrow$'
34510            IB(IWIDT2+1:IWIDT2+1)=IBASLC
34511            IWIDT2=IWIDT2+12
34512            NSKIP=5
34513C
34514C         SET LEFT ARROW = $\leftarrow$
34515C
34516          ELSEIF(I.LE.IWIDTH-5.AND.
34517     1           (IA(I:I).EQ.'L'.OR.IA(I:I).EQ.'l') .AND.
34518     1           (IA(I+1:I+1).EQ.'A'.OR.IA(I+1:I+1).EQ.'a') .AND.
34519     1           (IA(I+2:I+2).EQ.'R'.OR.IA(I+2:I+2).EQ.'r') .AND.
34520     1           (IA(I+3:I+3).EQ.'R'.OR.IA(I+3:I+3).EQ.'r') .AND.
34521     1           IA(I+4:I+4).EQ.'(' .AND. IA(I+5:I+5).EQ.')')THEN
34522            IWIDT2=IWIDT2+1
34523            NLAST=IWIDT2+11
34524            IF(NLAST.GT.MAXWID)GOTO8010
34525            IB(IWIDT2:NLAST)='$ leftarrow$'
34526            IB(IWIDT2+1:IWIDT2+1)=IBASLC
34527            IWIDT2=IWIDT2+11
34528            NSKIP=5
34529C
34530C         SET DOWN ARROW = $\downarrow$
34531C
34532          ELSEIF(I.LE.IWIDTH-5.AND.
34533     1           (IA(I:I).EQ.'D'.OR.IA(I:I).EQ.'d') .AND.
34534     1           (IA(I+1:I+1).EQ.'A'.OR.IA(I+1:I+1).EQ.'a') .AND.
34535     1           (IA(I+2:I+2).EQ.'R'.OR.IA(I+2:I+2).EQ.'r') .AND.
34536     1           (IA(I+3:I+3).EQ.'R'.OR.IA(I+3:I+3).EQ.'r') .AND.
34537     1           IA(I+4:I+4).EQ.'(' .AND. IA(I+5:I+5).EQ.')')THEN
34538            IWIDT2=IWIDT2+1
34539            NLAST=IWIDT2+11
34540            IF(NLAST.GT.MAXWID)GOTO8010
34541            IB(IWIDT2:NLAST)='$ downarrow$'
34542            IB(IWIDT2+1:IWIDT2+1)=IBASLC
34543            IWIDT2=IWIDT2+11
34544            NSKIP=5
34545C
34546C         SET UP ARROW = $\uparrow$
34547C
34548          ELSEIF(I.LE.IWIDTH-5.AND.
34549     1           (IA(I:I).EQ.'U'.OR.IA(I:I).EQ.'u') .AND.
34550     1           (IA(I+1:I+1).EQ.'A'.OR.IA(I+1:I+1).EQ.'a') .AND.
34551     1           (IA(I+2:I+2).EQ.'R'.OR.IA(I+2:I+2).EQ.'r') .AND.
34552     1           (IA(I+3:I+3).EQ.'R'.OR.IA(I+3:I+3).EQ.'r') .AND.
34553     1           IA(I+4:I+4).EQ.'(' .AND. IA(I+5:I+5).EQ.')')THEN
34554            IWIDT2=IWIDT2+1
34555            NLAST=IWIDT2+9
34556            IF(NLAST.GT.MAXWID)GOTO8010
34557            IB(IWIDT2:NLAST)='$ uparrow$'
34558            IB(IWIDT2+1:IWIDT2+1)=IBASLC
34559            IWIDT2=IWIDT2+9
34560            NSKIP=5
34561C
34562C         SET PARAGRAP = NOT SURE ABOUT THIS ONE
34563C
34564CCCCC     ELSEIF((IA(I:I).EQ.'U'.OR.IA(I:I).EQ.'u') .AND.
34565CCCCC1           (IA(I+1:I+1).EQ.'A'.OR.IA(I+1:I+1).EQ.'a') .AND.
34566CCCCC1           (IA(I+2:I+2).EQ.'R'.OR.IA(I+2:I+2).EQ.'r') .AND.
34567CCCCC1           (IA(I+3:I+3).EQ.'R'.OR.IA(I+3:I+3).EQ.'r') .AND.
34568CCCCC1           IA(I+4:I+4).EQ.'(' .AND. IA(I+5:I+5).EQ.')')THEN
34569CCCCC       IWIDT2=IWIDT2+1
34570CCCCC       NLAST=IWIDT2+9
34571CCCCC       IF(NLAST.GT.MAXWID)GOTO8010
34572CCCCC       IB(IWIDT2:NLAST)='$ uparrow$'
34573CCCCC       IB(IWIDT2+1:IWIDT2+1)=IBASLC
34574CCCCC       IWIDT2=IWIDT2+9
34575CCCCC       NSKIP=5
34576C
34577C         SET DAGGER = $\dagger$
34578C
34579          ELSEIF(I.LE.IWIDTH-5.AND.
34580     1           (IA(I:I).EQ.'D'.OR.IA(I:I).EQ.'d') .AND.
34581     1           (IA(I+1:I+1).EQ.'A'.OR.IA(I+1:I+1).EQ.'a') .AND.
34582     1           (IA(I+2:I+2).EQ.'G'.OR.IA(I+2:I+2).EQ.'g') .AND.
34583     1           (IA(I+3:I+3).EQ.'G'.OR.IA(I+3:I+3).EQ.'g') .AND.
34584     1           IA(I+4:I+4).EQ.'(' .AND. IA(I+5:I+5).EQ.')')THEN
34585            IWIDT2=IWIDT2+1
34586            NLAST=IWIDT2+8
34587            IF(NLAST.GT.MAXWID)GOTO8010
34588            IB(IWIDT2:NLAST)='$ dagger$'
34589            IB(IWIDT2+1:IWIDT2+1)=IBASLC
34590            IWIDT2=IWIDT2+8
34591            NSKIP=5
34592C
34593C         SET DOUBLE DAGGER = $\ddagger$
34594C
34595          ELSEIF(I.LE.IWIDTH-5.AND.
34596     1           (IA(I:I).EQ.'D'.OR.IA(I:I).EQ.'d') .AND.
34597     1           (IA(I+1:I+1).EQ.'D'.OR.IA(I+1:I+1).EQ.'d') .AND.
34598     1           (IA(I+2:I+2).EQ.'A'.OR.IA(I+2:I+2).EQ.'a') .AND.
34599     1           (IA(I+3:I+3).EQ.'G'.OR.IA(I+3:I+3).EQ.'g') .AND.
34600     1           IA(I+4:I+4).EQ.'(' .AND. IA(I+5:I+5).EQ.')')THEN
34601            IWIDT2=IWIDT2+1
34602            NLAST=IWIDT2+9
34603            IF(NLAST.GT.MAXWID)GOTO8010
34604            IB(IWIDT2:NLAST)='$ ddagger$'
34605            IB(IWIDT2+1:IWIDT2+1)=IBASLC
34606            IWIDT2=IWIDT2+9
34607            NSKIP=5
34608C
34609C         SET VERTICAL BAR = $\mid$
34610C
34611          ELSEIF(I.LE.IWIDTH-5.AND.
34612     1           (IA(I:I).EQ.'V'.OR.IA(I:I).EQ.'v') .AND.
34613     1           (IA(I+1:I+1).EQ.'B'.OR.IA(I+1:I+1).EQ.'b') .AND.
34614     1           (IA(I+2:I+2).EQ.'A'.OR.IA(I+2:I+2).EQ.'a') .AND.
34615     1           (IA(I+3:I+3).EQ.'R'.OR.IA(I+3:I+3).EQ.'r') .AND.
34616     1           IA(I+4:I+4).EQ.'(' .AND. IA(I+5:I+5).EQ.')')THEN
34617            IWIDT2=IWIDT2+1
34618            NLAST=IWIDT2+5
34619            IF(NLAST.GT.MAXWID)GOTO8010
34620            IB(IWIDT2:NLAST)='$ mid$'
34621            IB(IWIDT2+1:IWIDT2+1)=IBASLC
34622            IWIDT2=IWIDT2+5
34623            NSKIP=5
34624C
34625C         SET LONG VERTICAL BAR = $\mid$
34626C
34627          ELSEIF(I.LE.IWIDTH-5.AND.
34628     1           (IA(I:I).EQ.'L'.OR.IA(I:I).EQ.'l') .AND.
34629     1           (IA(I+1:I+1).EQ.'V'.OR.IA(I+1:I+1).EQ.'v') .AND.
34630     1           (IA(I+2:I+2).EQ.'B'.OR.IA(I+2:I+2).EQ.'b') .AND.
34631     1           (IA(I+3:I+3).EQ.'A'.OR.IA(I+3:I+3).EQ.'a') .AND.
34632     1           IA(I+4:I+4).EQ.'(' .AND. IA(I+5:I+5).EQ.')')THEN
34633            IWIDT2=IWIDT2+1
34634            NLAST=IWIDT2+5
34635            IF(NLAST.GT.MAXWID)GOTO8010
34636            IB(IWIDT2:NLAST)='$ mid$'
34637            IB(IWIDT2+1:IWIDT2+1)=IBASLC
34638            IWIDT2=IWIDT2+5
34639            NSKIP=5
34640C
34641C         SET HORIZONTAL BAR = DON'T KNOW HOW TO DO THIS ONE
34642C
34643CCCCC     ELSEIF((IA(I:I).EQ.'H'.OR.IA(I:I).EQ.'h') .AND.
34644CCCCC1           (IA(I+1:I+1).EQ.'B'.OR.IA(I+1:I+1).EQ.'b') .AND.
34645CCCCC1           (IA(I+2:I+2).EQ.'A'.OR.IA(I+2:I+2).EQ.'a') .AND.
34646CCCCC1           (IA(I+3:I+3).EQ.'R'.OR.IA(I+3:I+3).EQ.'r') .AND.
34647CCCCC1           IA(I+4:I+4).EQ.'(' .AND. IA(I+5:I+5).EQ.')')THEN
34648CCCCC       IWIDT2=IWIDT2+1
34649CCCCC       NLAST=IWIDT2+5
34650CCCCC       IF(NLAST.GT.MAXWID)GOTO8010
34651CCCCC       IB(IWIDT2:NLAST)='$ mid$'
34652CCCCC       IB(IWIDT2+1:IWIDT2+1)=IBASLC
34653CCCCC       IWIDT2=IWIDT2+5
34654CCCCC       NSKIP=5
34655C
34656C         SET LONG HORIZONTAL BAR = DON'T KNOW HOW TO DO THIS ONE
34657C
34658CCCCC     ELSEIF((IA(I:I).EQ.'L'.OR.IA(I:I).EQ.'l') .AND.
34659CCCCC1           (IA(I+1:I+1).EQ.'H'.OR.IA(I+1:I+1).EQ.'h') .AND.
34660CCCCC1           (IA(I+2:I+2).EQ.'B'.OR.IA(I+2:I+2).EQ.'b') .AND.
34661CCCCC1           (IA(I+3:I+3).EQ.'A'.OR.IA(I+3:I+3).EQ.'a') .AND.
34662CCCCC1           IA(I+4:I+4).EQ.'(' .AND. IA(I+5:I+5).EQ.')')THEN
34663CCCCC       IWIDT2=IWIDT2+1
34664CCCCC       NLAST=IWIDT2+5
34665CCCCC       IF(NLAST.GT.MAXWID)GOTO8010
34666CCCCC       IB(IWIDT2:NLAST)='$ mid$'
34667CCCCC       IB(IWIDT2+1:IWIDT2+1)=IBASLC
34668CCCCC       IWIDT2=IWIDT2+5
34669CCCCC       NSKIP=5
34670C
34671C         SET DEGREE = $\deg$
34672C
34673          ELSEIF(I.LE.IWIDTH-5.AND.
34674     1           (IA(I:I).EQ.'D'.OR.IA(I:I).EQ.'d') .AND.
34675     1           (IA(I+1:I+1).EQ.'E'.OR.IA(I+1:I+1).EQ.'e') .AND.
34676     1           (IA(I+2:I+2).EQ.'G'.OR.IA(I+2:I+2).EQ.'g') .AND.
34677     1           (IA(I+3:I+3).EQ.'R'.OR.IA(I+3:I+3).EQ.'r') .AND.
34678     1           IA(I+4:I+4).EQ.'(' .AND. IA(I+5:I+5).EQ.')')THEN
34679            IWIDT2=IWIDT2+1
34680            NLAST=IWIDT2+5
34681            IF(NLAST.GT.MAXWID)GOTO8010
34682            IB(IWIDT2:NLAST)='$ deg$'
34683            IB(IWIDT2+1:IWIDT2+1)=IBASLC
34684            IWIDT2=IWIDT2+5
34685            NSKIP=5
34686          ELSE
34687            IWIDT2=IWIDT2+1
34688            IB(IWIDT2:IWIDT2)=IA(I:I)
34689          ENDIF
34690  100   CONTINUE
34691      ELSE
34692        DO190I=1,IWIDTH
34693          IWIDT2=IWIDT2+1
34694          IB(IWIDT2:IWIDT2)=IA(I:I)
34695  190   CONTINUE
34696        GOTO9000
34697      ENDIF
34698C
34699      ISTRT=IWIDTH-2
34700      ISTRT=ISTRT+NSKIP
34701      IF(ISTRT.LE.IWIDTH)THEN
34702        DO200I=ISTRT,IWIDTH
34703          IWIDT2=IWIDT2+1
34704          IB(IWIDT2:IWIDT2)=IA(I:I)
34705  200   CONTINUE
34706      ENDIF
34707C
34708      IF(ISUBFL.GT.0)THEN
34709        DO300I=1,ISUBFL
34710          IWIDT2=IWIDT2+1
34711          IB(IWIDT2:IWIDT2+1)='}$'
34712          IWIDT2=IWIDT2+1
34713  300   CONTINUE
34714      ENDIF
34715C
34716      IF(ISUPFL.GT.0)THEN
34717        DO400I=1,ISUPFL
34718          IWIDT2=IWIDT2+1
34719          IB(IWIDT2:IWIDT2+1)='}$'
34720          IWIDT2=IWIDT2+1
34721  400   CONTINUE
34722      ENDIF
34723C
34724      GOTO9000
34725C
34726 8010 CONTINUE
34727      WRITE(ICOUT,8011)
34728 8011 FORMAT('***** ERROR IN CONVERTING DATAPLOT SPECIAL ',
34729     1       'CHARACTERS TO EQUIVALENT LATEX--')
34730      CALL DPWRST('XXX','BUG ')
34731      WRITE(ICOUT,8013)
34732 8013 FORMAT('      MAXIMUM NUMBER OF CHARACTERS, ',I5,',',
34733     1       'IN LATEX STRING EXCEEDED.')
34734      CALL DPWRST('XXX','BUG ')
34735      GOTO9000
34736C
34737C               *****************
34738C               **  STEP 90--  **
34739C               **  EXIT.      **
34740C               *****************
34741C
34742 9000 CONTINUE
34743      IF(ISUBRO.EQ.'ON')THEN
34744        WRITE(ICOUT,999)
34745        CALL DPWRST('XXX','BUG ')
34746        WRITE(ICOUT,9011)
34747 9011   FORMAT('***** AT THE END       OF LATCON--')
34748        CALL DPWRST('XXX','BUG ')
34749        WRITE(ICOUT,9012)IWIDTH,ISUBRO,IERROR
34750 9012   FORMAT('IWIDTH,ISUBRO,IERROR = ',I8,2X,A4,2X,A4)
34751        CALL DPWRST('XXX','BUG ')
34752        WRITE(ICOUT,9014)(IB(I:I),I=1,MIN(100,IWIDT2))
34753 9014   FORMAT('(IB(I:I),I=1,IWIDT2) = ',100A1)
34754        CALL DPWRST('XXX','BUG ')
34755      ENDIF
34756C
34757      RETURN
34758      END
34759      SUBROUTINE LBECDF(X,ALPHA,BETA,C,D,CDF)
34760C
34761C     PURPOSE--THIS SUBROUTINE COMPUTES THE CUMULATIVE DISTRIBUTION
34762C              FUNCTION VALUE FOR THE LOG-BETA DISTRIBUTION.
34763C              THE LOG-BETA CDF IS COMPUTED AS:
34764C
34765C              LBECDF(X;ALPHA,BETA,C,D) = BETCDF(Z;ALPHA,BETA,C,D)
34766C                                         0 < C <= X <= D
34767C                                         ALPHA, BETA > 0
34768C
34769C              WHERE
34770C
34771C                  Z = (LOG(X) - LOG(C)/(LOG(D) - LOG(C))
34772C
34773C              AND BETCDF IS THE BETA CUMULATIVE DISTRIBUTION
34774C              FUNCTION.
34775C     INPUT  ARGUMENTS--X      = THE SINGLE PRECISION VALUE
34776C                                AT WHICH THE CUMULATIVE DISTRIBUTION
34777C                                FUNCTION IS TO BE EVALUATED.
34778C                                X SHOULD BE POSITIVE.
34779C                     --ALPHA  = THE SINGLE PRECISION VALUE OF THE
34780C                                FIRST SHAPE PARAMETER
34781C                     --BETA   = THE SINGLE PRECISION VALUE OF THE
34782C                                SECOND SHAPE PARAMETER
34783C                     --C      = THE SINGLE PRECISION VALUE OF THE
34784C                                THIRD (LOWER LIMIT) SHAPE PARAMETER
34785C                     --D      = THE SINGLE PRECISION VALUE OF THE
34786C                                FOURTH (UPPER LIMIT) SHAPE PARAMETER
34787C     OUTPUT ARGUMENTS--CDF    = THE SINGLE PRECISION CUMULATIVE
34788C                                DISTRIBUTION FUNCTION VALUE.
34789C     OUTPUT--THE SINGLE PRECISION CUMULATIVE DISTRIBUTION
34790C             FUNCTION VALUE CDF FOR THE LOG-BETA DISTRIBUTION.
34791C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
34792C     RESTRICTIONS--X SHOULD BE > C.
34793C     OTHER DATAPAC   SUBROUTINES NEEDED--BETCDF.
34794C     FORTRAN LIBRARY SUBROUTINES NEEDED--LOG.
34795C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
34796C     LANGUAGE--ANSI FORTRAN.
34797C     REFERENCES--NADARAJAH AND GUPTA (2004).  "APPLICATIONS OF THE
34798C                 BETA DISTRIBUTION" in "HANDBOOK OF THE BETA
34799C                 DISTRIBUTION", EDITED BY GUPTA AND NADARAJAH,
34800C                 MARCEL-DEKKER, PP.100-102.
34801C     WRITTEN BY--ALAN HECKERT
34802C                 STATISTICAL ENGINEERING LABORATORY (205.03)
34803C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
34804C                 GAITHERSBURG, MD 20899-8980
34805C                 PHONE:  301-975-2899
34806C     ORIGINAL VERSION--MAY       2006.
34807C
34808C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-----------------
34809C
34810C-----COMMON--------------------------------------------------------
34811C
34812      INCLUDE 'DPCOP2.INC'
34813C
34814C-------------------------------------------------------------------
34815C
34816C     CHECK THE INPUT ARGUMENTS FOR ERRORS
34817C
34818      CDF=0.0
34819C
34820      IF(ALPHA.LE.0.0)THEN
34821        WRITE(ICOUT,4)
34822    4   FORMAT('***** ERROR--THE FIRST SHAPE PARAMETER (ALPHA) TO ',
34823     1         'LBECDF IS NON-POSITIVE.')
34824        CALL DPWRST('XXX','BUG ')
34825        WRITE(ICOUT,46)ALPHA
34826        CALL DPWRST('XXX','BUG ')
34827        GOTO9999
34828      ELSEIF(BETA.LE.0.0)THEN
34829        WRITE(ICOUT,5)
34830    5   FORMAT('***** ERROR--THE SECOND SHAPE PARAMETER (BETA) TO ',
34831     1       'LBECDF IS NON-POSITIVE.')
34832        CALL DPWRST('XXX','BUG ')
34833        WRITE(ICOUT,46)BETA
34834        CALL DPWRST('XXX','BUG ')
34835        GOTO9999
34836      ELSEIF(C.LE.0.0)THEN
34837        WRITE(ICOUT,6)
34838    6   FORMAT('***** ERROR--THE LOWER LIMIT PARAMETER TO ',
34839     1         'LBECDF IS NON-POSITIVE.')
34840        CALL DPWRST('XXX','BUG ')
34841        WRITE(ICOUT,46)C
34842        CALL DPWRST('XXX','BUG ')
34843        GOTO9999
34844      ELSEIF(X.LE.C)THEN
34845        CDF=0.0
34846CCCCC   WRITE(ICOUT,7)
34847CCCC7 FORMAT('***** ERROR--THE FIRST ARGUMENT TO LBECDF ',
34848CCCCC1       'IS LESS THAN THE LOWER LIMIT.')
34849CCCCC   CALL DPWRST('XXX','BUG ')
34850CCCCC   WRITE(ICOUT,46)X
34851CCCCC   CALL DPWRST('XXX','BUG ')
34852CCCCC   WRITE(ICOUT,48)C
34853CCCCC   CALL DPWRST('XXX','BUG ')
34854        GOTO9999
34855      ELSEIF(D.LE.C)THEN
34856        WRITE(ICOUT,8)
34857    8   FORMAT('***** ERROR--THE UPPER LIMIT TO LBECDF ',
34858     1         'IS LESS THAN THE LOWER LIMIT.')
34859        CALL DPWRST('XXX','BUG ')
34860        WRITE(ICOUT,48)C
34861        CALL DPWRST('XXX','BUG ')
34862        WRITE(ICOUT,49)D
34863        CALL DPWRST('XXX','BUG ')
34864        GOTO9999
34865      ELSEIF(X.GE.D)THEN
34866CCCCC   WRITE(ICOUT,9)
34867CCCC9   FORMAT('***** ERROR--THE FIRST ARGUMENT TO LBECDF ',
34868CCCCC1         'IS GREATER THAN THE UPPER LIMIT.')
34869CCCCC   CALL DPWRST('XXX','BUG ')
34870CCCCC   WRITE(ICOUT,46)X
34871CCCCC   CALL DPWRST('XXX','BUG ')
34872CCCCC   WRITE(ICOUT,49)D
34873CCCCC   CALL DPWRST('XXX','BUG ')
34874        CDF=1.0
34875        GOTO9999
34876      ENDIF
34877C
34878   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',G15.7)
34879   48 FORMAT('***** THE VALUE OF THE LOWER LIMIT IS ',G15.7)
34880   49 FORMAT('***** THE VALUE OF THE UPPER LIMIT IS ',G15.7)
34881C
34882C-----START POINT---------------------------------------------------
34883C
34884      CDF=0.0
34885      Z=(LOG(X) - LOG(C))/(LOG(D) - LOG(C))
34886      CALL BETCDF(Z,ALPHA,BETA,CDF)
34887C
34888 9999 CONTINUE
34889      RETURN
34890      END
34891      SUBROUTINE LBEPDF(X,ALPHA,BETA,C,D,PDF)
34892C
34893C     PURPOSE--THIS SUBROUTINE COMPUTES THE PROBABILITY DENSITY
34894C              FUNCTION VALUE FOR THE LOG-BETA DISTRIBUTION.
34895C              THE LOG-BETA PDF IS COMPUTED AS:
34896C
34897C              LBEPDF(X;ALPHA,BETA,C,D) = BETPDF(Z;ALPHA,BETA,C,D)
34898C                                         0 < C <= X <= D
34899C                                         ALPHA, BETA > 0
34900C
34901C              WHERE
34902C
34903C                  Z = (LOG(X) - LOG(C)/(LOG(D) - LOG(C))
34904C
34905C              AND BETPDF IS THE BETA PROBABILITY DENSITY
34906C              FUNCTION.
34907C     INPUT  ARGUMENTS--X      = THE SINGLE PRECISION VALUE
34908C                                AT WHICH THE PROBABILITY DENSITY
34909C                                FUNCTION IS TO BE EVALUATED.
34910C                                X SHOULD BE POSITIVE.
34911C                     --ALPHA  = THE SINGLE PRECISION VALUE OF THE
34912C                                FIRST SHAPE PARAMETER
34913C                     --BETA   = THE SINGLE PRECISION VALUE OF THE
34914C                                SECOND SHAPE PARAMETER
34915C                     --C      = THE SINGLE PRECISION VALUE OF THE
34916C                                THIRD (LOWER LIMIT) SHAPE PARAMETER
34917C                     --D      = THE SINGLE PRECISION VALUE OF THE
34918C                                FOURTH (UPPER LIMIT) SHAPE PARAMETER
34919C     OUTPUT ARGUMENTS--PDF    = THE SINGLE PRECISION PROBABILITY
34920C                                DENSITY FUNCTION VALUE.
34921C     OUTPUT--THE SINGLE PRECISION PROBABILITY DENSITY
34922C             FUNCTION VALUE PDF FOR THE LOG-BETA DISTRIBUTION.
34923C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
34924C     RESTRICTIONS--X SHOULD BE > C.
34925C     OTHER DATAPAC   SUBROUTINES NEEDED--BETPDF.
34926C     FORTRAN LIBRARY SUBROUTINES NEEDED--LOG.
34927C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
34928C     LANGUAGE--ANSI FORTRAN.
34929C     REFERENCES--NADARAJAH AND GUPTA (2004).  "APPLICATIONS OF THE
34930C                 BETA DISTRIBUTION" in "HANDBOOK OF THE BETA
34931C                 DISTRIBUTION", EDITED BY GUPTA AND NADARAJAH,
34932C                 MARCEL-DEKKER, PP.100-102.
34933C     WRITTEN BY--ALAN HECKERT
34934C                 STATISTICAL ENGINEERING LABORATORY (205.03)
34935C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
34936C                 GAITHERSBURG, MD 20899-8980
34937C                 PHONE:  301-975-2899
34938C     ORIGINAL VERSION--MAY       2006.
34939C
34940C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-----------------
34941C
34942C-----COMMON--------------------------------------------------------
34943C
34944      INCLUDE 'DPCOP2.INC'
34945C
34946C-------------------------------------------------------------------
34947C
34948C     CHECK THE INPUT ARGUMENTS FOR ERRORS
34949C
34950      PDF=0.0
34951C
34952      IF(ALPHA.LE.0.0)THEN
34953        WRITE(ICOUT,4)
34954    4   FORMAT('***** ERROR--THE FIRST SHAPE PARAMETER (ALPHA) TO ',
34955     1         'LBEPDF IS NON-POSITIVE.')
34956        CALL DPWRST('XXX','BUG ')
34957        WRITE(ICOUT,46)ALPHA
34958        CALL DPWRST('XXX','BUG ')
34959        GOTO9999
34960      ELSEIF(BETA.LE.0.0)THEN
34961        WRITE(ICOUT,5)
34962    5   FORMAT('***** ERROR--THE SECOND SHAPE PARAMETER (BETA) TO ',
34963     1         'LBEPDF IS NON-POSITIVE.')
34964        CALL DPWRST('XXX','BUG ')
34965        WRITE(ICOUT,46)BETA
34966        CALL DPWRST('XXX','BUG ')
34967        GOTO9999
34968      ELSEIF(C.LE.0.0)THEN
34969        WRITE(ICOUT,6)
34970    6   FORMAT('***** ERROR--THE LOWER LIMIT PARAMETER TO ',
34971     1         'LBEPDF IS NON-POSITIVE.')
34972        CALL DPWRST('XXX','BUG ')
34973        WRITE(ICOUT,46)C
34974        CALL DPWRST('XXX','BUG ')
34975        GOTO9999
34976      ELSEIF(X.LE.C)THEN
34977        WRITE(ICOUT,7)
34978    7   FORMAT('***** ERROR--THE FIRST ARGUMENT TO LBEPDF ',
34979     1         'IS LESS THAN THE LOWER LIMIT.')
34980        CALL DPWRST('XXX','BUG ')
34981        WRITE(ICOUT,46)X
34982        CALL DPWRST('XXX','BUG ')
34983        WRITE(ICOUT,48)C
34984        CALL DPWRST('XXX','BUG ')
34985        GOTO9999
34986      ELSEIF(D.LE.C)THEN
34987        WRITE(ICOUT,8)
34988    8   FORMAT('***** ERROR--THE UPPER LIMIT TO LBEPDF ',
34989     1         'IS LESS THAN THE LOWER LIMIT.')
34990        CALL DPWRST('XXX','BUG ')
34991        WRITE(ICOUT,48)C
34992        CALL DPWRST('XXX','BUG ')
34993        WRITE(ICOUT,49)D
34994        CALL DPWRST('XXX','BUG ')
34995        GOTO9999
34996      ELSEIF(X.GE.D)THEN
34997        WRITE(ICOUT,9)
34998    9   FORMAT('***** ERROR--THE FIRST ARGUMENT TO LBEPDF ',
34999     1         'IS GREATER THAN THE UPPER LIMIT.')
35000        CALL DPWRST('XXX','BUG ')
35001        WRITE(ICOUT,46)X
35002        CALL DPWRST('XXX','BUG ')
35003        WRITE(ICOUT,49)D
35004        CALL DPWRST('XXX','BUG ')
35005        GOTO9999
35006      ENDIF
35007C
35008   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',G15.7)
35009   48 FORMAT('***** THE VALUE OF THE LOWER LIMIT IS ',G15.7)
35010   49 FORMAT('***** THE VALUE OF THE UPPER LIMIT IS ',G15.7)
35011C
35012C-----START POINT---------------------------------------------------
35013C
35014      PDF=0.0
35015      Z=(LOG(X) - LOG(C))/(LOG(D) - LOG(C))
35016      CALL BETPDF(Z,ALPHA,BETA,PDF)
35017      PDF=PDF/(X*(LOG(D)-LOG(C)))
35018C
35019 9999 CONTINUE
35020      RETURN
35021      END
35022      SUBROUTINE LBEPPF(P,ALPHA,BETA,C,D,PPF)
35023C
35024C     PURPOSE--THIS SUBROUTINE COMPUTES THE PERCENT POINT
35025C              FUNCTION VALUE FOR THE LOG-BETA DISTRIBUTION.
35026C              THE LOG-BETA PPF IS COMPUTED AS:
35027C
35028C              LBEPPF(P;ALPHA,BETA,C,D) = EXP(LOG(C)+
35029C                    (LOG(D) - LOG(C))*BETPPF(P;ALPHA,BETA,C,D))
35030C                                         0 < C <= X <= D
35031C                                         ALPHA, BETA > 0
35032C
35033C              BETPPF IS THE BETA PERCENT POINT FUNCTION.
35034C     INPUT  ARGUMENTS--P      = THE SINGLE PRECISION VALUE
35035C                                AT WHICH THE PERCENT POINT
35036C                                FUNCTION IS TO BE EVALUATED.
35037C                     --ALPHA  = THE SINGLE PRECISION VALUE OF THE
35038C                                FIRST SHAPE PARAMETER
35039C                     --BETA   = THE SINGLE PRECISION VALUE OF THE
35040C                                SECOND SHAPE PARAMETER
35041C                     --C      = THE SINGLE PRECISION VALUE OF THE
35042C                                THIRD (LOWER LIMIT) SHAPE PARAMETER
35043C                     --D      = THE SINGLE PRECISION VALUE OF THE
35044C                                FOURTH (UPPER LIMIT) SHAPE PARAMETER
35045C     OUTPUT ARGUMENTS--PPF    = THE SINGLE PRECISION PERCENT POINT
35046C                                FUNCTION VALUE.
35047C     OUTPUT--THE SINGLE PRECISION PERCENT POINT
35048C             FUNCTION VALUE CDF FOR THE LOG-BETA DISTRIBUTION.
35049C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
35050C     RESTRICTIONS--0 < P < 1, ALPHA, BETA, C > 0, D > C
35051C     OTHER DATAPAC   SUBROUTINES NEEDED--BETPPF.
35052C     FORTRAN LIBRARY SUBROUTINES NEEDED--EXP.
35053C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
35054C     LANGUAGE--ANSI FORTRAN.
35055C     REFERENCES--NADARAJAH AND GUPTA (2004).  "APPLICATIONS OF THE
35056C                 BETA DISTRIBUTION" in "HANDBOOK OF THE BETA
35057C                 DISTRIBUTION", EDITED BY GUPTA AND NADARAJAH,
35058C                 MARCEL-DEKKER, PP.100-102.
35059C     WRITTEN BY--ALAN HECKERT
35060C                 STATISTICAL ENGINEERING LABORATORY (205.03)
35061C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
35062C                 GAITHERSBURG, MD 20899-8980
35063C                 PHONE:  301-975-2899
35064C     ORIGINAL VERSION--MAY       2006.
35065C
35066C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-----------------
35067C
35068C-----COMMON--------------------------------------------------------
35069C
35070      INCLUDE 'DPCOP2.INC'
35071C
35072C-------------------------------------------------------------------
35073C
35074C     CHECK THE INPUT ARGUMENTS FOR ERRORS
35075C
35076      PPF=0.0
35077C
35078      IF(ALPHA.LE.0.0)THEN
35079        WRITE(ICOUT,4)
35080    4   FORMAT('***** ERROR--THE FIRST SHAPE PARAMETER (ALPHA) TO ',
35081     1         'LBECDF IS NON-POSITIVE.')
35082        CALL DPWRST('XXX','BUG ')
35083        WRITE(ICOUT,47)ALPHA
35084        CALL DPWRST('XXX','BUG ')
35085        GOTO9999
35086      ELSEIF(BETA.LE.0.0)THEN
35087        WRITE(ICOUT,5)
35088    5   FORMAT('***** ERROR--THE SECOND SHAPE PARAMETER (BETA) TO ',
35089     1         'LBECDF IS NON-POSITIVE.')
35090        CALL DPWRST('XXX','BUG ')
35091        WRITE(ICOUT,47)BETA
35092        CALL DPWRST('XXX','BUG ')
35093        GOTO9999
35094      ELSEIF(C.LT.0.0)THEN
35095        WRITE(ICOUT,6)
35096    6   FORMAT('***** ERROR--THE LOWER LIMIT PARAMETER TO ',
35097     1         'LBECDF IS NON-POSITIVE.')
35098        CALL DPWRST('XXX','BUG ')
35099        WRITE(ICOUT,47)C
35100        CALL DPWRST('XXX','BUG ')
35101        GOTO9999
35102      ELSEIF(D.LE.C)THEN
35103        WRITE(ICOUT,8)
35104    8   FORMAT('***** ERROR--THE UPPER LIMIT PARAMETER TO LBECDF ',
35105     1         'IS LESS THAN THE LOWER LIMIT.')
35106        CALL DPWRST('XXX','BUG ')
35107        WRITE(ICOUT,48)C
35108        CALL DPWRST('XXX','BUG ')
35109        WRITE(ICOUT,49)D
35110        CALL DPWRST('XXX','BUG ')
35111        GOTO9999
35112      ELSEIF(P.LE.0.0 .OR. P.GE.1.0)THEN
35113        WRITE(ICOUT,7)
35114    7   FORMAT('***** ERROR--THE FIRST ARGUMENT TO LBECDF ',
35115     1         'IS OUTSIDE THE (0,1) INTERVAL.')
35116        CALL DPWRST('XXX','BUG ')
35117        WRITE(ICOUT,47)P
35118        CALL DPWRST('XXX','BUG ')
35119        GOTO9999
35120      ENDIF
35121C
35122   47 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',G15.7)
35123   48 FORMAT('***** THE VALUE OF THE LOWER LIMIT IS ',G15.7)
35124   49 FORMAT('***** THE VALUE OF THE UPPER LIMIT IS ',G15.7)
35125C
35126C-----START POINT---------------------------------------------------
35127C
35128      PPF=0.0
35129      CALL BETPPF(P,ALPHA,BETA,PPF)
35130      PPF=EXP(LOG(C) + PPF*(LOG(D)-LOG(C)))
35131C
35132 9999 CONTINUE
35133      RETURN
35134      END
35135      SUBROUTINE LBERAN(N,ALPHA,BETA,C,D,ISEED,X)
35136C
35137C     PURPOSE--THIS SUBROUTINE GENERATES A RANDOM SAMPLE OF SIZE N
35138C              FROM THE LOG-BETA DISTRIBUTION WITH SINGLE PRECISION
35139C              SHAPE PARAMETERS ALPHA AND BETA AND LOWER AND UPPER
35140C              LIMIT PARAMETERS C AND D.
35141C              THE LOG-BETA PDF IS COMPUTED AS:
35142C
35143C              LBEPDF(X;ALPHA,BETA,C,D) = BETPDF(Z;ALPHA,BETA,C,D)
35144C                                         0 < C <= X <= D
35145C                                         ALPHA, BETA > 0
35146C
35147C              WHERE
35148C
35149C                  Z = (LOG(X) - LOG(C)/(LOG(D) - LOG(C))
35150C
35151C              AND BETPDF IS THE BETA PROBABILITY DENSITY
35152C              FUNCTION.
35153C
35154C              LIKEWISE, LOG-BETA RANDOM NUMBERS ARE GENERATED
35155C              BY APPLYING THE APPROPRIATE TRANSFORMATION TO
35156C              BETA RANDOM NUMBERS.
35157C
35158C     INPUT  ARGUMENTS--N      = THE DESIRED INTEGER NUMBER
35159C                                OF RANDOM NUMBERS TO BE
35160C                                GENERATED.
35161C                     --ALPHA  = THE SINGLE PRECISION VALUE OF THE
35162C                                FIRST SHAPE PARAMETER
35163C                     --BETA   = THE SINGLE PRECISION VALUE OF THE
35164C                                SECOND SHAPE PARAMETER
35165C                     --C      = THE SINGLE PRECISION VALUE OF THE
35166C                                THIRD (LOWER LIMIT) SHAPE PARAMETER
35167C                     --D      = THE SINGLE PRECISION VALUE OF THE
35168C                                FOURTH (UPPER LIMIT) SHAPE PARAMETER
35169C     OUTPUT ARGUMENTS--X      = A SINGLE PRECISION VECTOR
35170C                                (OF DIMENSION AT LEAST N)
35171C                                INTO WHICH THE GENERATED
35172C                                RANDOM SAMPLE WILL BE PLACED.
35173C     OUTPUT--A RANDOM SAMPLE OF SIZE N
35174C             FROM THE LOG-BETA DISTRIBUTION
35175C             WITH SHAPE PARAMETER VALUES ALPHA, BETA, C, AND D.
35176C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
35177C     RESTRICTIONS--THERE IS NO RESTRICTION ON THE MAXIMUM VALUE
35178C                   OF N FOR THIS SUBROUTINE.
35179C                 --ALPHA > 0
35180C                 --BETA > 0
35181C                 --C > 0
35182C                 --D > C
35183C     OTHER DATAPAC   SUBROUTINES NEEDED--BETRAN.
35184C     FORTRAN LIBRARY SUBROUTINES NEEDED--LOG.
35185C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
35186C     LANGUAGE--ANSI FORTRAN (1977)
35187C     REFERENCES--NADARAJAH AND GUPTA (2004).  "APPLICATIONS OF THE
35188C                 BETA DISTRIBUTION" in "HANDBOOK OF THE BETA
35189C                 DISTRIBUTION", EDITED BY GUPTA AND NADARAJAH,
35190C                 MARCEL-DEKKER, PP.100-102.
35191C     WRITTEN BY--ALAN HECKERT
35192C                 STATISTICAL ENGINEERING DIVISION
35193C                 INFORMATION TECHNOLOGY LABORATORY
35194C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
35195C                 GAITHERSBURG, MD 20899-8980
35196C                 PHONE--301-975-2899
35197C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
35198C           OF THE NATIONAL BUREAU OF STANDARDS.
35199C     LANGUAGE--ANSI FORTRAN (1977)
35200C     VERSION NUMBER--2006.6
35201C     ORIGINAL VERSION--JUNE      2006.
35202C
35203C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
35204C
35205C---------------------------------------------------------------------
35206C
35207      DIMENSION X(*)
35208C
35209C-----COMMON----------------------------------------------------------
35210C
35211      INCLUDE 'DPCOP2.INC'
35212C
35213C-----DATA STATEMENTS-------------------------------------------------
35214C
35215C-----START POINT-----------------------------------------------------
35216C
35217C     CHECK THE INPUT ARGUMENTS FOR ERRORS
35218C
35219      IF(N.LT.1)THEN
35220        WRITE(ICOUT, 5)
35221    5   FORMAT('***** ERROR--THE REQUESTED NUMBER OF LOG-BETA ',
35222     1         'RANDOM NUMBERS IS NON-POSITIVE.')
35223        CALL DPWRST('XXX','BUG ')
35224        WRITE(ICOUT,47)N
35225        CALL DPWRST('XXX','BUG ')
35226        GOTO9000
35227      ELSEIF(ALPHA.LE.0.0)THEN
35228        WRITE(ICOUT,11)
35229   11   FORMAT('***** ERROR--THE ALPHA SHAPE PARAMETER ',
35230     1         'FOR LOG-BETA RANDOM NUMBERS IS NON-POSITIVE.')
35231        CALL DPWRST('XXX','BUG ')
35232        WRITE(ICOUT,46)ALPHA
35233        CALL DPWRST('XXX','BUG ')
35234        GOTO9000
35235      ELSEIF(BETA.LE.0.0)THEN
35236        WRITE(ICOUT,12)
35237   12   FORMAT('***** ERROR--THE BETA SHAPE PARAMETER ',
35238     1         'FOR LOG-BETA RANDOM NUMBERS IS NON-POSITIVE.')
35239        CALL DPWRST('XXX','BUG ')
35240        WRITE(ICOUT,46)BETA
35241        CALL DPWRST('XXX','BUG ')
35242        GOTO9000
35243      ELSEIF(C.LE.0.0)THEN
35244        WRITE(ICOUT,13)
35245   13   FORMAT('***** ERROR--THE LOWER LIMIT PARAMETER C ',
35246     1         'FOR LOG-BETA RANDOM NUMBERS IS NON-POSITIVE.')
35247        CALL DPWRST('XXX','BUG ')
35248        WRITE(ICOUT,46)C
35249        CALL DPWRST('XXX','BUG ')
35250        GOTO9000
35251      ELSEIF(D.LE.C)THEN
35252        WRITE(ICOUT,16)
35253   16   FORMAT('***** ERROR--THE UPPER LIMIT PARAMETER D ',
35254     1         'FOR LOG-BETA RANDOM NUMBERS IS NON-POSITIVE.')
35255        CALL DPWRST('XXX','BUG ')
35256        WRITE(ICOUT,46)C
35257        CALL DPWRST('XXX','BUG ')
35258        WRITE(ICOUT,46)D
35259        CALL DPWRST('XXX','BUG ')
35260        GOTO9000
35261      ENDIF
35262C
35263   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',G15.7)
35264   47 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',I8)
35265C
35266      CALL BETRAN(N,ALPHA,BETA,ISEED,X)
35267      DO100I=1,N
35268        X(I)=EXP(LOG(C) + (LOG(D)-LOG(C))*X(I))
35269  100 CONTINUE
35270C
35271 9000 CONTINUE
35272      RETURN
35273      END
35274      SUBROUTINE LCTCDF(X,N,CDF)
35275C
35276C     PURPOSE--THIS SUBROUTINE COMPUTES THE CUMULATIVE DISTRIBUTION
35277C              FUNCTION VALUE FOR THE LEADS IN COIN TOSSING
35278C              DISTRIBUTION ON THE INTERVAL (0,N).
35279C              THIS DISTRIBUTION HAS MEAN = N/2
35280C              AND STANDARD DEVIATION = SQRT(N(N+1)/8)
35281C              THIS DISTRIBUTION HAS THE PROBABILITY
35282C              MASS FUNCTION:
35283C
35284C                P(X;N) = (2*X)!(2*N-2*X)!*2**(-2*N)/
35285C                         X!*X!*(N-X)!*(N-X)!
35286C                         X = 0, 1, ..., N
35287C
35288C     INPUT  ARGUMENTS--X      = THE SINGLE PRECISION VALUE AT
35289C                                WHICH THE CUMULATIVE DISTRIBUTION
35290C                                FUNCTION IS TO BE EVALUATED.
35291C                       N      = THE INTEGER VALUE THAT SPECIFIES
35292C                                THE MAXIMUM VALUE
35293C     OUTPUT ARGUMENTS--CDF    = THE SINGLE PRECISION CUMULATIVE
35294C                                DISTRIBUTION FUNCTION VALUE.
35295C     OUTPUT--THE SINGLE PRECISION CUMULATIVE DISTRIBUTION
35296C             FUNCTION VALUE CDF.
35297C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
35298C     RESTRICTIONS--X SHOULD BE BETWEEN 0 AND N, INCLUSIVELY.
35299C     OTHER DATAPAC   SUBROUTINES NEEDED--DLNGAMM.
35300C     FORTRAN LIBRARY SUBROUTINES NEEDED--EXP.
35301C     MODE OF INTERNAL OPERATIONS--DOUBLE PRECISION.
35302C     LANGUAGE--ANSI FORTRAN.
35303C     REFERENCES--JOHNSON, KOTZ, AND KEMP (1992).  "UNIVARIATE
35304C                 DISCRETE DISTRIBUTIONS" SECOND EDITION,
35305C                 PAGES 274-275.
35306C     WRITTEN BY--JAMES J. FILLIBEN
35307C                 STATISTICAL ENGINEERING DIVISION
35308C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
35309C                 GAITHERSBURG, MD 20899-8980
35310C                 PHONE:  301-975-2855
35311C     ORIGINAL VERSION--JUNE      2006.
35312C
35313C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
35314C
35315C---------------------------------------------------------------------
35316C
35317      DOUBLE PRECISION DX
35318      DOUBLE PRECISION DN
35319      DOUBLE PRECISION DNUM
35320      DOUBLE PRECISION DENOM
35321      DOUBLE PRECISION DPDF
35322      DOUBLE PRECISION DCDF
35323      DOUBLE PRECISION DLNGAM
35324C
35325      INCLUDE 'DPCOP2.INC'
35326C
35327C---------------------------------------------------------------------
35328C
35329C     CHECK THE INPUT ARGUMENTS FOR ERRORS
35330C
35331      CDF=0.0
35332C
35333      IF(N.LT.0)THEN
35334        WRITE(ICOUT,12)
35335        CALL DPWRST('XXX','BUG ')
35336        WRITE(ICOUT,46)N
35337        CALL DPWRST('XXX','BUG ')
35338        GOTO9000
35339      ENDIF
35340   12 FORMAT('***** ERROR--THE SECOND INPUT ARGUMENT TO THE ',
35341     1       'LCTCDF SUBROUTINE IS LESS THAN 0.')
35342C
35343      IX=INT(X+0.5)
35344      IF(IX.LT.0 .OR. IX.GT.N)THEN
35345        WRITE(ICOUT,2)
35346        CALL DPWRST('XXX','BUG ')
35347        WRITE(ICOUT,46)IX
35348        CALL DPWRST('XXX','BUG ')
35349        GOTO9000
35350      ENDIF
35351    2 FORMAT('***** ERROR--THE FIRST INPUT ARGUMENT TO THE ',
35352     1       'LCTCDF SUBROUTINE IS OUTSIDE THE (0,N) INTERVAL')
35353C
35354   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',I8)
35355C
35356C-----START POINT-----------------------------------------------------
35357C
35358      DN=DBLE(N)
35359C
35360      DCDF=0.0D0
35361      DO100I=0,IX
35362        DX=DBLE(I)
35363        DNUM=DLNGAM(2.0D0*DX+1) + DLNGAM(2.0D0*DN-2.0D0*DX+1)
35364     1       -2.0D0*DN*DLOG(2.0D0)
35365        DENOM=2.0D0*(DLNGAM(DX+1.0D0) + DLNGAM(DN-DX+1))
35366        DPDF=DEXP(DNUM-DENOM)
35367        DCDF=DCDF + DPDF
35368  100 CONTINUE
35369      CDF=REAL(DCDF)
35370C
35371 9000 CONTINUE
35372      RETURN
35373      END
35374      SUBROUTINE LCTPDF(X,N,PDF)
35375C
35376C     PURPOSE--THIS SUBROUTINE COMPUTES THE PROBABILITY DENSITY
35377C              FUNCTION VALUE FOR THE LEADS IN COIN TOSSING
35378C              DISTRIBUTION ON THE INTERVAL (0,N).
35379C              THIS DISTRIBUTION HAS MEAN = N/2
35380C              AND STANDARD DEVIATION = SQRT(N(N+1)/8)
35381C              THIS DISTRIBUTION HAS THE PROBABILITY
35382C              MASS FUNCTION:
35383C
35384C                P(X;N) = (2*X)!(2*N-2*X)!*2**(-2*N)/
35385C                         X!*X!*(N-X)!*(N-X)!
35386C                         X = 0, 1, ..., N
35387C
35388C     INPUT  ARGUMENTS--X      = THE SINGLE PRECISION VALUE AT
35389C                                WHICH THE PROBABILITY DENSITY
35390C                                FUNCTION IS TO BE EVALUATED.
35391C                       N      = THE INTEGER VALUE THAT SPECIFIES
35392C                                THE MAXIMUM VALUE
35393C     OUTPUT ARGUMENTS--PDF    = THE SINGLE PRECISION PROBABILITY
35394C                                DENSITY FUNCTION VALUE.
35395C     OUTPUT--THE SINGLE PRECISION PROBABILITY DENSITY
35396C             FUNCTION VALUE PDF.
35397C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
35398C     RESTRICTIONS--X SHOULD BE BETWEEN 0 AND N, INCLUSIVELY.
35399C     OTHER DATAPAC   SUBROUTINES NEEDED--DLNGAMM.
35400C     FORTRAN LIBRARY SUBROUTINES NEEDED--EXP.
35401C     MODE OF INTERNAL OPERATIONS--DOUBLE PRECISION.
35402C     LANGUAGE--ANSI FORTRAN.
35403C     REFERENCES--JOHNSON, KOTZ, AND KEMP (1992).  "UNIVARIATE
35404C                 DISCRETE DISTRIBUTIONS" SECOND EDITION,
35405C                 PAGES 274-275.
35406C     WRITTEN BY--JAMES J. FILLIBEN
35407C                 STATISTICAL ENGINEERING DIVISION
35408C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
35409C                 GAITHERSBURG, MD 20899-8980
35410C                 PHONE:  301-975-2855
35411C     ORIGINAL VERSION--JUNE      2006.
35412C
35413C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
35414C
35415C---------------------------------------------------------------------
35416C
35417      DOUBLE PRECISION DX
35418      DOUBLE PRECISION DN
35419      DOUBLE PRECISION DNUM
35420      DOUBLE PRECISION DENOM
35421      DOUBLE PRECISION DPDF
35422      DOUBLE PRECISION DLNGAM
35423C
35424      INCLUDE 'DPCOP2.INC'
35425C
35426C---------------------------------------------------------------------
35427C
35428C     CHECK THE INPUT ARGUMENTS FOR ERRORS
35429C
35430      PDF=0.0
35431C
35432      IF(N.LT.0)THEN
35433        WRITE(ICOUT,12)
35434        CALL DPWRST('XXX','BUG ')
35435        WRITE(ICOUT,46)N
35436        CALL DPWRST('XXX','BUG ')
35437        GOTO9000
35438      ENDIF
35439   12 FORMAT('***** ERROR--THE SECOND INPUT ARGUMENT TO THE ',
35440     1       'LCTPDF SUBROUTINE IS LESS THAN 0.')
35441C
35442      IX=INT(X+0.5)
35443      IF(IX.LT.0 .OR. IX.GT.N)THEN
35444        WRITE(ICOUT,2)
35445        CALL DPWRST('XXX','BUG ')
35446        WRITE(ICOUT,46)IX
35447        CALL DPWRST('XXX','BUG ')
35448        GOTO9000
35449      ENDIF
35450    2 FORMAT('***** ERROR--THE FIRST INPUT ARGUMENT TO THE ',
35451     1       'LCTPDF SUBROUTINE IS OUTSIDE THE (0,N) INTERVAL')
35452C
35453   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',I8)
35454C
35455C-----START POINT-----------------------------------------------------
35456C
35457      DX=DBLE(IX)
35458      DN=DBLE(N)
35459      DNUM=DLNGAM(2.0D0*DX+1) + DLNGAM(2.0D0*DN-2.0D0*DX+1)
35460     1     -2.0D0*DN*DLOG(2.0D0)
35461      DENOM=2.0D0*(DLNGAM(DX+1.0D0) + DLNGAM(DN-DX+1))
35462      DPDF=DEXP(DNUM-DENOM)
35463      PDF=REAL(DPDF)
35464C
35465 9000 CONTINUE
35466      RETURN
35467      END
35468      SUBROUTINE LCTPPF(P,N,PPF)
35469C
35470C     PURPOSE--THIS SUBROUTINE COMPUTES THE PERCENT POINT
35471C              FUNCTION VALUE FOR THE LEADS IN COIN TOSSING
35472C              DISTRIBUTION ON THE INTERVAL (0,N).
35473C              THIS DISTRIBUTION HAS MEAN = N/2
35474C              AND STANDARD DEVIATION = SQRT(N(N+1)/8)
35475C              THIS DISTRIBUTION HAS THE PROBABILITY
35476C              MASS FUNCTION:
35477C
35478C                P(X;N) = (2*X)!(2*N-2*X)!*2**(-2*N)/
35479C                         X!*X!*(N-X)!*(N-X)!
35480C                         X = 0, 1, ..., N
35481C
35482C     INPUT  ARGUMENTS--P      = THE SINGLE PRECISION VALUE AT
35483C                                WHICH THE PERCENT POINT
35484C                                FUNCTION IS TO BE EVALUATED.
35485C                       N      = THE INTEGER VALUE THAT SPECIFIES
35486C                                THE MAXIMUM VALUE
35487C     OUTPUT ARGUMENTS--PPF    = THE SINGLE PRECISION PERCENT POINT
35488C                                FUNCTION VALUE.
35489C     OUTPUT--THE SINGLE PRECISION PERCENT POINT
35490C             FUNCTION VALUE PPF.
35491C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
35492C     RESTRICTIONS--0 <= P <= 1
35493C     OTHER DATAPAC   SUBROUTINES NEEDED--DLNGAMM.
35494C     FORTRAN LIBRARY SUBROUTINES NEEDED--EXP.
35495C     MODE OF INTERNAL OPERATIONS--DOUBLE PRECISION.
35496C     LANGUAGE--ANSI FORTRAN.
35497C     REFERENCES--JOHNSON, KOTZ, AND KEMP (1992).  "UNIVARIATE
35498C                 DISCRETE DISTRIBUTIONS" SECOND EDITION,
35499C                 PAGES 274-275.
35500C     WRITTEN BY--JAMES J. FILLIBEN
35501C                 STATISTICAL ENGINEERING DIVISION
35502C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
35503C                 GAITHERSBURG, MD 20899-8980
35504C                 PHONE:  301-975-2855
35505C     ORIGINAL VERSION--JUNE      2006.
35506C
35507C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
35508C
35509C---------------------------------------------------------------------
35510C
35511      DOUBLE PRECISION DP
35512      DOUBLE PRECISION DX
35513      DOUBLE PRECISION DN
35514      DOUBLE PRECISION DNUM
35515      DOUBLE PRECISION DENOM
35516      DOUBLE PRECISION DPDF
35517      DOUBLE PRECISION DCDF
35518      DOUBLE PRECISION DEPS
35519      DOUBLE PRECISION DLNGAM
35520C
35521      INCLUDE 'DPCOP2.INC'
35522C
35523C---------------------------------------------------------------------
35524C
35525C     CHECK THE INPUT ARGUMENTS FOR ERRORS
35526C
35527      PPF=0.0
35528C
35529      IF(N.LT.0)THEN
35530        WRITE(ICOUT,12)
35531        CALL DPWRST('XXX','BUG ')
35532        WRITE(ICOUT,46)N
35533        CALL DPWRST('XXX','BUG ')
35534        GOTO9000
35535      ENDIF
35536   12 FORMAT('***** ERROR--THE SECOND ARGUMENT TO ',
35537     1       'LCTPPF IS LESS THAN 0.')
35538C
35539      IF(P.LT.0.0 .OR. P.GT.1.0)THEN
35540        WRITE(ICOUT,2)
35541        CALL DPWRST('XXX','BUG ')
35542        WRITE(ICOUT,47)P
35543        CALL DPWRST('XXX','BUG ')
35544        GOTO9000
35545      ENDIF
35546    2 FORMAT('***** ERROR--THE FIRST ARGUMENT TO ',
35547     1       'LCTPPF IS OUTSIDE THE (0,1) INTERVAL')
35548C
35549   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',I8)
35550   47 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',G15.7)
35551C
35552C-----START POINT-----------------------------------------------------
35553C
35554C     P = 0 AND P = 1 CASES
35555C
35556      IF(P.LE.0.0)THEN
35557        PPF=0.0
35558        GOTO9000
35559      ELSEIF(P.GE.1.0)THEN
35560        PPF=REAL(N)
35561        GOTO9000
35562      ENDIF
35563C
35564      DP=DBLE(P)
35565      DN=DBLE(N)
35566C
35567      DEPS=1.0D-7
35568      DCDF=0.0D0
35569      DO100I=0,N
35570        DX=DBLE(I)
35571        DNUM=DLNGAM(2.0D0*DX+1) + DLNGAM(2.0D0*DN-2.0D0*DX+1)
35572     1       -2.0D0*DN*DLOG(2.0D0)
35573        DENOM=2.0D0*(DLNGAM(DX+1.0D0) + DLNGAM(DN-DX+1))
35574        DPDF=DEXP(DNUM-DENOM)
35575        DCDF=DCDF + DPDF
35576C
35577        IF(DCDF.GE.DP-DEPS)THEN
35578          PPF=REAL(I)
35579          GOTO9000
35580        ENDIF
35581C
35582  100 CONTINUE
35583C
35584      PPF=REAL(N)
35585      GOTO9000
35586C
35587 9000 CONTINUE
35588      RETURN
35589      END
35590      SUBROUTINE LCTRAN(N,NPAR,ISEED,X)
35591C
35592C     PURPOSE--THIS SUBROUTINE GENERATES A RANDOM SAMPLE OF SIZE N
35593C              FROM THE LEADS IN COIN TOSSING DISTRIBUTION
35594C              WITH SHAPE PARAMETERS NPAR.
35595C              THIS DISTRIBUTION IS DEFINED FOR
35596C              NON-NEGATIVE INTEGERS IN THE RANGE 0 TO NPAR.
35597C              THIS DISTRIBUTION HAS THE PROBABILITY FUNCTION
35598C
35599C                P(X;N) = (2*X)!(2*N-2*X)!*2**(-2*N)/
35600C                         X!*X!*(N-X)!*(N-X)!
35601C                         X = 0, 1, ..., N
35602C
35603C     INPUT  ARGUMENTS--N      = THE DESIRED INTEGER NUMBER
35604C                                OF RANDOM NUMBERS TO BE
35605C                                GENERATED.
35606C                     --NPAR   = THE INTEGER VALUE
35607C                                OF THE SHAPE PARAMETER.
35608C     OUTPUT ARGUMENTS--X      = A SINGLE PRECISION VECTOR
35609C                                (OF DIMENSION AT LEAST N)
35610C                                INTO WHICH THE GENERATED
35611C                                RANDOM SAMPLE WILL BE PLACED.
35612C     OUTPUT--A RANDOM SAMPLE OF SIZE N
35613C             FROM THE LEADS IN COIN TOSSING DISTRIBUTION
35614C             WITH SHAPE PARAMETERS N AND NPAR.
35615C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
35616C     RESTRICTIONS--THERE IS NO RESTRICTION ON THE MAXIMUM VALUE
35617C                   OF N FOR THIS SUBROUTINE.
35618C                 --NPAR > 0
35619C     OTHER DATAPAC   SUBROUTINES NEEDED--UNIRAN, LCTPPF
35620C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE.
35621C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
35622C     LANGUAGE--ANSI FORTRAN (1977)
35623C     REFERENCES--JOHNSON, KOTZ, AND KEMP (1992).  "UNIVARIATE
35624C                 DISCRETE DISTRIBUTIONS", SECOND EDITION,
35625C                 WILEY, PP. 242-244.
35626C     WRITTEN BY--JAMES J. FILLIBEN
35627C                 STATISTICAL ENGINEERING DIVISION
35628C                 INFORMATION TECHNOLOGY LABORATORY
35629C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
35630C                 GAITHERSBURG, MD 20899-8980
35631C                 PHONE--301-975-2899
35632C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
35633C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
35634C     LANGUAGE--ANSI FORTRAN (1977)
35635C     VERSION NUMBER--2006/6
35636C     ORIGINAL VERSION--JUNE      2006.
35637C
35638C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
35639C
35640C---------------------------------------------------------------------
35641C
35642      INTEGER N
35643      INTEGER NPAR
35644      DIMENSION X(*)
35645C
35646C-----COMMON----------------------------------------------------------
35647C
35648      INCLUDE 'DPCOP2.INC'
35649C
35650C-----START POINT-----------------------------------------------------
35651C
35652C     CHECK THE INPUT ARGUMENTS FOR ERRORS
35653C
35654      IF(N.LT.1)THEN
35655        WRITE(ICOUT, 5)
35656        CALL DPWRST('XXX','BUG ')
35657        WRITE(ICOUT,47)N
35658        CALL DPWRST('XXX','BUG ')
35659        GOTO9999
35660      ENDIF
35661C
35662      IF(NPAR.LE.0.0)THEN
35663        WRITE(ICOUT,12)
35664        CALL DPWRST('XXX','BUG ')
35665        WRITE(ICOUT,47)NPAR
35666        CALL DPWRST('XXX','BUG ')
35667        GOTO9999
35668      ENDIF
35669    5 FORMAT('***** ERROR--THE REQUESTED NUMBER OF ',
35670     1'LEADS IN COIN TOSSING RANDOM NUMBERS IS NON-POSITIVE')
35671   12 FORMAT('***** ERROR--THE NPAR PARAMETER FOR THE ',
35672     1'LEADS IN COIN TOSSING RANDOM NUMBERS IS NON-POSITIVE')
35673   47 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',I8)
35674C
35675C 100 CONTINUE
35676C
35677      CALL UNIRAN(N,ISEED,X)
35678      DO100I=1,N
35679        XTEMP=X(I)
35680        CALL LCTPPF(XTEMP,NPAR,PPF)
35681        X(I)=PPF
35682  100 CONTINUE
35683C
35684 9999 CONTINUE
35685C
35686      RETURN
35687      END
35688      SUBROUTINE LDECDF(X,ALPHA,CDF)
35689C
35690C     PURPOSE--THIS SUBROUTINE COMPUTES THE CUMULATIVE DISTRIBUTION
35691C              FUNCTION VALUE FOR THE LOG DOUBLE EXPONENTIAL
35692C              (LAPLACE) DISTRIBUTION.
35693C              THIS DISTRIBUTION IS DEFINED FOR ALL POSITIVE X AND
35694C              HAS THE CUMULATIVE DISTRIBUTION FUNCTION
35695C              F(X) = 0.5*X**ALPHA           0 < X < 1
35696C                   = 1.0 - 0.5*X**ALPHA     X >= 1
35697C     INPUT  ARGUMENTS--X      = THE SINGLE PRECISION VALUE AT
35698C                                WHICH THE CUMULATIVE DISTRIBUTION
35699C                                FUNCTION IS TO BE EVALUATED.
35700C                     --ALPHA  = THE SINLE PRECISION SHAPE PARAMETER
35701C     OUTPUT ARGUMENTS--CDF    = THE SINGLE PRECISION CUMULATIVE
35702C                                DISTRIBUTION FUNCTION VALUE.
35703C     OUTPUT--THE SINGLE PRECISION CUMULATIVE DISTRIBUTION
35704C             FUNCTION VALUE CDF.
35705C     PRINTING--NONE.
35706C     RESTRICTIONS--NONE.
35707C     OTHER DATAPAC   SUBROUTINES NEEDED--NONE.
35708C     FORTRAN LIBRARY SUBROUTINES NEEDED--EXP.
35709C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
35710C     LANGUAGE--ANSI FORTRAN.
35711C     REFERENCES--XX
35712C     WRITTEN BY--JAMES J. FILLIBEN
35713C                 STATISTICAL ENGINEERING LABORATORY (205.03)
35714C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
35715C                 GAITHERSBURG, MD 20899-8980
35716C                 PHONE:  301-975-2899
35717C     ORIGINAL VERSION--SEPTEMBER 2001.
35718C
35719C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
35720C
35721      DOUBLE PRECISION DX
35722      DOUBLE PRECISION DALPHA
35723      DOUBLE PRECISION DCDF
35724C
35725C-----COMMON----------------------------------------------------------
35726C
35727      INCLUDE 'DPCOP2.INC'
35728C
35729C---------------------------------------------------------------------
35730C
35731C     CHECK THE INPUT ARGUMENTS FOR ERRORS.
35732C     NO INPUT ARGUMENT ERRORS POSSIBLE
35733C     FOR THIS DISTRIBUTION.
35734C
35735      CDF=0.0
35736C
35737      IF(X.LE.0.0)THEN
35738        WRITE(ICOUT,15)
35739   15   FORMAT('***** FATAL ERROR--THE FIRST INPUT ARGUMENT TO THE ',
35740     1         'LDECDF SUBROUTINE IS NON-POSITIVE *****')
35741        CALL DPWRST('XXX','BUG ')
35742        WRITE(ICOUT,46)X
35743   46   FORMAT('***** THE VALUE OF THE ARGUMENT IS ',E15.8,' *****')
35744        CALL DPWRST('XXX','BUG ')
35745        GOTO9000
35746      ENDIF
35747C
35748      IF(ALPHA.LE.0.0)THEN
35749        WRITE(ICOUT,25)
35750   25   FORMAT('***** FATAL ERROR--THE SECOND INPUT ARGUMENT TO THE ',
35751     1         'LDECDF SUBROUTINE IS NON-POSITIVE *****')
35752        CALL DPWRST('XXX','BUG ')
35753        WRITE(ICOUT,46)ALPHA
35754        CALL DPWRST('XXX','BUG ')
35755        GOTO9000
35756      ENDIF
35757C
35758C-----START POINT-----------------------------------------------------
35759C
35760      DX=DBLE(X)
35761      DALPHA=DBLE(ALPHA)
35762C
35763      IF(X.LT.1.0)THEN
35764        DCDF=0.5D0*DX**DALPHA
35765      ELSE
35766        DCDF=1.0D0 - 0.5D0*DX**(-DALPHA)
35767      ENDIF
35768      CDF=REAL(DCDF)
35769C
35770 9000 CONTINUE
35771      RETURN
35772      END
35773      SUBROUTINE LDEPDF(X,ALPHA,PDF)
35774C
35775C     PURPOSE--THIS SUBROUTINE COMPUTES THE PROBABILITY DENSITY
35776C              FUNCTION VALUE FOR THE LOG DOUBLE EXPONENTIAL
35777C              (LAPLACE) DISTRIBUTION.
35778C              THIS DISTRIBUTION IS DEFINED FOR ALL POSITIVE X AND
35779C              HAS THE PROBABILITY DENSITY FUNCTION
35780C              F(X) = (ALPHA/2)*X**(ALPHA-1)   0 < X < 1
35781C                   = (ALPHA/2)*X**(-ALPHA-1)   X>= 1
35782C     INPUT  ARGUMENTS--X      = THE SINGLE PRECISION VALUE AT
35783C                                WHICH THE PROBABILITY DENSITY
35784C                                FUNCTION IS TO BE EVALUATED.
35785C                     --ALPHA  = THE SINLE PRECISION SHAPE PARAMETER
35786C     OUTPUT ARGUMENTS--PDF    = THE SINGLE PRECISION PROBABILITY
35787C                                DENSITY FUNCTION VALUE.
35788C     OUTPUT--THE SINGLE PRECISION PROBABILITY DENSITY
35789C             FUNCTION VALUE PDF.
35790C     PRINTING--NONE.
35791C     RESTRICTIONS--NONE.
35792C     OTHER DATAPAC   SUBROUTINES NEEDED--NONE.
35793C     FORTRAN LIBRARY SUBROUTINES NEEDED--EXP, LOG.
35794C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
35795C     LANGUAGE--ANSI FORTRAN.
35796C     REFERENCES--XX
35797C     WRITTEN BY--JAMES J. FILLIBEN
35798C                 STATISTICAL ENGINEERING LABORATORY (205.03)
35799C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
35800C                 GAITHERSBURG, MD 20899
35801C                 PHONE:  301-975-2899
35802C     ORIGINAL VERSION--SEPTEMBER 2001.
35803C
35804C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
35805C
35806      DOUBLE PRECISION DX
35807      DOUBLE PRECISION DALPHA
35808      DOUBLE PRECISION DTWO
35809      DOUBLE PRECISION DPDF
35810      DOUBLE PRECISION DTERM
35811C
35812C-----COMMON----------------------------------------------------------
35813C
35814      INCLUDE 'DPCOP2.INC'
35815C
35816C---------------------------------------------------------------------
35817C
35818C     CHECK THE INPUT ARGUMENTS FOR ERRORS.
35819C
35820      PDF=0.0
35821C
35822      IF(X.LE.0.0)THEN
35823        WRITE(ICOUT,15)
35824   15   FORMAT('***** FATAL ERROR--THE FIRST INPUT ARGUMENT TO THE ',
35825     1         'LDEPDF SUBROUTINE IS NON-POSITIVE *****')
35826        CALL DPWRST('XXX','BUG ')
35827        WRITE(ICOUT,46)X
35828   46   FORMAT('***** THE VALUE OF THE ARGUMENT IS ',E15.8,' *****')
35829        CALL DPWRST('XXX','BUG ')
35830        GOTO9000
35831      ENDIF
35832C
35833      IF(ALPHA.LE.0.0)THEN
35834        WRITE(ICOUT,25)
35835   25   FORMAT('***** FATAL ERROR--THE SECOND INPUT ARGUMENT TO THE ',
35836     1         'LDEPDF SUBROUTINE IS NON-POSITIVE *****')
35837        CALL DPWRST('XXX','BUG ')
35838        WRITE(ICOUT,46)ALPHA
35839        CALL DPWRST('XXX','BUG ')
35840        GOTO9000
35841      ENDIF
35842C
35843C-----START POINT-----------------------------------------------------
35844C
35845      DX=DBLE(X)
35846      DALPHA=DBLE(ALPHA)
35847      DTWO=DLOG(2.0D0)
35848C
35849      IF(X.LT.1.0)THEN
35850        DTERM=DLOG(DALPHA) - DTWO + (DALPHA-1.0D0)*DLOG(DX)
35851        DPDF=DEXP(DTERM)
35852      ELSE
35853        DTERM=DLOG(DALPHA) - DTWO + (-DALPHA-1.0D0)*DLOG(DX)
35854        DPDF=DEXP(DTERM)
35855      ENDIF
35856      PDF=REAL(DPDF)
35857C
35858 9000 CONTINUE
35859      RETURN
35860      END
35861      SUBROUTINE LDEPPF(P,ALPHA,PPF)
35862C
35863C     PURPOSE--THIS SUBROUTINE COMPUTES THE PERCENT POINT
35864C              FUNCTION VALUE FOR THE LOG DOUBLE EXPONENTIAL
35865C              (LAPLACE) DISTRIBUTION.
35866C              THIS DISTRIBUTION IS DEFINED FOR ALL POSITIVE X AND
35867C              HAS THE PERCENT POINT FUNCTION
35868C              G(P) = SQRT(2*P)
35869C              NOTE THAT THE PERCENT POINT FUNCTION OF A DISTRIBUTION
35870C              IS IDENTICALLY THE SAME AS THE INVERSE CUMULATIVE
35871C              DISTRIBUTION FUNCTION OF THE DISTRIBUTION.
35872C     INPUT  ARGUMENTS--P      = THE SINGLE PRECISION VALUE
35873C                                (BETWEEN 0.0 AND 1.0)
35874C                                AT WHICH THE PERCENT POINT
35875C                                FUNCTION IS TO BE EVALUATED.
35876C                     --ALPHA  = THE SINLE PRECISION SHAPE PARAMETER
35877C     OUTPUT ARGUMENTS--PPF    = THE SINGLE PRECISION PERCENT
35878C                                POINT FUNCTION VALUE.
35879C     OUTPUT--THE SINGLE PRECISION PERCENT POINT
35880C             FUNCTION VALUE PPF.
35881C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
35882C     RESTRICTIONS--P SHOULD BE BETWEEN 0.0 AND 1.0, EXCLUSIVELY.
35883C     OTHER DATAPAC   SUBROUTINES NEEDED--NONE.
35884C     FORTRAN LIBRARY SUBROUTINES NEEDED--LOG.
35885C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
35886C     LANGUAGE--ANSI FORTRAN (1977)
35887C     REFERENCES--XX
35888C     WRITTEN BY--JAMES J. FILLIBEN
35889C                 STATISTICAL ENGINEERING DIVISION
35890C                 INFORMATION TECHNOLOGY LABORATORY
35891C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
35892C                 GAITHERSBURG, MD 20899-8980
35893C                 PHONE--301-975-2899
35894C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
35895C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
35896C     LANGUAGE--ANSI FORTRAN (1966)
35897C               EXCEPTION--HOLLERITH STRINGS IN FORMAT STATEMENTS
35898C                          DENOTED BY QUOTES RATHER THAN NH.
35899C     VERSION NUMBER--2001/9
35900C     ORIGINAL VERSION--SEPTEMBER 2001.
35901C
35902C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
35903C
35904      DOUBLE PRECISION DP
35905      DOUBLE PRECISION DALPHA
35906      DOUBLE PRECISION DPPF
35907C
35908C-----COMMON----------------------------------------------------------
35909C
35910      INCLUDE 'DPCOP2.INC'
35911C
35912C-----START POINT-----------------------------------------------------
35913C
35914C     CHECK THE INPUT ARGUMENTS FOR ERRORS
35915C
35916      IF(P.LE.0.0.OR.P.GE.1.0)THEN
35917        WRITE(ICOUT,1)
35918        CALL DPWRST('XXX','BUG ')
35919        WRITE(ICOUT,46)P
35920        CALL DPWRST('XXX','BUG ')
35921        GOTO9000
35922      ENDIF
35923    1 FORMAT('***** FATAL ERROR--THE 1ST INPUT ARGUMENT TO THE ',
35924     1'LDEPPF SUBROUTINE IS OUTSIDE THE ALLOWABLE (0,1) INTERVAL')
35925   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',E15.8,' *****')
35926C
35927      IF(ALPHA.LE.0.0)THEN
35928        WRITE(ICOUT,25)
35929   25   FORMAT('***** FATAL ERROR--THE SECOND INPUT ARGUMENT TO THE ',
35930     1         'LDEPPF SUBROUTINE IS NON-POSITIVE *****')
35931        CALL DPWRST('XXX','BUG ')
35932        WRITE(ICOUT,46)ALPHA
35933        CALL DPWRST('XXX','BUG ')
35934        GOTO9000
35935      ENDIF
35936C
35937      AONE=1.0
35938      DP=DBLE(P)
35939      DALPHA=DBLE(ALPHA)
35940      CALL LDECDF(AONE,ALPHA,CDF)
35941C
35942      IF(P.LT.CDF)THEN
35943        DPPF=(2.0D0*DP)**(1.0D0/DALPHA)
35944      ELSE
35945        DPPF=(2.0D0*(1.0D0-DP))**(-1.0D0/DALPHA)
35946      ENDIF
35947      PPF=REAL(DPPF)
35948C
35949 9000 CONTINUE
35950      RETURN
35951      END
35952      SUBROUTINE LDERAN(N,ALPHA,ISEED,X)
35953C
35954C     PURPOSE--THIS SUBROUTINE GENERATES A RANDOM SAMPLE OF SIZE N
35955C              FROM THE LOG DOUBLE EXPONENTIAL DISTRIBUTION
35956C              WITH TAIL LENGTH PARAMETER VALUE = ALPHA.
35957C     INPUT  ARGUMENTS--N      = THE DESIRED INTEGER NUMBER
35958C                                OF RANDOM NUMBERS TO BE
35959C                                GENERATED.
35960C                     --ALPHA  = THE SINGLE PRECISION VALUE OF THE
35961C                                TAIL LENGTH PARAMETER.
35962C                                ALPHA SHOULD BE POSITIVE.
35963C     OUTPUT ARGUMENTS--X      = A SINGLE PRECISION VECTOR
35964C                                (OF DIMENSION AT LEAST N)
35965C                                INTO WHICH THE GENERATED
35966C                                RANDOM SAMPLE WILL BE PLACED.
35967C     OUTPUT--A RANDOM SAMPLE OF SIZE N
35968C             FROM THE LOG DOUBLE EXPONENTIAL DISTRIBUTION
35969C             WITH TAIL LENGTH PARAMETER VALUE = ALPHA.
35970C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
35971C     RESTRICTIONS--THERE IS NO RESTRICTION ON THE MAXIMUM VALUE
35972C                   OF N FOR THIS SUBROUTINE.
35973C                 --ALPHA SHOULD BE POSITIVE.
35974C     OTHER DATAPAC   SUBROUTINES NEEDED--UNIRAN.
35975C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE.
35976C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
35977C     LANGUAGE--ANSI FORTRAN (1977)
35978C     REFERENCES--KOZUBOWSKI AND PODGORSKI, "LOG-LAPLACE
35979C                 DISTRIBUTIONS", PAPER DOWNLOADED FROM THEIR
35980C                 WEB SITE.
35981C     WRITTEN BY--JAMES J. FILLIBEN
35982C                 STATISTICAL ENGINEERING DIVISION
35983C                 INFORMATION TECHNOLOGY LABORATORY
35984C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
35985C                 GAITHERSBURG, MD 20899-8980
35986C                 PHONE--301-975-2855
35987C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
35988C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
35989C     LANGUAGE--ANSI FORTRAN (1977)
35990C     VERSION NUMBER--2001.10
35991C     ORIGINAL VERSION--OCTOBER   2001.
35992C     UPDATED         --MARCH     2006. COMPUTE RANDOM NUMBERS
35993C                                       AS RATIO OF UNIFORMS
35994C                                       NOTE: THIS SEEMS TO GENERATE
35995C                                       EXCESIVELY LARGE NUMBERS, SO
35996C                                       REVERT BACK TO PPF ALGORITHM
35997C
35998C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
35999C
36000C---------------------------------------------------------------------
36001C
36002      DIMENSION X(*)
36003      DIMENSION Y(2)
36004C
36005      DOUBLE PRECISION DALPHA
36006      DOUBLE PRECISION DY1
36007      DOUBLE PRECISION DY2
36008C
36009C-----COMMON----------------------------------------------------------
36010C
36011      INCLUDE 'DPCOP2.INC'
36012C
36013C-----START POINT-----------------------------------------------------
36014C
36015C     CHECK THE INPUT ARGUMENTS FOR ERRORS
36016C
36017      IF(N.LT.1)THEN
36018        WRITE(ICOUT, 5)
36019        CALL DPWRST('XXX','BUG ')
36020        WRITE(ICOUT,47)N
36021        CALL DPWRST('XXX','BUG ')
36022        GOTO9000
36023      ENDIF
36024      IF(ALPHA.LE.0.0)THEN
36025        WRITE(ICOUT,15)
36026        CALL DPWRST('XXX','BUG ')
36027        WRITE(ICOUT,46)ALPHA
36028        CALL DPWRST('XXX','BUG ')
36029        GOTO9000
36030      ENDIF
36031    5 FORMAT('***** ERROR--THE REQUESTED NUMBER OF LOG DOUBLE ',
36032     1'EXPONENTIAL RANDOM NUMBERS IS NON-POSITIVE.')
36033   15 FORMAT('***** ERROR--THE SHAPE PARAMETER FOR THE LOG DOUBLE',
36034     1' EXPONENTIAL RANDOM NUMBERS IS NON-POSITIVE.')
36035   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',E15.8,' *****')
36036   47 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',I8,' *****')
36037C
36038C     GENERATE N LOG DOUBLE EXPONENTIAL DISTRIBUTION RANDOM NUMBERS
36039C     USING THE PERCENT POINT FUNCTION TRANSFORMATION METHOD.
36040C
36041C     NOTE 3/2006: LOG DOUBLE EXPONENTIAL CAN BE REPRESENTED AS
36042C                  U1**(1/ALPHA)/U2**(1/ALPHA)
36043C
36044C     RUNNING SOME SIMULATIONS SEEMS TO SHOW THAT THE RATIO OF
36045C     UNIFORM METHOD RESULTS IN SOME EXCESSIVELY LARGE RANDOM
36046C     NUMBERS.
36047C
36048      IALG=0
36049      IF(IALG.EQ.0)THEN
36050        CALL UNIRAN(N,ISEED,X)
36051        DO100I=1,N
36052          CALL LDEPPF(X(I),ALPHA,XTEMP)
36053          X(I)=XTEMP
36054  100   CONTINUE
36055      ELSE
36056        NTEMP=2
36057        DALPHA=DBLE(ALPHA)
36058        DO200I=1,N
36059          CALL UNIRAN(NTEMP,ISEED,Y)
36060          DY1=DBLE(Y(1))
36061          DY2=DBLE(Y(2))
36062          X(I)=REAL(DY1**(1.0D0/DALPHA)/DY2**(1.0D0/DALPHA))
36063  200   CONTINUE
36064      ENDIF
36065C
36066 9000 CONTINUE
36067      RETURN
36068      END
36069      SUBROUTINE LEGNDR(X,AN,PN)
36070C
36071C     PURPOSE--THIS SUBROUTINE COMPUTES THE LEGENDRE
36072C              POLYNOMIAL OF ORDER N.
36073C     INPUT  ARGUMENTS--X      = THE SINGLE PRECISION INPUT ARGUMENT
36074C                       AN     = THE SINGLE PRECISION VALUE FOR THE
36075C                                ORDER OF THE FUNCTION (SHOULD BE
36076C                                NON-NEGATIVE ORDER)
36077C     OUTPUT ARGUMENTS--PN    = THE SINGLE PRECISION VALUE OF THE
36078C                                LEGENDRE POLYNOMIAL.
36079C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
36080C     RESTRICTIONS--
36081C     OTHER DATAPAC   SUBROUTINES NEEDED--NONE
36082C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE
36083C     MODE OF INTERNAL OPERATIONS--SOME DOUBLE PRECISION.
36084C     LANGUAGE--ANSI FORTRAN.
36085C     REFERENCES--"HANDBOOK OF MATHEMATICAL FUNCTIONS, AMS 55",
36086C                 ABRAMOWITZ AND STEGUM.
36087C                 USE FOLLOWING RECURRENCE FORMULA:
36088C                    P(N+1) = X*P(N)+(N/N+1)*(X*P(N)-P(N-1))
36089C                 FIRST FEW TERMS ARE FROM TABLE 22.9 OF ABRAMOWITZ
36090C                 AND STEGUM.
36091C     WRITTEN BY--JAMES J. FILLIBEN
36092C                 STATISTICAL ENGINEERING LABORATORY (205.03)
36093C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
36094C                 GAITHERSBURG, MD 20899-8980
36095C                 PHONE:  301-975-2855
36096C     ORIGINAL VERSION--JULY       1995.
36097C
36098C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
36099C
36100      DOUBLE PRECISION DX
36101      DOUBLE PRECISION DN
36102      DOUBLE PRECISION DPN, DPN1, DPN2
36103C
36104C-----COMMON----------------------------------------------------------
36105C
36106      INCLUDE 'DPCOP2.INC'
36107C
36108C-----START POINT-----------------------------------------------------
36109C
36110CCCCC IF(X.LT.-1.0.OR.X.GT.1.0)THEN
36111CCCCC   WRITE(ICOUT,4)
36112CCCCC   CALL DPWRST('XXX','BUG ')
36113CCCCC   WRITE(ICOUT,46)X
36114CCCCC   CALL DPWRST('XXX','BUG ')
36115CCCCC   GOTO9999
36116CCCCC ENDIF
36117CCCC4 FORMAT('***** NON-FATAL DIAGNOSTIC--THE 1ST INPUT ARGUMENT ',
36118CCCCC1'TO THE LEGNDR SUBROUTINE IS OUTSIDE THE (-1,1) INTERVAL *****')
36119CCC46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',E15.8,' *****')
36120      N=INT(AN+0.5)
36121      IF(N.LT.0)THEN
36122        WRITE(ICOUT,6)
36123        CALL DPWRST('XXX','BUG ')
36124        WRITE(ICOUT,47)N
36125        CALL DPWRST('XXX','BUG ')
36126        GOTO9999
36127      ENDIF
36128    6 FORMAT('***** NON-FATAL DIAGNOSTIC--THE 2ND INPUT ARGUMENT ',
36129     1'TO THE LEGNDR SUBROUTINE IS NEGATIVE *****')
36130   47 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',I8,' *****')
36131C
36132      DX=DBLE(X)
36133      DN=DBLE(N)
36134C
36135      IF(N.LE.0)THEN
36136        PN=1.0
36137      ELSEIF(N.EQ.1)THEN
36138        PN=X
36139      ELSEIF(N.EQ.2)THEN
36140        PN=1.5*X**2-0.5
36141      ELSEIF(N.EQ.3)THEN
36142        DPN=2.5D0*DX**3-1.5D0*DX
36143        PN=REAL(DPN)
36144      ELSE
36145        DPN1=2.5D0*DX**3-1.5D0*DX
36146        DPN2=1.5D0*DX**2-0.5D0
36147        DO1000I=4,N
36148          DN=DBLE(I)-1.0D0
36149          DPN=DX*DPN1+(DN/(DN+1.0D0))*(DX*DPN1-DPN2)
36150          DPN2=DPN1
36151          DPN1=DPN
36152 1000   CONTINUE
36153        PN=REAL(DPN)
36154      ENDIF
36155C
36156 9999 CONTINUE
36157      RETURN
36158      END
36159      SUBROUTINE LEXCDF(X,BETA,CDF)
36160C
36161C     NOTE--LOGISTIC-EXPONENTIAL CDF IS:
36162C
36163C           F(X;ALPHA,BETA) = 1 - 1/[1 + EXP(ALPHA*X) -1)**BETA]
36164C                             X > 0; ALPHA, BETA > 0
36165C
36166C           WITH (1/ALPHA) DENOTING THE SCALE PARAMETER AND
36167C           BETA DENOTING THE SHAPE PARAMETER.
36168C
36169C     WRITTEN BY--JAMES J. FILLIBEN
36170C                 STATISTICAL ENGINEERING DIVISION
36171C                 INFORMATION TECHNOLOGY LABORATORY
36172C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
36173C                 GAITHERSBURG, MD 20899-8980
36174C                 PHONE--301-975-2899
36175C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
36176C           OF THE NATIONAL BUREAU OF STANDARDS.
36177C     LANGUAGE--ANSI FORTRAN (1977)
36178C     REFERENCE--LEEMIS AND MCQUESTION (2008), "UNIVARIATE DISTRIBUTION
36179C                RELATIONSHIPS", THE AMERICAN STATISTICIAN, VOL. 62,
36180C                NO. 1, PP. 45-53.
36181C              --LAN AND LEEMIS (2007), "THE LOGISTIC-EXPONENTIAL
36182C                SURVIVAL DISTRIBUTION", TECHNICAL REPORT, THE
36183C                COLLEGE OF WILLIAM AND MARY, DEPARTMENT OF
36184C                MATHEMATICS.
36185C              --LAN AND LEEMIS (2008), "THE LOGISTIC-EXPONENTIAL
36186C                SURVIVAL DISTRIBUTION", NAVAL RESEARCH LOGISTICS,
36187C                VOL. xx, NO. xx, PP. xx.
36188C     VERSION NUMBER--2008/2
36189C     ORIGINAL VERSION--FEBRUARY  2008.
36190C
36191C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
36192C
36193      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
36194C
36195C-----COMMON----------------------------------------------------------
36196C
36197      INCLUDE 'DPCOP2.INC'
36198C
36199C-----START POINT-----------------------------------------------------
36200C
36201      CDF=0.0D0
36202C
36203      IF(BETA.LT.1.0D0)THEN
36204        IF(X.LT.0.0D0)THEN
36205          WRITE(ICOUT,106)
36206  106     FORMAT('***** WARNING--THE FIRST ARGUMENT TO LEXCDF IS ',
36207     1           'NON-POSITIVE.')
36208          CALL DPWRST('XXX','BUG ')
36209          WRITE(ICOUT,102)X
36210          CALL DPWRST('XXX','BUG ')
36211          GOTO9000
36212        ENDIF
36213      ELSE
36214        IF(X.LT.0.0D0)THEN
36215          WRITE(ICOUT,101)
36216  101     FORMAT('***** WARNING--THE FIRST ARGUMENT TO LEXCDF IS ',
36217     1           'NEGATIVE.')
36218          CALL DPWRST('XXX','BUG ')
36219          WRITE(ICOUT,102)X
36220  102     FORMAT('      THE VALUE OF THE ARGUMENT IS ',G15.7)
36221          CALL DPWRST('XXX','BUG ')
36222          GOTO9000
36223        ENDIF
36224      ENDIF
36225C
36226      IF(BETA.LE.0.0D0)THEN
36227        WRITE(ICOUT,301)
36228  301   FORMAT('***** ERROR--THE SECOND ARGUMENT TO LEXCDF IS ',
36229     1         'NON-POSITIVE.')
36230        CALL DPWRST('XXX','BUG ')
36231        WRITE(ICOUT,102)BETA
36232        CALL DPWRST('XXX','BUG ')
36233        GOTO9000
36234      ENDIF
36235C
36236      IF(X.LE.0.0D0)THEN
36237        CDF=0.0D0
36238      ELSE
36239        CDF=1.0D0 - 1.0D0/(1.0D0 + (DEXP(X) - 1.0D0)**BETA)
36240      ENDIF
36241C
36242 9000 CONTINUE
36243      RETURN
36244      END
36245      SUBROUTINE LEXCHA(X,BETA,HAZ)
36246C
36247C     NOTE--LOGISTIC-EXPONENTIAL CUMULATIVE HAZARD IS:
36248C
36249C           H(X;ALPHA,BETA) = -LOG(1/[1 + EXP(ALPHA*X) -1)**BETA])
36250C                             X >= 0; ALPHA, BETA > 0
36251C
36252C           WITH (1/ALPHA) DENOTING THE SCALE PARAMETER AND
36253C           BETA DENOTING THE SHAPE PARAMETER.
36254C
36255C     WRITTEN BY--JAMES J. FILLIBEN
36256C                 STATISTICAL ENGINEERING DIVISION
36257C                 INFORMATION TECHNOLOGY LABORATORY
36258C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
36259C                 GAITHERSBURG, MD 20899-8980
36260C                 PHONE--301-975-2899
36261C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
36262C           OF THE NATIONAL BUREAU OF STANDARDS.
36263C     LANGUAGE--ANSI FORTRAN (1977)
36264C     REFERENCE--LEEMIS AND MCQUESTION (2008), "UNIVARIATE DISTRIBUTION
36265C                RELATIONSHIPS", THE AMERICAN STATISTICIAN, VOL. 62,
36266C                NO. 1, PP. 45-53.
36267C              --LAN AND LEEMIS (2007), "THE LOGISTIC-EXPONENTIAL
36268C                SURVIVAL DISTRIBUTION", TECHNICAL REPORT, THE
36269C                COLLEGE OF WILLIAM AND MARY, DEPARTMENT OF
36270C                MATHEMATICS.
36271C              --LAN AND LEEMIS (2008), "THE LOGISTIC-EXPONENTIAL
36272C                SURVIVAL DISTRIBUTION", NAVAL RESEARCH LOGISTICS,
36273C                VOL. xx, NO. xx, PP. xx.
36274C     VERSION NUMBER--2008/2
36275C     ORIGINAL VERSION--FEBRUARY  2008.
36276C
36277C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
36278C
36279      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
36280C
36281C-----COMMON----------------------------------------------------------
36282C
36283      INCLUDE 'DPCOP2.INC'
36284C
36285C-----START POINT-----------------------------------------------------
36286C
36287      HAZ=0.0D0
36288C
36289      IF(BETA.LT.1.0D0)THEN
36290        IF(X.LT.0.0D0)THEN
36291          WRITE(ICOUT,106)
36292  106     FORMAT('***** WARNING--THE FIRST ARGUMENT TO LEXCHAZ IS ',
36293     1           'NON-POSITIVE.')
36294          CALL DPWRST('XXX','BUG ')
36295          WRITE(ICOUT,102)X
36296          CALL DPWRST('XXX','BUG ')
36297          GOTO9000
36298        ENDIF
36299      ELSE
36300        IF(X.LT.0.0D0)THEN
36301          WRITE(ICOUT,101)
36302  101     FORMAT('***** WARNING--THE FIRST ARGUMENT TO LEXCHAZ IS ',
36303     1           'NEGATIVE.')
36304          CALL DPWRST('XXX','BUG ')
36305          WRITE(ICOUT,102)X
36306  102     FORMAT('      THE VALUE OF THE ARGUMENT IS ',G15.7)
36307          CALL DPWRST('XXX','BUG ')
36308          GOTO9000
36309        ENDIF
36310      ENDIF
36311C
36312      IF(BETA.LE.0.0D0)THEN
36313        WRITE(ICOUT,301)
36314  301   FORMAT('***** ERROR--THE SECOND ARGUMENT TO LEXCHAZ IS ',
36315     1         'NON-POSITIVE.')
36316        CALL DPWRST('XXX','BUG ')
36317        WRITE(ICOUT,102)BETA
36318        CALL DPWRST('XXX','BUG ')
36319        GOTO9000
36320      ENDIF
36321C
36322      TERM1=1.0D0/(1.0D0 + (DEXP(X) - 1.0D0)**BETA)
36323      IF(TERM1.GT.0.0D0)THEN
36324        HAZ=-DLOG(TERM1)
36325      ELSE
36326        HAZ=0.0D0
36327      ENDIF
36328C
36329 9000 CONTINUE
36330      RETURN
36331      END
36332      SUBROUTINE LEXFUN (N, X, FVEC, IFLAG, XDATA, NOBS)
36333C
36334C     PURPOSE-THIS ROUTINE COMPUTES THE FUNCTIONS FOR THE
36335C             LOGISTIC-EXPONENTIAL MAXIMUM LIKELIHOOD EQUATIONS.
36336C
36337C             (N/BETA) + SUM[i=1 to N][LOG(EXP(ALPHA*X(i)) - 1) -
36338C             2*SUM[i=1 to N][(EXP(ALPHA*X(I) - 1)**BETA*
36339C             LOG(EXP(ALPHA*X(i)) -1)/{1 + (EXP(ALPHA*X(i)) - 1)**BETA}
36340C             = 0
36341C
36342C             (N/ALPHA) + SUM[i=1 to N][(BETA-1)*X(i)*EXP(ALPHA*X(i))/
36343C             (EXP(ALHA*X(i)) - 1) + SUM[i=1 to N][X(i)] -
36344C             2*SUM[i=1 to N][BETA*(EXP(ALPHA*X(I) - 1)**(BETA - 1)*
36345C             X9I)*EXP(ALPHA*X(i))/{1 + (EXP(ALPHA*X(i)) - 1)**BETA}
36346C             = 0
36347C
36348C             WHERE
36349C
36350C               BETA     = SHAPE PARAMETER
36351C               ALPHA    = SCALE PARAMETER
36352C
36353C             CALLED BY DNSQE ROUTINE FOR SOLVING SIMULTANEOUS
36354C             NONLINEAR EQUATIONS.  NOTE THAT THE CALLING SEQUENCE
36355C             DID NOT ACCOMODATE A DATA ARRAY (AND ASSCIATED NUMBER OF
36356C             OBSERVATIONS), SO THESE WERE ADDED TO THE CALL LIST.
36357C     EXAMPLE--LOGISTIC-EXPONENTIAL MAXIMUM LIKELIHOOD Y
36358C     REFERENCE--LEEMIS AND MCQUESTION (2008), "UNIVARIATE DISTRIBUTION
36359C                RELATIONSHIPS", THE AMERICAN STATISTICIAN, VOL. 62,
36360C                NO. 1, PP. 45-53.
36361C              --LAN AND LEEMIS (2007), "THE LOGISTIC-EXPONENTIAL
36362C                SURVIVAL DISTRIBUTION", TECHNICAL REPORT, THE
36363C                COLLEGE OF WILLIAM AND MARY, DEPARTMENT OF
36364C                MATHEMATICS.
36365C     WRITTEN BY--JAMES J. FILLIBEN
36366C                 STATISTICAL ENGINEERING DIVISION
36367C                 INFORMATION TECHNOLOGY LABORATORY
36368C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
36369C                 GAITHERSBURG, MD 20899-8980
36370C                 PHONE--301-975-2855
36371C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
36372C           OF THE NATIONAL BUREAU OF STANDARDS.
36373C     LANGUAGE--ANSI FORTRAN (1977)
36374C     VERSION NUMBER--2008/2
36375C     ORIGINAL VERSION--FEBRUARY  2008.
36376C
36377C---------------------------------------------------------------------
36378C
36379      DOUBLE PRECISION X(*)
36380      DOUBLE PRECISION FVEC(*)
36381      REAL XDATA(*)
36382C
36383      DOUBLE PRECISION DBETA
36384      DOUBLE PRECISION DALPHA
36385      DOUBLE PRECISION DN
36386      DOUBLE PRECISION DX
36387      DOUBLE PRECISION DSUM1
36388      DOUBLE PRECISION DSUM2
36389      DOUBLE PRECISION DSUM3
36390      DOUBLE PRECISION DSUM4
36391      DOUBLE PRECISION DSUM5
36392      DOUBLE PRECISION DTERM1
36393      DOUBLE PRECISION DTERM2
36394      DOUBLE PRECISION DTERM3
36395C
36396C-----COMMON----------------------------------------------------------
36397C
36398      INCLUDE 'DPCOP2.INC'
36399C
36400C-----START POINT-----------------------------------------------------
36401C
36402C  COMPUTE SOME SUMS
36403C
36404      N=2
36405      IFLAG=0
36406C
36407      DN=DBLE(NOBS)
36408      DBETA=DBLE(X(1))
36409      DALPHA=DBLE(X(2))
36410C
36411      DTERM1=DN/DBETA
36412      DTERM2=DN/DALPHA
36413      DSUM1=0.0D0
36414      DSUM2=0.0D0
36415      DSUM3=0.0D0
36416      DSUM4=0.0D0
36417      DSUM5=0.0D0
36418C
36419      DO200I=1,NOBS
36420C
36421        DX=DBLE(XDATA(I))
36422        DTERM4=DEXP(DALPHA*DX)
36423        DTERM3=DTERM4 - 1.0D0
36424C
36425        DSUM1=DSUM1 + DLOG(DTERM3)
36426        DSUM2=DSUM2 + DTERM3**DBETA*DLOG(DTERM3)/(1.0D0 + DTERM3**DBETA)
36427        DSUM3=DSUM3 + (DBETA-1.0D0)*DX*DTERM4/DTERM3
36428        DSUM4=DSUM4 + DBETA*DTERM3**(DBETA-1.0D0)*DX*DTERM4/
36429     1        (1.0D0 + DTERM3**DBETA)
36430        DSUM5=DSUM5 + DX
36431C
36432  200 CONTINUE
36433C
36434      FVEC(1)=DTERM1 + DSUM1 - 2.0D0*DSUM2
36435      FVEC(2)=DTERM2 + DSUM3 + DSUM5 - 2.0D0*DSUM4
36436C
36437      RETURN
36438      END
36439      SUBROUTINE LEXFU2 (N, X, FVEC, IFLAG, XDATA, NOBS)
36440C
36441C     PURPOSE-THIS ROUTINE COMPUTES THE FUNCTIONS FOR THE
36442C             STARTING VALUES OF THE LOGISTIC-EXPONENTIAL
36443C             MAXIMUM LIKELIHOOD EQUATIONS.
36444C
36445C             G(P1) = (1/ALPHA)*LOG(1 + (P1/(1 - P1)**(1/BETA))
36446C             G(P2) = (1/ALPHA)*LOG(1 + (P2/(1 - P2)**(1/BETA))
36447C
36448C             WHERE
36449C
36450C               BETA     = SHAPE PARAMETER
36451C               ALPHA    = SCALE PARAMETER
36452C
36453C             THAT IS, WE EQUATE TWO PERCENTILES OF THE DATA
36454C             (USUALLY 0.25 AND 0.75) WITH THE THEORETICAL
36455C             PERCENTILES.
36456C
36457C             CALLED BY DNSQE ROUTINE FOR SOLVING SIMULTANEOUS
36458C             NONLINEAR EQUATIONS.  NOTE THAT THE CALLING SEQUENCE
36459C             DID NOT ACCOMODATE A DATA ARRAY (AND ASSCIATED NUMBER OF
36460C             OBSERVATIONS), SO THESE WERE ADDED TO THE CALL LIST.
36461C     EXAMPLE--LOGISTIC-EXPONENTIAL MAXIMUM LIKELIHOOD Y
36462C     REFERENCE--LEEMIS AND MCQUESTION (2008), "UNIVARIATE DISTRIBUTION
36463C                RELATIONSHIPS", THE AMERICAN STATISTICIAN, VOL. 62,
36464C                NO. 1, PP. 45-53.
36465C              --LAN AND LEEMIS (2007), "THE LOGISTIC-EXPONENTIAL
36466C                SURVIVAL DISTRIBUTION", TECHNICAL REPORT, THE
36467C                COLLEGE OF WILLIAM AND MARY, DEPARTMENT OF
36468C                MATHEMATICS.
36469C     WRITTEN BY--ALAN HECKERT
36470C                 STATISTICAL ENGINEERING DIVISION
36471C                 INFORMATION TECHNOLOGY LABORATORY
36472C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
36473C                 GAITHERSBURG, MD 20899-8980
36474C                 PHONE--301-975-2899
36475C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
36476C           OF THE NATIONAL BUREAU OF STANDARDS.
36477C     LANGUAGE--ANSI FORTRAN (1977)
36478C     VERSION NUMBER--2008/2
36479C     ORIGINAL VERSION--FEBRUARY  2008.
36480C
36481C---------------------------------------------------------------------
36482C
36483      DOUBLE PRECISION X(*)
36484      DOUBLE PRECISION FVEC(*)
36485      REAL XDATA(*)
36486C
36487      DOUBLE PRECISION DBETA
36488      DOUBLE PRECISION DALPHA
36489      DOUBLE PRECISION DTERM1
36490      DOUBLE PRECISION DTERM2
36491C
36492      DOUBLE PRECISION DP1
36493      DOUBLE PRECISION DP2
36494      DOUBLE PRECISION DGP1
36495      DOUBLE PRECISION DGP2
36496      COMMON/LEXCO2/DP1,DP2,DGP1,DGP2
36497C
36498C-----COMMON----------------------------------------------------------
36499C
36500      INCLUDE 'DPCOBE.INC'
36501      INCLUDE 'DPCOP2.INC'
36502C
36503C-----START POINT-----------------------------------------------------
36504C
36505      N=2
36506      IFLAG=0
36507C
36508      IF(ISUBG4.EQ.'XFU2')THEN
36509        WRITE(ICOUT,52)NOBS,XDATA(1)
36510   52   FORMAT('NOBS,XDATA(1) = ',I8,G15.7)
36511        CALL DPWRST('XXX','BUG ')
36512      ENDIF
36513C
36514      DBETA=X(1)
36515      DALPHA=X(2)
36516      DTERM1=DP1/(1.0D0 - DP1)
36517      DTERM2=DP2/(1.0D0 - DP2)
36518C
36519      FVEC(1)=(1.0D0/DALPHA)*DLOG(1.0D0 + DTERM1**(1.0D0/DBETA)) - DGP1
36520      FVEC(2)=(1.0D0/DALPHA)*DLOG(1.0D0 + DTERM2**(1.0D0/DBETA)) - DGP2
36521C
36522      RETURN
36523      END
36524      SUBROUTINE LEXHAZ(X,BETA,HAZ)
36525C
36526C     NOTE--LOGISTIC-EXPONENTIAL HAZARD IS:
36527C
36528C           h(X;BETA) = BETA*(EXP(X) - 1)**(BETA-1)*EXP(X)/
36529C                       [1 + (EXP(X) - 1)**BETA]
36530C                             X >= 0; BETA > 0
36531C
36532C           WITH BETA DENOTING THE SHAPE PARAMETER.
36533C
36534C     WRITTEN BY--JAMES J. FILLIBEN
36535C                 STATISTICAL ENGINEERING DIVISION
36536C                 INFORMATION TECHNOLOGY LABORATORY
36537C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
36538C                 GAITHERSBURG, MD 20899-8980
36539C                 PHONE--301-975-2899
36540C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
36541C           OF THE NATIONAL BUREAU OF STANDARDS.
36542C     LANGUAGE--ANSI FORTRAN (1977)
36543C     REFERENCE--LEEMIS AND MCQUESTION (2008), "UNIVARIATE DISTRIBUTION
36544C                RELATIONSHIPS", THE AMERICAN STATISTICIAN, VOL. 62,
36545C                NO. 1, PP. 45-53.
36546C              --LAN AND LEEMIS (2007), "THE LOGISTIC-EXPONENTIAL
36547C                SURVIVAL DISTRIBUTION", TECHNICAL REPORT, THE
36548C                COLLEGE OF WILLIAM AND MARY, DEPARTMENT OF
36549C                MATHEMATICS.
36550C              --LAN AND LEEMIS (2008), "THE LOGISTIC-EXPONENTIAL
36551C                SURVIVAL DISTRIBUTION", NAVAL RESEARCH LOGISTICS,
36552C                VOL. xx, NO. xx, PP. xx.
36553C     VERSION NUMBER--2008/2
36554C     ORIGINAL VERSION--FEBRUARY  2008.
36555C
36556C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
36557C
36558      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
36559C
36560C-----COMMON----------------------------------------------------------
36561C
36562      INCLUDE 'DPCOP2.INC'
36563C
36564C-----START POINT-----------------------------------------------------
36565C
36566      HAZ=0.0D0
36567C
36568      IF(BETA.LT.1.0D0)THEN
36569        IF(X.LT.0.0D0)THEN
36570          WRITE(ICOUT,106)
36571  106     FORMAT('***** WARNING--THE FIRST ARGUMENT TO LEXHAZ IS ',
36572     1           'NON-POSITIVE.')
36573          CALL DPWRST('XXX','BUG ')
36574          WRITE(ICOUT,102)X
36575          CALL DPWRST('XXX','BUG ')
36576          GOTO9000
36577        ENDIF
36578      ELSE
36579        IF(X.LT.0.0D0)THEN
36580          WRITE(ICOUT,101)
36581  101     FORMAT('***** WARNING--THE FIRST ARGUMENT TO LEXHAZ IS ',
36582     1           'NEGATIVE.')
36583          CALL DPWRST('XXX','BUG ')
36584          WRITE(ICOUT,102)X
36585  102     FORMAT('      THE VALUE OF THE ARGUMENT IS ',G15.7)
36586          CALL DPWRST('XXX','BUG ')
36587          GOTO9000
36588        ENDIF
36589      ENDIF
36590C
36591      IF(BETA.LE.0.0D0)THEN
36592        WRITE(ICOUT,301)
36593  301   FORMAT('***** ERROR--THE SECOND ARGUMENT TO LEXHAZ IS ',
36594     1         'NON-POSITIVE.')
36595        CALL DPWRST('XXX','BUG ')
36596        WRITE(ICOUT,102)BETA
36597        CALL DPWRST('XXX','BUG ')
36598        GOTO9000
36599      ENDIF
36600C
36601      TERM1=DLOG(BETA) + X + (BETA - 1.0D0)*DLOG(DEXP(X) - 1.0D0)
36602      TERM2=DLOG(1.0D0 + (DEXP(X) - 1.0D0)**BETA)
36603      HAZ=DEXP(TERM1 - TERM2)
36604C
36605 9000 CONTINUE
36606      RETURN
36607      END
36608      SUBROUTINE LEXML1(Y,N,MAXNXT,
36609     1                  TEMP1,DTEMP1,
36610     1                  XMEAN,XSD,XVAR,XMIN,XMAX,XSUM,
36611     1                  SCALSV,SHAPSV,SCALML,SHAPML,
36612     1                  ISUBRO,IBUGA3,IERROR)
36613C
36614C     PURPOSE--THIS ROUTINE COMPUTES THE MAXIMUM LIKELIHOOD ESTIMATES FOR
36615C              THE 2-PARAMETER LOGISTIC-EXPONENTIAL DISTRIBUTION FOR THE
36616C              RAW DATA CASE (I.E., NO CENSORING AND NO GROUPING).  THIS
36617C              ROUTINE RETURNS ONLY THE POINT ESTIMATES (CONFIDENCE
36618C              INTERVALS WILL BE COMPUTED IN A SEPARATE ROUTINE).
36619C
36620C              IT IS ASSUMED THAT BASIC ERROR CHECKING HAS ALREADY BEEN
36621C              PERFORMED.
36622C
36623C              PUT THIS IN A SEPARATE ROUTINE AS IT MAY BE CALLED
36624C              FROM MULTIPLE PLACES (DPMB10 WILL GENERATE THE OUTPUT
36625C              FOR THE LOGISTIC-EXPONENTIAL MLE COMMAND).
36626C
36627C     REFERENCE--LEEMIS AND MCQUESTION (2008), "UNIVARIATE DISTRIBUTION
36628C                RELATIONSHIPS", THE AMERICAN STATISTICIAN, VOL. 62,
36629C                NO. 1, PP. 45-53.
36630C              --LAN AND LEEMIS (2007), "THE LOGISTIC-EXPONENTIAL
36631C                SURVIVAL DISTRIBUTION", TECHNICAL REPORT, THE
36632C                COLLEGE OF WILLIAM AND MARY, DEPARTMENT OF
36633C                MATHEMATICS.
36634C     WRITTEN BY--JAMES J. FILLIBEN
36635C                 STATISTICAL ENGINEERING DIVISION
36636C                 INFORMATION TECHNOLOGY LABORATORY
36637C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
36638C                 GAITHERSBURG, MD 20899-8980
36639C                 PHONE--301-975-2855
36640C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
36641C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
36642C     LANGUAGE--ANSI FORTRAN (1977)
36643C     VERSION NUMBER--2010/2
36644C     ORIGINAL VERSION--FEBRUARY  2010. EXTRACTED AS A SEPARATE
36645C                                       SUBROUTINE (FROM DPMB10)
36646C
36647C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
36648C
36649      DIMENSION Y(*)
36650      DIMENSION TEMP1(*)
36651      DOUBLE PRECISION DTEMP1(*)
36652C
36653      DOUBLE PRECISION TOL
36654      DOUBLE PRECISION XPAR(2)
36655      DOUBLE PRECISION FVEC(2)
36656C
36657      DOUBLE PRECISION DP1
36658      DOUBLE PRECISION DP2
36659      DOUBLE PRECISION DGP1
36660      DOUBLE PRECISION DGP2
36661C
36662      EXTERNAL LEXFUN
36663      EXTERNAL LEXFU2
36664C
36665      CHARACTER*4 ISUBRO
36666      CHARACTER*4 IBUGA3
36667      CHARACTER*4 IERROR
36668C
36669      CHARACTER*4 IWRITE
36670      CHARACTER*40 IDIST
36671C
36672      CHARACTER*4 ISUBN1
36673      CHARACTER*4 ISUBN2
36674      CHARACTER*4 ISTEPN
36675C
36676C-----COMMON----------------------------------------------------------
36677C
36678      INCLUDE 'DPCOP2.INC'
36679C
36680C-----START POINT-----------------------------------------------------
36681C
36682      ISUBN1='B10M'
36683      ISUBN2='L1  '
36684      IERROR='NO'
36685      IWRITE='OFF'
36686C
36687      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'XML1')THEN
36688        WRITE(ICOUT,999)
36689  999   FORMAT(1X)
36690        CALL DPWRST('XXX','WRIT')
36691        WRITE(ICOUT,51)
36692   51   FORMAT('**** AT THE BEGINNING OF LEXML1--')
36693        CALL DPWRST('XXX','WRIT')
36694        WRITE(ICOUT,52)IBUGA3,ISUBRO
36695   52   FORMAT('IBUGA3,ISUBRO = ',A4,2X,A4)
36696        CALL DPWRST('XXX','WRIT')
36697        DO56I=1,MIN(N,100)
36698          WRITE(ICOUT,57)I,Y(I)
36699   57     FORMAT('I,Y(I) = ',I8,G15.7)
36700          CALL DPWRST('XXX','WRIT')
36701   56   CONTINUE
36702      ENDIF
36703C
36704C               ********************************************
36705C               **  STEP 1--                              **
36706C               **  CHECK THE INPUT ARGUMENTS FOR ERRORS  **
36707C               ********************************************
36708C
36709      ISTEPN='1'
36710      IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'XML1')
36711     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
36712C
36713C               *****************************************************
36714C               **  STEP 2--                                       **
36715C               **  CARRY OUT CALCULATIONS                         **
36716C               **  FOR LOGISTIC-EXPONENTIAL MLE ESTIMATE          **
36717C               *****************************************************
36718C
36719      ISTEPN='2'
36720      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'XML1')
36721     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
36722C
36723      IDIST='LOGISTIC-EXPONENTIAL'
36724C
36725      IFLAG=2
36726      CALL SUMRAW(Y,N,IDIST,IFLAG,
36727     1            XMEAN,XVAR,XSD,XMIN,XMAX,
36728     1            ISUBRO,IBUGA3,IERROR)
36729      CALL SUMDP(Y,N,IWRITE,XSUM,IBUGA3,IERROR)
36730C
36731      SHAPML=CPUMIN
36732      SCALML=CPUMIN
36733C
36734      IF(SCALSV.GT.0.0)THEN
36735        XPAR(2)=DBLE(SCALSV)
36736      ELSE
36737        AN=REAL(N)
36738        XPAR(2)=DBLE(AN*LOG(2.0)/XSUM)
36739      ENDIF
36740      IF(SHAPSV.GT.0.0)THEN
36741        XPAR(1)=DBLE(SHAPSV)
36742      ELSE
36743        AN=REAL(N)
36744        ATEMP=AN*LOG(2.0)/XSUM
36745        DSUM=0.0D0
36746        DO2109I=1,N
36747          DSUM=DSUM + DBLE(ABS(LOG(EXP(ATEMP*Y(I)) - 1.0)))
36748 2109   CONTINUE
36749        XPAR(1)=DBLE(N)/DSUM
36750      ENDIF
36751C
36752C               *************************************
36753C               **  STEP 22--                      **
36754C               **  IF NO STARTING VALUES GIVEN,   **
36755C               **  USE PERCENTILES METHOD TO      **
36756C               **  OBTAIN THEM.                   **
36757C               *************************************
36758C
36759C
36760        P1=25.0
36761        CALL PERCEN(P1,Y,N,IWRITE,TEMP1,MAXNXT,P1OUT,IBUGA3,IERROR)
36762        P2=75.0
36763        CALL PERCEN(P2,Y,N,IWRITE,TEMP1,MAXNXT,P2OUT,IBUGA3,IERROR)
36764        DP1=DBLE(P1)/100.0D0
36765        DP2=DBLE(P2)/100.0D0
36766        DGP1=DBLE(P1OUT)
36767        DGP2=DBLE(P2OUT)
36768C
36769        IOPT=2
36770        TOL=1.0D-6
36771        NVAR=2
36772        NPRINT=-1
36773        INFO=0
36774        LWA=MAXNXT
36775        CALL DNSQE(LEXFU2,JAC,IOPT,NVAR,XPAR,FVEC,TOL,NPRINT,INFO,
36776     1             DTEMP1,MAXNXT,Y,N)
36777C
36778C               *************************************
36779C               **  STEP 23--                      **
36780C               **  NOW COMPUTE THE MAXIMUM        **
36781C               **  LIKELIHOOD ESTIMATES.          **
36782C               *************************************
36783C
36784CCCCC NOTE: ALPHA IN LEEMIS PARAMETERIZATION IS ACTUALLY
36785CCCCC       (1/SCALE).  FOR DATAPLOT, GENERATE TRUE SCALE
36786CCCCC        PARAMETER.
36787C
36788      IOPT=2
36789      TOL=1.0D-6
36790      NVAR=2
36791      NPRINT=-1
36792      INFO=0
36793      LWA=MAXNXT
36794      CALL DNSQE(LEXFUN,JAC,IOPT,NVAR,XPAR,FVEC,TOL,NPRINT,INFO,
36795     1           DTEMP1,MAXNXT,Y,N)
36796C
36797      SHAPML=REAL(XPAR(1))
36798      SCALML=1.0/REAL(XPAR(2))
36799C
36800      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'XML1')THEN
36801        WRITE(ICOUT,999)
36802        CALL DPWRST('XXX','WRIT')
36803        WRITE(ICOUT,9011)
36804 9011   FORMAT('**** AT THE END OF LEXML1--')
36805        CALL DPWRST('XXX','WRIT')
36806        WRITE(ICOUT,9013)N,XMEAN,XSD,XMIN,XMAX,XSUM
36807 9013   FORMAT('N,XMEAN,XSD,XMIN,XMAX,XSUM = ',I8,5G15.7)
36808        CALL DPWRST('XXX','WRIT')
36809        WRITE(ICOUT,9017)SHAPSV,SCALSV,SHAPML,SCALML
36810 9017   FORMAT('SHAPSV,SCALSV,SHAPML,SCALML =  ',4G15.7)
36811        CALL DPWRST('XXX','WRIT')
36812      ENDIF
36813C
36814      RETURN
36815      END
36816      SUBROUTINE LEXPDF(X,BETA,PDF)
36817C
36818C     NOTE--LOGISTIC-EXPONENTIAL PDF IS:
36819C
36820C           f(X;ALPHA,BETA) = ALPHA*BETA*(EXP(ALPHA*X)-1)**(BETA-1)*
36821C                             EXP(ALPHA*X)/
36822C                             {(1+(EXP(ALPHA*X)-1)**BETA)**2}
36823C                             X > 0; ALPHA, BETA > 0
36824C
36825C           WITH (1/ALPHA) DENOTING THE SCALE PARAMETER AND
36826C           BETA DENOTING THE SHAPE PARAMETER.
36827C
36828C     WRITTEN BY--JAMES J. FILLIBEN
36829C                 STATISTICAL ENGINEERING DIVISION
36830C                 INFORMATION TECHNOLOGY LABORATORY
36831C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
36832C                 GAITHERSBURG, MD 20899-8980
36833C                 PHONE--301-975-2899
36834C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
36835C           OF THE NATIONAL BUREAU OF STANDARDS.
36836C     LANGUAGE--ANSI FORTRAN (1977)
36837C     REFERENCE--LEEMIS AND MCQUESTION (2008), "UNIVARIATE DISTRIBUTION
36838C                RELATIONSHIPS", THE AMERICAN STATISTICIAN, VOL. 62,
36839C                NO. 1, PP. 45-53.
36840C              --LAN AND LEEMIS (2007), "THE LOGISTIC-EXPONENTIAL
36841C                SURVIVAL DISTRIBUTION", TECHNICAL REPORT, THE
36842C                COLLEGE OF WILLIAM AND MARY, DEPARTMENT OF
36843C                MATHEMATICS.
36844C     VERSION NUMBER--2008/1
36845C     ORIGINAL VERSION--JANUARY   2008.
36846C
36847C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
36848C
36849      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
36850C
36851C-----COMMON----------------------------------------------------------
36852C
36853      INCLUDE 'DPCOP2.INC'
36854C
36855C-----START POINT-----------------------------------------------------
36856C
36857      PDF=0.0D0
36858C
36859      IF(BETA.LT.1.0D0)THEN
36860        IF(X.LE.0.0D0)THEN
36861          WRITE(ICOUT,106)
36862  106     FORMAT('***** WARNING--THE FIRST ARGUMENT TO LEXPDF IS ',
36863     1           'NON-POSITIVE.')
36864          CALL DPWRST('XXX','BUG ')
36865          WRITE(ICOUT,102)X
36866          CALL DPWRST('XXX','BUG ')
36867          GOTO9000
36868        ENDIF
36869      ELSE
36870        IF(X.LT.0.0D0)THEN
36871          WRITE(ICOUT,101)
36872  101     FORMAT('***** WARNING--THE FIRST ARGUMENT TO LEXPDF IS ',
36873     1           'NEGATIVE.')
36874          CALL DPWRST('XXX','BUG ')
36875          WRITE(ICOUT,102)X
36876  102     FORMAT('      THE VALUE OF THE ARGUMENT IS ',G15.7)
36877          CALL DPWRST('XXX','BUG ')
36878          GOTO9000
36879        ENDIF
36880      ENDIF
36881C
36882      IF(BETA.LE.0.0D0)THEN
36883        WRITE(ICOUT,301)
36884  301   FORMAT('***** ERROR--THE SECOND ARGUMENT TO LEXPDF IS ',
36885     1         'NON-POSITIVE.')
36886        CALL DPWRST('XXX','BUG ')
36887        WRITE(ICOUT,102)BETA
36888        CALL DPWRST('XXX','BUG ')
36889        GOTO9000
36890      ENDIF
36891C
36892      TERM1=DLOG(BETA)
36893      TERM2=(BETA-1.0D0)*DLOG(DEXP(X) - 1.0D0)
36894      TERM3=2.0D0*DLOG(1.0D0 + (DEXP(X) - 1.0D0)**BETA)
36895      TERM4=TERM1 + TERM2 + X - TERM3
36896      PDF=DEXP(TERM4)
36897C
36898 9000 CONTINUE
36899      RETURN
36900      END
36901      SUBROUTINE LEXPPF(P,BETA,PPF)
36902C
36903C     NOTE--LOGISTIC-EXPONENTIAL PPF IS:
36904C
36905C           G(P;BETA) = LOG[1 + (1/(1-P) - 1)**(1/BETA)]
36906C                       0 <= P < 1; BETA > 0
36907C
36908C           WITH BETA DENOTING THE SHAPE PARAMETER.
36909C
36910C     WRITTEN BY--JAMES J. FILLIBEN
36911C                 STATISTICAL ENGINEERING DIVISION
36912C                 INFORMATION TECHNOLOGY LABORATORY
36913C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
36914C                 GAITHERSBURG, MD 20899-8980
36915C                 PHONE--301-975-2899
36916C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
36917C           OF THE NATIONAL BUREAU OF STANDARDS.
36918C     LANGUAGE--ANSI FORTRAN (1977)
36919C     REFERENCE--LEEMIS AND MCQUESTION (2008), "UNIVARIATE DISTRIBUTION
36920C                RELATIONSHIPS", THE AMERICAN STATISTICIAN, VOL. 62,
36921C                NO. 1, PP. 45-53.
36922C              --LAN AND LEEMIS (2007), "THE LOGISTIC-EXPONENTIAL
36923C                SURVIVAL DISTRIBUTION", TECHNICAL REPORT, THE
36924C                COLLEGE OF WILLIAM AND MARY, DEPARTMENT OF
36925C                MATHEMATICS.
36926C              --LAN AND LEEMIS (2008), "THE LOGISTIC-EXPONENTIAL
36927C                SURVIVAL DISTRIBUTION", NAVAL RESEARCH LOGISTICS,
36928C                VOL. xx, NO. xx, PP. xx.
36929C     VERSION NUMBER--2008/2
36930C     ORIGINAL VERSION--FEBRUARY  2008.
36931C
36932C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
36933C
36934      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
36935C
36936C-----COMMON----------------------------------------------------------
36937C
36938      INCLUDE 'DPCOP2.INC'
36939C
36940C-----START POINT-----------------------------------------------------
36941C
36942      PPF=0.0D0
36943C
36944      IF(BETA.LT.1.0D0)THEN
36945        IF(P.LE.0.0D0 .OR. P.GT.1.0D0)THEN
36946          WRITE(ICOUT,106)
36947  106     FORMAT('***** ERROR--THE FIRST ARGUMENT TO LEXPPF IS ',
36948     1           'OUTSIDE THE ALLOWABLE [0,1] INTERVAL.')
36949          CALL DPWRST('XXX','BUG ')
36950          WRITE(ICOUT,102)P
36951          CALL DPWRST('XXX','BUG ')
36952          GOTO9000
36953        ENDIF
36954      ELSE
36955        IF(P.LT.0.0D0 .OR. P.GT.1.0D0)THEN
36956          WRITE(ICOUT,101)
36957  101     FORMAT('***** ERROR--THE FIRST ARGUMENT TO LEXPPF IS ',
36958     1           'OUTSIDE THE ALLOWABLE (0,1] INTERVAL.')
36959          CALL DPWRST('XXX','BUG ')
36960          WRITE(ICOUT,102)P
36961  102     FORMAT('      THE VALUE OF THE ARGUMENT IS ',G15.7)
36962          CALL DPWRST('XXX','BUG ')
36963          GOTO9000
36964        ENDIF
36965      ENDIF
36966C
36967      IF(BETA.LE.0.0D0)THEN
36968        WRITE(ICOUT,301)
36969  301   FORMAT('***** ERROR--THE SECOND ARGUMENT TO LEXPPF IS ',
36970     1         'NON-POSITIVE.')
36971        CALL DPWRST('XXX','BUG ')
36972        WRITE(ICOUT,102)BETA
36973        CALL DPWRST('XXX','BUG ')
36974        GOTO9000
36975      ENDIF
36976C
36977      IF(P.LE.0.0D0)THEN
36978        PPF=0.0D0
36979      ELSE
36980        TERM1=P/(1.0D0 - P)
36981        PPF=DLOG(1.0D0 + TERM1**(1.0D0/BETA))
36982      ENDIF
36983C
36984 9000 CONTINUE
36985      RETURN
36986      END
36987      SUBROUTINE LEXRAN(N,BETA,ISEED,X)
36988C
36989C     PURPOSE--THIS SUBROUTINE GENERATES A RANDOM SAMPLE OF SIZE N
36990C              FROM THE LOGISTIC-EXPONENTIAL DISTRIBUTION
36991C              WITH SHAPE PARAMETER VALUE = BETA.
36992C     INPUT  ARGUMENTS--N      = THE DESIRED INTEGER NUMBER
36993C                                OF RANDOM NUMBERS TO BE
36994C                                GENERATED.
36995C                     --BETA   = THE SINGLE PRECISION VALUE OF THE
36996C                                SHAPE PARAMETER.
36997C     OUTPUT ARGUMENTS--X      = A SINGLE PRECISION VECTOR
36998C                                (OF DIMENSION AT LEAST N)
36999C                                INTO WHICH THE GENERATED
37000C                                RANDOM SAMPLE WILL BE PLACED.
37001C     OUTPUT--A RANDOM SAMPLE OF SIZE N
37002C             FROM THE LOGISTIC-EXPONENTIAL DISTRIBUTION
37003C             WITH SHAPE PARAMETER VALUE = BETA.
37004C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
37005C     RESTRICTIONS--THERE IS NO RESTRICTION ON THE MAXIMUM VALUE
37006C                   OF N FOR THIS SUBROUTINE.
37007C                 --BETA > 0
37008C     OTHER DATAPAC   SUBROUTINES NEEDED--UNIRAN, LEXPPF.
37009C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE.
37010C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
37011C     LANGUAGE--ANSI FORTRAN (1977)
37012C     REFERENCE--LEEMIS AND MCQUESTION (2008), "UNIVARIATE DISTRIBUTION
37013C                RELATIONSHIPS", THE AMERICAN STATISTICIAN, VOL. 62,
37014C                NO. 1, PP. 45-53.
37015C              --LAN AND LEEMIS (2007), "THE LOGISTIC-EXPONENTIAL
37016C                SURVIVAL DISTRIBUTION", TECHNICAL REPORT, THE
37017C                COLLEGE OF WILLIAM AND MARY, DEPARTMENT OF
37018C                MATHEMATICS.
37019C              --LAN AND LEEMIS (2008), "THE LOGISTIC-EXPONENTIAL
37020C                SURVIVAL DISTRIBUTION", NAVAL RESEARCH LOGISTICS,
37021C                VOL. xx, NO. xx, PP. xx.
37022C     WRITTEN BY--JAMES J. FILLIBEN
37023C                 STATISTICAL ENGINEERING DIVISION
37024C                 INFORMATION TECHNOLOGY LABORATORY
37025C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
37026C                 GAITHERSBURG, MD 20899-8980
37027C                 PHONE--301-975-2855
37028C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
37029C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
37030C     LANGUAGE--ANSI FORTRAN (1977)
37031C     VERSION NUMBER--2008.1
37032C     ORIGINAL VERSION--JANUARY   2008.
37033C
37034C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
37035C
37036C---------------------------------------------------------------------
37037C
37038      DIMENSION X(*)
37039C
37040      DOUBLE PRECISION DTEMP
37041C
37042C-----COMMON----------------------------------------------------------
37043C
37044      INCLUDE 'DPCOP2.INC'
37045C
37046C-----START POINT-----------------------------------------------------
37047C
37048C     CHECK THE INPUT ARGUMENTS FOR ERRORS
37049C
37050      IF(N.LT.1)THEN
37051        WRITE(ICOUT, 5)
37052        CALL DPWRST('XXX','BUG ')
37053        WRITE(ICOUT,47)N
37054        CALL DPWRST('XXX','BUG ')
37055        GOTO9000
37056      ELSEIF(BETA.LE.0.0)THEN
37057        WRITE(ICOUT,15)
37058        CALL DPWRST('XXX','BUG ')
37059        WRITE(ICOUT,16)
37060        CALL DPWRST('XXX','BUG ')
37061        WRITE(ICOUT,46)BETA
37062        CALL DPWRST('XXX','BUG ')
37063        GOTO9000
37064      ENDIF
37065    5 FORMAT('***** ERROR--THE REQUESTED NUMBER OF ',
37066     1       'LOGISTIC-EXPONENTIAL RANDOM NUMBERS IS NON-POSITIVE.')
37067   15 FORMAT('***** ERROR--THE SHAPE PARAMETER, BETA, FOR THE ',
37068     1       'LOGISTIC-EXPONENTIAL DISTRIBUTION')
37069   16 FORMAT('      IS NON-POSITIVE.')
37070   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',G15.7)
37071   47 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',I8)
37072C
37073C     GENERATE N UNIFORM (0,1) RANDOM NUMBERS;
37074C
37075      CALL UNIRAN(N,ISEED,X)
37076C
37077C     GENERATE N LOGISTIC-EXPONENTIAL DISTRIBUTION RANDOM NUMBERS
37078C     USING THE PERCENT POINT FUNCTION TRANSFORMATION METHOD.
37079C
37080      DO100I=1,N
37081        CALL LEXPPF(DBLE(X(I)),DBLE(BETA),DTEMP)
37082        X(I)=REAL(DTEMP)
37083  100 CONTINUE
37084C
37085 9000 CONTINUE
37086      RETURN
37087      END
37088      SUBROUTINE LE3CDF(X,BETA,THETA,ALPHA,CDF)
37089C
37090C     NOTE--3-PARAMETER LOGISTIC-EXPONENTIAL CDF IS:
37091C
37092C           F(X;ALPHA,BETA,THETA) = 1 -
37093C           [1 + (EXP(ALPHA*THETA) - 1)**BETA]/
37094C           [1 + (EXP(ALPHA*(X+THETA) - 1)**BETA]
37095C           X > 0; ALPHA, BETA > 0, THETA >= 0
37096C
37097C           WITH ALPHA, BETA AND THETA DENOTING THE SHAPE
37098C           PARAMETERS.  NOTE THAT ALTHOUGH (1/ALPHA) IS A
37099C           SCALE PARAMETER FOR THE LOGISTIC-EXPONENTIAL, IT
37100C           IS NOT A SCALE PARAMETER FOR THE 3-PARAMETER
37101C           LOGISTIC-EXPONENTIAL IN THE SENSE THAT THE
37102C           RELATION
37103C
37104C           F(X;BETA,THETA,LOC,SCALE) = F((X-LOC)/SCALE;BETA,THETA,0,1)
37105C
37106C           DOES NOT HOLD.  THEREFORE, WE TREAT IT AS A SHAPE
37107C           PARAMETER IN DATAPLOT.
37108C
37109C     WRITTEN BY--JAMES J. FILLIBEN
37110C                 STATISTICAL ENGINEERING DIVISION
37111C                 INFORMATION TECHNOLOGY LABORATORY
37112C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
37113C                 GAITHERSBURG, MD 20899-8980
37114C                 PHONE--301-975-2899
37115C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
37116C           OF THE NATIONAL BUREAU OF STANDARDS.
37117C     LANGUAGE--ANSI FORTRAN (1977)
37118C     REFERENCE--LEEMIS AND MCQUESTION (2008), "UNIVARIATE DISTRIBUTION
37119C                RELATIONSHIPS", THE AMERICAN STATISTICIAN, VOL. 62,
37120C                NO. 1, PP. 45-53.
37121C              --LAN AND LEEMIS (2007), "THE LOGISTIC-EXPONENTIAL
37122C                SURVIVAL DISTRIBUTION", TECHNICAL REPORT, THE
37123C                COLLEGE OF WILLIAM AND MARY, DEPARTMENT OF
37124C                MATHEMATICS.
37125C     VERSION NUMBER--2008/3
37126C     ORIGINAL VERSION--MARCH     2008.
37127C
37128C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
37129C
37130      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
37131C
37132C-----COMMON----------------------------------------------------------
37133C
37134      INCLUDE 'DPCOP2.INC'
37135C
37136C-----START POINT-----------------------------------------------------
37137C
37138      CDF=0.0D0
37139C
37140      IF(BETA.LT.1.0D0)THEN
37141        IF(X.LT.0.0D0)THEN
37142          WRITE(ICOUT,106)
37143  106     FORMAT('***** WARNING--THE FIRST ARGUMENT TO LE3CDF IS ',
37144     1           'NON-POSITIVE.')
37145          CALL DPWRST('XXX','BUG ')
37146          WRITE(ICOUT,102)X
37147          CALL DPWRST('XXX','BUG ')
37148          GOTO9000
37149        ENDIF
37150      ELSE
37151        IF(X.LT.0.0D0)THEN
37152          WRITE(ICOUT,101)
37153  101     FORMAT('***** WARNING--THE FIRST ARGUMENT TO LE3CDF IS ',
37154     1           'NEGATIVE.')
37155          CALL DPWRST('XXX','BUG ')
37156          WRITE(ICOUT,102)X
37157  102     FORMAT('      THE VALUE OF THE ARGUMENT IS ',G15.7)
37158          CALL DPWRST('XXX','BUG ')
37159          GOTO9000
37160        ENDIF
37161      ENDIF
37162C
37163      IF(BETA.LE.0.0D0)THEN
37164        WRITE(ICOUT,301)
37165  301   FORMAT('***** ERROR--THE SECOND ARGUMENT TO LE3CDF IS ',
37166     1         'NON-POSITIVE.')
37167        CALL DPWRST('XXX','BUG ')
37168        WRITE(ICOUT,102)BETA
37169        CALL DPWRST('XXX','BUG ')
37170        GOTO9000
37171      ENDIF
37172C
37173      IF(THETA.LT.0.0D0)THEN
37174        WRITE(ICOUT,401)
37175  401   FORMAT('***** ERROR--THE THIRD ARGUMENT TO LE3CDF IS ',
37176     1         'NEGATIVE.')
37177        CALL DPWRST('XXX','BUG ')
37178        WRITE(ICOUT,102)THETA
37179        CALL DPWRST('XXX','BUG ')
37180        GOTO9000
37181      ENDIF
37182C
37183      IF(ALPHA.LE.0.0D0)THEN
37184        WRITE(ICOUT,501)
37185  501   FORMAT('***** ERROR--THE FOURTH ARGUMENT TO LE3CDF IS ',
37186     1         'NON-POSITIVE.')
37187        CALL DPWRST('XXX','BUG ')
37188        WRITE(ICOUT,102)ALPHA
37189        CALL DPWRST('XXX','BUG ')
37190        GOTO9000
37191      ENDIF
37192C
37193      TERM1=1.0D0 + (DEXP(ALPHA*THETA) - 1.0D0)**BETA
37194      TERM2=1.0D0 + (DEXP(ALPHA*(X+THETA)) - 1.0D0)**BETA
37195      CDF=1.0D0 - (TERM1/TERM2)
37196C
37197 9000 CONTINUE
37198      RETURN
37199      END
37200      SUBROUTINE LE3CHA(X,BETA,THETA,ALPHA,HAZ)
37201C
37202C     NOTE--3-PARAMETER LOGISTIC-EXPONENTIAL CUMULATIVE HAZARD IS:
37203C
37204C           H(X;ALPHA,BETA,THETA) =
37205C           -LOG{[1 + (EXP(ALPHA*THETA) - 1)**BETA]/
37206C           [1 + (EXP(ALPHA*(X+THETA) - 1)**BETA]}
37207C           X > 0; ALPHA, BETA > 0, THETA >= 0
37208C
37209C           WITH ALPHA, BETA AND THETA DENOTING THE SHAPE
37210C           PARAMETERS.  NOTE THAT ALTHOUGH (1/ALPHA) IS A
37211C           SCALE PARAMETER FOR THE LOGISTIC-EXPONENTIAL, IT
37212C           IS NOT A SCALE PARAMETER FOR THE 3-PARAMETER
37213C           LOGISTIC-EXPONENTIAL IN THE SENSE THAT THE
37214C           RELATION
37215C
37216C           H(X;BETA,THETA,LOC,SCALE) = H((X-LOC)/SCALE;BETA,THETA,0,1)
37217C
37218C           DOES NOT HOLD.  THEREFORE, WE TREAT IT AS A SHAPE
37219C           PARAMETER IN DATAPLOT.
37220C
37221C     WRITTEN BY--JAMES J. FILLIBEN
37222C                 STATISTICAL ENGINEERING DIVISION
37223C                 INFORMATION TECHNOLOGY LABORATORY
37224C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
37225C                 GAITHERSBURG, MD 20899-8980
37226C                 PHONE--301-975-2899
37227C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
37228C           OF THE NATIONAL BUREAU OF STANDARDS.
37229C     LANGUAGE--ANSI FORTRAN (1977)
37230C     REFERENCE--LEEMIS AND MCQUESTION (2008), "UNIVARIATE DISTRIBUTION
37231C                RELATIONSHIPS", THE AMERICAN STATISTICIAN, VOL. 62,
37232C                NO. 1, PP. 45-53.
37233C              --LAN AND LEEMIS (2007), "THE LOGISTIC-EXPONENTIAL
37234C                SURVIVAL DISTRIBUTION", TECHNICAL REPORT, THE
37235C                COLLEGE OF WILLIAM AND MARY, DEPARTMENT OF
37236C                MATHEMATICS.
37237C     VERSION NUMBER--2008/3
37238C     ORIGINAL VERSION--MARCH     2008.
37239C
37240C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
37241C
37242      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
37243C
37244C-----COMMON----------------------------------------------------------
37245C
37246      INCLUDE 'DPCOP2.INC'
37247C
37248C-----START POINT-----------------------------------------------------
37249C
37250      HAZ=0.0D0
37251C
37252      IF(BETA.LT.1.0D0)THEN
37253        IF(X.LT.0.0D0)THEN
37254          WRITE(ICOUT,106)
37255  106     FORMAT('***** WARNING--THE FIRST ARGUMENT TO LE3CHAZ IS ',
37256     1           'NON-POSITIVE.')
37257          CALL DPWRST('XXX','BUG ')
37258          WRITE(ICOUT,102)X
37259          CALL DPWRST('XXX','BUG ')
37260          GOTO9000
37261        ENDIF
37262      ELSE
37263        IF(X.LT.0.0D0)THEN
37264          WRITE(ICOUT,101)
37265  101     FORMAT('***** WARNING--THE FIRST ARGUMENT TO LE3CHAZ IS ',
37266     1           'NEGATIVE.')
37267          CALL DPWRST('XXX','BUG ')
37268          WRITE(ICOUT,102)X
37269  102     FORMAT('      THE VALUE OF THE ARGUMENT IS ',G15.7)
37270          CALL DPWRST('XXX','BUG ')
37271          GOTO9000
37272        ENDIF
37273      ENDIF
37274C
37275      IF(BETA.LE.0.0D0)THEN
37276        WRITE(ICOUT,301)
37277  301   FORMAT('***** ERROR--THE SECOND ARGUMENT TO LE3CHAZ IS ',
37278     1         'NON-POSITIVE.')
37279        CALL DPWRST('XXX','BUG ')
37280        WRITE(ICOUT,102)BETA
37281        CALL DPWRST('XXX','BUG ')
37282        GOTO9000
37283      ENDIF
37284C
37285      IF(THETA.LT.0.0D0)THEN
37286        WRITE(ICOUT,401)
37287  401   FORMAT('***** ERROR--THE THIRD ARGUMENT TO LE3CHAZ IS ',
37288     1         'NEGATIVE.')
37289        CALL DPWRST('XXX','BUG ')
37290        WRITE(ICOUT,102)THETA
37291        CALL DPWRST('XXX','BUG ')
37292        GOTO9000
37293      ENDIF
37294C
37295      IF(ALPHA.LE.0.0D0)THEN
37296        WRITE(ICOUT,501)
37297  501   FORMAT('***** ERROR--THE FOURTH ARGUMENT TO LE3CHAZ IS ',
37298     1         'NON-POSITIVE.')
37299        CALL DPWRST('XXX','BUG ')
37300        WRITE(ICOUT,102)ALPHA
37301        CALL DPWRST('XXX','BUG ')
37302        GOTO9000
37303      ENDIF
37304C
37305      TERM1=1.0D0 + (DEXP(ALPHA*THETA) - 1.0D0)**BETA
37306      TERM2=1.0D0 + (DEXP(ALPHA*(X+THETA)) - 1.0D0)**BETA
37307      HAZ=-DLOG(TERM1/TERM2)
37308C
37309 9000 CONTINUE
37310      RETURN
37311      END
37312      SUBROUTINE LE3HAZ(X,BETA,THETA,ALPHA,HAZ)
37313C
37314C     NOTE--3-PARAMETER LOGISTIC-EXPONENTIAL HAZARD IS:
37315C
37316C           h(X;ALPHA,BETA,THETA) =
37317C           ALHA*BETA*(EXP(ALPHA*(X+THETA) - 1)**(BETA-1)*
37318C           EXP(ALPHA*(X+THETA))/
37319C           [1 + (EXP(ALPHA*(X+THETA) - 1)**BETA]
37320C           X > 0; ALPHA, BETA > 0, THETA >= 0
37321C
37322C           WITH ALPHA, BETA AND THETA DENOTING THE SHAPE
37323C           PARAMETERS.  NOTE THAT ALTHOUGH (1/ALPHA) IS A
37324C           SCALE PARAMETER FOR THE LOGISTIC-EXPONENTIAL, IT
37325C           IS NOT A SCALE PARAMETER FOR THE 3-PARAMETER
37326C           LOGISTIC-EXPONENTIAL IN THE SENSE THAT THE
37327C           RELATION
37328C
37329C           h(X;BETA,THETA,LOC,SCALE) = h((X-LOC)/SCALE;BETA,THETA,0,1)/
37330C                                       SCALE
37331C
37332C           DOES NOT HOLD.  THEREFORE, WE TREAT IT AS A SHAPE
37333C           PARAMETER IN DATAPLOT.
37334C
37335C     WRITTEN BY--JAMES J. FILLIBEN
37336C                 STATISTICAL ENGINEERING DIVISION
37337C                 INFORMATION TECHNOLOGY LABORATORY
37338C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
37339C                 GAITHERSBURG, MD 20899-8980
37340C                 PHONE--301-975-2899
37341C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
37342C           OF THE NATIONAL BUREAU OF STANDARDS.
37343C     LANGUAGE--ANSI FORTRAN (1977)
37344C     REFERENCE--LEEMIS AND MCQUESTION (2008), "UNIVARIATE DISTRIBUTION
37345C                RELATIONSHIPS", THE AMERICAN STATISTICIAN, VOL. 62,
37346C                NO. 1, PP. 45-53.
37347C              --LAN AND LEEMIS (2007), "THE LOGISTIC-EXPONENTIAL
37348C                SURVIVAL DISTRIBUTION", TECHNICAL REPORT, THE
37349C                COLLEGE OF WILLIAM AND MARY, DEPARTMENT OF
37350C                MATHEMATICS.
37351C     VERSION NUMBER--2008/3
37352C     ORIGINAL VERSION--MARCH     2008.
37353C
37354C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
37355C
37356      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
37357C
37358C-----COMMON----------------------------------------------------------
37359C
37360      INCLUDE 'DPCOP2.INC'
37361C
37362C-----START POINT-----------------------------------------------------
37363C
37364      HAZ=0.0D0
37365C
37366      IF(BETA.LT.1.0D0)THEN
37367        IF(X.LT.0.0D0)THEN
37368          WRITE(ICOUT,106)
37369  106     FORMAT('***** WARNING--THE FIRST ARGUMENT TO LE3HAZ IS ',
37370     1           'NON-POSITIVE.')
37371          CALL DPWRST('XXX','BUG ')
37372          WRITE(ICOUT,102)X
37373          CALL DPWRST('XXX','BUG ')
37374          GOTO9000
37375        ENDIF
37376      ELSE
37377        IF(X.LT.0.0D0)THEN
37378          WRITE(ICOUT,101)
37379  101     FORMAT('***** WARNING--THE FIRST ARGUMENT TO LE3HAZ IS ',
37380     1           'NEGATIVE.')
37381          CALL DPWRST('XXX','BUG ')
37382          WRITE(ICOUT,102)X
37383  102     FORMAT('      THE VALUE OF THE ARGUMENT IS ',G15.7)
37384          CALL DPWRST('XXX','BUG ')
37385          GOTO9000
37386        ENDIF
37387      ENDIF
37388C
37389      IF(BETA.LE.0.0D0)THEN
37390        WRITE(ICOUT,301)
37391  301   FORMAT('***** ERROR--THE SECOND ARGUMENT TO LE3HAZ IS ',
37392     1         'NON-POSITIVE.')
37393        CALL DPWRST('XXX','BUG ')
37394        WRITE(ICOUT,102)BETA
37395        CALL DPWRST('XXX','BUG ')
37396        GOTO9000
37397      ENDIF
37398C
37399      IF(THETA.LT.0.0D0)THEN
37400        WRITE(ICOUT,401)
37401  401   FORMAT('***** ERROR--THE THIRD ARGUMENT TO LE3HAZ IS ',
37402     1         'NEGATIVE.')
37403        CALL DPWRST('XXX','BUG ')
37404        WRITE(ICOUT,102)THETA
37405        CALL DPWRST('XXX','BUG ')
37406        GOTO9000
37407      ENDIF
37408C
37409      IF(ALPHA.LE.0.0D0)THEN
37410        WRITE(ICOUT,501)
37411  501   FORMAT('***** ERROR--THE FOURTH ARGUMENT TO LE3HAZ IS ',
37412     1         'NON-POSITIVE.')
37413        CALL DPWRST('XXX','BUG ')
37414        WRITE(ICOUT,102)ALPHA
37415        CALL DPWRST('XXX','BUG ')
37416        GOTO9000
37417      ENDIF
37418C
37419      TERM1=DLOG(ALPHA) + DLOG(BETA)
37420      TERM2=(BETA - 1.0D0)*DLOG(EXP(ALPHA*(X+THETA)) - 1.0D0)
37421      TERM3=ALPHA*(X+THETA)
37422      TERM4=DLOG(1.0D0 + (EXP(ALPHA*(X+THETA)) - 1.0D0)**BETA)
37423      HAZ=DEXP(TERM1 + TERM2 + TERM3 - TERM4)
37424C
37425 9000 CONTINUE
37426      RETURN
37427      END
37428      SUBROUTINE LE3PDF(X,BETA,THETA,ALPHA,PDF)
37429C
37430C     NOTE--LOGISTIC-EXPONENTIAL PDF IS:
37431C
37432C           f(X;ALPHA,BETA,THETA) =
37433C           ALPHA*BETA*(1 + EXP(ALPHA*THETA) - 1)**BETA*
37434C           (EXP(ALPHA*(X+THETA))-1)**(BETA-1)*
37435C           EXP(ALPHA*(X+THETA))/
37436C           {(1+(EXP(ALPHA*(X+THETA))-1)**BETA)**2}
37437C           X > 0; ALPHA, BETA > 0, THETA >= 0
37438C
37439C           WITH ALPHA, BETA AND THETA DENOTING THE SHAPE
37440C           PARAMETERS.  NOTE THAT ALTHOUGH (1/ALPHA) IS A
37441C           SCALE PARAMETER FOR THE LOGISTIC-EXPONENTIAL, IT
37442C           IS NOT A SCALE PARAMETER FOR THE 3-PARAMETER
37443C           LOGISTIC-EXPONENTIAL IN THE SENSE THAT THE
37444C           RELATION
37445C
37446C           f(X;BETA,THETA,LOC,SCALE) = F((X-LOC)/SCALE;BETA,THETA)/SCALE
37447C
37448C           DOES NOT HOLD.  THEREFORE, WE TREAT IT AS A SHAPE
37449C           PARAMETER IN DATAPLOT.
37450C
37451C     WRITTEN BY--JAMES J. FILLIBEN
37452C                 STATISTICAL ENGINEERING DIVISION
37453C                 INFORMATION TECHNOLOGY LABORATORY
37454C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
37455C                 GAITHERSBURG, MD 20899-8980
37456C                 PHONE--301-975-2899
37457C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
37458C           OF THE NATIONAL BUREAU OF STANDARDS.
37459C     LANGUAGE--ANSI FORTRAN (1977)
37460C     REFERENCE--LEEMIS AND MCQUESTION (2008), "UNIVARIATE DISTRIBUTION
37461C                RELATIONSHIPS", THE AMERICAN STATISTICIAN, VOL. 62,
37462C                NO. 1, PP. 45-53.
37463C              --LAN AND LEEMIS (2007), "THE LOGISTIC-EXPONENTIAL
37464C                SURVIVAL DISTRIBUTION", TECHNICAL REPORT, THE
37465C                COLLEGE OF WILLIAM AND MARY, DEPARTMENT OF
37466C                MATHEMATICS.
37467C     VERSION NUMBER--2008/3
37468C     ORIGINAL VERSION--MARCH     2008.
37469C
37470C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
37471C
37472      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
37473C
37474C-----COMMON----------------------------------------------------------
37475C
37476      INCLUDE 'DPCOP2.INC'
37477C
37478C-----START POINT-----------------------------------------------------
37479C
37480      PDF=0.0D0
37481C
37482      IF(BETA.LT.1.0D0)THEN
37483        IF(X.LT.0.0D0)THEN
37484          WRITE(ICOUT,106)
37485  106     FORMAT('***** WARNING--THE FIRST ARGUMENT TO LE3PDF IS ',
37486     1           'NON-POSITIVE.')
37487          CALL DPWRST('XXX','BUG ')
37488          WRITE(ICOUT,102)X
37489          CALL DPWRST('XXX','BUG ')
37490          GOTO9000
37491        ENDIF
37492      ELSE
37493        IF(X.LT.0.0D0)THEN
37494          WRITE(ICOUT,101)
37495  101     FORMAT('***** WARNING--THE FIRST ARGUMENT TO LE3PDF IS ',
37496     1           'NEGATIVE.')
37497          CALL DPWRST('XXX','BUG ')
37498          WRITE(ICOUT,102)X
37499  102     FORMAT('      THE VALUE OF THE ARGUMENT IS ',G15.7)
37500          CALL DPWRST('XXX','BUG ')
37501          GOTO9000
37502        ENDIF
37503      ENDIF
37504C
37505      IF(BETA.LE.0.0D0)THEN
37506        WRITE(ICOUT,301)
37507  301   FORMAT('***** ERROR--THE SECOND ARGUMENT TO LE3PDF IS ',
37508     1         'NON-POSITIVE.')
37509        CALL DPWRST('XXX','BUG ')
37510        WRITE(ICOUT,102)BETA
37511        CALL DPWRST('XXX','BUG ')
37512        GOTO9000
37513      ENDIF
37514C
37515      IF(THETA.LT.0.0D0)THEN
37516        WRITE(ICOUT,401)
37517  401   FORMAT('***** ERROR--THE THIRD ARGUMENT TO LE3PDF IS ',
37518     1         'NEGATIVE.')
37519        CALL DPWRST('XXX','BUG ')
37520        WRITE(ICOUT,102)THETA
37521        CALL DPWRST('XXX','BUG ')
37522        GOTO9000
37523      ENDIF
37524C
37525      IF(ALPHA.LE.0.0D0)THEN
37526        WRITE(ICOUT,501)
37527  501   FORMAT('***** ERROR--THE FOURTH ARGUMENT TO LE3PDF IS ',
37528     1         'NON-POSITIVE.')
37529        CALL DPWRST('XXX','BUG ')
37530        WRITE(ICOUT,102)ALPHA
37531        CALL DPWRST('XXX','BUG ')
37532        GOTO9000
37533      ENDIF
37534C
37535      TERM1=DLOG(ALPHA) + DLOG(BETA)
37536      TERM2=DLOG(1.0D0 + (DEXP(ALPHA*THETA) - 1.0D0)**BETA)
37537      TERM3=(BETA-1.0D0)*DLOG(DEXP(ALPHA*(X+THETA)) - 1.0D0)
37538      TERM4=ALPHA*(X + THETA)
37539      ANUM=TERM1 + TERM2 + TERM3 + TERM4
37540C
37541      ADEN=2.0D0*DLOG(1.0D0 + (DEXP(ALPHA*(X+THETA)) - 1.0D0)**BETA)
37542      PDF=DEXP(ANUM - ADEN)
37543C
37544 9000 CONTINUE
37545      RETURN
37546      END
37547      SUBROUTINE LE3PPF(P,BETA,THETA,ALPHA,PPF)
37548C
37549C     NOTE--LOGISTIC-EXPONENTIAL PPF IS:
37550C
37551C           G(P;BETA,THETA) =
37552C           LOG[1 + {((EXP(THETA)-1)**BETA + P)/(1-P)}**(1/BETA)]
37553C           - THETA
37554C           0 <= P < 1; BETA > 0, THETA >= 0
37555C
37556C           WITH ALPHA, BETA AND THETA DENOTING THE SHAPE
37557C           PARAMETERS.  NOTE THAT ALTHOUGH (1/ALPHA) IS A
37558C           SCALE PARAMETER FOR THE LOGISTIC-EXPONENTIAL, IT
37559C           IS NOT A SCALE PARAMETER FOR THE 3-PARAMETER
37560C           LOGISTIC-EXPONENTIAL IN THE SENSE THAT THE
37561C           RELATION
37562C
37563C           G(P;BETA,THETA,LOC,SCALE) = LOC + SCALE*F(P;BETA,THETA,0,1)
37564C
37565C           DOES NOT HOLD.  THEREFORE, WE TREAT IT AS A SHAPE
37566C           PARAMETER IN DATAPLOT.
37567C
37568C     WRITTEN BY--JAMES J. FILLIBEN
37569C                 STATISTICAL ENGINEERING DIVISION
37570C                 INFORMATION TECHNOLOGY LABORATORY
37571C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
37572C                 GAITHERSBURG, MD 20899-8980
37573C                 PHONE--301-975-2899
37574C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
37575C           OF THE NATIONAL BUREAU OF STANDARDS.
37576C     LANGUAGE--ANSI FORTRAN (1977)
37577C     REFERENCE--LEEMIS AND MCQUESTION (2008), "UNIVARIATE DISTRIBUTION
37578C                RELATIONSHIPS", THE AMERICAN STATISTICIAN, VOL. 62,
37579C                NO. 1, PP. 45-53.
37580C              --LAN AND LEEMIS (2007), "THE LOGISTIC-EXPONENTIAL
37581C                SURVIVAL DISTRIBUTION", TECHNICAL REPORT, THE
37582C                COLLEGE OF WILLIAM AND MARY, DEPARTMENT OF
37583C                MATHEMATICS.
37584C              --LAN AND LEEMIS (2008), "THE LOGISTIC-EXPONENTIAL
37585C                SURVIVAL DISTRIBUTION", NAVAL RESEARCH LOGISTICS,
37586C                VOL. xx, NO. xx, PP. xx.
37587C     VERSION NUMBER--2008/3
37588C     ORIGINAL VERSION--MARCH     2008.
37589C
37590C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
37591C
37592      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
37593C
37594C-----COMMON----------------------------------------------------------
37595C
37596      INCLUDE 'DPCOP2.INC'
37597C
37598C-----START POINT-----------------------------------------------------
37599C
37600      PPF=0.0D0
37601C
37602      IF(BETA.LT.1.0D0)THEN
37603        IF(P.LE.0.0D0 .OR. P.GT.1.0D0)THEN
37604          WRITE(ICOUT,106)
37605  106     FORMAT('***** ERROR--THE FIRST ARGUMENT TO LE3PPF IS ',
37606     1           'OUTSIDE THE ALLOWABLE [0,1] INTERVAL.')
37607          CALL DPWRST('XXX','BUG ')
37608          WRITE(ICOUT,102)P
37609          CALL DPWRST('XXX','BUG ')
37610          GOTO9000
37611        ENDIF
37612      ELSE
37613        IF(P.LT.0.0D0 .OR. P.GT.1.0D0)THEN
37614          WRITE(ICOUT,101)
37615  101     FORMAT('***** ERROR--THE FIRST ARGUMENT TO LE3PPF IS ',
37616     1           'OUTSIDE THE ALLOWABLE (0,1] INTERVAL.')
37617          CALL DPWRST('XXX','BUG ')
37618          WRITE(ICOUT,102)P
37619  102     FORMAT('      THE VALUE OF THE ARGUMENT IS ',G15.7)
37620          CALL DPWRST('XXX','BUG ')
37621          GOTO9000
37622        ENDIF
37623      ENDIF
37624C
37625      IF(BETA.LE.0.0D0)THEN
37626        WRITE(ICOUT,301)
37627  301   FORMAT('***** ERROR--THE SECOND ARGUMENT TO LE3PPF IS ',
37628     1         'NON-POSITIVE.')
37629        CALL DPWRST('XXX','BUG ')
37630        WRITE(ICOUT,102)BETA
37631        CALL DPWRST('XXX','BUG ')
37632        GOTO9000
37633      ENDIF
37634C
37635      IF(THETA.LT.0.0D0)THEN
37636        WRITE(ICOUT,401)
37637  401   FORMAT('***** ERROR--THE THIRD ARGUMENT TO LE3PPF IS ',
37638     1         'NEGATIVE.')
37639        CALL DPWRST('XXX','BUG ')
37640        WRITE(ICOUT,102)THETA
37641        CALL DPWRST('XXX','BUG ')
37642        GOTO9000
37643      ENDIF
37644C
37645      IF(ALPHA.LE.0.0D0)THEN
37646        WRITE(ICOUT,501)
37647  501   FORMAT('***** ERROR--THE FOURTH ARGUMENT TO LE3PPF IS ',
37648     1         'NON-POSITIVE.')
37649        CALL DPWRST('XXX','BUG ')
37650        WRITE(ICOUT,102)ALPHA
37651        CALL DPWRST('XXX','BUG ')
37652        GOTO9000
37653      ENDIF
37654C
37655      IF(P.LE.0.0D0)THEN
37656        PPF=0.0D0
37657      ELSE
37658        ANUM=(DEXP(ALPHA*THETA) - 1.0D0)**BETA + P
37659        ADEN=1.0D0 - P
37660        PPF=(1.0D0/ALPHA)*DLOG(1.0D0 + (ANUM/ADEN)**(1.0D0/BETA))
37661     1      - THETA
37662      ENDIF
37663C
37664 9000 CONTINUE
37665      RETURN
37666      END
37667      SUBROUTINE LE3RAN(N,BETA,THETA,ALPHA,ISEED,X)
37668C
37669C     PURPOSE--THIS SUBROUTINE GENERATES A RANDOM SAMPLE OF SIZE N
37670C              FROM THE 3-PARAMETER LOGISTIC-EXPONENTIAL DISTRIBUTION
37671C              WITH SHAPE PARAMETER VALUE = BETA.
37672C     INPUT  ARGUMENTS--N      = THE DESIRED INTEGER NUMBER
37673C                                OF RANDOM NUMBERS TO BE
37674C                                GENERATED.
37675C                     --BETA   = THE SINGLE PRECISION VALUE OF THE
37676C                                FIRST SHAPE PARAMETER.
37677C                     --THETA  = THE SINGLE PRECISION VALUE OF THE
37678C                                SECOND SHAPE PARAMETER.
37679C                     --ALPHA  = THE SINGLE PRECISION VALUE OF THE
37680C                                THIRD SHAPE PARAMETER.
37681C     OUTPUT ARGUMENTS--X      = A SINGLE PRECISION VECTOR
37682C                                (OF DIMENSION AT LEAST N)
37683C                                INTO WHICH THE GENERATED
37684C                                RANDOM SAMPLE WILL BE PLACED.
37685C     OUTPUT--A RANDOM SAMPLE OF SIZE N
37686C             FROM THE 3-PARAMETER LOGISTIC-EXPONENTIAL DISTRIBUTION
37687C             WITH SHAPE PARAMETER VALUES = BETA, THETA AND ALPHA.
37688C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
37689C     RESTRICTIONS--THERE IS NO RESTRICTION ON THE MAXIMUM VALUE
37690C                   OF N FOR THIS SUBROUTINE.
37691C                 --BETA > 0; THETA >= 0.
37692C     OTHER DATAPAC   SUBROUTINES NEEDED--UNIRAN, LE3PPF.
37693C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE.
37694C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
37695C     LANGUAGE--ANSI FORTRAN (1977)
37696C     REFERENCE--LEEMIS AND MCQUESTION (2008), "UNIVARIATE DISTRIBUTION
37697C                RELATIONSHIPS", THE AMERICAN STATISTICIAN, VOL. 62,
37698C                NO. 1, PP. 45-53.
37699C              --LAN AND LEEMIS (2007), "THE LOGISTIC-EXPONENTIAL
37700C                SURVIVAL DISTRIBUTION", TECHNICAL REPORT, THE
37701C                COLLEGE OF WILLIAM AND MARY, DEPARTMENT OF
37702C                MATHEMATICS.
37703C              --LAN AND LEEMIS (2008), "THE LOGISTIC-EXPONENTIAL
37704C                SURVIVAL DISTRIBUTION", NAVAL RESEARCH LOGISTICS,
37705C                VOL. xx, NO. xx, PP. xx.
37706C     WRITTEN BY--JAMES J. FILLIBEN
37707C                 STATISTICAL ENGINEERING DIVISION
37708C                 INFORMATION TECHNOLOGY LABORATORY
37709C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
37710C                 GAITHERSBURG, MD 20899-8980
37711C                 PHONE--301-975-2855
37712C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
37713C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
37714C     LANGUAGE--ANSI FORTRAN (1977)
37715C     VERSION NUMBER--2008.3
37716C     ORIGINAL VERSION--MARCH     2008.
37717C
37718C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
37719C
37720C---------------------------------------------------------------------
37721C
37722      DIMENSION X(*)
37723C
37724      DOUBLE PRECISION DTEMP
37725C
37726C-----COMMON----------------------------------------------------------
37727C
37728      INCLUDE 'DPCOP2.INC'
37729C
37730C-----START POINT-----------------------------------------------------
37731C
37732C     CHECK THE INPUT ARGUMENTS FOR ERRORS
37733C
37734      IF(N.LT.1)THEN
37735        WRITE(ICOUT, 5)
37736        CALL DPWRST('XXX','BUG ')
37737        WRITE(ICOUT, 6)
37738        CALL DPWRST('XXX','BUG ')
37739        WRITE(ICOUT,47)N
37740        CALL DPWRST('XXX','BUG ')
37741        GOTO9000
37742      ELSEIF(BETA.LE.0.0)THEN
37743        WRITE(ICOUT,15)
37744        CALL DPWRST('XXX','BUG ')
37745        WRITE(ICOUT,16)
37746        CALL DPWRST('XXX','BUG ')
37747        WRITE(ICOUT,46)BETA
37748        CALL DPWRST('XXX','BUG ')
37749        GOTO9000
37750      ELSEIF(THETA.LT.0.0)THEN
37751        WRITE(ICOUT,25)
37752        CALL DPWRST('XXX','BUG ')
37753        WRITE(ICOUT,26)
37754        CALL DPWRST('XXX','BUG ')
37755        WRITE(ICOUT,46)BETA
37756        CALL DPWRST('XXX','BUG ')
37757        GOTO9000
37758      ELSEIF(ALPHA.LE.0.0)THEN
37759        WRITE(ICOUT,35)
37760        CALL DPWRST('XXX','BUG ')
37761        WRITE(ICOUT,36)
37762        CALL DPWRST('XXX','BUG ')
37763        WRITE(ICOUT,46)ALPHA
37764        CALL DPWRST('XXX','BUG ')
37765        GOTO9000
37766      ENDIF
37767    5 FORMAT('***** ERROR--THE REQUESTED NUMBER OF ',
37768     1       '3-PARAMETER LOGISTIC-EXPONENTIAL ')
37769    6 FORMAT('      RANDOM NUMBERS IS NON-POSITIVE.')
37770   15 FORMAT('***** ERROR--THE SHAPE PARAMETER, BETA, FOR THE ',
37771     1       '3-PARAMETER LOGISTIC-EXPONENTIAL DISTRIBUTION')
37772   16 FORMAT('      IS NON-POSITIVE.')
37773   25 FORMAT('***** ERROR--THE LOCATION PARAMETER, THETA, FOR ',
37774     1       'THE 3-PARAMETER LOGISTIC-EXPONENTIAL')
37775   26 FORMAT('      DISTRIBUTION IS NON-POSITIVE.')
37776   35 FORMAT('***** ERROR--THE SCALE PARAMETER, ALPHA, FOR ',
37777     1       'THE 3-PARAMETER LOGISTIC-EXPONENTIAL')
37778   36 FORMAT('      DISTRIBUTION IS NON-POSITIVE.')
37779   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',G15.7)
37780   47 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',I8)
37781C
37782C     GENERATE N UNIFORM (0,1) RANDOM NUMBERS;
37783C
37784      CALL UNIRAN(N,ISEED,X)
37785C
37786C     GENERATE N 3-PARAMETER LOGISTIC-EXPONENTIAL DISTRIBUTION
37787C     RANDOM NUMBERS USING THE PERCENT POINT FUNCTION
37788C     TRANSFORMATION METHOD.
37789C
37790      DO100I=1,N
37791        CALL LE3PPF(DBLE(X(I)),DBLE(BETA),DBLE(THETA),
37792     1              DBLE(ALPHA),DTEMP)
37793        X(I)=REAL(DTEMP)
37794  100 CONTINUE
37795C
37796 9000 CONTINUE
37797      RETURN
37798      END
37799      SUBROUTINE LG1FUN (NPAR, XPAR, FVEC, IFLAG, XDATA, R)
37800C
37801C     PURPOSE--THIS ROUTINE COMPUTES THE FUNCTIONS FOR THE
37802C              LOGNORMAL MAXIMUM LIKELIHOOD EQUATIONS FOR THE
37803C              SINGLY TIME CENSORED CASE (FROM PP. 161-162 OF BURY).
37804C
37805C      SUM[i=1 to r][Z(I)] + M*H(Z(I)) = 0
37806C
37807C      SUM[i=1 to r][Z(I)**2] + M*Z*H(Z) - R = 0
37808C
37809C      WHERE
37810C
37811C
37812C         R        = NUMBER OF FAILURES
37813C         M        = NUMBER OF CENSORING TIMES
37814C         C        = CENSORING TIME (ALL CENSORED DATA WILL HAVE
37815C                    THE SAME CENSORING TIME)
37816C         Z(I)     = [LOG(X(I) - UHAT]/SHAT
37817C         UHAT     = FVEC(1) = CURRENT ESTIMATE OF MU PARAMETER
37818C         SHAT     = FVEC(2) = CURRENT ESTIMATE OF SIGMA PARAMETER
37819C         Z        = [LOG(C) - UHAT]/SHAT
37820C         H(Z)     = NORPDF(Z)/(1 - NOCDF(Z))
37821C
37822C              CALLED BY DNSQE ROUTINE FOR SOLVING SIMULTANEOUS
37823C              NONLINEAR EQUATIONS.  NOTE THAT THE CALLING SEQUENCE
37824C              DID NOT ACCOMODATE A DATA ARRAY (AND ASSCIATED NUMBER OF
37825C              OBSERVATIONS), SO THESE WERE ADDED TO THE CALL LIST.
37826C     EXAMPLE--LOGNORMAL MAXIMUM LIKELIHOOD Y X
37827C     REFERENCE--KARL BURY, (1999). "STATISTICAL DISTRIBUTIONS IN
37828C                ENGINEERING", CAMBRIDGE UNIVERSITY PRESS,
37829C                PP. 161-162.
37830C     WRITTEN BY--JAMES J. FILLIBEN
37831C                 STATISTICAL ENGINEERING DIVISION
37832C                 CENTER FOR APPLIED MATHEMATICS
37833C                 NATIONAL BUREAU OF STANDARDS
37834C                 WASHINGTON, D. C. 20234
37835C                 PHONE--301-975-2855
37836C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
37837C           OF THE NATIONAL BUREAU OF STANDARDS.
37838C     LANGUAGE--ANSI FORTRAN (1977)
37839C     VERSION NUMBER--2004/11
37840C     ORIGINAL VERSION--NOVEMBER  2004.
37841C
37842C---------------------------------------------------------------------
37843C
37844      INTEGER R
37845      DOUBLE PRECISION XPAR(*)
37846      DOUBLE PRECISION FVEC(*)
37847      REAL XDATA(*)
37848C
37849      DOUBLE PRECISION DN
37850      DOUBLE PRECISION DR
37851      DOUBLE PRECISION DM
37852      DOUBLE PRECISION DZ
37853      DOUBLE PRECISION DH
37854      DOUBLE PRECISION DX
37855      DOUBLE PRECISION UHAT
37856      DOUBLE PRECISION SHAT
37857      DOUBLE PRECISION DSUM1
37858      DOUBLE PRECISION DSUM2
37859      DOUBLE PRECISION DTERM1
37860      DOUBLE PRECISION DTERM2
37861C
37862      DOUBLE PRECISION C
37863      INTEGER N
37864      INTEGER M
37865      COMMON/LG1COM/C,N,M
37866C
37867C-----COMMON----------------------------------------------------------
37868C
37869      INCLUDE 'DPCOP2.INC'
37870C
37871C-----START POINT-----------------------------------------------------
37872C
37873      NPAR=2
37874      IFLAG=0
37875C
37876      DN=DBLE(N)
37877      DR=DBLE(R)
37878      DM=DBLE(M)
37879      UHAT=XPAR(1)
37880      SHAT=XPAR(2)
37881      DZ=(DLOG(C)-UHAT)/SHAT
37882      CALL NODPDF(DZ,DTERM1)
37883      CALL NODCDF(DZ,DTERM2)
37884      DH=DTERM1/(1.0D0 - DTERM2)
37885C
37886      DTERM1=DM*DH
37887      DTERM2=DTERM1*DZ - DR
37888      DSUM1=0.0D0
37889      DSUM2=0.0D0
37890C
37891      IF(R.GT.0)THEN
37892        DO100I=1,R
37893          DX=DBLE(XDATA(I))
37894          DX=(DLOG(DX) - UHAT)/SHAT
37895          DSUM1=DSUM1 + DX
37896          DSUM2=DSUM2 + DX*DX
37897  100   CONTINUE
37898      ENDIF
37899C
37900      FVEC(1) = DTERM1 + DSUM1
37901      FVEC(2) = DTERM2 + DSUM2
37902C
37903      RETURN
37904      END
37905      DOUBLE PRECISION FUNCTION LG2FUN (DU,DX)
37906C
37907C     PURPOSE--THIS ROUTINE IS USED IN FINDING THE LIKELIHOOD RATIO
37908C              BASED CONFIDENCE INTERVAL FOR THE MU (=LOG(SCALE)
37909C              PARAMETER OF A 2-PARAMETER LOGNORMAL MODEL
37910C              (SINGLY TIME CENSORED SAMPLE).  THE FOLLOWING
37911C              EQUATION NEEDS TO BE SOLVED.
37912C
37913C                 2*LL(UHAT,SHAT) - 2*LL(U,S(U)) - CHSPPF(alpha,1)
37914C
37915C              WITH
37916C
37917C                 LL(UHAT,SHAT) = -R*LOG(SHAT) -
37918C                                 SUM[i=1 tp r][LOG(X(I))] -
37919C                                 0.5*SUM[i=1 to r]
37920C                                 [((LOG(X(I)) - UHAT)/SHAT)**2] +
37921C                                 DM*LOG(1 - NORCDF(
37922C
37923C              LL(UHAT,SHAT) IS COMPUTED ONCE BY THE CALLING ROUTINE
37924C              AND PASSED VIA COMMON BLOCK.
37925C
37926C              THEN GIVEN THE CURRENT GUESS FOR U, WE NEED TO
37927C              SOLVE THE FOLLOWING EQUATION FOR S:
37928C
37929C                 SUM[i=1 to r][{(LOG(X(I)-U)/S}**2] +
37930C                 M*(LOG(C)-U)/S)*H(Z) - R
37931C
37932C              WITH
37933C
37934C                 Z    = (LOG(X(I))-U)/S
37935C                 HZ   = NORPDF(Z)/(1-NORCDF(Z))
37936C
37937C              WE THEN COMPUTE LL(UHAT,SHAT) WITH THESE U AND S(U)
37938C              VALUES.
37939C
37940C     EXAMPLE--LOGNORMAL MAXIMUM LIKELIHOOD Y X
37941C     REFERENCE--KARL BURY, "STATISTICAL DISTRIBUTIONS IN ENGINEERING",
37942C                CAMBRIDGE UNIVERSITY PRESS, 1999, CHAPTER 11 (SEE
37943C                EXAMPLE 11.5).
37944C     WRITTEN BY--JAMES J. FILLIBEN
37945C                 STATISTICAL ENGINEERING DIVISION
37946C                 INFORMATION TECHNOLOGY LABORATORY
37947C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
37948C                 GAITHERSBUG, MD 20899-8980
37949C                 PHONE--301-975-2855
37950C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
37951C           OF THE NATIONAL BUREAU OF STANDARDS.
37952C     LANGUAGE--ANSI FORTRAN (1977)
37953C     VERSION NUMBER--2004/11
37954C     ORIGINAL VERSION--NOVEMBER   2004.
37955C
37956C---------------------------------------------------------------------
37957C
37958      DOUBLE PRECISION DU
37959      DOUBLE PRECISION DX(*)
37960C
37961      INTEGER N
37962      INTEGER IR
37963      INTEGER IM
37964      DOUBLE PRECISION DLLUS
37965      DOUBLE PRECISION DC
37966      DOUBLE PRECISION DK
37967      DOUBLE PRECISION DSIGMA
37968      COMMON/LG2COM/DLLUS,DC,DK,DSIGMA,N,IR,IM
37969C
37970      INTEGER N2
37971      INTEGER IR2
37972      INTEGER IM2
37973      DOUBLE PRECISION DU2
37974      DOUBLE PRECISION DC2
37975      COMMON/LG3COM/DU2,DC2,N2,IR2,IM2
37976C
37977      DOUBLE PRECISION LG3FUN
37978      EXTERNAL LG3FUN
37979C
37980      DOUBLE PRECISION AE
37981      DOUBLE PRECISION RE
37982      DOUBLE PRECISION XLOW
37983      DOUBLE PRECISION XUP
37984      DOUBLE PRECISION XSTRT
37985      DOUBLE PRECISION DS
37986      DOUBLE PRECISION DN
37987      DOUBLE PRECISION DR
37988      DOUBLE PRECISION DM
37989      DOUBLE PRECISION DZ
37990      DOUBLE PRECISION DTERM1
37991      DOUBLE PRECISION DTERM2
37992      DOUBLE PRECISION DSUM1
37993      DOUBLE PRECISION DSUM2
37994C
37995C-----COMMON----------------------------------------------------------
37996C
37997      INCLUDE 'DPCOP2.INC'
37998C
37999C-----START POINT-----------------------------------------------------
38000C
38001C  STEP 1: GIVEN VALUE OF SCALE PARAMETER (DB), NEED TO COMPUTE
38002C          THE SHAPE PARAMETER (WHICH IN TURN INVOLVES FINDING A
38003C          ROOT).
38004
38005      N2=N
38006      IR2=IR
38007      IM2=IM
38008      DC2=DC
38009      DU2=DU
38010C
38011      AE=1.D-7
38012      RE=1.D-7
38013      XSTRT=DSIGMA
38014      XLOW=XSTRT/5.0D0
38015      XUP=XSTRT*5.0D0
38016      CALL DFZER3(LG3FUN,XLOW,XUP,XSTRT,RE,AE,IFLAG,DX)
38017      DS=XLOW
38018C
38019C  COMPUTE LL(S,G)
38020C
38021      DN=DBLE(N)
38022      DR=DBLE(IR)
38023      DM=DBLE(IM)
38024C
38025      DZ=(DLOG(DC) - DU)/DS
38026      CALL NODCDF(DZ,DTERM2)
38027      DTERM1=-DR*DLOG(DS) + DM*DLOG(1.0D0 - DTERM2)
38028      DSUM1=0.0D0
38029      DSUM2=0.0D0
38030      DO100I=1,IR
38031        DZ=DLOG(DX(I))
38032        DSUM1=DSUM1 + DZ
38033        DSUM2=DSUM2 + ((DZ - DU)/DS)**2
38034  100 CONTINUE
38035      DTERM2=DTERM1 - DSUM1 - 0.5D0*DSUM2
38036C
38037      LG2FUN=2.0*DLLUS - 2.0D0*DTERM2 - DK
38038C
38039      RETURN
38040      END
38041      DOUBLE PRECISION FUNCTION LG3FUN (DS,DX)
38042C
38043C     PURPOSE--THIS ROUTINE IS USED IN FINDING THE LIKELIHOOD RATIO
38044C              BASED CONFIDENCE INTERVAL FOR THE MU (=LOG(SCALE)
38045C              PARAMETER OF A 2-PARAMETER LOGNORMAL MODEL
38046C              (SINGLY TIME CENSORED SAMPLE).  IT IS CALLED BY
38047C              LG2FUN TO SOLVE THE EQUATION
38048C
38049C                 SUM[i=1 to r][{(LOG(X(I)-U)/S}**2] +
38050C                 M*(LOG(C)-U)/S)*H(Z) - R
38051C
38052C              WITH
38053C
38054C                 Z    = (LOG(X(I))-U)/S
38055C                 HZ   = NORPDF(Z)/(1-NORCDF(Z))
38056C
38057C              WE ARE GIVEN THE VALUE OF U AND WE NEED TO SOLVE FOR S.
38058C
38059C     EXAMPLE--LOGNORMAL MAXIMUM LIKELIHOOD Y X
38060C     REFERENCE--KARL BURY, "STATISTICAL DISTRIBUTIONS IN ENGINEERING",
38061C                CAMBRIDGE UNIVERSITY PRESS, 1999, CHAPTER 11 (SEE
38062C                EXAMPLE 11.5).
38063C     WRITTEN BY--JAMES J. FILLIBEN
38064C                 STATISTICAL ENGINEERING DIVISION
38065C                 INFORMATION TECHNOLOGY LABORATORY
38066C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
38067C                 GAITHERSBUG, MD 20899-8980
38068C                 PHONE--301-975-2855
38069C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
38070C           OF THE NATIONAL BUREAU OF STANDARDS.
38071C     LANGUAGE--ANSI FORTRAN (1977)
38072C     VERSION NUMBER--2004/11
38073C     ORIGINAL VERSION--NOVEMBER   2004.
38074C
38075C---------------------------------------------------------------------
38076C
38077      DOUBLE PRECISION DS
38078      DOUBLE PRECISION DX(*)
38079C
38080      INTEGER N
38081      INTEGER IR
38082      INTEGER IM
38083      DOUBLE PRECISION DU
38084      DOUBLE PRECISION DC
38085      COMMON/LG3COM/DU,DC,N,IR,IM
38086C
38087      DOUBLE PRECISION DN
38088      DOUBLE PRECISION DR
38089      DOUBLE PRECISION DM
38090      DOUBLE PRECISION DZ
38091      DOUBLE PRECISION DTERM1
38092      DOUBLE PRECISION DTERM2
38093      DOUBLE PRECISION DTERM3
38094      DOUBLE PRECISION DSUM1
38095C
38096C-----COMMON----------------------------------------------------------
38097C
38098      INCLUDE 'DPCOP2.INC'
38099C
38100C-----START POINT-----------------------------------------------------
38101C
38102      DN=DBLE(N)
38103      DR=DBLE(IR)
38104      DM=DBLE(IM)
38105C
38106      DTERM1=(DLOG(DC)-DU)/DS
38107      CALL NODPDF(DTERM1,DTERM2)
38108      CALL NODCDF(DTERM1,DTERM3)
38109C
38110      DSUM1=0.0D0
38111      DO100I=1,IR
38112        DZ=DX(I)
38113        DZ=(DLOG(DZ) - DU)/DS
38114        DSUM1=DSUM1 + DZ*DZ
38115  100 CONTINUE
38116C
38117      LG3FUN=DSUM1 + DM*DTERM1*DTERM2/(1.0D0-DTERM3) - DR
38118C
38119      RETURN
38120      END
38121      DOUBLE PRECISION FUNCTION LG4FUN (DSIGMA,DX)
38122C
38123C     PURPOSE--THIS ROUTINE IS USED IN FINDING THE LIKELIHOOD RATIO
38124C              BASED CONFIDENCE INTERVAL FOR THE SIGMA
38125C              PARAMETER OF A 2-PARAMETER LOGNORMAL MODEL
38126C              (SINGLY TIME CENSORED SAMPLE).  THE FOLLOWING
38127C              EQUATION NEEDS TO BE SOLVED.
38128C
38129C                 2*LL(UHAT,SHAT) - 2*LL(G(S),S) - CHSPPF(alpha,1)
38130C
38131C              WITH
38132C
38133C                 LL(UHAT,SHAT) = -R*LOG(SHAT) -
38134C                                 SUM[i=1 tp r][LOG(X(I))] -
38135C                                 0.5*SUM[i=1 to r]
38136C                                 [((LOG(X(I)) - UHAT)/SHAT)**2] +
38137C                                 DM*LOG(1 - NORCDF(
38138C
38139C              LL(UHAT,SHAT) IS COMPUTED ONCE BY THE CALLING ROUTINE
38140C              AND PASSED VIA COMMON BLOCK.
38141C
38142C              THEN GIVEN THE CURRENT GUESS FOR SIGMA, WE NEED TO
38143C              SOLVE THE FOLLOWING EQUATION FOR U:
38144C
38145C                 SUM[i=1 to r][(LOG(X(I)-U)/S] + M*H(Z)
38146C
38147C              WITH
38148C
38149C                 Z    = (LOG(X(I))-U)/S
38150C                 HZ   = NORPDF(Z)/(1-NORCDF(Z))
38151C
38152C              WE THEN COMPUTE LL(UHAT,SHAT) WITH THESE G(S) AND S
38153C              VALUES.
38154C
38155C     EXAMPLE--LOGNORMAL MAXIMUM LIKELIHOOD Y X
38156C     REFERENCE--KARL BURY, "STATISTICAL DISTRIBUTIONS IN ENGINEERING",
38157C                CAMBRIDGE UNIVERSITY PRESS, 1999, CHAPTER 11 (SEE
38158C                EXAMPLE 11.5).
38159C     WRITTEN BY--JAMES J. FILLIBEN
38160C                 STATISTICAL ENGINEERING DIVISION
38161C                 INFORMATION TECHNOLOGY LABORATORY
38162C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
38163C                 GAITHERSBUG, MD 20899-8980
38164C                 PHONE--301-975-2855
38165C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
38166C           OF THE NATIONAL BUREAU OF STANDARDS.
38167C     LANGUAGE--ANSI FORTRAN (1977)
38168C     VERSION NUMBER--2004/11
38169C     ORIGINAL VERSION--NOVEMBER   2004.
38170C
38171C---------------------------------------------------------------------
38172C
38173      DOUBLE PRECISION DSIGMA
38174      DOUBLE PRECISION DX(*)
38175C
38176      INTEGER N
38177      INTEGER IR
38178      INTEGER IM
38179      DOUBLE PRECISION DLLUS
38180      DOUBLE PRECISION DC
38181      DOUBLE PRECISION DK
38182      DOUBLE PRECISION DU
38183      COMMON/LG4COM/DLLUS,DC,DK,DU,N,IR,IM
38184C
38185      INTEGER N2
38186      INTEGER IR2
38187      INTEGER IM2
38188      DOUBLE PRECISION DS2
38189      DOUBLE PRECISION DC2
38190      COMMON/LG5COM/DS2,DC2,N2,IR2,IM2
38191C
38192      DOUBLE PRECISION LG5FUN
38193      EXTERNAL LG5FUN
38194C
38195      DOUBLE PRECISION AE
38196      DOUBLE PRECISION RE
38197      DOUBLE PRECISION XLOW
38198      DOUBLE PRECISION XUP
38199      DOUBLE PRECISION XSTRT
38200      DOUBLE PRECISION DS
38201      DOUBLE PRECISION DN
38202      DOUBLE PRECISION DR
38203      DOUBLE PRECISION DM
38204      DOUBLE PRECISION DZ
38205      DOUBLE PRECISION DTERM1
38206      DOUBLE PRECISION DTERM2
38207      DOUBLE PRECISION DSUM1
38208      DOUBLE PRECISION DSUM2
38209C
38210C-----COMMON----------------------------------------------------------
38211C
38212      INCLUDE 'DPCOP2.INC'
38213C
38214C-----START POINT-----------------------------------------------------
38215C
38216C  STEP 1: GIVEN VALUE OF SHAPE PARAMETER (DSIGMA), NEED TO COMPUTE
38217C          THE SCALE PARAMETER (WHICH IN TURN INVOLVES FINDING A
38218C          ROOT).
38219
38220      N2=N
38221      IR2=IR
38222      IM2=IM
38223      DC2=DC
38224      DS2=DSIGMA
38225C
38226      AE=1.D-7
38227      RE=1.D-7
38228      XSTRT=DU
38229      XLOW=XSTRT/5.0D0
38230      XUP=XSTRT*5.0D0
38231      CALL DFZER3(LG5FUN,XLOW,XUP,XSTRT,RE,AE,IFLAG,DX)
38232      DU=XLOW
38233      DS=DSIGMA
38234C
38235C  COMPUTE LL(S,G)
38236C
38237      DN=DBLE(N)
38238      DR=DBLE(IR)
38239      DM=DBLE(IM)
38240C
38241      DZ=(DLOG(DC) - DU)/DS
38242      CALL NODCDF(DZ,DTERM2)
38243      DTERM1=-DR*DLOG(DS) + DM*DLOG(1.0D0 - DTERM2)
38244      DSUM1=0.0D0
38245      DSUM2=0.0D0
38246      DO100I=1,IR
38247        DZ=DLOG(DX(I))
38248        DSUM1=DSUM1 + DZ
38249        DSUM2=DSUM2 + ((DZ - DU)/DS)**2
38250  100 CONTINUE
38251      DTERM2=DTERM1 - DSUM1 - 0.5D0*DSUM2
38252C
38253      LG4FUN=2.0*DLLUS - 2.0D0*DTERM2 - DK
38254C
38255      RETURN
38256      END
38257      DOUBLE PRECISION FUNCTION LG5FUN (DU,DX)
38258C
38259C     PURPOSE--THIS ROUTINE IS USED IN FINDING THE LIKELIHOOD RATIO
38260C              BASED CONFIDENCE INTERVAL FOR THE SHAPE PARAMETER,
38261C              SIGMA, OF A 2-PARAMETER LOGNORMAL MODEL
38262C              (SINGLY TIME CENSORED SAMPLE).  IT IS CALLED BY
38263C              LG4FUN TO SOLVE THE EQUATION
38264C
38265C                 SUM[i=1 to r][{(LOG(X(I)-U)/S}**2] + M*H(Z)
38266C
38267C              WITH
38268C
38269C                 Z    = (LOG(X(I))-U)/S
38270C                 HZ   = NORPDF(Z)/(1-NORCDF(Z))
38271C
38272C              WE ARE GIVEN THE VALUE OF U AND WE NEED TO SOLVE FOR S.
38273C
38274C     EXAMPLE--LOGNORMAL MAXIMUM LIKELIHOOD Y X
38275C     REFERENCE--KARL BURY, "STATISTICAL DISTRIBUTIONS IN ENGINEERING",
38276C                CAMBRIDGE UNIVERSITY PRESS, 1999, CHAPTER 11 (SEE
38277C                EXAMPLE 11.5).
38278C     WRITTEN BY--JAMES J. FILLIBEN
38279C                 STATISTICAL ENGINEERING DIVISION
38280C                 INFORMATION TECHNOLOGY LABORATORY
38281C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
38282C                 GAITHERSBUG, MD 20899-8980
38283C                 PHONE--301-975-2855
38284C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
38285C           OF THE NATIONAL BUREAU OF STANDARDS.
38286C     LANGUAGE--ANSI FORTRAN (1977)
38287C     VERSION NUMBER--2004/11
38288C     ORIGINAL VERSION--NOVEMBER   2004.
38289C
38290C---------------------------------------------------------------------
38291C
38292      DOUBLE PRECISION DU
38293      DOUBLE PRECISION DX(*)
38294C
38295      INTEGER N
38296      INTEGER IR
38297      INTEGER IM
38298      DOUBLE PRECISION DS
38299      DOUBLE PRECISION DC
38300      COMMON/LG5COM/DS,DC,N,IR,IM
38301C
38302      DOUBLE PRECISION DN
38303      DOUBLE PRECISION DR
38304      DOUBLE PRECISION DM
38305      DOUBLE PRECISION DZ
38306      DOUBLE PRECISION DTERM1
38307      DOUBLE PRECISION DTERM2
38308      DOUBLE PRECISION DTERM3
38309      DOUBLE PRECISION DSUM1
38310C
38311C-----COMMON----------------------------------------------------------
38312C
38313      INCLUDE 'DPCOP2.INC'
38314C
38315C-----START POINT-----------------------------------------------------
38316C
38317      DN=DBLE(N)
38318      DR=DBLE(IR)
38319      DM=DBLE(IM)
38320C
38321      DTERM1=(DLOG(DC)-DU)/DS
38322      CALL NODPDF(DTERM1,DTERM2)
38323      CALL NODCDF(DTERM1,DTERM3)
38324C
38325      DSUM1=0.0D0
38326      DO100I=1,IR
38327        DZ=DX(I)
38328        DZ=(DLOG(DZ) - DU)/DS
38329        DSUM1=DSUM1 + DZ
38330  100 CONTINUE
38331C
38332      LG5FUN=DSUM1 + DM*DTERM2/(1.0D0-DTERM3)
38333C
38334      RETURN
38335      END
38336      DOUBLE PRECISION FUNCTION LG6FUN (DXQ,DX)
38337C
38338C     PURPOSE--THIS ROUTINE IS USED IN FINDING THE LIKELIHOOD RATIO
38339C              BASED CONFIDENCE INTERVAL FOR A GIVEN PERCENTILE
38340C              OF A 2-PARAMETER LOGNORMAL MODEL
38341C              (SINGLY TIME CENSORED SAMPLE).  THE FOLLOWING
38342C              EQUATION NEEDS TO BE SOLVED.
38343C
38344C                 2*LL(UHAT,SHAT) - 2*LL(g(xq),s(xq)) - CHSPPF(alpha,1)
38345C
38346C              WITH
38347C
38348C                 LL(UHAT,SHAT) = -R*LOG(SHAT) -
38349C                                 SUM[i=1 tp r][LOG(X(I))] -
38350C                                 0.5*SUM[i=1 to r]
38351C                                 [((LOG(X(I)) - UHAT)/SHAT)**2] +
38352C                                 DM*LOG(1 - NORCDF(
38353C
38354C              LL(UHAT,SHAT) IS COMPUTED ONCE BY THE CALLING ROUTINE
38355C              AND PASSED VIA COMMON BLOCK.
38356C
38357C              THEN GIVEN THE CURRENT MAXIMUM LIKELIHOOD ESTIMATE OF
38358C              SIGMA, WE NEED TO SOLVE THE FOLLOWING EQUATION FOR
38359C              XQ:
38360C
38361C
38362C                 (1/B**2)*SUM[i=1 to r]
38363C                 [{(LOG(X(I)/X05} + B*Z05]*LOG(X(I)/X05) +
38364C                 (M/B)*(LOG(C)/X05)*H(Z) - R
38365C
38366C              WITH
38367C
38368C                 Z05  = NORPPF(1 - ALPHA/2)
38369C                 X05  = LGNPPF(P) (P IS THE DESIRED PERCENTILE)
38370C                 Z    = LOG(C/XQ)/B + Z05
38371C                 HZ   = NORPDF(Z)/(1-NORCDF(Z))
38372C
38373C              WE ARE GIVEN THE VALUE OF B (= MAXIMUM LIKELIHOOD
38374C              ESTIMATE OF SIGMA) AND WE NEED TO SOLVE FOR XQ.
38375C              WE THEN COMPUTE LL(UHAT,SHAT) WITH THESE U AND S(U)
38376C              VALUES.
38377C
38378C     EXAMPLE--LOGNORMAL MAXIMUM LIKELIHOOD Y X
38379C     REFERENCE--KARL BURY, "STATISTICAL DISTRIBUTIONS IN ENGINEERING",
38380C                CAMBRIDGE UNIVERSITY PRESS, 1999, CHAPTER 11 (SEE
38381C                EXAMPLE 11.5).
38382C     WRITTEN BY--JAMES J. FILLIBEN
38383C                 STATISTICAL ENGINEERING DIVISION
38384C                 INFORMATION TECHNOLOGY LABORATORY
38385C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
38386C                 GAITHERSBUG, MD 20899-8980
38387C                 PHONE--301-975-2855
38388C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
38389C           OF THE NATIONAL BUREAU OF STANDARDS.
38390C     LANGUAGE--ANSI FORTRAN (1977)
38391C     VERSION NUMBER--2004/11
38392C     ORIGINAL VERSION--NOVEMBER   2004.
38393C
38394C---------------------------------------------------------------------
38395C
38396      DOUBLE PRECISION DXQ
38397      DOUBLE PRECISION DX(*)
38398C
38399      INTEGER N
38400      INTEGER IR
38401      INTEGER IM
38402      DOUBLE PRECISION DLLUS
38403      DOUBLE PRECISION DC
38404      DOUBLE PRECISION DK
38405      DOUBLE PRECISION DSIGMA
38406      DOUBLE PRECISION DU
38407      DOUBLE PRECISION DX05
38408      DOUBLE PRECISION DZ05
38409      DOUBLE PRECISION SEXQP
38410      COMMON/LG6COM/DLLUS,DC,DK,DSIGMA,DU,DX05,DZ05,SEXQP,N,IR,IM
38411C
38412      INTEGER N2
38413      INTEGER IR2
38414      INTEGER IM2
38415      DOUBLE PRECISION DX052
38416      DOUBLE PRECISION DZ052
38417      DOUBLE PRECISION DC2
38418      DOUBLE PRECISION DS2
38419      COMMON/LG7COM/DX052,DZ052,DC2,DS2,N2,IR2,IM2
38420C
38421      DOUBLE PRECISION LG7FUN
38422      EXTERNAL LG7FUN
38423C
38424      DOUBLE PRECISION AE
38425      DOUBLE PRECISION RE
38426      DOUBLE PRECISION XLOW
38427      DOUBLE PRECISION XUP
38428      DOUBLE PRECISION XSTRT
38429      DOUBLE PRECISION DS
38430      DOUBLE PRECISION DU2
38431      DOUBLE PRECISION DN
38432      DOUBLE PRECISION DR
38433      DOUBLE PRECISION DM
38434      DOUBLE PRECISION DZ
38435      DOUBLE PRECISION DTERM1
38436      DOUBLE PRECISION DTERM2
38437      DOUBLE PRECISION DSUM1
38438      DOUBLE PRECISION DSUM2
38439C
38440C-----COMMON----------------------------------------------------------
38441C
38442      INCLUDE 'DPCOP2.INC'
38443C
38444C-----START POINT-----------------------------------------------------
38445C
38446C  STEP 1: GIVEN VALUE OF SCALE PARAMETER (DB), NEED TO COMPUTE
38447C          THE SHAPE PARAMETER (WHICH IN TURN INVOLVES FINDING A
38448C          ROOT).
38449C
38450      DX052=DX05
38451      DZ052=DZ05
38452      DC2=DC
38453      DS2=DSIGMA
38454      N2=N
38455      IR2=IR
38456      IM2=IM
38457C
38458      AE=1.D-7
38459      RE=1.D-7
38460      XSTRT=DXQ
38461      XLOW=XSTRT/5.0D0
38462      XUP=XSTRT*5.0D0
38463      CALL DFZER3(LG7FUN,XLOW,XUP,XSTRT,RE,AE,IFLAG,DX)
38464      DSXQ=XLOW
38465C
38466C  COMPUTE LL(S,G)
38467C
38468      DN=DBLE(N)
38469      DR=DBLE(IR)
38470      DM=DBLE(IM)
38471C
38472      DU2=DLOG(DXQ) - DZ05*DSXQ
38473      DS=DSXQ
38474      DZ=(DLOG(DC) - DU2)/DS
38475      CALL NODCDF(DZ,DTERM2)
38476      DTERM1=-DR*DLOG(DS) + DM*DLOG(1.0D0 - DTERM2)
38477      DSUM1=0.0D0
38478      DSUM2=0.0D0
38479      DO100I=1,IR
38480        DZ=DLOG(DX(I))
38481        DSUM1=DSUM1 + DZ
38482        DSUM2=DSUM2 + ((DZ - DU2)/DS)**2
38483  100 CONTINUE
38484      DTERM2=DTERM1 - DSUM1 - 0.5D0*DSUM2
38485C
38486      LG6FUN=2.0*DLLUS - 2.0D0*DTERM2 - DK
38487C
38488      RETURN
38489      END
38490      DOUBLE PRECISION FUNCTION LG7FUN (DXQ,DX)
38491C
38492C     PURPOSE--THIS ROUTINE IS USED IN FINDING THE LIKELIHOOD RATIO
38493C              BASED CONFIDENCE INTERVAL FOR THE PERCENTILE FUNCTION
38494C              OF A 2-PARAMETER LOGNORMAL MODEL (SINGLY TIME CENSORED
38495C              SAMPLE).  IT IS CALLED BY LG6FUN TO SOLVE THE EQUATION
38496C
38497C                 (1/B**2)*SUM[i=1 to r]
38498C                 [{(LOG(X(I)/X05} + B*Z05]*LOG(X(I)/X05) +
38499C                 (M/B)*(LOG(C)/X05)*H(Z) - R
38500C
38501C              WITH
38502C
38503C                 Z05  = NORPPF(1 - ALPHA/2)
38504C                 X05  = LGNPPF(P) (P IS THE DESIRED PERCENTILE)
38505C                 Z    = LOG(C/XQ)/B + Z05
38506C                 HZ   = NORPDF(Z)/(1-NORCDF(Z))
38507C
38508C              WE ARE GIVEN THE VALUE OF B (= MAXIMUM LIKELIHOOD
38509C              ESTIMATE OF SIGMA) AND WE NEED TO SOLVE FOR XQ.
38510C
38511C              THE VALUES OF Z05 AND X05 ARE CALCULATED IN DPMLL2
38512C              AND STORED IN A COMMON BLOCK.
38513C
38514C     EXAMPLE--LOGNORMAL MAXIMUM LIKELIHOOD Y X
38515C     REFERENCE--KARL BURY, "STATISTICAL DISTRIBUTIONS IN ENGINEERING",
38516C                CAMBRIDGE UNIVERSITY PRESS, 1999, CHAPTER 11 (SEE
38517C                EXAMPLE 11.5).
38518C     WRITTEN BY--JAMES J. FILLIBEN
38519C                 STATISTICAL ENGINEERING DIVISION
38520C                 INFORMATION TECHNOLOGY LABORATORY
38521C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
38522C                 GAITHERSBUG, MD 20899-8980
38523C                 PHONE--301-975-2855
38524C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
38525C           OF THE NATIONAL BUREAU OF STANDARDS.
38526C     LANGUAGE--ANSI FORTRAN (1977)
38527C     VERSION NUMBER--2004/11
38528C     ORIGINAL VERSION--NOVEMBER   2004.
38529C
38530C---------------------------------------------------------------------
38531C
38532      DOUBLE PRECISION DXQ
38533      DOUBLE PRECISION DX(*)
38534C
38535      INTEGER N
38536      INTEGER IR
38537      INTEGER IM
38538      DOUBLE PRECISION DX05
38539      DOUBLE PRECISION DZ05
38540      DOUBLE PRECISION DC
38541      DOUBLE PRECISION DS
38542      COMMON/LG7COM/DX05,DZ05,DC,DS,N,IR,IM
38543C
38544      DOUBLE PRECISION DN
38545      DOUBLE PRECISION DR
38546      DOUBLE PRECISION DM
38547      DOUBLE PRECISION DZ
38548      DOUBLE PRECISION DTERM1
38549      DOUBLE PRECISION DTERM2
38550      DOUBLE PRECISION DTERM3
38551      DOUBLE PRECISION DSUM1
38552C
38553C-----COMMON----------------------------------------------------------
38554C
38555      INCLUDE 'DPCOP2.INC'
38556C
38557C-----START POINT-----------------------------------------------------
38558C
38559      DN=DBLE(N)
38560      DR=DBLE(IR)
38561      DM=DBLE(IM)
38562C
38563      DTERM1=(DLOG(DC/DXQ)/DS) + DZ05
38564      CALL NODPDF(DTERM1,DTERM2)
38565      CALL NODCDF(DTERM1,DTERM3)
38566C
38567      DSUM1=0.0D0
38568      DO100I=1,IR
38569        DZ=DLOG(DX(I)/DXQ)
38570        DSUM1=DSUM1 + (DZ + DS*DZ05)*DZ
38571  100 CONTINUE
38572C
38573      LG7FUN=(1.0D0/DS**2)*DSUM1 +
38574     1       (DM/DS)*DLOG(DC/DXQ)*DTERM2/(1.0D0-DTERM3) - DR
38575C
38576      RETURN
38577      END
38578      SUBROUTINE LGACDF(X,GAMMA,ILGADF,CDF)
38579C
38580C     PURPOSE--THIS SUBROUTINE COMPUTES THE CUMULATIVE DISTRIBUTION
38581C              FUNCTION VALUE FOR THE LOG-GAMMA DISTRIBUTION
38582C              WITH POSITIVE SHAPE PARAMETER GAMMA
38583C              THIS DISTRIBUTION IS DEFINED FOR ALL REAL X.
38584C              THE PDF FOR THE STANDARD FORM OF THE DISTRIBUTION IS
38585C                  F(X,G) = EXP(G*X-EXP(X))/GAMMA(G)
38586C              WHERE GAMMA IS THE GAMMA FUNCTION.
38587C              THE CORRESPONDING CDF IS:
38588C                  F(X,G) = I(EXP(Y)(GAMMA)
38589C              WHERE I(X)(GAMMA) IS THE INCOMPLETE GAMMA FUNCTION RATIO
38590C     INPUT  ARGUMENTS--X      = THE SINGLE PRECISION VALUE AT
38591C                                WHICH THE CUMULATIVE DISTRIBUTION
38592C                                FUNCTION IS TO BE EVALUATED.
38593C                                X SHOULD BE NON-NEGATIVE.
38594C                     --GAMMA  = A POSITIVE SHAPE PARAMETER
38595C     OUTPUT ARGUMENTS--CDF    = THE SINGLE PRECISION CUMULATIVE
38596C                                DISTRIBUTION FUNCTION VALUE.
38597C     OUTPUT--THE SINGLE PRECISION CUMULATIVE DISTRIBUTION
38598C             FUNCTION VALUE CDF FOR THE LOG GAMMA DISTRIBUTION
38599C             WITH SHAPE PARAMETER GAMMA
38600C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
38601C     RESTRICTIONS--X SHOULD BE NON-NEGATIVE.
38602C                 --GAMMA SHOULD BE A POSITIVE NUMBER.
38603C     LANGUAGE--ANSI FORTRAN (1977)
38604C     REFERENCES--JOHNSON AND KOTZ, CONTINUOUS UNIVARIATE
38605C                 DISTRIBUTIONS--2, 1994, PAGE 89-90.
38606C     WRITTEN BY--JAMES J. FILLIBEN
38607C                 STATISTICAL ENGINEERING DIVISION
38608C                 INFORMATION TECHNOLOGY LABORATORY
38609C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
38610C                 GAITHERSBURG, MD 20899-8980
38611C                 PHONE--301-975-2855
38612C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
38613C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
38614C     LANGUAGE--ANSI FORTRAN (1966)
38615C               EXCEPTION--HOLLERITH STRINGS IN FORMAT STATEMENTS
38616C                          DENOTED BY QUOTES RATHER THAN NH.
38617C     VERSION NUMBER--95/10
38618C     ORIGINAL VERSION--OCTOBER   1995.
38619C     UPDATED         --JULY      2005. SUPPORT FOR RE-PARAMETERIZED
38620C                                       DEFINITION THAT IS USEFUL FOR
38621C
38622C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
38623C
38624C---------------------------------------------------------------------
38625C
38626      CHARACTER*4 ILGADF
38627C
38628      DOUBLE PRECISION DX
38629      DOUBLE PRECISION DGAMMA
38630      DOUBLE PRECISION DCDF
38631      DOUBLE PRECISION DGAMIP
38632      DOUBLE PRECISION DTERM1
38633C
38634      EXTERNAL DGAMIP
38635C
38636C-----COMMON----------------------------------------------------------
38637C
38638      INCLUDE 'DPCOP2.INC'
38639C
38640C-----DATA STATEMENTS-------------------------------------------------
38641C
38642C-----START POINT-----------------------------------------------------
38643C
38644C     CHECK THE INPUT ARGUMENTS FOR ERRORS
38645C
38646      IF(GAMMA.LE.0)THEN
38647        WRITE(ICOUT,15)
38648        CALL DPWRST('XXX','BUG ')
38649        WRITE(ICOUT,46)GAMMA
38650        CALL DPWRST('XXX','BUG ')
38651        CDF=0.0
38652        GOTO9999
38653      ENDIF
38654   15 FORMAT('***** ERROR--THE SECOND INPUT ARGUMENT TO THE ',
38655     1'LGACDF SUBROUTINE IS NON-POSITIVE')
38656   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',E15.8,' *****')
38657C
38658      DX=DBLE(X)
38659      DGAMMA=DBLE(GAMMA)
38660C
38661      IF(ILGADF.EQ.'DEFA')THEN
38662        DCDF=DGAMIP(DGAMMA,DEXP(DX))
38663      ELSE
38664        DTERM1=DGAMMA*DEXP(DX/DSQRT(DGAMMA))
38665        DCDF=DGAMIP(DGAMMA,DTERM1)
38666      ENDIF
38667      CDF=REAL(DCDF)
38668C
38669 9999 CONTINUE
38670      RETURN
38671      END
38672      SUBROUTINE LGAPDF(X,GAMMA,ILGADF,PDF)
38673C
38674C     PURPOSE--THIS SUBROUTINE COMPUTES THE PROBABILITY DENSITY
38675C              FUNCTION VALUE FOR THE LOG-GAMMA DISTRIBUTION
38676C              WITH POSITIVE SHAPE PARAMETER GAMMA
38677C              THIS DISTRIBUTION IS DEFINED FOR ALL REAL X.
38678C              THE PDF FOR THE STANDARD FORM OF THE DISTRIBUTION IS
38679C                  F(X,G) = EXP(G*X-EXP(X))/GAMMA(G)
38680C              WHERE GAMMA IS THE GAMMA FUNCTION.
38681C
38682C              FOR FITTING PURPOSES, THE FOLLOWING REPARAMETERIZED
38683C              PDF IS OFTEN PREFERRED:
38684C                  F(X,G) = (G**(G-0.5)/GAMMA(G)*
38685C                           EXP(SQRT(G)*X-G*EXP(X/SQRT(G)))
38686C     INPUT  ARGUMENTS--X      = THE SINGLE PRECISION VALUE AT
38687C                                WHICH THE PROBABILITY DENSITY
38688C                                FUNCTION IS TO BE EVALUATED.
38689C                                X SHOULD BE NON-NEGATIVE.
38690C                     --GAMMA  = A POSITIVE SHAPE PARAMETER
38691C     OUTPUT ARGUMENTS--PDF    = THE SINGLE PRECISION PROBABILITY
38692C                                DENSITY FUNCTION VALUE.
38693C     OUTPUT--THE SINGLE PRECISION PROBABILITY DENSITY
38694C             FUNCTION VALUE PDF FOR THE LOG GAMMA DISTRIBUTION
38695C             WITH SHAPE PARAMETER GAMMA
38696C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
38697C     RESTRICTIONS--X SHOULD BE NON-NEGATIVE.
38698C                 --GAMMA SHOULD BE A POSITIVE NUMBER.
38699C     LANGUAGE--ANSI FORTRAN (1977)
38700C     REFERENCES--JOHNSON AND KOTZ, CONTINUOUS UNIVARIATE
38701C                 DISTRIBUTIONS--2, 1994, PAGE 89-90.
38702C     WRITTEN BY--JAMES J. FILLIBEN
38703C                 STATISTICAL ENGINEERING DIVISION
38704C                 INFORMATION TECHNOLOGY LABORATORY
38705C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
38706C                 GAITHERSBURG, MD 20899-8980
38707C                 PHONE--301-975-2855
38708C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
38709C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
38710C     LANGUAGE--ANSI FORTRAN (1966)
38711C               EXCEPTION--HOLLERITH STRINGS IN FORMAT STATEMENTS
38712C                          DENOTED BY QUOTES RATHER THAN NH.
38713C     VERSION NUMBER--95/10
38714C     ORIGINAL VERSION--OCTOBER   1995.
38715C     UPDATED         --JULY      2005. SUPPORT FOR RE-PARAMETERIZED
38716C                                       DEFINITION THAT IS USEFUL FOR
38717C                                       FITTING
38718C
38719C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
38720C
38721C---------------------------------------------------------------------
38722C
38723      CHARACTER*4 ILGADF
38724C
38725      DOUBLE PRECISION DX
38726      DOUBLE PRECISION DGAMMA
38727      DOUBLE PRECISION DTERM1
38728      DOUBLE PRECISION DTERM2
38729      DOUBLE PRECISION DTERM3
38730      DOUBLE PRECISION DPDF
38731      DOUBLE PRECISION DLNGAM
38732C
38733C-----COMMON----------------------------------------------------------
38734C
38735      INCLUDE 'DPCOP2.INC'
38736C
38737C-----DATA STATEMENTS-------------------------------------------------
38738C
38739C-----START POINT-----------------------------------------------------
38740C
38741C     CHECK THE INPUT ARGUMENTS FOR ERRORS
38742C
38743      IF(GAMMA.LE.0)THEN
38744        WRITE(ICOUT,15)
38745        CALL DPWRST('XXX','BUG ')
38746        WRITE(ICOUT,46)GAMMA
38747        CALL DPWRST('XXX','BUG ')
38748        PDF=0.0
38749        GOTO9999
38750      ENDIF
38751   15 FORMAT('***** ERROR--THE SECOND INPUT ARGUMENT TO THE ',
38752     1'LGAPDF SUBROUTINE IS NON-POSITIVE')
38753   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',E15.8,' *****')
38754C
38755      DX=DBLE(X)
38756      DGAMMA=DBLE(GAMMA)
38757C
38758      IF(ILGADF.EQ.'DEFA')THEN
38759        DTERM1=DGAMMA*DX - DEXP(DX)
38760        DTERM2=DTERM1-DLNGAM(DGAMMA)
38761        DPDF=0.0D0
38762        IF(DTERM2.GE.-80.0D0)DPDF=DEXP(DTERM2)
38763        PDF=REAL(DPDF)
38764      ELSE
38765        DTERM1=(DGAMMA - 0.5D0)*DLOG(DGAMMA) - DLNGAM(DGAMMA)
38766        DTERM2=DSQRT(DGAMMA)*DX - DGAMMA*DEXP(DX/DSQRT(DGAMMA))
38767        DTERM3=DTERM1 + DTERM2
38768        DPDF=0.0D0
38769        IF(DTERM3.GE.-80.0D0)DPDF=DEXP(DTERM3)
38770        PDF=REAL(DPDF)
38771      ENDIF
38772C
38773 9999 CONTINUE
38774      RETURN
38775      END
38776      SUBROUTINE LGAPPF(P,GAMMA,ILGADF,PPF)
38777C
38778C     PURPOSE   --PERCENT POINT FUNCTION FOR THE LOG-GAMMA
38779C                 DISTRIBUTION.  USES A BISECTION METHOD.
38780C     WRITTEN BY--JAMES J. FILLIBEN
38781C                 STATISTICAL ENGINEERING DIVISION
38782C                 INFORMATION TECHNOLOGY LABORATORY
38783C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
38784C                 GAITHERSBURG, MD 20899-8980
38785C                 PHONE--301-975-2855
38786C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
38787C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
38788C     LANGUAGE--ANSI FORTRAN (1977)
38789C     VERSION NUMBER--95/10
38790C     ORIGINAL VERSION--OCTOBER   1995.
38791C     UPDATED         --JULY      2005. SUPPORT FOR RE-PARAMETERIZED
38792C                                       DEFINITION THAT IS USEFUL FOR
38793C
38794C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
38795C
38796      CHARACTER*4 ILGADF
38797C
38798      INCLUDE 'DPCOP2.INC'
38799C
38800      DATA EPS /0.0001/
38801      DATA SIG /1.0E-5/
38802      DATA ZERO /0./
38803      DATA MAXIT /2000/
38804C
38805C-----START POINT-----------------------------------------------------
38806C
38807C     CHECK THE INPUT ARGUMENTS FOR ERRORS
38808C
38809      IF(P.LE.0.0.OR.P.GE.1.0)THEN
38810        WRITE(ICOUT,1)
38811        CALL DPWRST('XXX','BUG ')
38812        WRITE(ICOUT,46)P
38813        CALL DPWRST('XXX','BUG ')
38814        PPF=0.0
38815        GOTO9999
38816      ENDIF
38817      IF(GAMMA.LE.0)THEN
38818        WRITE(ICOUT,15)
38819        CALL DPWRST('XXX','BUG ')
38820        WRITE(ICOUT,46)GAMMA
38821        CALL DPWRST('XXX','BUG ')
38822        PPF=0.0
38823        GOTO9999
38824      ENDIF
38825C
38826    1 FORMAT('***** ERROR--THE FIRST INPUT ARGUMENT TO THE ',
38827     1' LGAPPF SUBROUTINE IS OUTSIDE THE ALLOWABLE (0,1) INTERVAL.')
38828   15 FORMAT('***** ERROR--THE SECOND INPUT ARGUMENT TO THE ',
38829     1'LGAPPF SUBROUTINE IS NON-POSITIVE *****')
38830   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',E15.8,' *****')
38831C
38832C
38833C  FIND BRACKETING INTERVAL.
38834C
38835      XL=-50.0
38836      XINC=25.0
38837      ICOUNT=0
38838      MAXCNT=10000
38839C
38840   91 CONTINUE
38841      XR=XL+XINC
38842      CALL LGACDF(XL,GAMMA,ILGADF,CDFL)
38843      CALL LGACDF(XR,GAMMA,ILGADF,CDFR)
38844      IF(CDFL.LT.P .AND. CDFR.LT.P)THEN
38845        XL=XR
38846      ELSEIF(CDFL.GT.P .AND. CDFR.GT.P)THEN
38847        XL=XL-XINC
38848      ELSE
38849        GOTO99
38850      ENDIF
38851      ICOUNT=ICOUNT+1
38852      IF(ICOUNT.GT.MAXCNT)THEN
38853        WRITE(ICOUT,96)
38854        CALL DPWRST('XXX','BUG ')
38855        PPF=0.0
38856        GOTO9999
38857      ENDIF
38858   96 FORMAT('***** ERROR--LGAPPF UNABLE TO FIND A BRACKETING ',
38859     *      'INTERVAL. *****')
38860      GOTO91
38861C
38862C  BISECTION METHOD
38863C
38864   99 CONTINUE
38865      IC = 0
38866      FXL = -P
38867      FXR = 1.0 - P
38868  105 CONTINUE
38869      X = (XL+XR)*0.5
38870      CALL LGACDF(X,GAMMA,ILGADF,CDF)
38871      P1=CDF
38872      PPF=X
38873      FCS = P1 - P
38874      IF(FCS*FXL.GT.ZERO)GOTO110
38875      XR = X
38876      FXR = FCS
38877      GOTO115
38878  110 CONTINUE
38879      XL = X
38880      FXL = FCS
38881  115 CONTINUE
38882      XRML = XR - XL
38883      IF(XRML.LE.SIG .AND. ABS(FCS).LE.EPS)GOTO9999
38884      IC = IC + 1
38885      IF(IC.LE.MAXIT)GOTO105
38886      WRITE(ICOUT,130)
38887      CALL DPWRST('XXX','BUG ')
38888  130 FORMAT('***** ERROR--THE LGAPPF ROUTINE DID NOT CONVERGE. ***')
38889      GOTO9999
38890C
38891 9999 CONTINUE
38892      RETURN
38893      END
38894      SUBROUTINE LGARAN(N,GAMMA,ILGADF,ISEED,X)
38895C
38896C     PURPOSE--THIS SUBROUTINE GENERATES A RANDOM SAMPLE OF SIZE N
38897C              FROM THE LOG GAMMA DISTRIBUTION
38898C              WITH TAIL LENGTH PARAMETER VALUE = GAMMA.
38899C     INPUT  ARGUMENTS--N      = THE DESIRED INTEGER NUMBER
38900C                                OF RANDOM NUMBERS TO BE
38901C                                GENERATED.
38902C                     --GAMMA  = THE SINGLE PRECISION VALUE OF THE
38903C                                TAIL LENGTH PARAMETER.
38904C                                GAMMA SHOULD BE POSITIVE.
38905C     OUTPUT ARGUMENTS--X      = A SINGLE PRECISION VECTOR
38906C                                (OF DIMENSION AT LEAST N)
38907C                                INTO WHICH THE GENERATED
38908C                                RANDOM SAMPLE WILL BE PLACED.
38909C     OUTPUT--A RANDOM SAMPLE OF SIZE N
38910C             FROM THE LOG GAMMA DISTRIBUTION
38911C             WITH TAIL LENGTH PARAMETER VALUE = GAMMA.
38912C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
38913C     RESTRICTIONS--THERE IS NO RESTRICTION ON THE MAXIMUM VALUE
38914C                   OF N FOR THIS SUBROUTINE.
38915C                 --GAMMA SHOULD BE POSITIVE.
38916C     OTHER DATAPAC   SUBROUTINES NEEDED--UNIRAN.
38917C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE.
38918C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
38919C     LANGUAGE--ANSI FORTRAN (1977)
38920C     REFERENCES--XX
38921C               --JOHNSON AND KOTZ, CONTINUOUS UNIVARIATE
38922C                 DISTRIBUTIONS--1, 2ND. ED., 1994.
38923C     WRITTEN BY--JAMES J. FILLIBEN
38924C                 STATISTICAL ENGINEERING DIVISION
38925C                 INFORMATION TECHNOLOGY LABORATORY
38926C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
38927C                 GAITHERSBURG, MD 20899-8980
38928C                 PHONE--301-975-2855
38929C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
38930C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
38931C     LANGUAGE--ANSI FORTRAN (1966)
38932C               EXCEPTION--HOLLERITH STRINGS IN FORMAT STATEMENTS
38933C                          DENOTED BY QUOTES RATHER THAN NH.
38934C     VERSION NUMBER--2001.10
38935C     ORIGINAL VERSION--OCTOBER   2001.
38936C     UPDATED         --JULY      2005. SUPPORT FOR RE-PARAMETERIZED
38937C                                       DEFINITION THAT IS USEFUL FOR
38938C
38939C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
38940C
38941C---------------------------------------------------------------------
38942C
38943      DIMENSION X(*)
38944C
38945      CHARACTER*4 ILGADF
38946C
38947C-----COMMON----------------------------------------------------------
38948C
38949      INCLUDE 'DPCOP2.INC'
38950C
38951C-----START POINT-----------------------------------------------------
38952C
38953C     CHECK THE INPUT ARGUMENTS FOR ERRORS
38954C
38955      IF(N.LT.1)THEN
38956        WRITE(ICOUT, 5)
38957        CALL DPWRST('XXX','BUG ')
38958        WRITE(ICOUT,47)N
38959        CALL DPWRST('XXX','BUG ')
38960        GOTO9000
38961      ENDIF
38962      IF(GAMMA.LE.0.0)THEN
38963        WRITE(ICOUT,15)
38964        CALL DPWRST('XXX','BUG ')
38965        WRITE(ICOUT,46)GAMMA
38966        CALL DPWRST('XXX','BUG ')
38967        GOTO9000
38968      ENDIF
38969    5 FORMAT('***** ERROR--THE REQUESTED NUMBER OF LOG GAMMA RANDOM',
38970     1' NUMBERS IS NON-POSITIVE.')
38971   15 FORMAT('***** ERROR--THE SHAPE PARAMETER FOR LOG GAMMA RANDOM',
38972     1' NUMBERS IS NON-POSITIVE.')
38973   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',E15.8,'.')
38974   47 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',I8,'.')
38975C
38976C     GENERATE N UNIFORM (0,1) RANDOM NUMBERS;
38977C
38978      CALL UNIRAN(N,ISEED,X)
38979C
38980C     GENERATE N LOG GAMMA DISTRIBUTION RANDOM NUMBERS
38981C     USING THE PERCENT POINT FUNCTION TRANSFORMATION METHOD.
38982C
38983      DO100I=1,N
38984        CALL LGAPPF(X(I),GAMMA,ILGADF,XTEMP)
38985        X(I)=XTEMP
38986  100 CONTINUE
38987C
38988 9000 CONTINUE
38989      RETURN
38990      END
38991      SUBROUTINE LGDCDF(DX,DSD,DCDF)
38992C
38993C     PURPOSE--THIS SUBROUTINE COMPUTES THE CUMULATIVE DISTRIBUTION
38994C              FUNCTION VALUE FOR THE LOGNORMAL DISTRIBUTION.
38995C     INPUT  ARGUMENTS--DX     = THE DOUBLE PRECISION VALUE AT WHICH
38996C                                THE CUMULATIVE DISTRIBUTION FUNCTION IS
38997C                                TO BE EVALUATED (DX > 0).
38998C                    --DSD    = THE DOUBLE PRECISION VALUE FOR THE
38999C                               SHAPE PARAMETER
39000C     OUTPUT ARGUMENTS--DCDF  = THE DOUBLE PRECISION CUMULATIVE
39001C                               DISTRIBUTION FUNCTION VALUE.
39002C     OUTPUT--THE DOUBLE PRECISION CUMULATIVE DISTRIBUTION FUNCTION VALUE
39003C             DCDF FOR THE LOGNORMAL DISTRIBUTION.
39004C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
39005C     RESTRICTIONS--DX SHOULD BE POSITIVE.
39006C     OTHER DATAPAC   SUBROUTINES NEEDED--NODCDF.
39007C     FORTRAN LIBRARY SUBROUTINES NEEDED--DLOG.
39008C     MODE OF INTERNAL OPERATIONS--DOUBLE PRECISION.
39009C     LANGUAGE--ANSI FORTRAN.
39010C     REFERENCES--JOHNSON AND KOTZ, CONTINUOUS UNIVARIATE
39011C                 DISTRIBUTIONS--1, 1970, PAGES 112-136.
39012C               --CRAMER, MATHEMATICAL METHODS OF STATISTICS,
39013C                 1946, PAGES 219-220.
39014C     WRITTEN BY--JAMES J. FILLIBEN
39015C                 STATISTICAL ENGINEERING LABORATORY (205.03)
39016C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
39017C                 GAITHERSBURG, MD 20899-8980
39018C                 PHONE:  301-975-2899
39019C     ORIGINAL VERSION--MARCH     2014.
39020C
39021C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
39022C
39023C---------------------------------------------------------------------
39024C
39025      DOUBLE PRECISION DX
39026      DOUBLE PRECISION DSD
39027      DOUBLE PRECISION DCDF
39028      DOUBLE PRECISION DARG
39029C
39030      INCLUDE 'DPCOP2.INC'
39031C
39032C---------------------------------------------------------------------
39033C
39034C     CHECK THE INPUT ARGUMENTS FOR ERRORS
39035C
39036      DCDF=0.0
39037      IF(DX.LE.0.0D0)THEN
39038        GOTO9000
39039      ELSEIF(DSD.LE.0.0D0)THEN
39040        WRITE(ICOUT,5)
39041        CALL DPWRST('XXX','BUG ')
39042        WRITE(ICOUT,46)DSD
39043        CALL DPWRST('XXX','BUG ')
39044        GOTO9000
39045      ENDIF
39046    5 FORMAT('***** ERROR--THE SECOND ARGUMENT TO LGNCDF IS ',
39047     1       'NON-POSITIVE.')
39048   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',G15.7)
39049C
39050C-----START POINT-----------------------------------------------------
39051C
39052      IF(DSD.EQ.1.0D0)THEN
39053        DARG=DLOG(DX)
39054        CALL NODCDF(DARG,DCDF)
39055      ELSE
39056        DARG=DLOG(DX)/DSD
39057        CALL NODCDF(DARG,DCDF)
39058      ENDIF
39059C
39060 9000 CONTINUE
39061      RETURN
39062      END
39063      SUBROUTINE LGNLI1(Y,N,ALOC,SCALE,SHAPE,
39064     1                  ALIK,AIC,AICC,BIC,
39065     1                  ISUBRO,IBUGA3,IERROR)
39066C
39067C     PURPOSE--THIS ROUTINE COMPUTES THE LIKELIHOOD FUNCTION FOR
39068C              THE LOGNORMAL DISTRIBUTION.  THIS IS FOR THE RAW DATA
39069C              CASE (I.E., NO GROUPING AND NO CENSORING).
39070C
39071C     REFERENCE--KARL BURY, "STATISTICAL DISTRIBUTIONS IN ENGINEERING",
39072C                CAMBRIDGE UNIVERSITY PRESS, 1999, CHAPTER 11.
39073C     WRITTEN BY--ALAN HECKERT
39074C                 STATISTICAL ENGINEERING DIVISION
39075C                 INFORMATION TECHNOLOGY LABORATORY
39076C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
39077C                 GAITHERSBURG, MD 20899-8980
39078C                 PHONE--301-975-2899
39079C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
39080C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
39081C     LANGUAGE--ANSI FORTRAN (1977)
39082C     VERSION NUMBER--2014/3
39083C     ORIGINAL VERSION--MARCH     2014.
39084C
39085C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
39086C
39087      CHARACTER*4 ISUBRO
39088      CHARACTER*4 IBUGA3
39089      CHARACTER*4 IERROR
39090C
39091      CHARACTER*4 IWRITE
39092C
39093      CHARACTER*4 ISUBN1
39094      CHARACTER*4 ISUBN2
39095      CHARACTER*4 ISTEPN
39096C
39097      DOUBLE PRECISION DX
39098      DOUBLE PRECISION DLOC
39099      DOUBLE PRECISION DSCALE
39100      DOUBLE PRECISION DSHAPE
39101      DOUBLE PRECISION DN
39102      DOUBLE PRECISION DNP
39103      DOUBLE PRECISION DLIK
39104      DOUBLE PRECISION DTERM3
39105      DOUBLE PRECISION DPDF
39106C
39107C---------------------------------------------------------------------
39108C
39109      DIMENSION Y(*)
39110C
39111C-----COMMON----------------------------------------------------------
39112C
39113      INCLUDE 'DPCOP2.INC'
39114C
39115C-----START POINT-----------------------------------------------------
39116C
39117      ISUBN1='LGNL'
39118      ISUBN2='I1  '
39119      IWRITE='OFF'
39120      IERROR='NO'
39121C
39122      ALIK=CPUMIN
39123      AIC=CPUMIN
39124      AICC=CPUMIN
39125      BIC=CPUMIN
39126C
39127      IF(ALOC.EQ.CPUMIN)THEN
39128        ALOCT=0.0
39129      ELSE
39130        ALOCT=ALOC
39131      ENDIF
39132C
39133      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'NLI1')THEN
39134        WRITE(ICOUT,999)
39135  999   FORMAT(1X)
39136        CALL DPWRST('XXX','WRIT')
39137        WRITE(ICOUT,51)
39138   51   FORMAT('**** AT THE BEGINNING OF LGNLI1--')
39139        CALL DPWRST('XXX','WRIT')
39140        WRITE(ICOUT,52)IBUGA3,ISUBRO
39141   52   FORMAT('IBUGA3,ISUBRO = ',A4,2X,A4)
39142        CALL DPWRST('XXX','WRIT')
39143        WRITE(ICOUT,55)N,ALOC,SCALE,SHAPE
39144   55   FORMAT('N,ALOC,SCALE,SHAPE = ',I8,3G15.7)
39145        CALL DPWRST('XXX','WRIT')
39146        DO56I=1,MIN(N,100)
39147          WRITE(ICOUT,57)I,Y(I)
39148   57     FORMAT('I,Y(I) = ',I8,G15.7)
39149          CALL DPWRST('XXX','WRIT')
39150   56   CONTINUE
39151      ENDIF
39152C
39153      DO110I=1,N
39154        IF(Y(I).LE.ALOC)THEN
39155          WRITE(ICOUT,999)
39156          CALL DPWRST('XXX','WRIT')
39157          WRITE(ICOUT,111)
39158  111     FORMAT('**** AT THE BEGINNING OF LGNLI1--')
39159          CALL DPWRST('XXX','WRIT')
39160          WRITE(ICOUT,113)I,Y(I),ALOC
39161  113     FORMAT('     THE VALUE FOR ROW ',I8,'(',G15.7,') IS LESS ',
39162     1           'THAN THE LOCATION (',G15.7,')')
39163          CALL DPWRST('XXX','WRIT')
39164          IERROR='YES'
39165          GOTO9000
39166        ENDIF
39167  110 CONTINUE
39168C
39169C               ******************************************
39170C               **  STEP 1--                            **
39171C               **  COMPUTE LIKELIHOOD FUNCTION         **
39172C               ******************************************
39173C
39174      ISTEPN='1'
39175      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'NLI1')
39176     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
39177C
39178      DLIK=0.0D0
39179      DLOC=DBLE(ALOC)
39180      DSCALE=DBLE(SCALE)
39181      DSHAPE=DBLE(SHAPE)
39182      DN=DBLE(N)
39183C
39184      DO1020I=1,N
39185        DX=DBLE(Y(I))
39186        DX=(DX-DLOC)/DSCALE
39187        CALL LGDPDF(DX,DBLE(SHAPE),DPDF)
39188        DPDF=DPDF/DSCALE
39189        IF(DPDF.GT.0.0D0)THEN
39190          DLIK=DLIK + DLOG(DPDF)
39191        ELSE
39192          WRITE(ICOUT,999)
39193          CALL DPWRST('XXX','WRIT')
39194          WRITE(ICOUT,111)
39195          CALL DPWRST('XXX','WRIT')
39196          WRITE(ICOUT,1023)I
39197 1023     FORMAT('     FOR ROW ',I8,' A NON-POSITIVE PDF VALUE ',
39198     1           'WAS ENCOUNTERED.')
39199          CALL DPWRST('XXX','WRIT')
39200          WRITE(ICOUT,1025)Y(I),DLOC
39201 1025     FORMAT('     Y(I),LOCATION VALUE = ',2G15.7)
39202          CALL DPWRST('XXX','WRIT')
39203          IERROR='YES'
39204          GOTO9000
39205        ENDIF
39206 1020 CONTINUE
39207C
39208      ALIK=REAL(DLIK)
39209      DNP=2.0D0
39210      EPS=1.0E-7
39211      IF(ABS(ALOCT).GT.EPS)DNP=3.0D0
39212      AIC=REAL(-2.0D0*DLIK + 2.0D0*DNP)
39213      DTERM3=(2.0D0*DNP*(DNP+1.0D0))/(DN-DNP-1.0D0)
39214      AICC=REAL(-2.0D0*DLIK + 2.0D0*DNP + DTERM3)
39215      BIC=REAL(-2.0D0*DLIK + DNP*LOG(DN))
39216C
39217 9000 CONTINUE
39218      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'NLI1')THEN
39219        WRITE(ICOUT,999)
39220        CALL DPWRST('XXX','WRIT')
39221        WRITE(ICOUT,9011)
39222 9011   FORMAT('**** AT THE END OF LGNLI1--')
39223        CALL DPWRST('XXX','WRIT')
39224        WRITE(ICOUT,9014)ALIK,AIC,AICC,BIC
39225 9014   FORMAT('ALIK,AIC,AICC,BIC = ',4G15.7)
39226        CALL DPWRST('XXX','WRIT')
39227      ENDIF
39228C
39229      RETURN
39230      END
39231      SUBROUTINE LGDPDF(DX,DSD,DPDF)
39232C
39233C     PURPOSE--THIS SUBROUTINE COMPUTES THE PROBABILITY DENSITY
39234C              FUNCTION VALUE FOR THE LOGNORMAL DISTRIBUTION
39235C              (DOUBLE PRECISION VERSION).
39236C     INPUT  ARGUMENTS--DX     = THE DOUBLE PRECISION VALUE AT WHICH
39237C                                THE PROBABILITY DENSITY FUNCTION IS
39238C                                TO BE EVALUATED (DX > 0).
39239C                    --DSD    = THE DOUBLE PRECISION VALUE FOR THE
39240C                               SHAPE PARAMETER
39241C     OUTPUT ARGUMENTS--DPDF  = THE DOUBLE PRECISION PROBABILITY
39242C                                DENSITY FUNCTION VALUE.
39243C     OUTPUT--THE DOUBLE PRECISION PROBABILITY DENSITY FUNCTION VALUE
39244C             DPDF FOR THE LOGNORMAL DISTRIBUTION.
39245C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
39246C     RESTRICTIONS--DX SHOULD BE POSITIVE.
39247C     OTHER DATAPAC   SUBROUTINES NEEDED--NODPDF.
39248C     FORTRAN LIBRARY SUBROUTINES NEEDED--DLOG.
39249C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
39250C     LANGUAGE--ANSI FORTRAN.
39251C     REFERENCES--JOHNSON AND KOTZ, CONTINUOUS UNIVARIATE
39252C                 DISTRIBUTIONS--1, 1970, PAGES 112-136.
39253C               --CRAMER, MATHEMATICAL METHODS OF STATISTICS,
39254C                 1946, PAGES 219-220.
39255C     WRITTEN BY--JAMES J. FILLIBEN
39256C                 STATISTICAL ENGINEERING LABORATORY (205.03)
39257C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
39258C                 GAITHERSBURG, MD 20899-8980
39259C                 PHONE:  301-975-2855
39260C     ORIGINAL VERSION--MARCH     2014.
39261C
39262C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
39263C
39264C---------------------------------------------------------------------
39265C
39266      DOUBLE PRECISION DX
39267      DOUBLE PRECISION DSD
39268      DOUBLE PRECISION DPDF
39269      DOUBLE PRECISION DARG
39270C
39271      INCLUDE 'DPCOP2.INC'
39272C
39273C---------------------------------------------------------------------
39274C
39275C     CHECK THE INPUT ARGUMENTS FOR ERRORS
39276C
39277      DPDF=0.0D0
39278      IF(DX.LT.0.0D0)THEN
39279        WRITE(ICOUT,4)
39280        CALL DPWRST('XXX','BUG ')
39281        WRITE(ICOUT,46)DX
39282        CALL DPWRST('XXX','BUG ')
39283        GOTO9000
39284      ELSEIF(DSD.LE.0.0D0)THEN
39285        WRITE(ICOUT,5)
39286        CALL DPWRST('XXX','BUG ')
39287        WRITE(ICOUT,46)DSD
39288        CALL DPWRST('XXX','BUG ')
39289        GOTO9000
39290      ENDIF
39291    4 FORMAT('***** ERROR--THE FIRST ARGUMENT TO LGNPDF IS NEGATIVE.')
39292    5 FORMAT('***** ERROR--THE SECOND ARGUMENT TO LGNPDF IS ',
39293     1       'NON-POSITIVE.')
39294   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',G15.7)
39295C
39296C-----START POINT-----------------------------------------------------
39297C
39298      IF(DX.GT.0.0D0)THEN
39299        IF(DSD.EQ.1.0D0)THEN
39300          DARG=DLOG(DX)
39301          CALL NODPDF(DARG,DPDF)
39302          DPDF=(1.0D0/DX)*DPDF
39303        ELSE
39304          DARG=DLOG(DX)/DSD
39305          CALL NODPDF(DARG,DPDF)
39306          DPDF=(1.0D0/(DSD*DX))*DPDF
39307        ENDIF
39308      ENDIF
39309C
39310 9000 CONTINUE
39311      RETURN
39312      END
39313      SUBROUTINE LGDPPF(DP,DSD,DPPF)
39314C
39315C     PURPOSE--THIS SUBROUTINE COMPUTES THE PERCENT POINT FUNCTION FOR
39316C              FOR THE LOGNORMAL DISTRIBUTION.
39317C     INPUT  ARGUMENTS--DP     = THE DOUBLE PRECISION VALUE AT WHICH
39318C                                THE PERCENT POINT FUNCTION IS
39319C                                TO BE EVALUATED (0 <= DP < 1).
39320C                    --DSD    = THE DOUBLE PRECISION VALUE FOR THE
39321C                               SHAPE PARAMETER
39322C     OUTPUT ARGUMENTS--DPDF  = THE DOUBLE PRECISION PERCENT POINT
39323C                               FUNCTION VALUE.
39324C     OUTPUT--THE DOUBLE PRECISION PERCENT POINT FUNCTION VALUE
39325C             DPPF FOR THE LOGNORMAL DISTRIBUTION.
39326C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
39327C     RESTRICTIONS--P SHOULD BE BETWEEN 0.0 (INCLUSIVELY)
39328C                   AND 1.0 (EXCLUSIVELY).
39329C     OTHER DATAPAC   SUBROUTINES NEEDED--NODPPF.
39330C     FORTRAN LIBRARY SUBROUTINES NEEDED--EXP.
39331C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
39332C     LANGUAGE--ANSI FORTRAN.
39333C     REFERENCES--JOHNSON AND KOTZ, CONTINUOUS UNIVARIATE
39334C                 DISTRIBUTIONS--1, 1970, PAGES 112-136.
39335C               --CRAMER, MATHEMATICAL METHODS OF STATISTICS,
39336C                 1946, PAGES 219-220.
39337C     WRITTEN BY--JAMES J. FILLIBEN
39338C                 STATISTICAL ENGINEERING LABORATORY (205.03)
39339C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
39340C                 GAITHERSBURG, MD 20899-8980
39341C                 PHONE:  301-975-2899
39342C     ORIGINAL VERSION--MARCH     2014.
39343C
39344C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
39345C
39346C---------------------------------------------------------------------
39347C
39348      DOUBLE PRECISION DP
39349      DOUBLE PRECISION DSD
39350      DOUBLE PRECISION DPPF
39351C
39352      INCLUDE 'DPCOP2.INC'
39353C
39354C---------------------------------------------------------------------
39355C
39356C     CHECK THE INPUT ARGUMENTS FOR ERRORS
39357C
39358      DPPF=0.0D0
39359      IF(DP.LT.0.0D0 .OR. DP.GE.1.0D0)THEN
39360        WRITE(ICOUT,1)
39361        CALL DPWRST('XXX','BUG ')
39362        WRITE(ICOUT,46)DP
39363        CALL DPWRST('XXX','BUG ')
39364        GOTO9000
39365      ELSEIF(DSD.LE.0.0D0)THEN
39366        WRITE(ICOUT,5)
39367        CALL DPWRST('XXX','BUG ')
39368        WRITE(ICOUT,46)DSD
39369        CALL DPWRST('XXX','BUG ')
39370        GOTO9000
39371      ENDIF
39372    1 FORMAT('***** ERROR--THE FIRST ARGUMENT TO LGNPPF IS OUTSIDE ',
39373     1       'THE ALLOWABLE (0,1) INTERVAL.')
39374    5 FORMAT('***** ERROR--THE SECOND ARGUMENT TO LGNPDF IS ',
39375     1       'NON-POSITIVE.')
39376   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',G15.7)
39377C
39378C-----START POINT-----------------------------------------------------
39379C
39380      IF(DP.GT.0.0D0)THEN
39381        IF(DSD.EQ.1.0D0)THEN
39382          CALL NODPPF(DP,DPPF)
39383          DPPF=DEXP(DPPF)
39384        ELSE
39385          CALL NODPPF(DP,DPPF)
39386          DPPF=DEXP(DPPF*DSD)
39387        ENDIF
39388      ENDIF
39389C
39390 9000 CONTINUE
39391      RETURN
39392      END
39393      SUBROUTINE LGNAFR(X1,X2,SIGMA,ALOC,SCALE,AFR)
39394C
39395C     PURPOSE--THIS SUBROUTINE COMPUTES THE AVERAGE FAILURE RATE
39396C              (AFR) FUNCTION VALUE FOR THE LOGNORMAL DISTRIBUTION.
39397C              THE AFR IS DEFINED AS:
39398C
39399C              AFR(X1,X2,SHAPE,LOC,SCALE) = (H(X2,SHAPE,LOC,SCALE) -
39400C                                            H(X1,LOC,SCALE))/(X2-X1)
39401C
39402C              WHERE
39403C
39404C              H(X,SHAPE,LOC,SCALE) = H((X-LOC)/SCALE,SHAPE)
39405C
39406C              FOR THE LOGNORMAL, WE USE THE LGNCHA FUNCTION.
39407C
39408C     INPUT  ARGUMENTS--X1     = THE SINGLE PRECISION VALUE AT
39409C                                WHICH THE AFR FUNCTION IS TO BE
39410C                                EVALUATED.
39411C                     --X2     = THE SINGLE PRECISION VALUE AT
39412C                                WHICH THE AFR FUNCTION IS TO BE
39413C                                EVALUATED.
39414C                     --SIGMA  = THE (POSITIVE) SHAPE PARAMETER
39415C                     --ALOC   = THE LOCATION PARAMETER
39416C                     --SCALE  = THE (POSITIVE) SCALE PARAMETER
39417C     OUTPUT ARGUMENTS--AFR    = THE SINGLE PRECISION AVERAGE
39418C                                FAILURE RATE FUNCTION VALUE.
39419C     OUTPUT--THE SINGLE PRECISION AVERAGE FAILURE RATE FOR THE
39420C             LOGNORMAL DISTRIBUTION.
39421C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
39422C     RESTRICTIONS--SIGMA AND SCALE SHOULD BE POSITIVE, X2 NOT EQUAL X1.
39423C     OTHER DATAPAC   SUBROUTINES NEEDED--LGNCHA.
39424C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE.
39425C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
39426C     LANGUAGE--ANSI FORTRAN (1977)
39427C     REFERENCES--TOBIAS AND TRINDALE, "APPLIED RELIABILITY", SECOND
39428C                 EDITION, CHAPMAN AND HALL/CRC, 1995.
39429C     WRITTEN BY--JAMES J. FILLIBEN
39430C                 STATISTICAL ENGINEERING DIVISION
39431C                 INFORMATION TECHNOLOGY LABORATORY
39432C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
39433C                 GAITHERSBURG, MD 20899-8980
39434C                 PHONE--301-975-2855
39435C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
39436C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
39437C     LANGUAGE--ANSI FORTRAN (1977)
39438C     VERSION NUMBER--2005.3
39439C     ORIGINAL VERSION--MARCH     2005.
39440C
39441C-----COMMON----------------------------------------------------------
39442C
39443      INCLUDE 'DPCOP2.INC'
39444C
39445C-----START POINT-----------------------------------------------------
39446C
39447C     CHECK THE INPUT ARGUMENTS FOR ERRORS
39448C
39449      X1MN=MIN(X1,X2)
39450      X1MX=MAX(X1,X2)
39451      IF(X1MN.EQ.X1MX)THEN
39452        WRITE(ICOUT,5)
39453        CALL DPWRST('XXX','BUG ')
39454        WRITE(ICOUT,47)X1MN
39455        CALL DPWRST('XXX','BUG ')
39456        WRITE(ICOUT,48)X1MX
39457        CALL DPWRST('XXX','BUG ')
39458        AFR=0.0
39459        GOTO9000
39460      ELSEIF(X1MN.LT.ALOC)THEN
39461        WRITE(ICOUT,4)
39462        CALL DPWRST('XXX','BUG ')
39463        WRITE(ICOUT,46)X1MN
39464        CALL DPWRST('XXX','BUG ')
39465        WRITE(ICOUT,49)ALOC
39466        CALL DPWRST('XXX','BUG ')
39467        AFR=0.0
39468        GOTO9000
39469      ELSEIF(SIGMA.LE.0.0)THEN
39470        WRITE(ICOUT,8)
39471        CALL DPWRST('XXX','BUG ')
39472        WRITE(ICOUT,46)SIGMA
39473        CALL DPWRST('XXX','BUG ')
39474        AFR=0.0
39475        GOTO9000
39476      ELSEIF(SCALE.LE.0.0)THEN
39477        WRITE(ICOUT,6)
39478        CALL DPWRST('XXX','BUG ')
39479        WRITE(ICOUT,46)SCALE
39480        CALL DPWRST('XXX','BUG ')
39481        AFR=0.0
39482        GOTO9000
39483      ENDIF
39484    4 FORMAT('***** ERROR--THE FIRST INPUT ARGUMENT TO LGNAFR ',
39485     1       'IS LESS THAN THE LOCATION')
39486    5 FORMAT('***** ERROR--THE FIRST AND SECOND INPUT ARGUMENTS TO ',
39487     1       'LGNAFR ARE EQUAL')
39488    6 FORMAT('***** ERROR--THE FIFTH INPUT ARGUMENT TO LGNAFR ',
39489     1       '(THE SCALE) IS NON-POSITIVE')
39490    8 FORMAT('***** ERROR--THE THIRD INPUT ARGUMENT TO LGNAFR ',
39491     1       '(THE SHAPE) IS NON-POSITIVE')
39492   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',G15.7)
39493   47 FORMAT('***** THE VALUE OF THE FIRST ARGUMENT IS ',G15.7)
39494   48 FORMAT('***** THE VALUE OF THE SECOND ARGUMENT IS ',G15.7)
39495   49 FORMAT('***** THE VALUE OF THE LOCATION PARAMETER IS ',G15.7)
39496C
39497      IF(X1MN.LT.ALOC)THEN
39498         AFR=0.0
39499      ELSE IF(X1MN.EQ.ALOC)THEN
39500         TERM1=(X1MX-ALOC)/SCALE
39501         CALL LGNCHA(TERM1,SIGMA,CHAZ1)
39502         AFR=CHAZ1/(X1MX - X1MN)
39503      ELSE
39504         TERM1=(X1MX-ALOC)/SCALE
39505         CALL LGNCHA(TERM1,SIGMA,CHAZ1)
39506         TERM2=(X1MN-ALOC)/SCALE
39507         CALL LGNCHA(TERM2,SIGMA,CHAZ2)
39508         AFR=(CHAZ1 - CHAZ2)/(X1MX - X1MN)
39509      ENDIF
39510C
39511 9000 CONTINUE
39512      RETURN
39513      END
39514      SUBROUTINE LGNCDF(X,SD,CDF)
39515CCCCC SUBROUTINE LGNCDF(X,CDF)
39516CCCCC APRIL 1995.  SUPPORT SHAPE PARAMETER
39517C
39518C     PURPOSE--THIS SUBROUTINE COMPUTES THE CUMULATIVE DISTRIBUTION
39519C              FUNCTION VALUE FOR THE LOGNORMAL
39520C              DISTRIBUTION.
39521C              THE LOGNORMAL DISTRIBUTION USED
39522C              HEREIN HAS MEAN = SQRT(E) = 1.64872127
39523C              AND STANDARD DEVIATION = SQRT(E*(E-1)) = 2.16119742.
39524C              THIS DISTRIBUTION IS DEFINED FOR ALL POSITIVE X
39525C              AND HAS THE PROBABILITY DENSITY FUNCTION
39526C              F(X) = (1/(X*SQRT(2*PI))) * EXP(-LOG(X)*LOG(X)/2)
39527C              THE LOGNORMAL DISTRIBUTION USED HEREIN
39528C              IS THE DISTRIBUTION OF THE VARIATE X = EXP(Z) WHERE
39529C              THE VARIATE Z IS NORMALLY DISTRIBUTED
39530C              WITH MEAN = 0 AND STANDARD DEVIATION = 1.
39531C     INPUT  ARGUMENTS--X      = THE SINGLE PRECISION VALUE
39532C                                AT WHICH THE CUMULATIVE DISTRIBUTION
39533C                                FUNCTION IS TO BE EVALUATED.
39534C                                X SHOULD BE POSITIVE.
39535C     OUTPUT ARGUMENTS--CDF    = THE SINGLE PRECISION CUMULATIVE
39536C                                DISTRIBUTION FUNCTION VALUE.
39537C     OUTPUT--THE SINGLE PRECISION CUMULATIVE DISTRIBUTION
39538C             FUNCTION VALUE CDF FOR THE LOGNORMAL
39539C             DISTRIBUTION WITH MEAN = SQRT(E) = 1.64872127
39540C             AND STANDARD DEVIATION = SQRT(E*(E-1)) = 2.16119742.
39541C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
39542C     RESTRICTIONS--X SHOULD BE POSITIVE.
39543C     OTHER DATAPAC   SUBROUTINES NEEDED--NORCDF.
39544C     FORTRAN LIBRARY SUBROUTINES NEEDED--LOG.
39545C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
39546C     LANGUAGE--ANSI FORTRAN.
39547C     REFERENCES--JOHNSON AND KOTZ, CONTINUOUS UNIVARIATE
39548C                 DISTRIBUTIONS--1, 1970, PAGES 112-136.
39549C               --CRAMER, MATHEMATICAL METHODS OF STATISTICS,
39550C                 1946, PAGES 219-220.
39551C     WRITTEN BY--JAMES J. FILLIBEN
39552C                 STATISTICAL ENGINEERING LABORATORY (205.03)
39553C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
39554C                 GAITHERSBURG, MD 20899-8980
39555C                 PHONE:  301-921-2315
39556C     ORIGINAL VERSION--APRIL     1994.
39557C     UPDATED         --JANUARY   1995. DEFINE X = 0 CASE AS 0
39558C     UPDATED         --APRIL     1995. SHAPE PARAMETER
39559C
39560C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
39561C
39562C-----COMMON----------------------------------------------------------
39563C
39564      INCLUDE 'DPCOP2.INC'
39565C
39566C---------------------------------------------------------------------
39567C
39568C     CHECK THE INPUT ARGUMENTS FOR ERRORS
39569C
39570      CDF=0.0
39571      IF(X.LT.0.0)THEN
39572CCCCC   WRITE(ICOUT,4)
39573CCCC4 FORMAT('***** WARNING--THE FIRST ARGUMENT TO LGNCDF IS NEGATIVE.')
39574CCCCC   CALL DPWRST('XXX','BUG ')
39575        WRITE(ICOUT,46)X
39576   46   FORMAT('***** THE VALUE OF THE ARGUMENT IS ',G15.7)
39577        CALL DPWRST('XXX','BUG ')
39578        GOTO9000
39579      ENDIF
39580C
39581C-----START POINT-----------------------------------------------------
39582C
39583      IF(X.GT.0.0)THEN
39584        IF(SD.EQ.1.0)THEN
39585          ARG=LOG(X)
39586          CALL NORCDF(ARG,CDF)
39587        ELSE
39588          ARG=LOG(X)/SD
39589          CALL NORCDF(ARG,CDF)
39590        ENDIF
39591      ENDIF
39592C
39593 9000 CONTINUE
39594      RETURN
39595      END
39596      SUBROUTINE LGNCHA(X,SD,HAZ)
39597C
39598C     PURPOSE--THIS SUBROUTINE COMPUTES THE CUMULATIVE HAZARD
39599C              FUNCTION VALUE FOR THE LOGNORMAL
39600C              DISTRIBUTION.
39601C              THE LOGNORMAL DISTRIBUTION USED
39602C              HEREIN HAS MEAN = SQRT(E) = 1.64872127
39603C              AND STANDARD DEVIATION = SQRT(E*(E-1)) = 2.16119742.
39604C              THIS DISTRIBUTION IS DEFINED FOR ALL POSITIVE X
39605C              AND HAS THE PROBABILITY DENSITY FUNCTION
39606C              F(X) = (1/(X*SQRT(2*PI))) * EXP(-LOG(X)*LOG(X)/2)
39607C              THE LOGNORMAL DISTRIBUTION USED HEREIN
39608C              IS THE DISTRIBUTION OF THE VARIATE X = EXP(Z) WHERE
39609C              THE VARIATE Z IS NORMALLY DISTRIBUTED
39610C              WITH MEAN = 0 AND STANDARD DEVIATION = 1.
39611C     INPUT  ARGUMENTS--X      = THE SINGLE PRECISION VALUE
39612C                                AT WHICH THE CUMULATIVE HAZARD
39613C                                FUNCTION IS TO BE EVALUATED.
39614C                                X SHOULD BE POSITIVE.
39615C     OUTPUT ARGUMENTS--HAZ    = THE SINGLE PRECISION CUMULATIVE HAZARD
39616C                                FUNCTION VALUE.
39617C     OUTPUT--THE SINGLE PRECISION CUMULATIVE HAZARD
39618C             FUNCTION VALUE FOR THE LOGNORMAL
39619C             DISTRIBUTION WITH MEAN = SQRT(E) = 1.64872127
39620C             AND STANDARD DEVIATION = SQRT(E*(E-1)) = 2.16119742.
39621C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
39622C     RESTRICTIONS--X SHOULD BE POSITIVE.
39623C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
39624C     LANGUAGE--ANSI FORTRAN.
39625C     REFERENCES--JOHNSON AND KOTZ, CONTINUOUS UNIVARIATE
39626C                 DISTRIBUTIONS--1, 1970, PAGES 112-136.
39627C               --CRAMER, MATHEMATICAL METHODS OF STATISTICS,
39628C                 1946, PAGES 219-220.
39629C     WRITTEN BY--JAMES J. FILLIBEN
39630C                 STATISTICAL ENGINEERING LABORATORY (205.03)
39631C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
39632C                 GAITHERSBURG, MD 20899-8980
39633C                 PHONE:  301-975-2855
39634C     ORIGINAL VERSION--APRIL     1998.
39635C
39636C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
39637C
39638C---------------------------------------------------------------------
39639C
39640      DOUBLE PRECISION DX
39641      DOUBLE PRECISION DSD
39642      DOUBLE PRECISION DCDF
39643      DOUBLE PRECISION DHAZ
39644C
39645      INCLUDE 'DPCOP2.INC'
39646C
39647C---------------------------------------------------------------------
39648C
39649C     CHECK THE INPUT ARGUMENTS FOR ERRORS
39650C
39651      HAZ=0.0
39652      IF(X.LT.0.0)THEN
39653        WRITE(ICOUT,4)
39654        CALL DPWRST('XXX','BUG ')
39655        WRITE(ICOUT,46)X
39656        CALL DPWRST('XXX','BUG ')
39657        GOTO9000
39658      ENDIF
39659    4 FORMAT('***** WARNING--THE FIRST ARGUMENT TO LGNCHA IS NEGATIVE.')
39660   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',G15.7)
39661C
39662C-----START POINT-----------------------------------------------------
39663C
39664      IF(X.GT.0.0)THEN
39665        DX=DBLE(X)
39666        DSD=DBLE(SD)
39667        CALL NODCDF(DLOG(DX)/DSD,DCDF)
39668        DCDF=1.0D0-DCDF
39669        IF(DCDF.GT.0.0D0)THEN
39670          DHAZ=-DLOG(DCDF)
39671          HAZ=REAL(DHAZ)
39672        ELSE
39673          HAZ=0.0
39674          WRITE(ICOUT,901)X
39675  901     FORMAT('****ERROR FROM LGNHAZ: FOR X = ',E15.7,' THE CDF ',
39676     1           'VALUE IS ESSENTIALLY 1.')
39677          CALL DPWRST('XXX','BUG ')
39678        ENDIF
39679      ENDIF
39680C
39681 9000 CONTINUE
39682      RETURN
39683      END
39684      DOUBLE PRECISION FUNCTION LGNFU3 (DLOCML,X)
39685C
39686C     PURPOSE--THIS ROUTINE IS USED IN FINDING THE MAXIMUM LIKELIHOOD
39687C              ESTIMATE OF THE LOCATION PARAMETER FOR THE 3-PARAMETER
39688C              LOGNORMAL MODEL FOR FULL SAMPLE DATA (NO CENSORING).  THIS
39689C              FUNCTION FINDS THE ROOT OF THE EQUATION:
39690C
39691C                 SUM[1/(X(i) - LOC)]*{SUM[LOG(X(i) - LOC] -
39692C                 SUM[LOG((X(i) - LOC)**2] +
39693C                 (1/N)*{SUM[LOG(X(i)) - LOC)]**2] -
39694C                 N*SUM[LOG(X(i) - LOC)/(X(i) - LOC)] = 0
39695C
39696C              WHERE ALL SUMMATIONS ARE FROM 1 TO N AND WITH LOC
39697C              DENOTING THE ESTIMATE OF THE LOCATION PARAMETER.
39698C
39699C              CALLED BY DFZER2 ROUTINE FOR FINDING THE ROOT OF A
39700C              FUNCTION.
39701C     EXAMPLE--3-PARAMETER LOGNORMAL MAXIMUM LIKELIHOOD Y
39702C     REFERENCE--KARL BURY, "STATISTICAL DISTRIBUTIONS IN
39703C                ENGINEERING", CAMBRIDGE UNIVERSITY PRESS,
39704C                1999, CHAPTER 13.
39705C              --COHEN AND WHITTEN (1988), "PARAMETER ESTIMATION IN
39706C                RELIABILITY AND LIFE SPAN MODELS", MARCEL DEKKER, INC.,
39707C                CHAPTER 4.
39708C     WRITTEN BY--ALAN HECKERT
39709C                 STATISTICAL ENGINEERING DIVISION
39710C                 INFORMATION TECHNOLOGY LABORATORY
39711C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
39712C                 GAITHERSBUG, MD 20899-8980
39713C                 PHONE--301-975-2899
39714C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
39715C           OF THE NATIONAL BUREAU OF STANDARDS.
39716C     LANGUAGE--ANSI FORTRAN (1977)
39717C     VERSION NUMBER--2014/04
39718C     ORIGINAL VERSION--APRIL      2014.
39719C
39720C---------------------------------------------------------------------
39721C
39722      DOUBLE PRECISION DLOCML
39723      DOUBLE PRECISION X(*)
39724C
39725C---------------------------------------------------------------------
39726C
39727      DOUBLE PRECISION DSUM1
39728      DOUBLE PRECISION DSUM2
39729      DOUBLE PRECISION DSUM3
39730      DOUBLE PRECISION DSUM4
39731      DOUBLE PRECISION DS11
39732      DOUBLE PRECISION DS22
39733      DOUBLE PRECISION DX
39734      DOUBLE PRECISION DL
39735      DOUBLE PRECISION DN
39736C
39737      INTEGER IN
39738      COMMON/LGNMLE/IN
39739C
39740      INCLUDE 'DPCOP2.INC'
39741C
39742C-----START POINT-----------------------------------------------------
39743C
39744C  COMPUTE SOME SUMS
39745C
39746      DSUM1=0.0D0
39747      DSUM2=0.0D0
39748      DSUM3=0.0D0
39749      DSUM4=0.0D0
39750      DN=DBLE(IN)
39751C
39752      DO100I=1,IN
39753        DX=X(I) - DLOCML
39754        DL=DLOG(DX)
39755        DSUM1=DSUM1 + DL
39756        DSUM2=DSUM2 + DL**2
39757        DSUM3=DSUM3 + (1.0D0/DX)
39758        DSUM4=DSUM4 + DL/DX
39759  100 CONTINUE
39760C
39761      DS11=DSUM1/DN
39762      DS22=(DSUM2/DN) - DS11**2
39763      LGNFU3=DSUM3*(DS11-DS22) - DSUM4
39764C
39765      RETURN
39766      END
39767      SUBROUTINE LGNHAZ(X,SD,HAZ)
39768C
39769C     PURPOSE--THIS SUBROUTINE COMPUTES THE LOGNORMAL
39770C              FUNCTION VALUE FOR THE LOGNORMAL
39771C              DISTRIBUTION.
39772C              THE LOGNORMAL DISTRIBUTION USED
39773C              HEREIN HAS MEAN = SQRT(E) = 1.64872127
39774C              AND STANDARD DEVIATION = SQRT(E*(E-1)) = 2.16119742.
39775C              THIS DISTRIBUTION IS DEFINED FOR ALL POSITIVE X
39776C              AND HAS THE PROBABILITY DENSITY FUNCTION
39777C              F(X) = (1/(X*SQRT(2*PI))) * EXP(-LOG(X)*LOG(X)/2)
39778C              THE LOGNORMAL DISTRIBUTION USED HEREIN
39779C              IS THE DISTRIBUTION OF THE VARIATE X = EXP(Z) WHERE
39780C              THE VARIATE Z IS NORMALLY DISTRIBUTED
39781C              WITH MEAN = 0 AND STANDARD DEVIATION = 1.
39782C     INPUT  ARGUMENTS--X      = THE SINGLE PRECISION VALUE
39783C                                AT WHICH THE HAZARD
39784C                                FUNCTION IS TO BE EVALUATED.
39785C                                X SHOULD BE POSITIVE.
39786C     OUTPUT ARGUMENTS--HAZ    = THE SINGLE PRECISION HAZARD
39787C                                FUNCTION VALUE.
39788C     OUTPUT--THE SINGLE PRECISION HAZARD
39789C             FUNCTION VALUE PDF FOR THE LOGNORMAL
39790C             DISTRIBUTION WITH MEAN = SQRT(E) = 1.64872127
39791C             AND STANDARD DEVIATION = SQRT(E*(E-1)) = 2.16119742.
39792C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
39793C     RESTRICTIONS--X SHOULD BE POSITIVE.
39794C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
39795C     LANGUAGE--ANSI FORTRAN.
39796C     REFERENCES--JOHNSON AND KOTZ, CONTINUOUS UNIVARIATE
39797C                 DISTRIBUTIONS--1, 1970, PAGES 112-136.
39798C               --CRAMER, MATHEMATICAL METHODS OF STATISTICS,
39799C                 1946, PAGES 219-220.
39800C     WRITTEN BY--JAMES J. FILLIBEN
39801C                 STATISTICAL ENGINEERING LABORATORY (205.03)
39802C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
39803C                 GAITHERSBURG, MD 20899-8980
39804C                 PHONE:  301-975-2855
39805C     ORIGINAL VERSION--APRIL     1998.
39806C
39807C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
39808C
39809C---------------------------------------------------------------------
39810C
39811      DOUBLE PRECISION DX
39812      DOUBLE PRECISION DXLOG
39813      DOUBLE PRECISION DHAZ
39814      DOUBLE PRECISION DTERM1
39815      DOUBLE PRECISION DTERM2
39816      DOUBLE PRECISION DTERM3
39817      DOUBLE PRECISION DTERM4
39818C
39819      INCLUDE 'DPCOP2.INC'
39820C
39821C---------------------------------------------------------------------
39822C
39823C     CHECK THE INPUT ARGUMENTS FOR ERRORS
39824C
39825      HAZ=0.0
39826      IF(X.LT.0.0)THEN
39827        WRITE(ICOUT,4)
39828        CALL DPWRST('XXX','BUG ')
39829        WRITE(ICOUT,46)X
39830        CALL DPWRST('XXX','BUG ')
39831        GOTO9000
39832      ENDIF
39833    4 FORMAT('***** WARNING--THE FIRST ARGUMENT TO LGNHAZ IS NEGATIVE.')
39834   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',G15.7)
39835C
39836C-----START POINT-----------------------------------------------------
39837C
39838      IF(X.GT.0.0)THEN
39839        DX=DBLE(X)
39840        DXLOG=DLOG(DX)
39841        DTERM1=-DXLOG/DBLE(SD)
39842        CALL NODCDF(DTERM1,DTERM2)
39843        IF(DTERM2.NE.0.0D0)THEN
39844          DTERM3=DXLOG/DBLE(SD)
39845          CALL NODPDF(DTERM3,DTERM4)
39846          DHAZ=1.D0/(DX*DBLE(SD))*DTERM4/DTERM2
39847          HAZ=REAL(DHAZ)
39848        ELSE
39849          HAZ=0.0
39850          WRITE(ICOUT,901)X
39851  901     FORMAT('****ERROR FROM LGNHAZ: FOR X = ',E15.7,' THE CDF ',
39852     1           'VALUE IS ESSENTIALLY 1.')
39853          CALL DPWRST('XXX','BUG ')
39854        ENDIF
39855      ENDIF
39856C
39857 9000 CONTINUE
39858      RETURN
39859      END
39860      SUBROUTINE LGNML1(Y,N,MAXNXT,
39861     1                  TEMP1,
39862     1                  XMEAN,XMED,XSD,XVAR,XMIN,XMAX,XMEANL,XSDL,
39863     1                  SCALML,SCALSE,SHAPML,SHAPSE,UHATML,UHATSE,
39864     1                  ISUBRO,IBUGA3,IERROR)
39865C
39866C     PURPOSE--THIS ROUTINE COMPUTES THE MAXIMUM LIKELIHOOD ESTIMATES
39867C              FOR THE 2-PARAMETER LOGNORMAL DISTRIBUTION FOR THE RAW DATA
39868C              CASE (I.E., NO CENSORING AND NO GROUPING).  THIS ROUTINE
39869C              RETURNS ONLY THE POINT ESTIMATES (CONFIDENCE INTERVALS
39870C              WILL BE COMPUTED IN A SEPARATE ROUTINE).
39871C
39872C              IT IS ASSUMED THAT BASIC ERROR CHECKING HAS ALREADY BEEN
39873C              PERFORMED.
39874C
39875C              PUT THIS IN A SEPARATE ROUTINE AS IT MAY BE CALLED
39876C              FROM MULTIPLE PLACES (DPMLL1 WILL GENERATE THE OUTPUT
39877C              FOR THE LOGNORMAL MLE COMMAND).
39878C
39879C     REFERENCE--KARL BURY, "STATISTICAL DISTRIBUTIONS IN
39880C                ENGINEERING", CAMBRIDGE UNIVERSITY PRESS,
39881C                1999, CHAPTER 13.
39882C              --"STATISTICAL DISTRIBUTIONS", THIRD EDITION,
39883C                EVANS, HASTINGS, AND PEACOCK, WILEY, 2001.
39884C              --"METHODS FOR STATISTICAL ANALYSIS OF RELIABILITY
39885C                AND LIFE DATA", MANN, SCHAFER, AND SINGPURWALLA,
39886C                WILEY, 1974, PP. 264-268.
39887C     WRITTEN BY--ALAN HECKERT
39888C                 STATISTICAL ENGINEERING DIVISION
39889C                 INFORMATION TECHNOLOGY LABORATORY
39890C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
39891C                 GAITHERSBURG, MD 20899-8980
39892C                 PHONE--301-975-2899
39893C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
39894C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
39895C     LANGUAGE--ANSI FORTRAN (1977)
39896C     VERSION NUMBER--2010/2
39897C     ORIGINAL VERSION--FEBRUARY  2010. EXTRACTED AS A SEPARATE
39898C                                       SUBROUTINE (FROM DPMLE1)
39899C
39900C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
39901C
39902      DIMENSION Y(*)
39903      DIMENSION TEMP1(*)
39904C
39905      CHARACTER*4 ISUBRO
39906      CHARACTER*4 IBUGA3
39907      CHARACTER*4 IERROR
39908C
39909      CHARACTER*4 IWRITE
39910      CHARACTER*40 IDIST
39911C
39912      CHARACTER*4 ISUBN1
39913      CHARACTER*4 ISUBN2
39914      CHARACTER*4 ISTEPN
39915C
39916C-----COMMON----------------------------------------------------------
39917C
39918      INCLUDE 'DPCOP2.INC'
39919C
39920C-----START POINT-----------------------------------------------------
39921C
39922      ISUBN1='LGNM'
39923      ISUBN2='L1  '
39924      IERROR='NO'
39925      IWRITE='OFF'
39926C
39927      AN=REAL(N)
39928C
39929      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'NML1')THEN
39930        WRITE(ICOUT,999)
39931  999   FORMAT(1X)
39932        CALL DPWRST('XXX','WRIT')
39933        WRITE(ICOUT,51)
39934   51   FORMAT('**** AT THE BEGINNING OF LGNML1--')
39935        CALL DPWRST('XXX','WRIT')
39936        WRITE(ICOUT,52)IBUGA3,ISUBRO
39937   52   FORMAT('IBUGA3,ISUBRO = ',A4,2X,A4)
39938        CALL DPWRST('XXX','WRIT')
39939        DO56I=1,MIN(N,100)
39940          WRITE(ICOUT,57)I,Y(I)
39941   57     FORMAT('I,Y(I) = ',I8,G15.7)
39942          CALL DPWRST('XXX','WRIT')
39943   56   CONTINUE
39944      ENDIF
39945C
39946C               ******************************************
39947C               **  STEP 1--                            **
39948C               **  CARRY OUT CALCULATIONS              **
39949C               **  FOR LOGNORMAL MLE ESTIMATE          **
39950C               ******************************************
39951C
39952      ISTEPN='1'
39953      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'NML1')
39954     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
39955C
39956      IDIST='LOGNORMAL'
39957C
39958      IFLAG=2
39959      CALL SUMRAW(Y,N,IDIST,IFLAG,
39960     1            XMEAN,XVAR,XSD,XMIN,XMAX,
39961     1            ISUBRO,IBUGA3,IERROR)
39962      IF(IERROR.EQ.'YES')GOTO9000
39963      CALL MEDIAN(Y,N,IWRITE,TEMP1,MAXNXT,XMED,IBUGA3,IERROR)
39964      IF(IERROR.EQ.'YES')GOTO9000
39965C
39966      SHAPML=CPUMIN
39967      SHAPSE=CPUMIN
39968      SCALML=CPUMIN
39969      SCALSE=CPUMIN
39970      UHATML=CPUMIN
39971      UHATSE=CPUMIN
39972C
39973C     THE MAXIMUM LIKELIHOOD ESTIMATES ARE:
39974C
39975C     NOTE THAT A COMMON PARAMETERIZATION USES
39976C
39977C         U = LOG(SCALE)
39978C
39979C     UHAT      = (1/N)*SUM[i=1 to N][LOG(Y(I))]
39980C     SCALEHAT  = EXP(UHAT)
39981C     SIGMAHAT  = SQRT((1/N)*SUM[i=1 to N][(LOG(Y(I)) - UHAT)**2]
39982C
39983C     COMPUTE SOME SAMPLE STATISTICS ON LOG OF DATA
39984C
39985      DO4103I=1,N
39986        TEMP1(I)=LOG(Y(I))
39987 4103 CONTINUE
39988C
39989      CALL MEAN(TEMP1,N,IWRITE,XMEANL,IBUGA3,IERROR)
39990      CALL SD(TEMP1,N,IWRITE,XSDL,IBUGA3,IERROR)
39991C
39992C     COMPUTE MLE ESTIMATES
39993C
39994      UHATML=XMEANL
39995      SCALML=EXP(XMEANL)
39996      SHAPML=XSDL
39997C
39998C     COMPUTE STANDARD ERRORS
39999C
40000      UHATSE=SHAPML/SQRT(AN)
40001      SCALSE=EXP(UHATML + UHATSE) - EXP(UHATML)
40002      SHAPSE=SHAPML/SQRT(2.0*(AN-1.0))
40003C
40004 9000 CONTINUE
40005      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'NML1')THEN
40006        WRITE(ICOUT,999)
40007        CALL DPWRST('XXX','WRIT')
40008        WRITE(ICOUT,9011)
40009 9011   FORMAT('**** AT THE END OF LGNML1--')
40010        CALL DPWRST('XXX','WRIT')
40011        WRITE(ICOUT,9013)N,XMEAN,XMED,XSD,XMIN,XMAX
40012 9013   FORMAT('N,XMEAN,XMED,XSD,XMIN,XMAX = ',I8,5G15.7)
40013        CALL DPWRST('XXX','WRIT')
40014        WRITE(ICOUT,9015)XMEANL,XSDL
40015 9015   FORMAT('XMEANL,XSDL = ',2G15.7)
40016        CALL DPWRST('XXX','WRIT')
40017        WRITE(ICOUT,9017)SHAPML,SCALML,SHAPSE,SCALSE
40018 9017   FORMAT('SHAPML,SCALML,SHAPSE,SCALSE =  ',4G15.7)
40019        CALL DPWRST('XXX','WRIT')
40020        WRITE(ICOUT,9019)UHATML,UHATSE
40021 9019   FORMAT('UHATML,UHATSE =  ',2G15.7)
40022        CALL DPWRST('XXX','WRIT')
40023      ENDIF
40024C
40025      RETURN
40026      END
40027      SUBROUTINE LGNML2(Y,TAG,N,MAXNXT,
40028     1                  ICASE,IDIST,
40029     1                  TEMP1,XTEMP,DTEMP1,ITEMP,
40030     1                  XMEANF,XSDF,XVARF,XMINF,XMAXF,XMEDF,
40031     1                  XMEANC,XSDC,XVARC,XMINC,XMAXC,XMEDC,
40032     1                  SCALML,UHATML,UHATSE,SHAPML,SHAPSE,COVSE,
40033     1                  IRSAV,
40034     1                  ISUBRO,IBUGA3,IERROR)
40035C
40036C     PURPOSE--THIS ROUTINE COMPUTES THE MAXIMUM LIKELIHOOD ESTIMATES
40037C              FOR THE 2-PARAMETER LOGNORMAL DISTRIBUTION FOR THE RAW DATA
40038C              CASE WITH CENSORING (BUT NO GROUPING).  THIS ROUTINE
40039C              RETURNS ONLY THE POINT ESTIMATES (CONFIDENCE INTERVALS
40040C              WILL BE COMPUTED IN A SEPARATE ROUTINE).
40041C
40042C              IT IS ASSUMED THAT BASIC ERROR CHECKING HAS ALREADY BEEN
40043C              PERFORMED.
40044C
40045C              PUT THIS IN A SEPARATE ROUTINE AS IT MAY BE CALLED
40046C              FROM MULTIPLE PLACES (DPMLL2 WILL GENERATE THE OUTPUT
40047C              FOR THE LOGNORMAL MLE COMMAND).
40048C
40049C     REFERENCE--KARL BURY, "STATISTICAL DISTRIBUTIONS IN
40050C                ENGINEERING", CAMBRIDGE UNIVERSITY PRESS,
40051C                1999, CHAPTER 11.
40052C     WRITTEN BY--ALAN HECKERT
40053C                 STATISTICAL ENGINEERING DIVISION
40054C                 INFORMATION TECHNOLOGY LABORATORY
40055C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
40056C                 GAITHERSBURG, MD 20899-8980
40057C                 PHONE--301-975-2899
40058C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
40059C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
40060C     LANGUAGE--ANSI FORTRAN (1977)
40061C     VERSION NUMBER--2010/7
40062C     ORIGINAL VERSION--JULY      2010. EXTRACTED AS A SEPARATE
40063C                                       SUBROUTINE (FROM DPMLL2)
40064C
40065C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
40066C
40067      DIMENSION Y(*)
40068      DIMENSION TAG(*)
40069      DIMENSION TEMP1(*)
40070      DIMENSION XTEMP(*)
40071      DOUBLE PRECISION DTEMP1(*)
40072      INTEGER ITEMP(*)
40073C
40074      CHARACTER*4 ICASE
40075      CHARACTER*40 IDIST
40076      CHARACTER*4 ISUBRO
40077      CHARACTER*4 IBUGA3
40078      CHARACTER*4 IERROR
40079      CHARACTER*4 IWRITE
40080C
40081      DOUBLE PRECISION LG1FUN
40082      EXTERNAL LG1FUN
40083C
40084      DOUBLE PRECISION C
40085      INTEGER IN
40086      INTEGER IM
40087      COMMON/LG1COM/C,IN,IM
40088C
40089      DOUBLE PRECISION TOL
40090      DOUBLE PRECISION XPAR(2)
40091      DOUBLE PRECISION FVEC(2)
40092C
40093      DIMENSION FISH(2,2)
40094      DIMENSION COV(2,2)
40095C
40096      DOUBLE PRECISION DN
40097      DOUBLE PRECISION DR
40098      DOUBLE PRECISION DM
40099      DOUBLE PRECISION DX
40100      DOUBLE PRECISION DS
40101      DOUBLE PRECISION DU
40102      DOUBLE PRECISION DZ
40103      DOUBLE PRECISION DH
40104      DOUBLE PRECISION DSUM1
40105      DOUBLE PRECISION DSUM2
40106      DOUBLE PRECISION DTERM1
40107      DOUBLE PRECISION DTERM2
40108C
40109      CHARACTER*4 ISUBN1
40110      CHARACTER*4 ISUBN2
40111      CHARACTER*4 ISTEPN
40112C
40113C-----COMMON----------------------------------------------------------
40114C
40115      INCLUDE 'DPCOP2.INC'
40116C
40117C-----START POINT-----------------------------------------------------
40118C
40119      ISUBN1='LGNM'
40120      ISUBN2='L2  '
40121      IERROR='NO'
40122C
40123      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'NML2')THEN
40124        WRITE(ICOUT,999)
40125  999   FORMAT(1X)
40126        CALL DPWRST('XXX','WRIT')
40127        WRITE(ICOUT,51)
40128   51   FORMAT('**** AT THE BEGINNING OF LGNML2--')
40129        CALL DPWRST('XXX','WRIT')
40130        WRITE(ICOUT,52)IBUGA3,ISUBRO,ICASE,N,MAXNXT
40131   52   FORMAT('IBUGA3,ISUBRO,N,MAXNXT = ',3(A4,2X),2I8)
40132        CALL DPWRST('XXX','WRIT')
40133        DO56I=1,MIN(N,100)
40134          WRITE(ICOUT,57)I,Y(I),TAG(I)
40135   57     FORMAT('I,Y(I),TAG(I) = ',I8,2G15.7)
40136          CALL DPWRST('XXX','WRIT')
40137   56   CONTINUE
40138      ENDIF
40139C
40140C               ******************************************
40141C               **  STEP 1--                            **
40142C               **  CARRY OUT CALCULATIONS              **
40143C               **  FOR CENSORD LOGNORMAL MLE ESTIMATE  **
40144C               ******************************************
40145C
40146      ISTEPN='1'
40147      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'NML2')
40148     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
40149C
40150      IDIST='LOGNORMAL'
40151C
40152      CALL CKCENS(TAG,TEMP1,N,IDIST,
40153     1            ISUBRO,IBUGA3,IERROR)
40154      IF(IERROR.EQ.'YES')GOTO9000
40155C
40156      IFLAG=1
40157      CALL SUMRAW(Y,N,IDIST,IFLAG,
40158     1            XMEANF,XVARF,XSDF,XMINF,XMAXF,
40159     1            ISUBRO,IBUGA3,IERROR)
40160      IF(IERROR.EQ.'YES')GOTO9000
40161      CALL MEDIAN(Y,N,IWRITE,TEMP1,MAXNXT,XMEDF,IBUGA3,IERROR)
40162C
40163      CALL SORTC(Y,TAG,N,Y,TAG)
40164      IR=0
40165      DO2120I=1,N
40166        IF(TAG(I).EQ.1.0)IR=IR+1
40167 2120 CONTINUE
40168      IRSAV=IR
40169C
40170      ICNT=0
40171      DO2122I=1,N
40172        IF(TAG(I).EQ.1.0)THEN
40173          ICNT=ICNT+1
40174          XTEMP(ICNT)=Y(I)
40175        ENDIF
40176 2122 CONTINUE
40177      DO2124I=1,N
40178        IF(TAG(I).EQ.0.0)THEN
40179          ICNT=ICNT+1
40180          XTEMP(ICNT)=Y(I)
40181        ENDIF
40182 2124 CONTINUE
40183      DO2126I=1,N
40184        Y(I)=XTEMP(I)
40185        IF(I.LE.IR)THEN
40186          TAG(I)=1.0
40187        ELSE
40188          TAG(I)=0.0
40189        ENDIF
40190 2126 CONTINUE
40191      IM=N-IR
40192C
40193      IF(IBUGA3.EQ.'ON' .OR. ISUBRO.EQ.'NML2')THEN
40194        WRITE(ICOUT,2127)N,IR,IM
40195 2127   FORMAT(1X,'N,IR,IM = ',3I8)
40196        CALL DPWRST('XXX','BUG ')
40197        DO2128I=1,MIN(100,N)
40198          WRITE(ICOUT,2129)I,Y(I),TAG(I)
40199 2129     FORMAT(1X,'I,Y(I),TAG(I)=',I8,2G15.7)
40200          CALL DPWRST('XXX','BUG ')
40201 2128   CONTINUE
40202      ENDIF
40203C
40204      IR1=IR
40205      IR2=IR
40206      IR3=IR
40207C
40208      AR=REAL(IR)
40209      DR=DBLE(IR)
40210      AN=REAL(N)
40211      AM=REAL(IM)
40212C
40213      IF(IM.EQ.0)THEN
40214        ICASE='NONE'
40215        WRITE(ICOUT,999)
40216        CALL DPWRST('XXX','WRIT')
40217        WRITE(ICOUT,2131)
40218 2131   FORMAT('***** WARNING FROM LOGNORMAL MAXIMUM LIKELIHOOD--')
40219        CALL DPWRST('XXX','WRIT')
40220        WRITE(ICOUT,2133)
40221 2133   FORMAT('      NO CENSORING TIMES DETECTED.  IT IS RECOMMENDED')
40222        CALL DPWRST('XXX','WRIT')
40223        WRITE(ICOUT,2135)
40224 2135   FORMAT('      THAT THE FULL SAMPLE SYNTAX BE USED:')
40225        CALL DPWRST('XXX','WRIT')
40226        WRITE(ICOUT,999)
40227        CALL DPWRST('XXX','WRIT')
40228        WRITE(ICOUT,2137)
40229 2137   FORMAT('      LOGNORMAL MAXIMUM LIKELIHOOD  Y')
40230        CALL DPWRST('XXX','WRIT')
40231        WRITE(ICOUT,999)
40232        CALL DPWRST('XXX','WRIT')
40233      ELSE
40234        ICASE='SING'
40235        AHOLD=Y(IR+1)
40236        DO2140I=IR+1,N
40237          IF(Y(I).NE.AHOLD)THEN
40238            ICASE='MULT'
40239            GOTO2149
40240          ENDIF
40241 2140   CONTINUE
40242 2149   CONTINUE
40243        C=DBLE(AHOLD)
40244      ENDIF
40245C
40246      IF(ICASE.EQ.'MULT')THEN
40247        WRITE(ICOUT,999)
40248        CALL DPWRST('XXX','WRIT')
40249        WRITE(ICOUT,2141)
40250 2141   FORMAT('***** ERROR FROM LOGNORMAL MAXIMUM LIKELIHOOD--')
40251        CALL DPWRST('XXX','WRIT')
40252        WRITE(ICOUT,2143)
40253 2143   FORMAT('      CURRENTLY, ONLY SINGLY CENSORED DATA IS ',
40254     1         'SUPPORTED FOR THE LOGNORMAL DISTRIBUTION.')
40255        CALL DPWRST('XXX','WRIT')
40256        WRITE(ICOUT,2145)
40257 2145   FORMAT('      MULTIPLY CENSORED DATA WAS DETECTED.')
40258        CALL DPWRST('XXX','WRIT')
40259        IERROR='YES'
40260        GOTO9000
40261      ENDIF
40262C
40263C               ************************************
40264C               **  STEP 41--                     **
40265C               **  CARRY OUT CALCULATIONS        **
40266C               **  FOR LOGNORMAL MLE             **
40267C               **  ESTIMATE (TIME CENSORED CASE) **
40268C               ************************************
40269C
40270C     THE MAXIMUM LIKELIHOOD EQUATIONS ARE SOLVED USING THE DNSQE
40271C     ROUTINE.
40272C
40273C
40274      ISTEPN='31'
40275      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'NML2')
40276     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
40277C
40278      IERROR='NO'
40279      IWRITE='OFF'
40280C
40281C     COMPUTE STATISTICS FOR FAILURE ONLY DATA
40282C
40283      ISTEPN='32'
40284      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'MLL2')
40285     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
40286C
40287      CALL MEAN(Y,IR,IWRITE,AMEAN,IBUGA3,IERROR)
40288      CALL MEDIAN(Y,IR,IWRITE,XTEMP,MAXNXT,XMEDC,IBUGA3,IERROR)
40289      CALL SD(Y,IR,IWRITE,ASD,IBUGA3,IERROR)
40290      CALL MINIM(Y,IR,IWRITE,AMIN,IBUGA3,IERROR)
40291      CALL MAXIM(Y,IR,IWRITE,AMAX,IBUGA3,IERROR)
40292      XMEANC=AMEAN
40293      XSDC=ASD
40294      XVARC=SQRT(ASD)
40295      XMINC=AMIN
40296      XMAXC=AMAX
40297C
40298      ISTEPN='32B'
40299      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'NML2')
40300     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
40301C
40302C  USE PARAMETERS ESTIMATED FROM FAILURE DATA AS STARTING VALUES
40303C  FOR EQUATION SOLVER.
40304C
40305      DO3103I=1,IR
40306        XTEMP(I)=LOG(Y(I))
40307 3103 CONTINUE
40308C
40309      CALL MEAN(XTEMP,IR,IWRITE,XMEAN,IBUGA3,IERROR)
40310      CALL SD(XTEMP,IR,IWRITE,XSD,IBUGA3,IERROR)
40311C
40312      XPAR(1)=DBLE(XMEAN)
40313      XPAR(2)=DBLE(XSD)
40314C
40315      IN=N
40316      JAC=0
40317      IOPT=2
40318      TOL=1.0D-6
40319      NVAR=2
40320      NPRINT=-1
40321      INFO=0
40322      LWA=MAXNXT
40323      FVEC(1)=0.0D0
40324      FVEC(2)=0.0D0
40325      CALL DNSQE(LG1FUN,JAC,IOPT,NVAR,XPAR,FVEC,TOL,NPRINT,INFO,
40326     1           DTEMP1,MAXNXT,Y,IR)
40327C
40328      UHATML=REAL(XPAR(1))
40329      SCALML=EXP(UHATML)
40330      SIGMML=REAL(XPAR(2))
40331      SHAPML=SIGMML
40332C
40333      ISTEPN='33'
40334      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'MLL2')THEN
40335        CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
40336        WRITE(ICOUT,2201)UHATML,SCALML,SIGMML
40337 2201   FORMAT('UHATML,SCALML,SIGMML = ',3G15.7)
40338        CALL DPWRST('XXX','WRIT')
40339      ENDIF
40340C
40341C  COMPUTE STANDARD ERRORS.  FORMULAS FOR LOCAL FISHER INFORMATION
40342C  MATRIX GIVEN ON PAGE 162 OF BURY.
40343C
40344      DN=DBLE(N)
40345      DR=DBLE(IR)
40346      DM=DBLE(IM)
40347      DS=DBLE(SIGMML)
40348      DU=DBLE(UHATML)
40349      DZ=(DLOG(C)-DU)/DS
40350      CALL NODPDF(DZ,DTERM1)
40351      CALL NODCDF(DZ,DTERM2)
40352      DH=DTERM1/(1.0D0 - DTERM2)
40353      DSUM1=0.0D0
40354      DSUM2=0.0D0
40355      DO100I=1,IR
40356        DX=DBLE(Y(I))
40357        DX=(DLOG(DX) - DU)/DS
40358        DSUM1=DSUM1 + DX
40359        DSUM2=DSUM2 + DX*DX
40360  100 CONTINUE
40361C
40362      DTERM1=(1.0D0/DS**2)*(DR + DM*DH*(DH-DZ))
40363      FISH(1,1)=REAL(DTERM1)
40364      DTERM1=(1.0D0/DS**2)*(2.0D0*DSUM1 +DM*DH*(1.0D0 + DZ*(DH-DZ)))
40365      FISH(2,1)=REAL(DTERM1)
40366      FISH(1,2)=FISH(2,1)
40367      DTERM1=(1.0D0/DS**2)*
40368     1       (3.0D0*DSUM2 +DM*DZ*DH*(2.0D0 + DZ*DH -DZ**2) - DR)
40369      FISH(2,2)=REAL(DTERM1)
40370C
40371      NDIM=2
40372      CALL SGECO(FISH,NDIM,NDIM,ITEMP,RCOND,XTEMP)
40373      IJOB=1
40374      CALL SGEDI(FISH,NDIM,NDIM,ITEMP,XTEMP,XTEMP(MAXNXT/2),IJOB)
40375      DO2410J=1,NDIM
40376        DO2415I=1,NDIM
40377          COV(I,J)=FISH(I,J)
40378 2415   CONTINUE
40379 2410 CONTINUE
40380C
40381      SCALSE=0.0
40382      SIGMSE=0.0
40383      IF(COV(1,1).GE.0.0)SCALSE=SQRT(COV(1,1))
40384      IF(COV(2,2).GE.0.0)SIGMSE=SQRT(COV(2,2))
40385      COVSE=COV(2,1)
40386      UHATSE=SCALSE
40387      SHAPSE=SIGMSE
40388C
40389 9000 CONTINUE
40390      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'NML2')THEN
40391        WRITE(ICOUT,999)
40392        CALL DPWRST('XXX','WRIT')
40393        WRITE(ICOUT,9011)
40394 9011   FORMAT('**** AT THE END OF LGNML2--')
40395        CALL DPWRST('XXX','WRIT')
40396        WRITE(ICOUT,9013)N,XMEAN,XSD,XMIN,XMAX
40397 9013   FORMAT('N,XMEAN,XSD,XMIN,XMAX = ',I8,4G15.7)
40398        CALL DPWRST('XXX','WRIT')
40399        WRITE(ICOUT,9017)SHAPML,SCALML,SHAPSE,SCALSE
40400 9017   FORMAT('SHAPML,SCALML,SHAPSE,SCALSE =  ',4G15.7)
40401        CALL DPWRST('XXX','WRIT')
40402      ENDIF
40403C
40404      RETURN
40405      END
40406      SUBROUTINE LGNML3(Y,N,DTEMP1,
40407     1                  XMEAN,XSD,XVAR,XMIN,XMAX,XSKEW,
40408     1                  ALOCML,SCALML,SHAPML,UHATML,
40409     1                  ISUBRO,IBUGA3,IERROR)
40410C
40411C     PURPOSE--THIS ROUTINE COMPUTES THE MAXIMUM LIKELIHOOD ESTIMATES
40412C              FOR THE 3-PARAMETER LOGNORMAL DISTRIBUTION FOR THE RAW DATA
40413C              CASE (I.E., NO CENSORING AND NO GROUPING).
40414C
40415C              THIS USES THE METHOD DESCRIBED IN COHEN AND WHITTEN (AND
40416C              ALSO IN BURY).
40417C
40418C              PUT THIS IN A SEPARATE ROUTINE AS IT MAY BE CALLED
40419C              FROM MULTIPLE PLACES (DPMLL3 WILL GENERATE THE OUTPUT
40420C              FOR THE 3-PARAMATER LOGNORMAL MLE COMMAND).
40421C
40422C     REFERENCE--KARL BURY, "STATISTICAL DISTRIBUTIONS IN
40423C                ENGINEERING", CAMBRIDGE UNIVERSITY PRESS,
40424C                1999, CHAPTER 13.
40425C              --COHEN AND WHITTEN (1988), "PARAMETER ESTIMATION IN
40426C                RELIABILITY AND LIFE SPAN MODELS", MARCEL DEKKER, INC.,
40427C                CHAPTER 4.
40428C     WRITTEN BY--ALAN HECKERT
40429C                 STATISTICAL ENGINEERING DIVISION
40430C                 INFORMATION TECHNOLOGY LABORATORY
40431C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
40432C                 GAITHERSBURG, MD 20899-8980
40433C                 PHONE--301-975-2899
40434C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
40435C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
40436C     LANGUAGE--ANSI FORTRAN (1977)
40437C     VERSION NUMBER--2014/04
40438C     ORIGINAL VERSION--APRIL     2014
40439C
40440C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
40441C
40442      DIMENSION Y(*)
40443      DOUBLE PRECISION DTEMP1(*)
40444C
40445C
40446      CHARACTER*4 ISUBRO
40447      CHARACTER*4 IBUGA3
40448      CHARACTER*4 IERROR
40449C
40450      DOUBLE PRECISION LGNFU3
40451      EXTERNAL LGNFU3
40452C
40453      INTEGER IN
40454      COMMON/LGNMLE/IN
40455C
40456      DOUBLE PRECISION XSTART
40457      DOUBLE PRECISION XLOW
40458      DOUBLE PRECISION XUP
40459      DOUBLE PRECISION DAE
40460      DOUBLE PRECISION DRE
40461      DOUBLE PRECISION DX
40462      DOUBLE PRECISION DN
40463      DOUBLE PRECISION DSUM1
40464      DOUBLE PRECISION DSUM2
40465      DOUBLE PRECISION DTERM1
40466      DOUBLE PRECISION BOUND
40467      DOUBLE PRECISION FL
40468      DOUBLE PRECISION FU
40469      DOUBLE PRECISION DINC
40470C
40471      CHARACTER*4 IWRITE
40472      CHARACTER*40 IDIST
40473      CHARACTER*4 ISUBN1
40474      CHARACTER*4 ISUBN2
40475      CHARACTER*4 ISTEPN
40476C
40477C-----COMMON----------------------------------------------------------
40478C
40479      INCLUDE 'DPCOP2.INC'
40480C
40481C-----START POINT-----------------------------------------------------
40482C
40483      ISUBN1='LGNM'
40484      ISUBN2='L3  '
40485C
40486      IDIST='LOGNORMAL'
40487      IWRITE='OFF'
40488      IERROR='NO'
40489      ALOCML=CPUMIN
40490      SCALML=CPUMIN
40491      SHAPML=CPUMIN
40492      UHATML=CPUMIN
40493C
40494      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'NML3')THEN
40495        WRITE(ICOUT,999)
40496  999   FORMAT(1X)
40497        CALL DPWRST('XXX','WRIT')
40498        WRITE(ICOUT,51)
40499   51   FORMAT('**** AT THE BEGINNING OF LGNML3--')
40500        CALL DPWRST('XXX','WRIT')
40501        WRITE(ICOUT,52)IBUGA3,ISUBRO,N
40502   52   FORMAT('IBUGA3,ISUBRO,N = ',2(A4,2X),I8)
40503        CALL DPWRST('XXX','WRIT')
40504        DO56I=1,MIN(N,100)
40505          WRITE(ICOUT,57)I,Y(I)
40506   57     FORMAT('I,Y(I) = ',I8,G15.7)
40507          CALL DPWRST('XXX','WRIT')
40508   56   CONTINUE
40509      ENDIF
40510C
40511C               ******************************************
40512C               **  STEP 1--                            **
40513C               **  CARRY OUT CALCULATIONS              **
40514C               **  FOR LOGNORMAL MLE ESTIMATE          **
40515C               ******************************************
40516C
40517      ISTEPN='1'
40518      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'NML3')
40519     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
40520C
40521      IF(N.LE.4)THEN
40522        WRITE(ICOUT,999)
40523        CALL DPWRST('XXX','WRIT')
40524        WRITE(ICOUT,111)
40525  111   FORMAT('***** ERROR IN 3-PARAMETER LOGNORMAL MAXIMUM ',
40526     1         'LIKELIHOOD--')
40527        CALL DPWRST('XXX','WRIT')
40528        WRITE(ICOUT,112)
40529  112   FORMAT('      THE NUMBER OF OBSERVATIONS FOR THE RESPONSE ',
40530     1         'VARIABLE IS LESS THAN 5.')
40531        CALL DPWRST('XXX','WRIT')
40532        WRITE(ICOUT,113)N
40533  113   FORMAT('      SAMPLE SIZE = ',I8)
40534        CALL DPWRST('XXX','WRIT')
40535        IERROR='YES'
40536        GOTO9000
40537      ENDIF
40538C
40539      IFLAG=1
40540      CALL SUMRAW(Y,N,IDIST,IFLAG,
40541     1            XMEAN,XVAR,XSD,XMIN,XMAX,
40542     1            ISUBRO,IBUGA3,IERROR)
40543      IF(IERROR.EQ.'YES')GOTO9000
40544      CALL STMOM3(Y,N,IWRITE,XSKEW,IBUGA3,IERROR)
40545C
40546C     STEP 1: SOLVE EQUATION IN LGNFU3 TO ESTIMATE THE LOCATION
40547C             PARAMETER.
40548C
40549C             FIRST NEED TO FIND A BRACKETING INTERVAL.  USE
40550C             MINIMUM VALUE AS UPPER LIMITS.  DESCEND IN SMALL
40551C             INCREMENTS UNTIL "MEAN - 60*SD".  IF NO BRACKETING
40552C             INTERVAL FOUND AT THAT POINT, THEN NO ML SOLUTION.
40553C
40554      DO210I=1,N
40555        DTEMP1(I)=DBLE(Y(I))
40556  210 CONTINUE
40557      IN=N
40558C
40559      BOUND=DBLE(XMEAN) - 60.0D0*DBLE(XSD)
40560      IF((DBLE(XMIN)-BOUND).GT.100.)THEN
40561        DINC=(DBLE(XMIN)-BOUND)/100.0D0
40562      ELSEIF((DBLE(XMIN)-BOUND).GT.50.)THEN
40563        DINC=0.5D0
40564      ELSEIF((DBLE(XMIN)-BOUND).GT.10.)THEN
40565        DINC=0.1D0
40566      ELSE
40567        DINC=0.01D0
40568      ENDIF
40569C
40570      XUP=DBLE(XMIN) - 1.0D-06
40571      FU=LGNFU3(XUP,DTEMP1)
40572      XLOW=DBLE(XMIN)
40573      FL=FU
40574C
40575  290 CONTINUE
40576      IF(XLOW.GT.BOUND .AND. (FL*FU).GT.0.0D0)THEN
40577        XLOW=XLOW - DINC
40578        FL=LGNFU3(XLOW,DTEMP1)
40579        GOTO290
40580      ELSE
40581        IF(XLOW.LT.BOUND)THEN
40582          WRITE(ICOUT,999)
40583          CALL DPWRST('XXX','WRIT')
40584          WRITE(ICOUT,111)
40585          CALL DPWRST('XXX','WRIT')
40586          WRITE(ICOUT,292)
40587  292     FORMAT('      NO LOCAL MAXIMIM LIKELIHOOD ESTIMATE CAN ',
40588     1           'BE FOUND.')
40589          CALL DPWRST('XXX','WRIT')
40590          IERROR='YES'
40591          GOTO9000
40592        ENDIF
40593      ENDIF
40594C
40595      XSTART=(XLOW+XUP)/2.0D0
40596      DAE=1.0D-7
40597      DRE=1.0D-7
40598      IFLAG=0
40599      ITBRAC=0
40600C
40601      CALL DFZER2(LGNFU3,XLOW,XUP,XSTART,DRE,DAE,IFLAG,DTEMP1)
40602C
40603      IF(IFLAG.EQ.2)THEN
40604C
40605C  NOTE: SUPPRESS THIS MESSAGE FOR NOW.
40606CCCCC   WRITE(ICOUT,999)
40607CCCCC   CALL DPWRST('XXX','BUG ')
40608CCCCC   WRITE(ICOUT,3111)
40609C3111   FORMAT('***** WARNING FROM LOGNORMAL MAXIMUM LIKELIHOOD--')
40610CCCCC   CALL DPWRST('XXX','BUG ')
40611CCCCC   WRITE(ICOUT,3113)
40612C3113   FORMAT('      ESTIMATE OF LOCATION MAY NOT BE COMPUTED TO ',
40613CCCCC1         'DESIRED TOLERANCE.')
40614CCCCC   CALL DPWRST('XXX','BUG ')
40615      ELSEIF(IFLAG.EQ.3)THEN
40616        WRITE(ICOUT,999)
40617        CALL DPWRST('XXX','BUG ')
40618        WRITE(ICOUT,3121)
40619 3121   FORMAT('***** WARNING FROM LOGNORMAL MAXIMUM LIKELIHOOD--')
40620        CALL DPWRST('XXX','BUG ')
40621        WRITE(ICOUT,3123)
40622 3123   FORMAT('      ESTIMATE OF LOCATION MAY BE NEAR A SINGULAR ',
40623     1         'POINT.')
40624        CALL DPWRST('XXX','BUG ')
40625      ELSEIF(IFLAG.EQ.4)THEN
40626        WRITE(ICOUT,999)
40627        CALL DPWRST('XXX','BUG ')
40628        WRITE(ICOUT,111)
40629        CALL DPWRST('XXX','BUG ')
40630        WRITE(ICOUT,3133)
40631 3133   FORMAT('      APPROPRIATE BRACKETING INTERVAL NOT FOUND.')
40632        CALL DPWRST('XXX','BUG ')
40633      ELSEIF(IFLAG.EQ.5)THEN
40634        WRITE(ICOUT,999)
40635        CALL DPWRST('XXX','BUG ')
40636        WRITE(ICOUT,3121)
40637        CALL DPWRST('XXX','BUG ')
40638        WRITE(ICOUT,3143)
40639 3143   FORMAT('      MAXIMUM ITERATIONS EXCEEDED.')
40640        CALL DPWRST('XXX','BUG ')
40641      ENDIF
40642C
40643C     ONCE LOCATION ESTIMATE DETERMINED
40644C
40645C         UHAT = (1/N*SUM[i=1 to N][LOG(X(i) - LOC]
40646C
40647C         SIGMA**2 = (1/N)*SUM[i=1 to N][LOG(X(i) - LOC]**2 -
40648C                    [(1/N)*SUM[i=1 to N][LOG(X(i) - LOC)]]**2
40649C
40650      ALOCML=REAL(XLOW)
40651      DSUM1=0.0D0
40652      DSUM2=0.0D0
40653      DN=DBLE(N)
40654      DO4000I=1,N
40655        DX=DBLE(Y(I) - ALOCML)
40656        DSUM1=DSUM1 + DLOG(DX)
40657        DSUM2=DSUM2 + DLOG(DX)**2
40658 4000 CONTINUE
40659      UHATML=REAL(DSUM1/DN)
40660      SCALML=EXP(UHATML)
40661      DTERM1=DSQRT((DSUM2/DN) - (DSUM1/DN)**2)
40662      SHAPML=REAL(DTERM1)
40663C
40664 9000 CONTINUE
40665      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'NML3')THEN
40666        WRITE(ICOUT,999)
40667        CALL DPWRST('XXX','WRIT')
40668        WRITE(ICOUT,9011)
40669 9011   FORMAT('**** AT THE END OF LGNML3--')
40670        CALL DPWRST('XXX','WRIT')
40671        WRITE(ICOUT,9013)DSUM1,DSUM2,DTERM1
40672 9013   FORMAT('DSUM1,DSUM2,DTERM1 = ',3G15.7)
40673        CALL DPWRST('XXX','WRIT')
40674      ENDIF
40675C
40676      RETURN
40677      END
40678      SUBROUTINE LGNML5(ALOC,SCALE,SHAPE,N,COV,UHATSE,
40679     1                  ISUBRO,IBUGA3,IERROR)
40680C
40681C     PURPOSE--THIS ROUTINE COMPUTES THE PARAMETER VARIANCE-COVARIANCE
40682C              MATRIX FOR THE 3-PARAMETER LOGNORMAL DISTRIBUTION.  NOTE
40683C              THAT THESE ARE ONLY APPROXIMATE SINCE THE 3-PARAMETER
40684C              LOGNORMAL HAS REGULARITY PROBLEMS.  HOWEVER, ACCORDING
40685C              TO COHEN AND WHITTEN, SIMULATION STUDIES HAVE SHOWN
40686C              THAT THESE ARE REASONABLE ESTIMATES.  THE FORMULAS
40687C              FOR THE VARIANCE-COVARIANCE TERMS ARE GIVEN ON
40688C              PAGE 64 OF COHEN AND WHITTEN.
40689C
40690C     REFERENCE--COHEN AND WHITTEN (1988), "PARAMETER ESTIMATION IN
40691C                RELIABILITY AND LIFE SPAN MODELS", MARCEL DEKKER, INC.,
40692C                CHAPTER 4.
40693C              --KARL BURY, "STATISTICAL DISTRIBUTIONS IN
40694C                ENGINEERING", CAMBRIDGE UNIVERSITY PRESS,
40695C                1999, CHAPTER 13.
40696C     WRITTEN BY--ALAN HECKERT
40697C                 STATISTICAL ENGINEERING DIVISION
40698C                 INFORMATION TECHNOLOGY LABORATORY
40699C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
40700C                 GAITHERSBURG, MD 20899-8980
40701C                 PHONE--301-975-2899
40702C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
40703C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
40704C     LANGUAGE--ANSI FORTRAN (1977)
40705C     VERSION NUMBER--2014/4
40706C     ORIGINAL VERSION--APRIL     2014
40707C
40708      REAL COV(3,3)
40709C
40710      DOUBLE PRECISION DN
40711      DOUBLE PRECISION DLOC
40712      DOUBLE PRECISION DSCALE
40713      DOUBLE PRECISION DSHAPE
40714      DOUBLE PRECISION DH
40715      DOUBLE PRECISION DW
40716      DOUBLE PRECISION DSIGMA
40717      DOUBLE PRECISION DBETA2
40718C
40719      CHARACTER*4 ISUBRO
40720      CHARACTER*4 IBUGA3
40721      CHARACTER*4 IERROR
40722C
40723      CHARACTER*4 IWRITE
40724      CHARACTER*4 ISUBN1
40725      CHARACTER*4 ISUBN2
40726      CHARACTER*4 ISTEPN
40727C
40728C-----COMMON----------------------------------------------------------
40729C
40730      INCLUDE 'DPCOP2.INC'
40731C
40732C-----START POINT-----------------------------------------------------
40733C
40734      ISUBN1='LGNM'
40735      ISUBN2='L5  '
40736C
40737      IWRITE='OFF'
40738      IERROR='NO'
40739C
40740      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'IML5')THEN
40741        WRITE(ICOUT,999)
40742  999   FORMAT(1X)
40743        CALL DPWRST('XXX','WRIT')
40744        WRITE(ICOUT,51)
40745   51   FORMAT('**** AT THE BEGINNING OF LGNML5--')
40746        CALL DPWRST('XXX','WRIT')
40747        WRITE(ICOUT,52)IBUGA3,ISUBRO,N
40748   52   FORMAT('IBUGA3,ISUBRO,N = ',A4,2X,A4,2X,I8)
40749        CALL DPWRST('XXX','WRIT')
40750        WRITE(ICOUT,54)ALOC,SCALE,SHAPE
40751   54   FORMAT('ALOC,SCALE,SHAPE = ',3G15.7)
40752        CALL DPWRST('XXX','WRIT')
40753      ENDIF
40754C
40755C               ******************************************
40756C               **  STEP 1--                            **
40757C               **  CARRY OUT CALCULATIONS              **
40758C               **  FOR VARIANCE-COVARIANCE MATRIX      **
40759C               ******************************************
40760C
40761      ISTEPN='1'
40762      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'IML5')
40763     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
40764C
40765      DO101J=1,3
40766        DO103I=1,3
40767          COV(I,J)=CPUMIN
40768  103   CONTINUE
40769  101 CONTINUE
40770C
40771      DN=REAL(N)
40772      DLOC=DBLE(ALOC)
40773      DSCALE=DBLE(SCALE)
40774      DSHAPE=DBLE(SHAPE)
40775      DSIGMA=DSHAPE**2
40776      DBETA2=DSCALE**2
40777      DW=DEXP(DSHAPE**2)
40778C
40779      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'IML5')THEN
40780        WRITE(ICOUT,111)DN,DLOC,DSCALE,DSHAPE
40781  111   FORMAT('LGNML5: DN,DLOC,DSCALE,DSHAPE=',4G15.7)
40782        CALL DPWRST('XXX','WRIT')
40783        WRITE(ICOUT,112)DSIGMA,DBETA2,DW
40784  112   FORMAT('        DSIGMA,DBETA2,DW=',3G15.7)
40785        CALL DPWRST('XXX','WRIT')
40786      ENDIF
40787C
40788C     FORMULAS ARE (P. 64 OF COHEN AND WHITTEN):
40789C
40790C        VAR(LOC)         = (SHAPE**2/N)*(SCALE**2/W)*H
40791C        VAR(SCALE)       = (SHAPE**2/N)*SCALE**2*(1 + H)
40792C        VAR(SHAPE)       = (SHAPE**2/(2*N))*(1 + 2*SHAPE**2*H)
40793C        COV(LOC,SCALE)   = (-SHAPE**3/N)*(SCALE**2/SQRT(w))*H
40794C        COV(LOC,SHAPE)   = (SHAPE**3/N)*(SCALE**2/SQRT(W))*H
40795C        COV(SCALE,SHAPE) = (-SHAPE**3/N)*SCALE**2*H
40796C        VAR(UHAT)        = (SHAPE**2/N)*(1 + H)
40797C
40798C        H = 1/[W*(1+SHAPE**2) - (1+2*SHAPE**2)]
40799C
40800      DH=1.0D0/(DW*(1.0D0+DSIGMA) - (1.0D0+2.0D0*DSIGMA))
40801      COV(1,1)=REAL((DSIGMA/DN)*(DBETA2/DW)*DH)
40802      COV(2,2)=REAL((DSIGMA/DN)*DBETA2*(1.0D0+DH))
40803      COV(3,3)=REAL((DSIGMA/(2.0D0*DN))*(1.0D0+2.0D0*DSIGMA*DH))
40804      COV(1,3)=REAL((DSHAPE**3/DN)*(DBETA2/DSQRT(DW))*DH)
40805      COV(1,2)=-COV(1,3)
40806      COV(2,3)=REAL(-(DSHAPE**3/DN)*DBETA2*DH)
40807      COV(3,1)=COV(1,3)
40808      COV(2,1)=COV(1,2)
40809      COV(3,2)=COV(2,3)
40810      UHATSE=REAL(DSQRT((DSIGMA/DN)*(1.0D0+DH)))
40811C
40812C
40813      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'IML5')THEN
40814        WRITE(ICOUT,999)
40815        CALL DPWRST('XXX','WRIT')
40816        WRITE(ICOUT,9011)
40817 9011   FORMAT('**** AT THE END OF LGNML5--')
40818        CALL DPWRST('XXX','WRIT')
40819        WRITE(ICOUT,9012)DH,UHATSE
40820 9012   FORMAT('DH,UHATSE = ',2G15.7)
40821        CALL DPWRST('XXX','WRIT')
40822      ENDIF
40823C
40824      RETURN
40825      END
40826      SUBROUTINE LGNML8(Y,N,MAXNXT,P3LNMI,IOPFLG,
40827     1                  TEMP1,Y2,
40828     1                  ALOCML,SCALML,SHAPML,
40829     1                  ISUBRO,IBUGA3,IERROR)
40830C
40831C     PURPOSE--USE THE LAWLESS "PROFILE LIKELIHOOD" METHOD (THIS WAS
40832C              DEVELOPED FOR THE 3-PARAMETER WEIBULL DISTRIBUTION, BUT
40833C              THE SAME IDEA CAN BE APPLIED TO THE 3-PARAMETER LOGNORMAL
40834C              DISTRIBUTION.  THIS CAN BE USEFUL AS THE COHEN-WHITTEN
40835C              ALGORITHM CAN SOMETIMES FAIL.
40836C
40837C     PURPOSE--THIS SUBROUTINE IMPLEMENTS THE PROFILE LOG-LIKELIHOOD
40838C              METHOD ORIGINALLY PROPOSED BY LAWLESS FOR THE 3-PARAMETER
40839C              WEIBULL.  THIS METHOD DOES THE FOLLOWING:
40840C
40841C                1. CREATE A GRID FOR THE LOCATION PARAMETER FROM 0 TO
40842C                   THE DATA MINIMUM (MINUS AN EPSILON) VALUE.
40843C
40844C                2. ITERATE THROUGH THE GRID AND DO THE FOLLOWING:
40845C
40846C                    A. SET THE LOCATION PARAMETER TO THE GRID VALUE.
40847C                       CALL THIS VALUE A0.
40848C
40849C                    B. LET Y2 = Y - A0.
40850C
40851C                    C. ESTIMATE THE SCALE AND SHAPE PARAMETER USING
40852C                       STANDARD 2-PARAMETER LOGNORMAL ML METHODS.
40853C
40854C                    D. COMPUTE THE LOG-LIKELIHOOD OF THE 3-PARAMETER
40855C                       LOGNORMAL BASED ON THESE PARAMETER ESTIMATES.
40856C
40857C              THE PARAMETER ESTIMATES THAT GENERATE THE MAXIMUM
40858C              LIKELIHOOD VALUE ARE THE ESTIMATES USED.
40859C
40860C     REFERENCES--LAWLESS (2003), "STATISTICAL MODELS AND METHODS FOR
40861C                 LIFETIME DATA", SECOND EDITION, WILEY, PP. 187-190.
40862C              --COHEN AND WHITTEN, "PARAMETER ESTIMATION IN RELIABILITY
40863C                AND LIFE SPAN MODELS", MARCEL DEKKER, INC.
40864C     WRITTEN BY--ALAN HECKERT
40865C                 STATISTICAL ENGINEERING DIVISION
40866C                 INFORMATION TECHNOLOGY LABORATORY
40867C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
40868C                 GAITHERSBURG, MD 20899-8980
40869C                 PHONE--301-975-2899
40870C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
40871C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
40872C     LANGUAGE--ANSI FORTRAN (1977)
40873C     VERSION NUMBER--2014/4
40874C     ORIGINAL VERSION--APRIL     2014
40875C
40876C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
40877C
40878      DIMENSION Y(*)
40879      DIMENSION Y2(*)
40880      DIMENSION TEMP1(*)
40881C
40882      CHARACTER*4 IOPFLG
40883      CHARACTER*4 ISUBRO
40884      CHARACTER*4 IBUGA3
40885      CHARACTER*4 IERROR
40886C
40887      CHARACTER*4 IWRITE
40888      CHARACTER*4 IOP
40889      CHARACTER*40 IDIST
40890C
40891      CHARACTER*4 ISUBN1
40892      CHARACTER*4 ISUBN2
40893      CHARACTER*4 ISTEPN
40894C
40895C-----COMMON----------------------------------------------------------
40896C
40897      INCLUDE 'DPCOP2.INC'
40898C
40899C-----START POINT-----------------------------------------------------
40900C
40901      ISUBN1='LGNM'
40902      ISUBN2='L8  '
40903      IWRITE='OFF'
40904      IERROR='NO'
40905      EPS=0.1E-5
40906C
40907      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'NML8')THEN
40908        WRITE(ICOUT,999)
40909  999   FORMAT(1X)
40910        CALL DPWRST('XXX','WRIT')
40911        WRITE(ICOUT,51)
40912   51   FORMAT('**** AT THE BEGINNING OF LGNML8--')
40913        CALL DPWRST('XXX','WRIT')
40914        WRITE(ICOUT,52)IBUGA3,ISUBRO,N
40915   52   FORMAT('IBUGA3,ISUBRO,N = ',2(A4,2X),I8)
40916        CALL DPWRST('XXX','WRIT')
40917        DO56I=1,MIN(N,100)
40918          WRITE(ICOUT,57)I,Y(I)
40919   57     FORMAT('I,Y(I) = ',I8,G15.7)
40920          CALL DPWRST('XXX','WRIT')
40921   56   CONTINUE
40922      ENDIF
40923C
40924C
40925C               **************************************************
40926C               **  STEP 0--OPEN THE STORAGE FILES              **
40927C               **************************************************
40928C
40929      ISTEPN='1.1'
40930      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'NML8')
40931     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
40932C
40933      IF(IOPFLG.EQ.'ON' .OR. IOPFLG.EQ.'YES')THEN
40934        IOP='OPEN'
40935        IFLAG1=0
40936        IFLAG2=1
40937        IFLAG3=0
40938        IFLAG4=0
40939        IFLAG5=0
40940        CALL DPAUFI(IOP,IFLAG1,IFLAG2,IFLAG3,IFLAG4,IFLAG5,
40941     1              IOUNI1,IOUNI2,IOUNI3,IOUNI4,IOUNI5,
40942     1              IBUGA3,ISUBRO,IERROR)
40943        IF(IERROR.EQ.'YES')GOTO9000
40944      ENDIF
40945C
40946C               ******************************************
40947C               **  STEP 1--                            **
40948C               **  CARRY OUT CALCULATIONS              **
40949C               **  FOR LOGNORMAL MLE ESTIMATE          **
40950C               ******************************************
40951C
40952      ISTEPN='1'
40953      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'NML8')
40954     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
40955C
40956      IDIST='LOGNORMAL'
40957C
40958      IF(N.LE.4)THEN
40959        WRITE(ICOUT,999)
40960        CALL DPWRST('XXX','WRIT')
40961        WRITE(ICOUT,111)
40962  111   FORMAT('***** ERROR IN LOGNORMAL MAXIMUM LIKELIHOOD--')
40963        CALL DPWRST('XXX','WRIT')
40964        WRITE(ICOUT,112)
40965  112   FORMAT('      THE NUMBER OF OBSERVATIONS FOR THE RESPONSE ',
40966     1         'VARIABLE IS LESS THAN 5.')
40967        CALL DPWRST('XXX','WRIT')
40968        WRITE(ICOUT,113)N
40969  113   FORMAT('      SAMPLE SIZE = ',I8)
40970        CALL DPWRST('XXX','WRIT')
40971        IERROR='YES'
40972        GOTO9000
40973      ENDIF
40974C
40975C     THIS METHOD ASSUMES LOCATION IS NON-NEGATIVE (IT CAN BE EXTENDED
40976C     TO A NEGATIVE LOWER LIMITS, BUT DEFER ON IMPLEMENTING THAT FOR
40977C     NOW).
40978C
40979      DO120I=1,N
40980        IF(Y(I).LE.0.0)THEN
40981          WRITE(ICOUT,999)
40982          CALL DPWRST('XXX','WRIT')
40983          WRITE(ICOUT,111)IDIST(1:16)
40984          CALL DPWRST('XXX','WRIT')
40985          WRITE(ICOUT,127)I,Y(I)
40986  127     FORMAT('      ROW ',I8,' IS NON-POSITIVE (',G15.7,')')
40987          CALL DPWRST('XXX','WRIT')
40988          IERROR='YES'
40989          GOTO9000
40990        ENDIF
40991  120 CONTINUE
40992C
40993C     STEP 1: COMPUTE 2-PARAMETER ML ESTIMATES FOR ORIGINAL DATA SET
40994C
40995      CALL LGNML1(Y,N,MAXNXT,
40996     1            TEMP1,
40997     1            XMEAN,XMED,XSD,XVAR,XMIN,XMAX,XMEANL,XSDL,
40998     1            SCALML,SCALSE,SHAPML,SHAPSE,UHATML,UHATSE,
40999     1            ISUBRO,IBUGA3,IERROR)
41000      YMIN=P3LNMI
41001      IF(YMIN.GE.XMIN)YMIN=0.0
41002      ALOCML=YMIN
41003      CALL LGNLI1(Y,N,ALOCML,SCALML,SHAPML,
41004     1            ALIK,AIC,AICC,BIC,
41005     1            ISUBRO,IBUGA3,IERROR)
41006C
41007      IF(IOPFLG.EQ.'ON' .OR. IOPFLG.EQ.'YES')THEN
41008        WRITE(IOUNI2,151)ALOCML,ALIK,SCALML,SHAPML
41009  151   FORMAT(4E15.7)
41010      ENDIF
41011C
41012      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'NML8')THEN
41013        WRITE(ICOUT,131)SCALML,SHAPML,ALIK
41014  131   FORMAT('ZERO CASE: SCALML,SHAPML,ALIK = ',3G15.7)
41015        CALL DPWRST('XXX','WRIT')
41016      ENDIF
41017C
41018C     STEP 2: NOW ITERATE THROUGH VALUES OF THE LOCATION PARAMETER
41019C
41020C             IF MINIMUM VALUE IS SUFFICIENTLY SMALL, JUST DEFINE A
41021C             SINGLE GRID.  IF IT IS LARGE, THEN DO 2 PASSES.  ONCE
41022C             WITH A BROAD GRID AND THEN WITH A FINER GRID.
41023C
41024      XMINT=XMIN - EPS
41025      IF(XMIN.LE.100.0)THEN
41026        NITER=1
41027        IPASS=1
41028        IF(XMIN.LE.10)THEN
41029          AINC=0.001
41030        ELSE
41031          AINC=0.01
41032        ENDIF
41033        NLOOP=INT(((XMINT-YMIN)/AINC)+0.1)
41034      ELSE
41035        NITER=2
41036        IPASS=1
41037        NLOOP=100
41038        AINC=(XMIN-YMIN)/REAL(NLOOP)
41039      ENDIF
41040C
41041 1000 CONTINUE
41042C
41043      IF(IPASS.EQ.2)THEN
41044        XSTRT=ALOCML - AINC
41045        IF(XSTRT.LE.0.0)XSTRT=0.0
41046        XSTOP=ALOCML + AINC
41047        NLOOP=100
41048        AINC=XMIN/REAL(NLOOP)
41049      ELSE
41050        XSTRT=YMIN
41051      ENDIF
41052C
41053      ALIK=CPUMIN
41054      ALIKT=CPUMIN
41055      DO1100ILOOP=1,NLOOP
41056C
41057C       STEP 2A: SUBTRACT OFF CONDITIONAL VALUE OF LOCATION
41058C
41059        ALOC=XSTRT + REAL(ILOOP)*AINC
41060        IF(ALOC.GE.XMIN)GOTO1100
41061        DO1110I=1,N
41062          Y2(I)=Y(I) - ALOC
41063 1110   CONTINUE
41064C
41065C       STEP 2B: COMPUTE 2-PARAMETER ML ESTIMATES FOR MODIFIED DATA SET
41066C                (BUT NOT THAT LIKELIHOOD IS COMPUTED FOR ORIGINAL DATA)
41067C
41068        CALL LGNML1(Y2,N,MAXNXT,
41069     1              TEMP1,
41070     1              XMEAN,XMED,XSD,XVAR,XMIN,XMAX,XMEANL,XSDL,
41071     1              SCALMT,SCALSE,SHAPMT,SHAPSE,UHATMT,UHATSE,
41072     1              ISUBRO,IBUGA3,IERROR)
41073        CALL LGNLI1(Y,N,ALOC,SCALMT,SHAPMT,
41074     1              ALIKT,AIC,AICC,BIC,
41075     1              ISUBRO,IBUGA3,IERROR)
41076C
41077      IF(IOPFLG.EQ.'ON' .OR. IOPFLG.EQ.'YES')THEN
41078        WRITE(IOUNI2,151)ALOC,ALIKT,SCALMT,SHAPMT
41079      ENDIF
41080C
41081C
41082C       STEP 2C: COMPARE LIKELIHOOD TO CURRENT MAXIMUM
41083C
41084        IF(ALIKT.GT.ALIK)THEN
41085          ALIK=ALIKT
41086          ALOCML=ALOC
41087          SCALML=SCALMT
41088          SHAPML=SHAPMT
41089          ITEMP=ILOOP
41090        ENDIF
41091C
41092 1100 CONTINUE
41093C
41094      IF(NITER.EQ.2 .AND. IPASS.EQ.1)THEN
41095        IPASS=2
41096        GOTO1000
41097      ENDIF
41098C
41099 9000 CONTINUE
41100C
41101      IF(IOPFLG.EQ.'ON' .OR. IOPFLG.EQ.'YES')THEN
41102        IOP='CLOS'
41103        CALL DPAUFI(IOP,IFLAG1,IFLAG2,IFLAG3,IFLAG4,IFLAG5,
41104     1              IOUNI1,IOUNI2,IOUNI3,IOUNI4,IOUNI5,
41105     1              IBUGA3,ISUBRO,IERROR)
41106      ENDIF
41107C
41108      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'NML8')THEN
41109        WRITE(ICOUT,999)
41110        CALL DPWRST('XXX','WRIT')
41111        WRITE(ICOUT,9011)
41112 9011   FORMAT('**** AT THE END OF LGNML8--')
41113        CALL DPWRST('XXX','WRIT')
41114        WRITE(ICOUT,9013)NITER,NLOOP,IPASS,IERROR
41115 9013   FORMAT('NITER,NLOOP,IPASS,IERROR = ',3I8,2X,A4)
41116        CALL DPWRST('XXX','WRIT')
41117        WRITE(ICOUT,9021)ALOCML,SCALML,SHAPML,ALIK
41118 9021   FORMAT('MLE: ALOCML,SCALML,SHAPML,ALIK = ',4G15.7)
41119        CALL DPWRST('XXX','WRIT')
41120      ENDIF
41121C
41122      RETURN
41123      END
41124      SUBROUTINE LGNMO1(XMEAN,XSD,XMIN,XSKEW,N,PSTAMV,
41125     1                  ALOCMO,SCALMO,SHAPMO,UHATMO,
41126     1                  ALOCMM,SCALMM,SHAPMM,UHATMM,
41127     1                  ISUBRO,IBUGA3,IERROR)
41128C
41129C     PURPOSE--THIS ROUTINE COMPUTES MOMENT ESTIMATES FOR THE 3-PARAMETER
41130C              LOGNORMAL DISTRIBUTION.  THE INPUT VALUES ARE:
41131C
41132C                 XMEAN   - THE SAMPLE MEAN
41133C                 XSD     - THE SAMPLE STANDARD DEVIATION
41134C                 XSKEW   - THE SAMPLE SKEWNESS
41135C                 XMIN    - THE SAMPLE MINIMUM
41136C
41137C              THIS IS FOR THE UNCENSORED CASE.
41138C
41139C     REFERENCE--COHEN AND WHITTEN, "PARAMETER ESTIMATION IN RELIABILITY
41140C                AND LIFE SPAN MODELS", MARCEL DEKKER, INC., P. 61 AND
41141C                PP. 352-354.
41142C     WRITTEN BY--ALAN HECKERT
41143C                 STATISTICAL ENGINEERING DIVISION
41144C                 INFORMATION TECHNOLOGY LABORATORY
41145C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
41146C                 GAITHERSBURG, MD 20899-8980
41147C                 PHONE--301-975-2899
41148C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
41149C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
41150C     LANGUAGE--ANSI FORTRAN (1977)
41151C     VERSION NUMBER--2014/4
41152C     ORIGINAL VERSION--APRIL     2014
41153C
41154C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
41155C
41156      DOUBLE PRECISION AMOM(3)
41157      DOUBLE PRECISION VMOM(8)
41158      DOUBLE PRECISION VMMOM(8)
41159      DOUBLE PRECISION DW
41160      DOUBLE PRECISION DWL
41161      DOUBLE PRECISION DWU
41162      DOUBLE PRECISION FL
41163      DOUBLE PRECISION FU
41164      DOUBLE PRECISION F
41165      DOUBLE PRECISION EPS
41166      DOUBLE PRECISION BETA
41167      DOUBLE PRECISION DTERM1
41168      DOUBLE PRECISION DPPF
41169C
41170      CHARACTER*4 ISUBRO
41171      CHARACTER*4 IBUGA3
41172      CHARACTER*4 IERROR
41173C
41174      DOUBLE PRECISION LGNMO2
41175      DOUBLE PRECISION LGNMO3
41176      DOUBLE PRECISION LGNMO4
41177      EXTERNAL LGNMO2
41178      EXTERNAL LGNMO3
41179      EXTERNAL LGNMO4
41180C
41181      REAL LININ3
41182      EXTERNAL LININ3
41183C
41184      CHARACTER*4 ISUBN1
41185      CHARACTER*4 ISUBN2
41186      CHARACTER*4 ISTEPN
41187C
41188C-----COMMON----------------------------------------------------------
41189C
41190      INCLUDE 'DPCOP2.INC'
41191C
41192C-----START POINT-----------------------------------------------------
41193C
41194      ISUBN1='LGNM'
41195      ISUBN2='O1  '
41196      IERROR='NO'
41197C
41198      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'NMO1')THEN
41199        WRITE(ICOUT,999)
41200  999   FORMAT(1X)
41201        CALL DPWRST('XXX','WRIT')
41202        WRITE(ICOUT,51)
41203   51   FORMAT('**** AT THE BEGINNING OF LGNMO1--')
41204        CALL DPWRST('XXX','WRIT')
41205        WRITE(ICOUT,52)IBUGA3,ISUBRO
41206   52   FORMAT('IBUGA3,ISUBRO = ',A4,2X,A4)
41207        CALL DPWRST('XXX','WRIT')
41208        WRITE(ICOUT,54)XMEAN,XSD,XMIN,XSKEW
41209   54   FORMAT('XMEAN,XSD,XMIN,XSKEW = ',4G15.7)
41210        CALL DPWRST('XXX','WRIT')
41211      ENDIF
41212C
41213C               ******************************************
41214C               **  STEP 1--                            **
41215C               **  CARRY OUT CALCULATIONS              **
41216C               **  FOR LOGNORMAL MOMENT ESTIMATE       **
41217C               ******************************************
41218C
41219      ISTEPN='1'
41220      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'NMO1')
41221     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
41222C
41223      IF(XMEAN.EQ.CPUMIN .OR. XMEAN.EQ.PSTAMV)THEN
41224        WRITE(ICOUT,999)
41225        CALL DPWRST('XXX','WRIT')
41226        WRITE(ICOUT,101)
41227  101   FORMAT('***** ERROR IN LOGNORMAL MOMENT ESTIMATION--')
41228        CALL DPWRST('XXX','WRIT')
41229        WRITE(ICOUT,102)
41230  102   FORMAT('      THE SAMPLE MEAN IS UNDEFINED.')
41231        CALL DPWRST('XXX','WRIT')
41232        IERROR='YES'
41233        GOTO9000
41234      ELSEIF(XSD.EQ.CPUMIN .OR. XSD.EQ.PSTAMV)THEN
41235        WRITE(ICOUT,999)
41236        CALL DPWRST('XXX','WRIT')
41237        WRITE(ICOUT,101)
41238        CALL DPWRST('XXX','WRIT')
41239        WRITE(ICOUT,107)
41240  107   FORMAT('      THE SAMPLE STANDARD DEVIATION IS UNDEFINED.')
41241        CALL DPWRST('XXX','WRIT')
41242        IERROR='YES'
41243        GOTO9000
41244      ELSEIF(XSD.LE.0.0)THEN
41245        WRITE(ICOUT,999)
41246        CALL DPWRST('XXX','WRIT')
41247        WRITE(ICOUT,101)
41248        CALL DPWRST('XXX','WRIT')
41249        WRITE(ICOUT,112)
41250  112   FORMAT('      THE SAMPLE STANDARD DEVIATION IS NON-POSTIVE.')
41251        CALL DPWRST('XXX','WRIT')
41252        WRITE(ICOUT,113)XSD
41253  113   FORMAT('      STANDARD DEVIATION = ',G15.7)
41254        CALL DPWRST('XXX','WRIT')
41255        IERROR='YES'
41256        GOTO9000
41257      ELSEIF(N.LT.5)THEN
41258        WRITE(ICOUT,999)
41259        CALL DPWRST('XXX','WRIT')
41260        WRITE(ICOUT,101)
41261        CALL DPWRST('XXX','WRIT')
41262        WRITE(ICOUT,122)
41263  122   FORMAT('      THE SAMPLE SIZE IS LESS THAN FIVE.')
41264        CALL DPWRST('XXX','WRIT')
41265        WRITE(ICOUT,123)N
41266  123   FORMAT('      SAMPLE SIZE  = ',I8)
41267        CALL DPWRST('XXX','WRIT')
41268        IERROR='YES'
41269        GOTO9000
41270      ENDIF
41271C
41272      DEPS=0.1D-7
41273C
41274      ALOCMO=CPUMIN
41275      SCALMO=CPUMIN
41276      SHAPMO=CPUMIN
41277      UHATMO=CPUMIN
41278C
41279      ALOCMM=CPUMIN
41280      SCALMM=CPUMIN
41281      UHATMM=CPUMIN
41282      SHAPMM=CPUMIN
41283C
41284      VMMOM(1)=CPUMIN
41285      VMMOM(2)=CPUMIN
41286      VMMOM(3)=CPUMIN
41287      VMMOM(4)=CPUMIN
41288      VMMOM(5)=CPUMIN
41289      VMMOM(6)=CPUMIN
41290      VMMOM(7)=CPUMIN
41291      VMMOM(8)=CPUMIN
41292C
41293C               ******************************************
41294C               **  STEP 2--                            **
41295C               **  MOMENT ESTIMATES                    **
41296C               ******************************************
41297C
41298      ISTEPN='2'
41299      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'NMO1')
41300     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
41301C
41302C     IN CODE BELOW:
41303C
41304C        VMOM(1) = ESTIMATE OF LOCATION
41305C        VMOM(2) = ESTIMATE OF U
41306C        VMOM(3) = ESTIMATE OF SHAPE (SIGMA)
41307C        VMOM(4) = DW = EXP(SIGMA**2)
41308C        VMOM(5) = BETA = SCALE = EXP(U)
41309C        VMOM(6) = A3 = = SQRT(PEARSON'S BETA1) (SKEWNESS)
41310C                = (DW + 2.0)*SQRT(DW-1.0)
41311C        VMOM(7) = E(X) = V(1) + BETA*SQRT(DW)
41312C        VMOM(8) = SD(X) = BETA*SQRT(DW*(DW-1.0))
41313C
41314C     FOR OUR PURPOSES, WE ARE PRIMARILY INTERESTED IN THE PARAMETER
41315C     ESTIMATES.
41316C
41317      AMOM(1)=DBLE(XMEAN)
41318      AMOM(2)=DBLE(XSD)
41319      AMOM(3)=DBLE(XSKEW)
41320      DW=LGNMO4(AMOM(3))
41321C
41322      IERR=0
41323      KOUNT=1
41324  100 CONTINUE
41325      IF(DABS(LGNMO2(DW,AMOM)).GE.1.0D-9 .AND. KOUNT.LT.500)THEN
41326        DW=DW - LGNMO2(DW,AMOM)/LGNMO3(DW)
41327        KOUNT=KOUNT+1
41328        GOTO100
41329      ELSE
41330        IF(KOUNT.LT.500)THEN
41331          VMOM(1)=AMOM(1) - AMOM(2)/DSQRT(DW - 1.0)
41332          IF(VMOM(1).LE.AMOM(1) - 50.0D0*AMOM(2))THEN
41333            IERR=1
41334            WRITE(ICOUT,999)
41335            CALL DPWRST('XXX','WRIT')
41336            WRITE(ICOUT,101)
41337            CALL DPWRST('XXX','WRIT')
41338            WRITE(ICOUT,132)
41339  132       FORMAT('      NO MOMENT ESTIMATOR FOUND.')
41340            CALL DPWRST('XXX','WRIT')
41341            GOTO199
41342          ELSE
41343            BETA=AMOM(2)/DSQRT(DW*(DW-1.0D0))
41344            VMOM(2)=DLOG(BETA)
41345            VMOM(3)=DSQRT(DLOG(DW))
41346            VMOM(4)=DW
41347            VMOM(5)=BETA
41348            VMOM(6)=(DW+2.0D0)*DSQRT(DW-1.0D0)
41349            VMOM(7)=VMOM(1) + BETA*DSQRT(DW)
41350            VMOM(8)=BETA*DSQRT(DW*(DW-1.0D0))
41351          ENDIF
41352        ELSE
41353          IERR=1
41354          WRITE(ICOUT,999)
41355          CALL DPWRST('XXX','WRIT')
41356          WRITE(ICOUT,101)
41357          CALL DPWRST('XXX','WRIT')
41358          WRITE(ICOUT,132)
41359          CALL DPWRST('XXX','WRIT')
41360          GOTO199
41361        ENDIF
41362      ENDIF
41363C
41364      ALOCMO=REAL(VMOM(1))
41365      SCALMO=REAL(VMOM(5))
41366      SHAPMO=REAL(VMOM(3))
41367      UHATMO=REAL(VMOM(2))
41368C
41369  199 CONTINUE
41370C
41371C     IN CODE BELOW:
41372C
41373C        VMMOM(1) = ESTIMATE OF LOCATION
41374C        VMMOM(2) = ESTIMATE OF U
41375C        VMMOM(3) = ESTIMATE OF SHAPE (SIGMA)
41376C        VMMOM(4) = DW = EXP(SIGMA**2)
41377C        VMMOM(5) = BETA = SCALE = EXP(U)
41378C        VMMOM(6) = A3 = = SQRT(PEARSON'S BETA1) (SKEWNESS)
41379C                 = (DW + 2.0)*SQRT(DW-1.0)
41380C        VMMOM(7) = E(X) = V(1) + BETA*SQRT(DW)
41381C        VMMOM(8) = SD(X) = BETA*SQRT(DW*(DW-1.0))
41382C
41383C     COMPUTE MODIFIED MOMENT ESTIMATORS USING CODE FOUND ON
41384C     PP. 352-354 OF COHEN/WHITTEN BOOK.
41385C
41386C     IF XMIN PARAMETER NOT GIVEN, THEN SKIP THIS CASE.
41387C
41388      IF(XMIN.EQ.CPUMIN)THEN
41389        WRITE(ICOUT,999)
41390        CALL DPWRST('XXX','WRIT')
41391        WRITE(ICOUT,101)
41392        CALL DPWRST('XXX','WRIT')
41393        WRITE(ICOUT,212)
41394  212   FORMAT('      MINIMUM VALUE NOT SPECIFIED.  MODIFIED ',
41395     1         'MOMENTS WILL NOT BE COMPUTED.')
41396        CALL DPWRST('XXX','WRIT')
41397        IERROR='YES'
41398        GOTO9000
41399      ENDIF
41400C
41401C     FIRST OBTAIN VALUE OF EXPECTED VALUE OF FIRST ORDER
41402C     STATISTIC.
41403C
41404      SI=0.0
41405      IF(N.GE.1000)THEN
41406        DTERM1=1.0D0/DBLE(N+1)
41407        CALL NODPPF(DTERM1,DPPF)
41408        SI=REAL(DPPF)
41409      ELSEIF(N.EQ.5)THEN
41410        SI=-1.16296
41411      ELSEIF(N.GT.5 .AND. N.LT.10)THEN
41412        AY1=-1.16296
41413        AY2=-1.53875
41414        AX1=5.0
41415        AX2=10.0
41416        AX3=REAL(N)
41417        SI=LININ3(AX1,AY1,AX2,AY2,AX3,IBUGA3,ISUBRO,IERROR)
41418      ELSEIF(N.EQ.10)THEN
41419        SI=-1.53875
41420      ELSEIF(N.EQ.11)THEN
41421        SI=(-1.53875 + (-1.62923))/2.0
41422      ELSEIF(N.EQ.12)THEN
41423        SI=-1.62923
41424      ELSEIF(N.EQ.13)THEN
41425        SI=(-1.62923 + (-1.70338))/2.0
41426      ELSEIF(N.EQ.14)THEN
41427        SI=-1.70338
41428      ELSEIF(N.EQ.15)THEN
41429        SI=(-1.70338 + (-1.75699))/2.0
41430      ELSEIF(N.EQ.16)THEN
41431        SI=-1.75699
41432      ELSEIF(N.EQ.17)THEN
41433        SI=(-1.75699 + (-1.82003))/2.0
41434      ELSEIF(N.EQ.18)THEN
41435        SI=-1.82003
41436      ELSEIF(N.EQ.19)THEN
41437        SI=(-1.82003 + (-1.86748))/2.0
41438      ELSEIF(N.EQ.20)THEN
41439        SI=-1.86748
41440      ELSEIF(N.EQ.21)THEN
41441        SI=(-1.86748 + (-1.90969))/2.0
41442      ELSEIF(N.EQ.22)THEN
41443        SI=-1.90969
41444      ELSEIF(N.EQ.23)THEN
41445        SI=(-1.90969 + (-1.94767))/2.0
41446      ELSEIF(N.EQ.24)THEN
41447        SI=-1.94767
41448      ELSEIF(N.EQ.25)THEN
41449        SI=(-1.94767 + (-1.98216))/2.0
41450      ELSEIF(N.EQ.26)THEN
41451        SI=-1.98216
41452      ELSEIF(N.EQ.27)THEN
41453        SI=(-1.98216 + (-2.01371))/2.0
41454      ELSEIF(N.EQ.28)THEN
41455        SI=-2.01371
41456      ELSEIF(N.EQ.29)THEN
41457        SI=(-2.01371 + (-2.04276))/2.0
41458      ELSEIF(N.EQ.30)THEN
41459        SI=-2.04276
41460      ELSEIF(N.EQ.31)THEN
41461        SI=(-2.04276 + (-2.06967))/2.0
41462      ELSEIF(N.EQ.32)THEN
41463        SI=-2.06967
41464      ELSEIF(N.EQ.33)THEN
41465        SI=(-2.06967 + (-2.09471))/2.0
41466      ELSEIF(N.EQ.34)THEN
41467        SI=-2.09471
41468      ELSEIF(N.EQ.35)THEN
41469        SI=(-2.09471 + (-2.11812))/2.0
41470      ELSEIF(N.EQ.36)THEN
41471        SI=-2.11812
41472      ELSEIF(N.EQ.37)THEN
41473        SI=(-2.11812 + (-2.14009))/2.0
41474      ELSEIF(N.EQ.38)THEN
41475        SI=-2.14009
41476      ELSEIF(N.EQ.39)THEN
41477        SI=(-2.14099 + (-2.16078))/2.0
41478      ELSEIF(N.EQ.40)THEN
41479        SI=-2.16078
41480      ELSEIF(N.GT.40 .AND. N.LT.45)THEN
41481        AY1=-2.16078
41482        AY2=-2.20772
41483        AX1=40.0
41484        AX2=45.0
41485        AX3=REAL(N)
41486        SI=LININ3(AX1,AY1,AX2,AY2,AX3,IBUGA3,ISUBRO,IERROR)
41487      ELSEIF(N.EQ.45)THEN
41488        SI=-2.20772
41489      ELSEIF(N.GT.45 .AND. N.LT.50)THEN
41490        AY1=-2.20772
41491        AY2=-2.24907
41492        AX1=45.0
41493        AX2=50.0
41494        AX3=REAL(N)
41495        SI=LININ3(AX1,AY1,AX2,AY2,AX3,IBUGA3,ISUBRO,IERROR)
41496      ELSEIF(N.EQ.50)THEN
41497        SI=-2.24907
41498      ELSEIF(N.GT.50 .AND. N.LT.55)THEN
41499        AY1=-2.24907
41500        AY2=-2.28598
41501        AX1=50.0
41502        AX2=55.0
41503        AX3=REAL(N)
41504        SI=LININ3(AX1,AY1,AX2,AY2,AX3,IBUGA3,ISUBRO,IERROR)
41505      ELSEIF(N.EQ.55)THEN
41506        SI=-2.28598
41507      ELSEIF(N.GT.55 .AND. N.LT.60)THEN
41508        AY1=-2.28598
41509        AY2=-2.31928
41510        AX1=55.0
41511        AX2=60.0
41512        AX3=REAL(N)
41513        SI=LININ3(AX1,AY1,AX2,AY2,AX3,IBUGA3,ISUBRO,IERROR)
41514      ELSEIF(N.EQ.60)THEN
41515        SI=-2.31928
41516      ELSEIF(N.GT.60 .AND. N.LT.65)THEN
41517        AY1=-2.31928
41518        AY2=-2.34958
41519        AX1=60.0
41520        AX2=65.0
41521        AX3=REAL(N)
41522        SI=LININ3(AX1,AY1,AX2,AY2,AX3,IBUGA3,ISUBRO,IERROR)
41523      ELSEIF(N.EQ.65)THEN
41524        SI=-2.34958
41525      ELSEIF(N.GT.65 .AND. N.LT.70)THEN
41526        AY1=-2.34958
41527        AY2=-2.37736
41528        AX1=65.0
41529        AX2=70.0
41530        AX3=REAL(N)
41531        SI=LININ3(AX1,AY1,AX2,AY2,AX3,IBUGA3,ISUBRO,IERROR)
41532      ELSEIF(N.EQ.70)THEN
41533        SI=-2.37736
41534      ELSEIF(N.GT.70 .AND. N.LT.75)THEN
41535        AY1=-2.37736
41536        AY2=-2.40299
41537        AX1=70.0
41538        AX2=75.0
41539        AX3=REAL(N)
41540        SI=LININ3(AX1,AY1,AX2,AY2,AX3,IBUGA3,ISUBRO,IERROR)
41541      ELSEIF(N.EQ.75)THEN
41542        SI=-2.40299
41543      ELSEIF(N.GT.75 .AND. N.LT.80)THEN
41544        AY1=-2.40299
41545        AY2=-2.42677
41546        AX1=75.0
41547        AX2=80.0
41548        AX3=REAL(N)
41549        SI=LININ3(AX1,AY1,AX2,AY2,AX3,IBUGA3,ISUBRO,IERROR)
41550      ELSEIF(N.EQ.80)THEN
41551        SI=-2.42677
41552      ELSEIF(N.GT.80 .AND. N.LT.85)THEN
41553        AY1=-2.42677
41554        AY2=-2.44894
41555        AX1=80.0
41556        AX2=85.0
41557        AX3=REAL(N)
41558        SI=LININ3(AX1,AY1,AX2,AY2,AX3,IBUGA3,ISUBRO,IERROR)
41559      ELSEIF(N.EQ.85)THEN
41560        SI=-2.44894
41561      ELSEIF(N.GT.85 .AND. N.LT.90)THEN
41562        AY1=-2.44894
41563        AY2=-2.46970
41564        AX1=85.0
41565        AX2=90.0
41566        AX3=REAL(N)
41567        SI=LININ3(AX1,AY1,AX2,AY2,AX3,IBUGA3,ISUBRO,IERROR)
41568      ELSEIF(N.EQ.90)THEN
41569        SI=-2.46970
41570      ELSEIF(N.GT.90 .AND. N.LT.95)THEN
41571        AY1=-2.46970
41572        AY2=-2.48920
41573        AX1=90.0
41574        AX2=95.0
41575        AX3=REAL(N)
41576        SI=LININ3(AX1,AY1,AX2,AY2,AX3,IBUGA3,ISUBRO,IERROR)
41577      ELSEIF(N.EQ.95)THEN
41578        SI=-2.48920
41579      ELSEIF(N.GT.95 .AND. N.LT.100)THEN
41580        AY1=-2.48920
41581        AY2=-2.50759
41582        AX1=95.0
41583        AX2=100.0
41584        AX3=REAL(N)
41585        SI=LININ3(AX1,AY1,AX2,AY2,AX3,IBUGA3,ISUBRO,IERROR)
41586      ELSEIF(N.EQ.100)THEN
41587        SI=-2.50759
41588      ELSEIF(N.GT.100 .AND. N.LT.125)THEN
41589        AY1=-2.50759
41590        AY2=-2.58634
41591        AX1=100.0
41592        AX2=125.0
41593        AX3=REAL(N)
41594        SI=LININ3(AX1,AY1,AX2,AY2,AX3,IBUGA3,ISUBRO,IERROR)
41595      ELSEIF(N.EQ.125)THEN
41596        SI=-2.58634
41597      ELSEIF(N.GT.125 .AND. N.LT.150)THEN
41598        AY1=-2.58634
41599        AY2=-2.64925
41600        AX1=125.0
41601        AX2=150.0
41602        AX3=REAL(N)
41603        SI=LININ3(AX1,AY1,AX2,AY2,AX3,IBUGA3,ISUBRO,IERROR)
41604      ELSEIF(N.EQ.150)THEN
41605        SI=-2.64925
41606      ELSEIF(N.GT.150 .AND. N.LT.175)THEN
41607        AY1=-2.64925
41608        AY2=-2.70148
41609        AX1=150.0
41610        AX2=175.0
41611        AX3=REAL(N)
41612        SI=LININ3(AX1,AY1,AX2,AY2,AX3,IBUGA3,ISUBRO,IERROR)
41613      ELSEIF(N.EQ.175)THEN
41614        SI=-2.70148
41615      ELSEIF(N.GT.175 .AND. N.LT.200)THEN
41616        AY1=-2.70148
41617        AY2=-2.74604
41618        AX1=175.0
41619        AX2=200.0
41620        AX3=REAL(N)
41621        SI=LININ3(AX1,AY1,AX2,AY2,AX3,IBUGA3,ISUBRO,IERROR)
41622      ELSEIF(N.EQ.200)THEN
41623        SI=-2.74604
41624      ELSEIF(N.GT.200 .AND. N.LT.225)THEN
41625        AY1=-2.74604
41626        AY2=-2.74845
41627        AX1=200.0
41628        AX2=225.0
41629        AX3=REAL(N)
41630        SI=LININ3(AX1,AY1,AX2,AY2,AX3,IBUGA3,ISUBRO,IERROR)
41631      ELSEIF(N.EQ.225)THEN
41632        SI=-2.78485
41633      ELSEIF(N.GT.225 .AND. N.LT.250)THEN
41634        AY1=-2.74845
41635        AY2=-2.81918
41636        AX1=225.0
41637        AX2=250.0
41638        AX3=REAL(N)
41639        SI=LININ3(AX1,AY1,AX2,AY2,AX3,IBUGA3,ISUBRO,IERROR)
41640      ELSEIF(N.EQ.250)THEN
41641        SI=-2.81918
41642      ELSEIF(N.GT.250 .AND. N.LT.280)THEN
41643        AY1=-2.81918
41644        AY2=-2.85572
41645        AX1=250.0
41646        AX2=280.0
41647        AX3=REAL(N)
41648        SI=LININ3(AX1,AY1,AX2,AY2,AX3,IBUGA3,ISUBRO,IERROR)
41649      ELSEIF(N.EQ.280)THEN
41650        SI=-2.85572
41651      ELSEIF(N.GT.280 .AND. N.LT.300)THEN
41652        AY1=-2.85572
41653        AY2=-2.87777
41654        AX1=280.0
41655        AX2=300.0
41656        AX3=REAL(N)
41657        SI=LININ3(AX1,AY1,AX2,AY2,AX3,IBUGA3,ISUBRO,IERROR)
41658      ELSEIF(N.EQ.300)THEN
41659        SI=-2.87777
41660      ELSEIF(N.GT.300 .AND. N.LT.315)THEN
41661        AY1=-2.87777
41662        AY2=-2.89327
41663        AX1=300.0
41664        AX2=315.0
41665        AX3=REAL(N)
41666        SI=LININ3(AX1,AY1,AX2,AY2,AX3,IBUGA3,ISUBRO,IERROR)
41667      ELSEIF(N.EQ.315)THEN
41668        SI=-2.89327
41669      ELSEIF(N.GT.315 .AND. N.LT.350)THEN
41670        AY1=-2.89327
41671        AY2=-2.92651
41672        AX1=315.0
41673        AX2=350.0
41674        AX3=REAL(N)
41675        SI=LININ3(AX1,AY1,AX2,AY2,AX3,IBUGA3,ISUBRO,IERROR)
41676      ELSEIF(N.EQ.350)THEN
41677        SI=-2.92651
41678      ELSEIF(N.GT.350 .AND. N.LT.375)THEN
41679        AY1=-2.92651
41680        AY2=-2.94810
41681        AX1=350.0
41682        AX2=375.0
41683        AX3=REAL(N)
41684        SI=LININ3(AX1,AY1,AX2,AY2,AX3,IBUGA3,ISUBRO,IERROR)
41685      ELSEIF(N.EQ.375)THEN
41686        SI=-2.94810
41687      ELSEIF(N.GT.375 .AND. N.LT.400)THEN
41688        AY1=-2.94810
41689        AY2=-2.96818
41690        AX1=375.0
41691        AX2=400.0
41692        AX3=REAL(N)
41693        SI=LININ3(AX1,AY1,AX2,AY2,AX3,IBUGA3,ISUBRO,IERROR)
41694      ELSEIF(N.EQ.400)THEN
41695        SI=-2.96818
41696      ELSEIF(N.GT.400)THEN
41697        AY1=-2.96818
41698        AY2=-3.09053
41699        AX1=400.0
41700        AX2=1000.0
41701        AX3=REAL(N)
41702        SI=LININ3(AX1,AY1,AX2,AY2,AX3,IBUGA3,ISUBRO,IERROR)
41703      ENDIF
41704C
41705      IERR=0
41706C
41707C     SET LOWER AND UPPER BOUNDS FOR DW AND CALCULATE FUNCTION AT
41708C     THESE VALUES
41709C
41710      DWL=1.00004D0
41711      FL=DWL*(DWL-1.0D0)-((DSQRT(DWL)-DEXP(DBLE(SI)*DSQRT(DLOG(DWL))))*
41712     1   AMOM(2)/(AMOM(1) - XMIN))**2
41713C
41714      DWU=1.0D0+(AMOM(2)/(AMOM(1)-XMIN))**2 - 0.1D-7
41715      FU=DWU*(DWU-1.0D0)-((DSQRT(DWU)-DEXP(DBLE(SI)*DSQRT(DLOG(DWU))))*
41716     1   AMOM(2)/(AMOM(1) - XMIN))**2
41717C
41718C     SET THE TOLERANCE LEVEL
41719C
41720      EPS=0.1D-10
41721      IF(FL*FU.GT.0.0)THEN
41722        IERR=1
41723        WRITE(ICOUT,999)
41724        CALL DPWRST('XXX','WRIT')
41725        WRITE(ICOUT,101)
41726        CALL DPWRST('XXX','WRIT')
41727        WRITE(ICOUT,222)
41728  222   FORMAT('      NO MODIFIED MOMENT ESTIMATOR FOUND.')
41729        CALL DPWRST('XXX','WRIT')
41730      ELSE
41731        DW=(DWL+DWU)/2.0D0
41732        F=FL
41733300     CONTINUE
41734        IF(DABS(DW-DWL).GT.EPS)THEN
41735          F=DW*(DW-1.0D0)-((DSQRT(DW)-DEXP(DBLE(SI)*DSQRT(DLOG(DW))))*
41736     1      AMOM(2)/(AMOM(1) - XMIN))**2
41737          IF(F*FL.LT.0.0D0)THEN
41738            DWU=DW
41739          ELSE
41740            DWL=DW
41741            FL=F
41742          ENDIF
41743          DW=(DWL+DWU)/2.0D0
41744          GOTO300
41745        ELSE
41746          VMMOM(1)=AMOM(1) - AMOM(2)/DSQRT(DW-1.0D0)
41747          BETA=AMOM(2)/DSQRT(DW*(DW-1.0D0))
41748          VMMOM(2)=DLOG(BETA)
41749          VMMOM(3)=DSQRT(DLOG(DW))
41750          VMMOM(4)=DW
41751          VMMOM(5)=BETA
41752          VMMOM(6)=(DW+2.0D0)*DSQRT(DW-1.0D0)
41753          VMMOM(7)=VMMOM(1) + BETA*DSQRT(DW)
41754          VMMOM(8)=BETA*DSQRT(DW*(DW-1.0D0))
41755        ENDIF
41756      ENDIF
41757C
41758      ALOCMM=VMMOM(1)
41759      SCALMM=VMMOM(5)
41760      SHAPMM=VMMOM(3)
41761      UHATMM=VMMOM(2)
41762C
41763 9000 CONTINUE
41764      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'IMO1')THEN
41765        WRITE(ICOUT,999)
41766        CALL DPWRST('XXX','WRIT')
41767        WRITE(ICOUT,9011)
41768 9011   FORMAT('**** AT THE END OF LGNMO1--')
41769        CALL DPWRST('XXX','WRIT')
41770        WRITE(ICOUT,9012)ALOCMO,SCALMO,SHAPMO,UHATMO
41771 9012   FORMAT('ALOCMO,SCALMO,SHAPMO,UHATMO = ',4G15.7)
41772        CALL DPWRST('XXX','WRIT')
41773        WRITE(ICOUT,9013)ALOCMM,SCALMM,SHAPMM,UHATMM
41774 9013   FORMAT('ALOCMM,SCALMM,SHAPMM,UHATMM = ',4G15.7)
41775        CALL DPWRST('XXX','WRIT')
41776      ENDIF
41777C
41778      RETURN
41779      END
41780      DOUBLE PRECISION FUNCTION LGNMO2(DW,AMOM)
41781C
41782C     PURPOSE--COMPUTE A FUNCTION NEEDED BY LGNMO1 (USED TO COMPUTE
41783C              MOMENT ESTIMATES FOR THE 3-PARAMETER WEIBULL
41784C              DISTRIBUTION).
41785C
41786C     REFERENCE--COHEN AND WHITTEN, "PARAMETER ESTIMATION IN RELIABILITY
41787C                AND LIFE SPAN MODELS", MARCEL DEKKER, INC., PP. 352-352.
41788C     WRITTEN BY--ALAN HECKERT
41789C                 STATISTICAL ENGINEERING DIVISION
41790C                 INFORMATION TECHNOLOGY LABORATORY
41791C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
41792C                 GAITHERSBURG, MD 20899-8980
41793C                 PHONE--301-975-2899
41794C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
41795C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
41796C     LANGUAGE--ANSI FORTRAN (1977)
41797C     VERSION NUMBER--2014/4
41798C     ORIGINAL VERSION--APRIL     2014
41799C
41800C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
41801C
41802      DOUBLE PRECISION AMOM(*)
41803      DOUBLE PRECISION DW
41804C
41805C-----COMMON----------------------------------------------------------
41806C
41807      INCLUDE 'DPCOP2.INC'
41808C
41809C-----START POINT-----------------------------------------------------
41810C
41811      LGNMO2=DW**3 + 3.0D0*DW**2 - 4.0D0 - DBLE(AMOM(3))**2
41812C
41813      RETURN
41814      END
41815      DOUBLE PRECISION FUNCTION LGNMO3(DW)
41816C
41817C     PURPOSE--COMPUTE A FUNCTION NEEDED BY LGNMO1 (USED TO COMPUTE
41818C              MOMENT ESTIMATES FOR THE 3-PARAMETER WEIBULL
41819C              DISTRIBUTION).
41820C
41821C     REFERENCE--COHEN AND WHITTEN, "PARAMETER ESTIMATION IN RELIABILITY
41822C                AND LIFE SPAN MODELS", MARCEL DEKKER, INC., PP. 352-352.
41823C     WRITTEN BY--ALAN HECKERT
41824C                 STATISTICAL ENGINEERING DIVISION
41825C                 INFORMATION TECHNOLOGY LABORATORY
41826C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
41827C                 GAITHERSBURG, MD 20899-8980
41828C                 PHONE--301-975-2899
41829C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
41830C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
41831C     LANGUAGE--ANSI FORTRAN (1977)
41832C     VERSION NUMBER--2014/4
41833C     ORIGINAL VERSION--APRIL     2014
41834C
41835C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
41836C
41837      DOUBLE PRECISION DW
41838C
41839C-----COMMON----------------------------------------------------------
41840C
41841      INCLUDE 'DPCOP2.INC'
41842C
41843C-----START POINT-----------------------------------------------------
41844C
41845      LGNMO3=3.0D0**2 + 6.0D0*DW
41846C
41847      RETURN
41848      END
41849      DOUBLE PRECISION FUNCTION LGNMO4(DW)
41850C
41851C     PURPOSE--COMPUTE A FUNCTION NEEDED BY LGNMO1 (USED TO COMPUTE
41852C              MOMENT ESTIMATES FOR THE 3-PARAMETER WEIBULL
41853C              DISTRIBUTION).
41854C
41855C     REFERENCE--COHEN AND WHITTEN, "PARAMETER ESTIMATION IN RELIABILITY
41856C                AND LIFE SPAN MODELS", MARCEL DEKKER, INC., PP. 352-352.
41857C     WRITTEN BY--ALAN HECKERT
41858C                 STATISTICAL ENGINEERING DIVISION
41859C                 INFORMATION TECHNOLOGY LABORATORY
41860C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
41861C                 GAITHERSBURG, MD 20899-8980
41862C                 PHONE--301-975-2899
41863C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
41864C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
41865C     LANGUAGE--ANSI FORTRAN (1977)
41866C     VERSION NUMBER--2014/4
41867C     ORIGINAL VERSION--APRIL     2014
41868C
41869C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
41870C
41871      DOUBLE PRECISION DW
41872C
41873C-----COMMON----------------------------------------------------------
41874C
41875      INCLUDE 'DPCOP2.INC'
41876C
41877C-----START POINT-----------------------------------------------------
41878C
41879      LGNMO4=0.2000D0*DW + 1.0D0
41880C
41881      RETURN
41882      END
41883      SUBROUTINE LGNPDF(X,SD,PDF)
41884CCCCC SUBROUTINE LGNPDF(X,PDF)
41885CCCCC APRIL 1995.  ADD SD PARAMETER (THIS IS SHAPE PARAMETER FOR
41886CCCCC LOGNORMAL).
41887C
41888C     PURPOSE--THIS SUBROUTINE COMPUTES THE PROBABILITY DENSITY
41889C              FUNCTION VALUE FOR THE LOGNORMAL
41890C              DISTRIBUTION.
41891C              THE LOGNORMAL DISTRIBUTION USED
41892C              HEREIN HAS MEAN = SQRT(E) = 1.64872127
41893C              AND STANDARD DEVIATION = SQRT(E*(E-1)) = 2.16119742.
41894C              THIS DISTRIBUTION IS DEFINED FOR ALL POSITIVE X
41895C              AND HAS THE PROBABILITY DENSITY FUNCTION
41896C              F(X) = (1/(X*SQRT(2*PI))) * EXP(-LOG(X)*LOG(X)/2)
41897C              THE LOGNORMAL DISTRIBUTION USED HEREIN
41898C              IS THE DISTRIBUTION OF THE VARIATE X = EXP(Z) WHERE
41899C              THE VARIATE Z IS NORMALLY DISTRIBUTED
41900C              WITH MEAN = 0 AND STANDARD DEVIATION = 1.
41901C     INPUT  ARGUMENTS--X      = THE SINGLE PRECISION VALUE
41902C                                AT WHICH THE PROBABILITY DENSITY
41903C                                FUNCTION IS TO BE EVALUATED.
41904C                                X SHOULD BE POSITIVE.
41905C     OUTPUT ARGUMENTS--CDF    = THE SINGLE PRECISION PROBABILITY
41906C                                DENSITY FUNCTION VALUE.
41907C     OUTPUT--THE SINGLE PRECISION PROBABILITY DENSITY
41908C             FUNCTION VALUE PDF FOR THE LOGNORMAL
41909C             DISTRIBUTION WITH MEAN = SQRT(E) = 1.64872127
41910C             AND STANDARD DEVIATION = SQRT(E*(E-1)) = 2.16119742.
41911C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
41912C     RESTRICTIONS--X SHOULD BE POSITIVE.
41913C     OTHER DATAPAC   SUBROUTINES NEEDED--NORPDF.
41914C     FORTRAN LIBRARY SUBROUTINES NEEDED--LOG.
41915C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
41916C     LANGUAGE--ANSI FORTRAN.
41917C     REFERENCES--JOHNSON AND KOTZ, CONTINUOUS UNIVARIATE
41918C                 DISTRIBUTIONS--1, 1970, PAGES 112-136.
41919C               --CRAMER, MATHEMATICAL METHODS OF STATISTICS,
41920C                 1946, PAGES 219-220.
41921C     WRITTEN BY--JAMES J. FILLIBEN
41922C                 STATISTICAL ENGINEERING LABORATORY (205.03)
41923C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
41924C                 GAITHERSBURG, MD 20899-8980
41925C                 PHONE:  301-975-2855
41926C     ORIGINAL VERSION--APRIL     1994.
41927C     UPDATED         --JANUARY   1995. X=0 CASE EXPLICITLY 0
41928C     UPDATED         --APRIL     1995. SUPPORT SHAPE PARAMETER
41929C
41930C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
41931C
41932C-----COMMON----------------------------------------------------------
41933C
41934      INCLUDE 'DPCOP2.INC'
41935C
41936C---------------------------------------------------------------------
41937C
41938C     CHECK THE INPUT ARGUMENTS FOR ERRORS
41939C
41940      PDF=0.0
41941      IF(X.LT.0.0)THEN
41942        WRITE(ICOUT,4)
41943        CALL DPWRST('XXX','BUG ')
41944        WRITE(ICOUT,46)X
41945        CALL DPWRST('XXX','BUG ')
41946        GOTO9000
41947      ENDIF
41948    4 FORMAT('***** ERROR--THE FIRST ARGUMENT TO LGNPDF IS NEGATIVE.')
41949   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',G15.7)
41950C
41951C-----START POINT-----------------------------------------------------
41952C
41953      IF(X.GT.0.0)THEN
41954        IF(SD.EQ.1.0)THEN
41955          ARG=LOG(X)
41956          CALL NORPDF(ARG,PDF)
41957          PDF=(1.0/X)*PDF
41958        ELSE
41959          ARG=LOG(X)/SD
41960          CALL NORPDF(ARG,ARG2)
41961          PDF=(1.0/(SD*X))*ARG2
41962        ENDIF
41963      ENDIF
41964C
41965 9000 CONTINUE
41966      RETURN
41967      END
41968      SUBROUTINE LGNPPF(P,SD,PPF)
41969CCCCC SUBROUTINE LGNPPF(P,PPF)
41970CCCCC APRIL 1995.  SUPPORT SCALE PARAMETER
41971C
41972C     PURPOSE--THIS SUBROUTINE COMPUTES THE PERCENT POINT
41973C              FUNCTION VALUE FOR THE LOGNORMAL
41974C              DISTRIBUTION.
41975C              THE LOGNORMAL DISTRIBUTION USED
41976C              HEREIN HAS MEAN = SQRT(E) = 1.64872127
41977C              AND STANDARD DEVIATION = SQRT(E*(E-1)) = 2.16119742.
41978C              THIS DISTRIBUTION IS DEFINED FOR ALL POSITIVE X
41979C              AND HAS THE PROBABILITY DENSITY FUNCTION
41980C              F(X) = (1/(X*SQRT(2*PI))) * EXP(-LOG(X)*LOG(X)/2)
41981C              THE LOGNORMAL DISTRIBUTION USED HEREIN
41982C              IS THE DISTRIBUTION OF THE VARIATE X = EXP(Z) WHERE
41983C              THE VARIATE Z IS NORMALLY DISTRIBUTED
41984C              WITH MEAN = 0 AND STANDARD DEVIATION = 1.
41985C              NOTE THAT THE PERCENT POINT FUNCTION OF A DISTRIBUTION
41986C              IS IDENTICALLY THE SAME AS THE INVERSE CUMULATIVE
41987C              DISTRIBUTION FUNCTION OF THE DISTRIBUTION.
41988C     INPUT  ARGUMENTS--P      = THE SINGLE PRECISION VALUE
41989C                                (BETWEEN 0.0 (EXCLUSIVELY)
41990C                                AND 1.0 (EXCLUSIVELY))
41991C                                AT WHICH THE PERCENT POINT
41992C                                FUNCTION IS TO BE EVALUATED.
41993C     OUTPUT ARGUMENTS--PPF    = THE SINGLE PRECISION PERCENT
41994C                                POINT FUNCTION VALUE.
41995C     OUTPUT--THE SINGLE PRECISION PERCENT POINT FUNCTION .
41996C             VALUE PPF FOR THE LOGNORMAL DISTRIBUTION
41997C             WITH MEAN = SQRT(E) = 1.64872127
41998C             AND STANDARD DEVIATION = SQRT(E*(E-1)) = 2.16119742.
41999C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
42000C     RESTRICTIONS--P SHOULD BE BETWEEN 0.0 (EXCLUSIVELY)
42001C                   AND 1.0 (EXCLUSIVELY).
42002C     OTHER DATAPAC   SUBROUTINES NEEDED--NORPPF.
42003C     FORTRAN LIBRARY SUBROUTINES NEEDED--EXP.
42004C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
42005C     LANGUAGE--ANSI FORTRAN.
42006C     REFERENCES--JOHNSON AND KOTZ, CONTINUOUS UNIVARIATE
42007C                 DISTRIBUTIONS--1, 1970, PAGES 112-136.
42008C               --CRAMER, MATHEMATICAL METHODS OF STATISTICS,
42009C                 1946, PAGES 219-220.
42010C     WRITTEN BY--JAMES J. FILLIBEN
42011C                 STATISTICAL ENGINEERING LABORATORY (205.03)
42012C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
42013C                 GAITHERSBURG, MD 20899-8980
42014C                 PHONE:  301-921-2315
42015C     ORIGINAL VERSION--APRIL     1994.
42016C     UPDATED         --JANUARY   1995.
42017C     UPDATED         --APRIL     1995. SUPPORT SCALE PARAMETER
42018C
42019C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
42020C
42021C-----COMMON----------------------------------------------------------
42022C
42023      INCLUDE 'DPCOP2.INC'
42024C
42025C---------------------------------------------------------------------
42026C
42027C     CHECK THE INPUT ARGUMENTS FOR ERRORS
42028C
42029      PPF=0.0
42030      IF(P.LT.0.0.OR.P.GE.1.0)THEN
42031        WRITE(ICOUT,1)
42032        CALL DPWRST('XXX','BUG ')
42033        WRITE(ICOUT,46)P
42034        CALL DPWRST('XXX','BUG ')
42035        GOTO9000
42036      ENDIF
42037    1 FORMAT('***** ERROR--THE FIRST ARGUMENT TO LGNPPF IS OUTSIDE ',
42038     1       'THE ALLOWABLE (0,1) INTERVAL.')
42039   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',G15.7)
42040C
42041C-----START POINT-----------------------------------------------------
42042C
42043      IF(P.GT.0.0)THEN
42044        IF(SD.EQ.1.0)THEN
42045          CALL NORPPF(P,PPF)
42046          PPF=EXP(PPF)
42047        ELSE
42048          CALL NORPPF(P,PPF)
42049          PPF=EXP(PPF*SD)
42050        ENDIF
42051      ENDIF
42052C
42053 9000 CONTINUE
42054      RETURN
42055      END
42056      SUBROUTINE LGNRAN(N,SIGMA,ISEED,X)
42057C
42058C     PURPOSE--THIS SUBROUTINE GENERATES A RANDOM SAMPLE OF SIZE N
42059C              FROM THE LOGNORMAL DISTRIBUTION.
42060C              THE PROTOTYPE LOGNORMAL DISTRIBUTION USED
42061C              HEREIN HAS MEAN = SQRT(E) = 1.64872127
42062C              AND STANDARD DEVIATION = SQRT(E*(E-1)) = 2.16119742.
42063C              THIS DISTRIBUTION IS DEFINED FOR ALL POSITIVE X
42064C              AND HAS THE PROBABILITY DENSITY FUNCTION
42065C              F(X) = (1/(X*SQRT(2*PI))) * EXP(-LOG(X)*LOG(X)/2)
42066C              THE PROTOTYPE LOGNORMAL DISTRIBUTION USED HEREIN
42067C              IS THE DISTRIBUTION OF THE VARIATE X = EXP(Z) WHERE
42068C              THE VARIATE Z IS NORMALLY DISTRIBUTED
42069C              WITH MEAN = 0 AND STANDARD DEVIATION = 1.
42070C     INPUT  ARGUMENTS--N      = THE DESIRED INTEGER NUMBER
42071C                                OF RANDOM NUMBERS TO BE
42072C                                GENERATED.
42073C     OUTPUT ARGUMENTS--X      = A SINGLE PRECISION VECTOR
42074C                                (OF DIMENSION AT LEAST N)
42075C                                INTO WHICH THE GENERATED
42076C                                RANDOM SAMPLE WILL BE PLACED.
42077C     OUTPUT--A RANDOM SAMPLE OF SIZE N
42078C             FROM THE LOGNORMAL DISTRIBUTION
42079C             WITH MEAN = SQRT(E) = 1.64872127
42080C             AND STANDARD DEVIATION = SQRT(E*(E-1)) = 2.16119742.
42081C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
42082C     RESTRICTIONS--THERE IS NO RESTRICTION ON THE MAXIMUM VALUE
42083C                   OF N FOR THIS SUBROUTINE.
42084C     OTHER DATAPAC   SUBROUTINES NEEDED--UNIRAN.
42085C     FORTRAN LIBRARY SUBROUTINES NEEDED--LOG, SQRT, SIN, COS, EXP.
42086C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
42087C     LANGUAGE--ANSI FORTRAN (1977)
42088C     REFERENCES--TOCHER, THE ART OF SIMULATION,
42089C                 1963, PAGES 14-15.
42090C               --HAMMERSLEY AND HANDSCOMB, MONTE CARLO METHODS,
42091C                 1964, PAGE 36.
42092C               --CRAMER, MATHEMATICAL METHODS OF STATISTICS,
42093C                 1946, PAGES 219-220.
42094C               --JOHNSON AND KOTZ, CONTINUOUS UNIVARIATE
42095C                 DISTRIBUTIONS--1, 1970, PAGES 112-136.
42096C               --HASTINGS AND PEACOCK, STATISTICAL
42097C                 DISTRIBUTIONS--A HANDBOOK FOR
42098C                 STUDENTS AND PRACTITIONERS, 1975,
42099C                 PAGE 88.
42100C     WRITTEN BY--JAMES J. FILLIBEN
42101C                 STATISTICAL ENGINEERING DIVISION
42102C                 INFORMATION TECHNOLOGY LABORATORY
42103C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
42104C                 GAITHERSBURG, MD 20899-8980
42105C                 PHONE--301-975-2855
42106C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
42107C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
42108C     LANGUAGE--ANSI FORTRAN (1966)
42109C               EXCEPTION--HOLLERITH STRINGS IN FORMAT STATEMENTS
42110C                          DENOTED BY QUOTES RATHER THAN NH.
42111C     VERSION NUMBER--82.6
42112C     ORIGINAL VERSION--NOVEMBER  1975.
42113C     UPDATED         --JULY      1976.
42114C     UPDATED         --DECEMBER  1981.
42115C     UPDATED         --MAY       1982.
42116C     UPDATED         --APRIL     2003. ADD SHAPE PARAMETER SIGMA
42117C
42118C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
42119C
42120C---------------------------------------------------------------------
42121C
42122      DIMENSION X(*)
42123      DIMENSION Y(2)
42124C
42125C-----COMMON----------------------------------------------------------
42126C
42127      INCLUDE 'DPCOP2.INC'
42128C
42129C-----DATA STATEMENTS-------------------------------------------------
42130C
42131      DATA PI/3.14159265359/
42132C
42133C-----START POINT-----------------------------------------------------
42134C
42135C     CHECK THE INPUT ARGUMENTS FOR ERRORS
42136C
42137      IF(N.LT.1)THEN
42138        WRITE(ICOUT, 5)
42139        CALL DPWRST('XXX','BUG ')
42140        WRITE(ICOUT,47)N
42141        CALL DPWRST('XXX','BUG ')
42142        GOTO9000
42143      ENDIF
42144    5 FORMAT('***** ERROR--THE FIRST ARGUMENT TO LGNRAN IS ',
42145     1       'NON-POSITIVE.')
42146   47 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',I8)
42147C
42148C     GENERATE N UNIFORM (0,1) RANDOM NUMBERS;
42149C     THEN GENERATE 2 ADDITIONAL UNIFORM (0,1) RANDOM NUMBERS
42150C     (TO BE USED BELOW IN FORMING THE N-TH NORMAL
42151C     RANDOM NUMBER WHEN THE DESIRED SAMPLE SIZE N
42152C     HAPPENS TO BE ODD).
42153C
42154      CALL UNIRAN(N,ISEED,X)
42155      CALL UNIRAN(2,ISEED,Y)
42156C
42157C     GENERATE N NORMAL RANDOM NUMBERS
42158C     USING THE BOX-MULLER METHOD.
42159C
42160      DO200I=1,N,2
42161        IP1=I+1
42162        U1=X(I)
42163        IF(I.EQ.N)THEN
42164          U2=Y(2)
42165        ELSE
42166          U2=X(IP1)
42167        ENDIF
42168        ARG1=-2.0*LOG(U1)
42169        ARG2=2.0*PI*U2
42170        SQRT1=SQRT(ARG1)
42171        Z1=SQRT1*COS(ARG2)
42172        Z2=SQRT1*SIN(ARG2)
42173        X(I)=Z1
42174        IF(I.EQ.N)GOTO200
42175        X(IP1)=Z2
42176  200 CONTINUE
42177C
42178C     GENERATE N LOGNORMAL RANDOM NUMBERS USING THE DEFINITION THAT
42179C     A LOGNORMAL VARIATE EQUALS AN EXPONETIATED NORMAL VARIATE.
42180C
42181      DO400I=1,N
42182        X(I)=EXP(SIGMA*X(I))
42183  400 CONTINUE
42184C
42185 9000 CONTINUE
42186      RETURN
42187      END
42188      SUBROUTINE LIBFD1(IHLF1,IHLF2,I1,I2,ITYPE,
42189     1IFUNZ1,IFUNZ2,IDERZ1,IDERZ2)
42190C
42191C     PURPOSE--COMPUTE DERIVATIVES FOR
42192C              SQUARE ROOT, EXPONENTIAL, AND LOGS.
42193C
42194C     ORIGINAL VERSION--JANUARY   1979.
42195C     UPDATED         --FEBRUARY  1979.
42196C     UPDATED         --JANUARY   1981.
42197C
42198C---------------------------------------------------------------------
42199C
42200      CHARACTER*4 IHLF1
42201      CHARACTER*4 IHLF2
42202      CHARACTER*4 ITYPE
42203      CHARACTER*4 IFUNZ1
42204      CHARACTER*4 IFUNZ2
42205      CHARACTER*4 IDERZ1
42206      CHARACTER*4 IDERZ2
42207C
42208      DIMENSION IFUNZ1(*)
42209      DIMENSION IFUNZ2(*)
42210      DIMENSION IDERZ1(*)
42211      DIMENSION IDERZ2(*)
42212C
42213C-----COMMON VARIABLES (GENERAL)--------------------------------------
42214C
42215      INCLUDE 'DPCOP2.INC'
42216C
42217C-----START POINT-----------------------------------------------------
42218C
42219      I1P1=I1+1
42220      I1P2=I1+2
42221C
42222      IF(IHLF1.EQ.'SQRT'.AND.IHLF2.EQ.'    ')GOTO510
42223      IF(IHLF1.EQ.'EXP '.AND.IHLF2.EQ.'    ')GOTO520
42224      IF(IHLF1.EQ.'ALOG'.AND.IHLF2.EQ.'    ')GOTO530
42225      IF(IHLF1.EQ.'ALOG'.AND.IHLF2.EQ.'E   ')GOTO530
42226      IF(IHLF1.EQ.'ALOG'.AND.IHLF2.EQ.'10  ')GOTO540
42227      IF(IHLF1.EQ.'LOG '.AND.IHLF2.EQ.'    ')GOTO530
42228      IF(IHLF1.EQ.'LOGE'.AND.IHLF2.EQ.'    ')GOTO530
42229      IF(IHLF1.EQ.'LOG1'.AND.IHLF2.EQ.'0   ')GOTO540
42230C
42231C     TREAT THE SQUARE ROOT CASE
42232C
42233  510 CONTINUE
42234      I2=I2+1
42235      IDERZ1(I2)='0   '
42236      IDERZ2(I2)='    '
42237      I2=I2+1
42238      IDERZ1(I2)='.   '
42239      IDERZ2(I2)='    '
42240      I2=I2+1
42241      IDERZ1(I2)='5   '
42242      IDERZ2(I2)='    '
42243      I2=I2+1
42244      IDERZ1(I2)='*   '
42245      IDERZ2(I2)='    '
42246      I2=I2+1
42247      IDERZ1(I2)=IFUNZ1(I1P1)
42248      IDERZ2(I2)=IFUNZ2(I1P1)
42249      IF(ITYPE.EQ.'EXP ')I2=I2+1
42250      IF(ITYPE.EQ.'EXP ')IDERZ1(I2)=IFUNZ1(I1P2)
42251      IF(ITYPE.EQ.'EXP ')IDERZ2(I2)=IFUNZ2(I1P2)
42252      I2=I2+1
42253      IDERZ1(I2)='**  '
42254      IDERZ2(I2)='    '
42255      I2=I2+1
42256      IDERZ1(I2)='(   '
42257      IDERZ2(I2)='    '
42258      I2=I2+1
42259      IDERZ1(I2)='-   '
42260      IDERZ2(I2)='    '
42261      I2=I2+1
42262      IDERZ1(I2)='0   '
42263      IDERZ2(I2)='    '
42264      I2=I2+1
42265      IDERZ1(I2)='.   '
42266      IDERZ2(I2)='    '
42267      I2=I2+1
42268      IDERZ1(I2)='5   '
42269      IDERZ2(I2)='    '
42270      I2=I2+1
42271      IDERZ1(I2)=')   '
42272      IDERZ2(I2)='    '
42273      IF(ITYPE.EQ.'EXP ')GOTO980
42274      GOTO985
42275C
42276C     TREAT THE EXPONENTIAL CASE
42277C
42278  520 CONTINUE
42279      I2=I2+1
42280      IDERZ1(I2)='EXP '
42281      IDERZ2(I2)='    '
42282      I2=I2+1
42283      IDERZ1(I2)='(   '
42284      IDERZ2(I2)='    '
42285      I2=I2+1
42286      IDERZ1(I2)=IFUNZ1(I1P1)
42287      IDERZ2(I2)=IFUNZ2(I1P1)
42288      IF(ITYPE.EQ.'EXP ')I2=I2+1
42289      IF(ITYPE.EQ.'EXP ')IDERZ1(I2)=IFUNZ1(I1P2)
42290      IF(ITYPE.EQ.'EXP ')IDERZ2(I2)=IFUNZ2(I1P2)
42291      I2=I2+1
42292      IDERZ1(I2)=')   '
42293      IDERZ2(I2)='    '
42294      IF(ITYPE.EQ.'EXP ')GOTO980
42295      GOTO985
42296C
42297C     TREAT THE NATURAL LOGARITHM CASE
42298C
42299  530 CONTINUE
42300      I2=I2+1
42301      IDERZ1(I2)='(   '
42302      IDERZ2(I2)='    '
42303      I2=I2+1
42304      IDERZ1(I2)='1   '
42305      IDERZ2(I2)='    '
42306      I2=I2+1
42307      IDERZ1(I2)='/   '
42308      IDERZ2(I2)='    '
42309      I2=I2+1
42310      IDERZ1(I2)='(   '
42311      IDERZ2(I2)='    '
42312      I2=I2+1
42313      IDERZ1(I2)=IFUNZ1(I1P1)
42314      IDERZ2(I2)=IFUNZ2(I1P1)
42315      IF(ITYPE.EQ.'EXP ')I2=I2+1
42316      IF(ITYPE.EQ.'EXP ')IDERZ1(I2)=IFUNZ1(I1P2)
42317      IF(ITYPE.EQ.'EXP ')IDERZ2(I2)=IFUNZ2(I1P2)
42318      I2=I2+1
42319      IDERZ1(I2)=')   '
42320      IDERZ2(I2)='    '
42321      I2=I2+1
42322      IDERZ1(I2)=')   '
42323      IDERZ2(I2)='    '
42324      IF(ITYPE.EQ.'EXP ')GOTO980
42325      GOTO985
42326C
42327C     TREAT THE LOGARITHM (TO THE BASE 10) CASE
42328C
42329  540 CONTINUE
42330      I2=I2+1
42331      IDERZ1(I2)='(   '
42332      IDERZ2(I2)='    '
42333      I2=I2+1
42334      IDERZ1(I2)='1   '
42335      IDERZ2(I2)='    '
42336      I2=I2+1
42337      IDERZ1(I2)='/   '
42338      IDERZ2(I2)='    '
42339      I2=I2+1
42340      IDERZ1(I2)='(   '
42341      IDERZ2(I2)='    '
42342      I2=I2+1
42343      IDERZ1(I2)=IFUNZ1(I1P1)
42344      IDERZ2(I2)=IFUNZ2(I1P1)
42345      IF(ITYPE.EQ.'EXP ')I2=I2+1
42346      IF(ITYPE.EQ.'EXP ')IDERZ1(I2)=IFUNZ1(I1P2)
42347      IF(ITYPE.EQ.'EXP ')IDERZ2(I2)=IFUNZ2(I1P2)
42348      I2=I2+1
42349      IDERZ1(I2)=')   '
42350      IDERZ2(I2)='    '
42351      I2=I2+1
42352      IDERZ1(I2)=')   '
42353      IDERZ2(I2)='    '
42354      I2=I2+1
42355      IDERZ1(I2)='*   '
42356      IDERZ2(I2)='    '
42357      I2=I2+1
42358      IDERZ1(I2)='0   '
42359      IDERZ2(I2)='    '
42360      I2=I2+1
42361      IDERZ1(I2)='.   '
42362      IDERZ2(I2)='    '
42363      I2=I2+1
42364      IDERZ1(I2)='4   '
42365      IDERZ2(I2)='    '
42366      I2=I2+1
42367      IDERZ1(I2)='3   '
42368      IDERZ2(I2)='    '
42369      I2=I2+1
42370      IDERZ1(I2)='4   '
42371      IDERZ2(I2)='    '
42372      I2=I2+1
42373      IDERZ1(I2)='2   '
42374      IDERZ2(I2)='    '
42375      I2=I2+1
42376      IDERZ1(I2)='9   '
42377      IDERZ2(I2)='    '
42378      I2=I2+1
42379      IDERZ1(I2)='4   '
42380      IDERZ2(I2)='    '
42381      I2=I2+1
42382      IDERZ1(I2)='4   '
42383      IDERZ2(I2)='    '
42384      I2=I2+1
42385      IDERZ1(I2)='8   '
42386      IDERZ2(I2)='    '
42387      I2=I2+1
42388      IDERZ1(I2)='1   '
42389      IDERZ2(I2)='    '
42390      I2=I2+1
42391      IDERZ1(I2)='9   '
42392      IDERZ2(I2)='    '
42393      IF(ITYPE.EQ.'EXP ')GOTO980
42394      GOTO985
42395C
42396  980 CONTINUE
42397  985 CONTINUE
42398C
42399      RETURN
42400      END
42401      SUBROUTINE LIBPTR(ICTEXT,NCTEXT,ICTEX2,NCTEX2,ICASE,
42402     1                  ISUBRO,IBUGG3)
42403C
42404C     PURPOSE--FOR LIBPLOT OUTPUT, TRANSLATE BETWEEN DATAPLOT'S
42405C              SPECIAL CHARACTERS AND LIBPLOT SPECIAL CHARACTERS.
42406C              NOTE THAT THIS MAPPING MAY NOT BE 1-TO-1.  SPECIFICALLY,
42407C              WE ARE LOOKING THE TRANSLATE THE DATAPLOT SPECIAL
42408C              SYMBOLS.  LIBPLOT MAY SUPPORT ADDITIONAL SYMBOLS
42409C              BEYOND WHAT DATAPLOT SUPPORTS.  THE USER CAN ENTER
42410C              THESE ADDITIONAL LIBPLOT SPECIAL SYMBOLS, BUT THEY
42411C              THEY WILL BE PLOTTED "AS IS" ON NON-LIBPLOT DEVICES.
42412C
42413C              NOTE THAT THIS ROUTINE IS SIMPLER THAN THE POSTSCRIPT
42414C              ROUTINE IN THAT WE DO NOT NEED TO SPLIT THE STRING
42415C              INTO MULTIPLE STRINGS.  RATHER WE ARE JUST DOING A
42416C              STRAIGHT TRANSLATION FROM ONE SYMBOL CODE TO THE OTHER.
42417C
42418C     WRITTEN BY--JAMES J. FILLIBEN
42419C                 STATISTICAL ENGINEERING DIVISION
42420C                 INFORMATION TECHNOLOGY LABORATORY
42421C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
42422C                 GAITHERSBURG, MD 20899-8980
42423C                 PHONE--301-975-2899
42424C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
42425C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
42426C     LANGUAGE--ANSI FORTRAN (1977)
42427C     VERSION NUMBER--2009.5
42428C     ORIGINAL VERSION--MAY       2009.
42429C
42430C-----NON-COMMON VARIABLES (GRAPHICS)-------------------------------------
42431C
42432      CHARACTER*4 ICASE
42433      CHARACTER*4 ISUBRO
42434      CHARACTER*4 IBUGG3
42435C
42436      CHARACTER*4 ICTEXT(*)
42437      CHARACTER*4 ICTEX2(*)
42438C
42439      CHARACTER*1 IC1
42440      CHARACTER*1 IC2
42441      CHARACTER*1 IC3
42442      CHARACTER*1 IC4
42443      CHARACTER*1 IC5
42444      CHARACTER*1 IC6
42445      CHARACTER*1 IBASLC
42446C
42447C-----COMMON----------------------------------------------------------
42448C
42449C-----COMMON VARIABLES (GENERAL)--------------------------------------
42450C
42451      INCLUDE 'DPCOP2.INC'
42452C
42453C-----START POINT-----------------------------------------------------
42454C
42455      IF(IBUGG3.EQ.'ON'.OR.ISUBRO.EQ.'STTR')THEN
42456        WRITE(ICOUT,999)
42457  999   FORMAT(1X)
42458        CALL DPWRST('XXX','BUG ')
42459        WRITE(ICOUT,51)
42460   51   FORMAT('***** AT THE BEGINNING OF LIBPTR--')
42461        CALL DPWRST('XXX','BUG ')
42462        WRITE(ICOUT,55)NCTEXT,MAXSYM
42463   55   FORMAT('NCTEXT,MAXSYM = ',2I8)
42464        CALL DPWRST('XXX','BUG ')
42465        WRITE(ICOUT,56)(ICTEXT(I),I=1,MIN(NCTEXT,25))
42466   56   FORMAT('(ICTEXT(I),I=1,NCTEXT) = ',25A4)
42467        CALL DPWRST('XXX','BUG ')
42468        WRITE(ICOUT,61)ICASE
42469   61   FORMAT('ICASE = ',A4)
42470        CALL DPWRST('XXX','BUG ')
42471        WRITE(ICOUT,79)IBUGG3,ISUBRO
42472   79   FORMAT('IBUGG3,ISUBRO = ',A4,2X,A4)
42473        CALL DPWRST('XXX','BUG ')
42474      ENDIF
42475C
42476      CALL DPCONA(92,IBASLC)
42477      NCTEX2=0
42478      NSKIP=0
42479C
42480      DO1000I=1,NCTEXT
42481C
42482        IF(NSKIP.GT.0)THEN
42483          NSKIP=NSKIP-1
42484          GOTO1000
42485        ENDIF
42486C
42487        IC5=' '
42488        IC6=' '
42489        IF(I.LE.NCTEXT)IC1=ICTEXT(I)(1:1)
42490        IF(I+1.LE.NCTEXT)IC2=ICTEXT(I+1)(1:1)
42491        IF(I+2.LE.NCTEXT)IC3=ICTEXT(I+2)(1:1)
42492        IF(I+3.LE.NCTEXT)IC4=ICTEXT(I+3)(1:1)
42493        IF(I+4.LE.NCTEXT)IC5=ICTEXT(I+4)(1:1)
42494        IF(I+5.LE.NCTEXT)IC6=ICTEXT(I+5)(1:1)
42495        CALL DPCOAN(IC1,IJUNK)
42496        IF(IJUNK.GE.97 .AND. IJUNK.LE.122)CALL DPCONA(IJUNK-32,IC1)
42497        CALL DPCOAN(IC2,IJUNK)
42498        IF(IJUNK.GE.97 .AND. IJUNK.LE.122)CALL DPCONA(IJUNK-32,IC2)
42499        CALL DPCOAN(IC3,IJUNK)
42500        IF(IJUNK.GE.97 .AND. IJUNK.LE.122)CALL DPCONA(IJUNK-32,IC3)
42501        CALL DPCOAN(IC4,IJUNK)
42502        IF(IJUNK.GE.97 .AND. IJUNK.LE.122)CALL DPCONA(IJUNK-32,IC4)
42503        CALL DPCOAN(IC5,IJUNK)
42504        IF(IJUNK.GE.97 .AND. IJUNK.LE.122)CALL DPCONA(IJUNK-32,IC5)
42505        CALL DPCOAN(IC6,IJUNK)
42506        IF(IJUNK.GE.97 .AND. IJUNK.LE.122)CALL DPCONA(IJUNK-32,IC6)
42507C
42508C       STEP 1: CHECK FOR SUBSCRIPT
42509C
42510        IF(IC1.EQ.'S' .AND. IC2.EQ.'U' .AND. IC3.EQ.'B' .AND.
42511     1     IC4.EQ.'(' .AND. IC5.EQ.')'
42512     1    )THEN
42513C
42514          NCTEX2=NCTEX2+1
42515          ICTEX2(NCTEX2)=IBASLC
42516          NCTEX2=NCTEX2+1
42517          ICTEX2(NCTEX2)='s'
42518          NCTEX2=NCTEX2+1
42519          ICTEX2(NCTEX2)='b'
42520          ILASTT=I+4
42521          NSKIP=4
42522          IFONTT=1
42523          ASIZET=0.0
42524          OFFT=0.0
42525          GOTO1000
42526C
42527C
42528C       STEP 2: CHECK FOR SUPERSCRIPT
42529C
42530        ELSEIF(IC1.EQ.'S' .AND. IC2.EQ.'U' .AND. IC3.EQ.'P' .AND.
42531     1     IC4.EQ.'(' .AND. IC5.EQ.')'
42532     1    )THEN
42533          NCTEX2=NCTEX2+1
42534          ICTEX2(NCTEX2)=IBASLC
42535          NCTEX2=NCTEX2+1
42536          ICTEX2(NCTEX2)='s'
42537          NCTEX2=NCTEX2+1
42538          ICTEX2(NCTEX2)='p'
42539          ILASTT=I+4
42540          NSKIP=4
42541          GOTO1000
42542C
42543C       STEP 3: CHECK FOR UNSUBSCRIPT
42544C
42545        ELSEIF(IC1.EQ.'U' .AND. IC2.EQ.'N' .AND. IC3.EQ.'S' .AND.
42546     1     IC4.EQ.'B' .AND. IC5.EQ.'(' .AND. IC6.EQ.')'
42547     1    )THEN
42548          NCTEX2=NCTEX2+1
42549          ICTEX2(NCTEX2)=IBASLC
42550          NCTEX2=NCTEX2+1
42551          ICTEX2(NCTEX2)='e'
42552          NCTEX2=NCTEX2+1
42553          ICTEX2(NCTEX2)='b'
42554          ILASTT=I+5
42555          NSKIP=5
42556          GOTO1000
42557C
42558C       STEP 4: CHECK FOR UNSUPERSCRIPT
42559C
42560        ELSEIF(IC1.EQ.'U' .AND. IC2.EQ.'N' .AND. IC3.EQ.'S' .AND.
42561     1     IC4.EQ.'P' .AND. IC5.EQ.'(' .AND. IC6.EQ.')'
42562     1    )THEN
42563          NCTEX2=NCTEX2+1
42564          ICTEX2(NCTEX2)=IBASLC
42565          NCTEX2=NCTEX2+1
42566          ICTEX2(NCTEX2)='e'
42567          NCTEX2=NCTEX2+1
42568          ICTEX2(NCTEX2)='p'
42569          ILASTT=I+5
42570          NSKIP=5
42571          GOTO1000
42572C
42573C       STEP 5: CHECK FOR GREEK CHARACTERS.  IN THIS CASE, WE NEED
42574C               TO CONVERT TO APPROPRIATE CHARACTER AND SET THE
42575C               FONT TO THE SYMBOL FONT.  ALSO, WE CREATE A NEW
42576C               SUBSTRING THAT CONTAINS JUST A SINGLE CHARACTER
42577C               (THE REMAINING CHARACTERS ARE SET TO BLANKS).
42578C
42579        ELSEIF(IC1.EQ.'A' .AND. IC2.EQ.'L' .AND. IC3.EQ.'P' .AND.
42580     1         IC4.EQ.'H' .AND. IC5.EQ.'(' .AND. IC6.EQ.')'
42581     1    )THEN
42582C
42583          IF(ICASE.EQ.'UPPE')THEN
42584            NCTEX2=NCTEX2+1
42585            ICTEX2(NCTEX2)=IBASLC
42586            NCTEX2=NCTEX2+1
42587            ICTEX2(NCTEX2)='*'
42588            NCTEX2=NCTEX2+1
42589            ICTEX2(NCTEX2)='A'
42590          ELSEIF(ICASE.EQ.'LOWE')THEN
42591            NCTEX2=NCTEX2+1
42592            ICTEX2(NCTEX2)=IBASLC
42593            NCTEX2=NCTEX2+1
42594            ICTEX2(NCTEX2)='*'
42595            NCTEX2=NCTEX2+1
42596            ICTEX2(NCTEX2)='a'
42597          ELSE
42598            NCTEX2=NCTEX2+1
42599            ICTEX2(NCTEX2)=IBASLC
42600            NCTEX2=NCTEX2+1
42601            ICTEX2(NCTEX2)='*'
42602            NCTEX2=NCTEX2+1
42603            IF(ICTEXT(I).EQ.'A')ICTEX2(NCTEX2)='A'
42604            IF(ICTEXT(I).EQ.'a')ICTEX2(NCTEX2)='a'
42605          ENDIF
42606C
42607          ILASTT=I+5
42608          NSKIP=5
42609          GOTO1000
42610C
42611        ELSEIF(IC1.EQ.'B' .AND. IC2.EQ.'E' .AND. IC3.EQ.'T' .AND.
42612     1         IC4.EQ.'A' .AND. IC5.EQ.'(' .AND. IC6.EQ.')'
42613     1    )THEN
42614C
42615          IF(ICASE.EQ.'UPPE')THEN
42616            NCTEX2=NCTEX2+1
42617            ICTEX2(NCTEX2)=IBASLC
42618            NCTEX2=NCTEX2+1
42619            ICTEX2(NCTEX2)='*'
42620            NCTEX2=NCTEX2+1
42621            ICTEX2(NCTEX2)='B'
42622          ELSEIF(ICASE.EQ.'LOWE')THEN
42623            NCTEX2=NCTEX2+1
42624            ICTEX2(NCTEX2)=IBASLC
42625            NCTEX2=NCTEX2+1
42626            ICTEX2(NCTEX2)='*'
42627            NCTEX2=NCTEX2+1
42628            ICTEX2(NCTEX2)='b'
42629          ELSE
42630            NCTEX2=NCTEX2+1
42631            ICTEX2(NCTEX2)=IBASLC
42632            NCTEX2=NCTEX2+1
42633            ICTEX2(NCTEX2)='*'
42634            NCTEX2=NCTEX2+1
42635            IF(ICTEXT(I).EQ.'B')ICTEX2(NCTEX2)='B'
42636            IF(ICTEXT(I).EQ.'b')ICTEX2(NCTEX2)='b'
42637          ENDIF
42638C
42639          ILASTT=I+5
42640          NSKIP=5
42641          GOTO1000
42642C
42643        ELSEIF(IC1.EQ.'C' .AND. IC2.EQ.'H' .AND. IC3.EQ.'I' .AND.
42644     1         IC4.EQ.'(' .AND. IC5.EQ.')'
42645     1    )THEN
42646C
42647          IF(ICASE.EQ.'UPPE')THEN
42648            NCTEX2=NCTEX2+1
42649            ICTEX2(NCTEX2)=IBASLC
42650            NCTEX2=NCTEX2+1
42651            ICTEX2(NCTEX2)='*'
42652            NCTEX2=NCTEX2+1
42653            ICTEX2(NCTEX2)='C'
42654          ELSEIF(ICASE.EQ.'LOWE')THEN
42655            NCTEX2=NCTEX2+1
42656            ICTEX2(NCTEX2)=IBASLC
42657            NCTEX2=NCTEX2+1
42658            ICTEX2(NCTEX2)='*'
42659            NCTEX2=NCTEX2+1
42660            ICTEX2(NCTEX2)='c'
42661          ELSE
42662            NCTEX2=NCTEX2+1
42663            ICTEX2(NCTEX2)=IBASLC
42664            NCTEX2=NCTEX2+1
42665            ICTEX2(NCTEX2)='*'
42666            NCTEX2=NCTEX2+1
42667            IF(ICTEXT(I).EQ.'C')ICTEX2(NCTEX2)='C'
42668            IF(ICTEXT(I).EQ.'c')ICTEX2(NCTEX2)='c'
42669          ENDIF
42670C
42671          ILASTT=I+4
42672          NSKIP=4
42673          GOTO1000
42674C
42675        ELSEIF(IC1.EQ.'D' .AND. IC2.EQ.'E' .AND. IC3.EQ.'L' .AND.
42676     1         IC4.EQ.'T' .AND. IC5.EQ.'(' .AND. IC6.EQ.')'
42677     1    )THEN
42678C
42679          IF(ICASE.EQ.'UPPE')THEN
42680            NCTEX2=NCTEX2+1
42681            ICTEX2(NCTEX2)=IBASLC
42682            NCTEX2=NCTEX2+1
42683            ICTEX2(NCTEX2)='*'
42684            NCTEX2=NCTEX2+1
42685            ICTEX2(NCTEX2)='D'
42686          ELSEIF(ICASE.EQ.'LOWE')THEN
42687            NCTEX2=NCTEX2+1
42688            ICTEX2(NCTEX2)=IBASLC
42689            NCTEX2=NCTEX2+1
42690            ICTEX2(NCTEX2)='*'
42691            NCTEX2=NCTEX2+1
42692            ICTEX2(NCTEX2)='d'
42693          ELSE
42694            NCTEX2=NCTEX2+1
42695            ICTEX2(NCTEX2)=IBASLC
42696            NCTEX2=NCTEX2+1
42697            ICTEX2(NCTEX2)='*'
42698            NCTEX2=NCTEX2+1
42699            IF(ICTEXT(I).EQ.'D')ICTEX2(NCTEX2)='D'
42700            IF(ICTEXT(I).EQ.'d')ICTEX2(NCTEX2)='d'
42701          ENDIF
42702C
42703          ILASTT=I+5
42704          NSKIP=5
42705          GOTO1000
42706C
42707        ELSEIF(IC1.EQ.'E' .AND. IC2.EQ.'P' .AND. IC3.EQ.'S' .AND.
42708     1         IC4.EQ.'I' .AND. IC5.EQ.'(' .AND. IC6.EQ.')'
42709     1    )THEN
42710C
42711          IF(ICASE.EQ.'UPPE')THEN
42712            NCTEX2=NCTEX2+1
42713            ICTEX2(NCTEX2)=IBASLC
42714            NCTEX2=NCTEX2+1
42715            ICTEX2(NCTEX2)='*'
42716            NCTEX2=NCTEX2+1
42717            ICTEX2(NCTEX2)='E'
42718          ELSEIF(ICASE.EQ.'LOWE')THEN
42719            NCTEX2=NCTEX2+1
42720            ICTEX2(NCTEX2)=IBASLC
42721            NCTEX2=NCTEX2+1
42722            ICTEX2(NCTEX2)='*'
42723            NCTEX2=NCTEX2+1
42724            ICTEX2(NCTEX2)='e'
42725          ELSE
42726            NCTEX2=NCTEX2+1
42727            ICTEX2(NCTEX2)=IBASLC
42728            NCTEX2=NCTEX2+1
42729            ICTEX2(NCTEX2)='*'
42730            NCTEX2=NCTEX2+1
42731            IF(ICTEXT(I).EQ.'E')ICTEX2(NCTEX2)='E'
42732            IF(ICTEXT(I).EQ.'e')ICTEX2(NCTEX2)='e'
42733          ENDIF
42734C
42735          ILASTT=I+5
42736          NSKIP=5
42737          GOTO1000
42738C
42739        ELSEIF(IC1.EQ.'P' .AND. IC2.EQ.'H' .AND. IC3.EQ.'I' .AND.
42740     1         IC4.EQ.'(' .AND. IC5.EQ.')'
42741     1    )THEN
42742C
42743          IF(ICASE.EQ.'UPPE')THEN
42744            NCTEX2=NCTEX2+1
42745            ICTEX2(NCTEX2)=IBASLC
42746            NCTEX2=NCTEX2+1
42747            ICTEX2(NCTEX2)='*'
42748            NCTEX2=NCTEX2+1
42749            ICTEX2(NCTEX2)='F'
42750          ELSEIF(ICASE.EQ.'LOWE')THEN
42751            NCTEX2=NCTEX2+1
42752            ICTEX2(NCTEX2)=IBASLC
42753            NCTEX2=NCTEX2+1
42754            ICTEX2(NCTEX2)='*'
42755            NCTEX2=NCTEX2+1
42756            ICTEX2(NCTEX2)='f'
42757          ELSE
42758            NCTEX2=NCTEX2+1
42759            ICTEX2(NCTEX2)=IBASLC
42760            NCTEX2=NCTEX2+1
42761            ICTEX2(NCTEX2)='*'
42762            NCTEX2=NCTEX2+1
42763            IF(ICTEXT(I).EQ.'F')ICTEX2(NCTEX2)='F'
42764            IF(ICTEXT(I).EQ.'f')ICTEX2(NCTEX2)='f'
42765          ENDIF
42766C
42767          ILASTT=I+4
42768          NSKIP=4
42769          GOTO1000
42770C
42771        ELSEIF(IC1.EQ.'G' .AND. IC2.EQ.'A' .AND. IC3.EQ.'M' .AND.
42772     1         IC4.EQ.'M' .AND. IC5.EQ.'(' .AND. IC6.EQ.')'
42773     1    )THEN
42774C
42775          IF(ICASE.EQ.'UPPE')THEN
42776            NCTEX2=NCTEX2+1
42777            ICTEX2(NCTEX2)=IBASLC
42778            NCTEX2=NCTEX2+1
42779            ICTEX2(NCTEX2)='*'
42780            NCTEX2=NCTEX2+1
42781            ICTEX2(NCTEX2)='G'
42782          ELSEIF(ICASE.EQ.'LOWE')THEN
42783            NCTEX2=NCTEX2+1
42784            ICTEX2(NCTEX2)=IBASLC
42785            NCTEX2=NCTEX2+1
42786            ICTEX2(NCTEX2)='*'
42787            NCTEX2=NCTEX2+1
42788            ICTEX2(NCTEX2)='g'
42789          ELSE
42790            NCTEX2=NCTEX2+1
42791            ICTEX2(NCTEX2)=IBASLC
42792            NCTEX2=NCTEX2+1
42793            ICTEX2(NCTEX2)='*'
42794            NCTEX2=NCTEX2+1
42795            IF(ICTEXT(I).EQ.'G')ICTEX2(NCTEX2)='G'
42796            IF(ICTEXT(I).EQ.'g')ICTEX2(NCTEX2)='g'
42797          ENDIF
42798C
42799          ILASTT=I+5
42800          NSKIP=5
42801          GOTO1000
42802C
42803        ELSEIF(IC1.EQ.'E' .AND. IC2.EQ.'T' .AND. IC3.EQ.'A' .AND.
42804     1         IC4.EQ.'(' .AND. IC5.EQ.')'
42805     1    )THEN
42806C
42807          IF(ICASE.EQ.'UPPE')THEN
42808            NCTEX2=NCTEX2+1
42809            ICTEX2(NCTEX2)=IBASLC
42810            NCTEX2=NCTEX2+1
42811            ICTEX2(NCTEX2)='*'
42812            NCTEX2=NCTEX2+1
42813            ICTEX2(NCTEX2)='H'
42814          ELSEIF(ICASE.EQ.'LOWE')THEN
42815            NCTEX2=NCTEX2+1
42816            ICTEX2(NCTEX2)=IBASLC
42817            NCTEX2=NCTEX2+1
42818            ICTEX2(NCTEX2)='*'
42819            NCTEX2=NCTEX2+1
42820            ICTEX2(NCTEX2)='h'
42821          ELSE
42822            NCTEX2=NCTEX2+1
42823            ICTEX2(NCTEX2)=IBASLC
42824            NCTEX2=NCTEX2+1
42825            ICTEX2(NCTEX2)='*'
42826            NCTEX2=NCTEX2+1
42827            IF(ICTEXT(I).EQ.'H')ICTEX2(NCTEX2)='H'
42828            IF(ICTEXT(I).EQ.'h')ICTEX2(NCTEX2)='h'
42829          ENDIF
42830C
42831          ILASTT=I+4
42832          NSKIP=4
42833          GOTO1000
42834C
42835        ELSEIF(IC1.EQ.'I' .AND. IC2.EQ.'O' .AND. IC3.EQ.'T' .AND.
42836     1         IC4.EQ.'A' .AND. IC5.EQ.'(' .AND. IC6.EQ.')'
42837     1    )THEN
42838C
42839          IF(ICASE.EQ.'UPPE')THEN
42840            NCTEX2=NCTEX2+1
42841            ICTEX2(NCTEX2)=IBASLC
42842            NCTEX2=NCTEX2+1
42843            ICTEX2(NCTEX2)='*'
42844            NCTEX2=NCTEX2+1
42845            ICTEX2(NCTEX2)='I'
42846          ELSEIF(ICASE.EQ.'LOWE')THEN
42847            NCTEX2=NCTEX2+1
42848            ICTEX2(NCTEX2)=IBASLC
42849            NCTEX2=NCTEX2+1
42850            ICTEX2(NCTEX2)='*'
42851            NCTEX2=NCTEX2+1
42852            ICTEX2(NCTEX2)='i'
42853          ELSE
42854            NCTEX2=NCTEX2+1
42855            ICTEX2(NCTEX2)=IBASLC
42856            NCTEX2=NCTEX2+1
42857            ICTEX2(NCTEX2)='*'
42858            NCTEX2=NCTEX2+1
42859            IF(ICTEXT(I).EQ.'I')ICTEX2(NCTEX2)='I'
42860            IF(ICTEXT(I).EQ.'i')ICTEX2(NCTEX2)='i'
42861          ENDIF
42862C
42863          ILASTT=I+5
42864          NSKIP=5
42865          GOTO1000
42866C
42867        ELSEIF(IC1.EQ.'K' .AND. IC2.EQ.'A' .AND. IC3.EQ.'P' .AND.
42868     1         IC4.EQ.'P' .AND. IC5.EQ.'(' .AND. IC6.EQ.')'
42869     1    )THEN
42870C
42871          IF(ICASE.EQ.'UPPE')THEN
42872            NCTEX2=NCTEX2+1
42873            ICTEX2(NCTEX2)=IBASLC
42874            NCTEX2=NCTEX2+1
42875            ICTEX2(NCTEX2)='*'
42876            NCTEX2=NCTEX2+1
42877            ICTEX2(NCTEX2)='K'
42878          ELSEIF(ICASE.EQ.'LOWE')THEN
42879            NCTEX2=NCTEX2+1
42880            ICTEX2(NCTEX2)=IBASLC
42881            NCTEX2=NCTEX2+1
42882            ICTEX2(NCTEX2)='*'
42883            NCTEX2=NCTEX2+1
42884            ICTEX2(NCTEX2)='k'
42885          ELSE
42886            NCTEX2=NCTEX2+1
42887            ICTEX2(NCTEX2)=IBASLC
42888            NCTEX2=NCTEX2+1
42889            ICTEX2(NCTEX2)='*'
42890            NCTEX2=NCTEX2+1
42891            IF(ICTEXT(I).EQ.'K')ICTEX2(NCTEX2)='K'
42892            IF(ICTEXT(I).EQ.'k')ICTEX2(NCTEX2)='k'
42893          ENDIF
42894C
42895          ILASTT=I+5
42896          NSKIP=5
42897          GOTO1000
42898C
42899        ELSEIF(IC1.EQ.'L' .AND. IC2.EQ.'A' .AND. IC3.EQ.'M' .AND.
42900     1         IC4.EQ.'B' .AND. IC5.EQ.'(' .AND. IC6.EQ.')'
42901     1    )THEN
42902C
42903          IF(ICASE.EQ.'UPPE')THEN
42904            NCTEX2=NCTEX2+1
42905            ICTEX2(NCTEX2)=IBASLC
42906            NCTEX2=NCTEX2+1
42907            ICTEX2(NCTEX2)='*'
42908            NCTEX2=NCTEX2+1
42909            ICTEX2(NCTEX2)='L'
42910          ELSEIF(ICASE.EQ.'LOWE')THEN
42911            NCTEX2=NCTEX2+1
42912            ICTEX2(NCTEX2)=IBASLC
42913            NCTEX2=NCTEX2+1
42914            ICTEX2(NCTEX2)='*'
42915            NCTEX2=NCTEX2+1
42916            ICTEX2(NCTEX2)='l'
42917          ELSE
42918            NCTEX2=NCTEX2+1
42919            ICTEX2(NCTEX2)=IBASLC
42920            NCTEX2=NCTEX2+1
42921            ICTEX2(NCTEX2)='*'
42922            NCTEX2=NCTEX2+1
42923            IF(ICTEXT(I).EQ.'L')ICTEX2(NCTEX2)='L'
42924            IF(ICTEXT(I).EQ.'l')ICTEX2(NCTEX2)='l'
42925          ENDIF
42926C
42927          ILASTT=I+5
42928          NSKIP=5
42929          GOTO1000
42930C
42931        ELSEIF(IC1.EQ.'M' .AND. IC2.EQ.'U' .AND.
42932     1         IC3.EQ.'(' .AND. IC4.EQ.')'
42933     1    )THEN
42934C
42935          IF(ICASE.EQ.'UPPE')THEN
42936            NCTEX2=NCTEX2+1
42937            ICTEX2(NCTEX2)=IBASLC
42938            NCTEX2=NCTEX2+1
42939            ICTEX2(NCTEX2)='*'
42940            NCTEX2=NCTEX2+1
42941            ICTEX2(NCTEX2)='M'
42942          ELSEIF(ICASE.EQ.'LOWE')THEN
42943            NCTEX2=NCTEX2+1
42944            ICTEX2(NCTEX2)=IBASLC
42945            NCTEX2=NCTEX2+1
42946            ICTEX2(NCTEX2)='*'
42947            NCTEX2=NCTEX2+1
42948            ICTEX2(NCTEX2)='m'
42949          ELSE
42950            NCTEX2=NCTEX2+1
42951            ICTEX2(NCTEX2)=IBASLC
42952            NCTEX2=NCTEX2+1
42953            ICTEX2(NCTEX2)='*'
42954            NCTEX2=NCTEX2+1
42955            IF(ICTEXT(I).EQ.'M')ICTEX2(NCTEX2)='M'
42956            IF(ICTEXT(I).EQ.'m')ICTEX2(NCTEX2)='m'
42957          ENDIF
42958C
42959          ILASTT=I+3
42960          NSKIP=3
42961          GOTO1000
42962C
42963        ELSEIF(IC1.EQ.'N' .AND. IC2.EQ.'U' .AND.
42964     1         IC3.EQ.'(' .AND. IC4.EQ.')'
42965     1    )THEN
42966C
42967          IF(ICASE.EQ.'UPPE')THEN
42968            NCTEX2=NCTEX2+1
42969            ICTEX2(NCTEX2)=IBASLC
42970            NCTEX2=NCTEX2+1
42971            ICTEX2(NCTEX2)='*'
42972            NCTEX2=NCTEX2+1
42973            ICTEX2(NCTEX2)='N'
42974          ELSEIF(ICASE.EQ.'LOWE')THEN
42975            NCTEX2=NCTEX2+1
42976            ICTEX2(NCTEX2)=IBASLC
42977            NCTEX2=NCTEX2+1
42978            ICTEX2(NCTEX2)='*'
42979            NCTEX2=NCTEX2+1
42980            ICTEX2(NCTEX2)='n'
42981          ELSE
42982            NCTEX2=NCTEX2+1
42983            ICTEX2(NCTEX2)=IBASLC
42984            NCTEX2=NCTEX2+1
42985            ICTEX2(NCTEX2)='*'
42986            NCTEX2=NCTEX2+1
42987            IF(ICTEXT(I).EQ.'N')ICTEX2(NCTEX2)='N'
42988            IF(ICTEXT(I).EQ.'n')ICTEX2(NCTEX2)='n'
42989          ENDIF
42990C
42991          ILASTT=I+3
42992          NSKIP=3
42993          GOTO1000
42994C
42995        ELSEIF(IC1.EQ.'O' .AND. IC2.EQ.'M' .AND. IC3.EQ.'I' .AND.
42996     1         IC4.EQ.'C' .AND. IC5.EQ.'(' .AND. IC6.EQ.')'
42997     1    )THEN
42998C
42999          IF(ICASE.EQ.'UPPE')THEN
43000            NCTEX2=NCTEX2+1
43001            ICTEX2(NCTEX2)=IBASLC
43002            NCTEX2=NCTEX2+1
43003            ICTEX2(NCTEX2)='*'
43004            NCTEX2=NCTEX2+1
43005            ICTEX2(NCTEX2)='O'
43006          ELSEIF(ICASE.EQ.'LOWE')THEN
43007            NCTEX2=NCTEX2+1
43008            ICTEX2(NCTEX2)=IBASLC
43009            NCTEX2=NCTEX2+1
43010            ICTEX2(NCTEX2)='*'
43011            NCTEX2=NCTEX2+1
43012            ICTEX2(NCTEX2)='o'
43013          ELSE
43014            NCTEX2=NCTEX2+1
43015            ICTEX2(NCTEX2)=IBASLC
43016            NCTEX2=NCTEX2+1
43017            ICTEX2(NCTEX2)='*'
43018            NCTEX2=NCTEX2+1
43019            IF(ICTEXT(I).EQ.'O')ICTEX2(NCTEX2)='O'
43020            IF(ICTEXT(I).EQ.'o')ICTEX2(NCTEX2)='o'
43021          ENDIF
43022C
43023          ILASTT=I+5
43024          NSKIP=5
43025          GOTO1000
43026C
43027        ELSEIF(IC1.EQ.'P' .AND. IC2.EQ.'I' .AND.
43028     1         IC3.EQ.'(' .AND. IC4.EQ.')'
43029     1    )THEN
43030C
43031          IF(ICASE.EQ.'UPPE')THEN
43032            NCTEX2=NCTEX2+1
43033            ICTEX2(NCTEX2)=IBASLC
43034            NCTEX2=NCTEX2+1
43035            ICTEX2(NCTEX2)='*'
43036            NCTEX2=NCTEX2+1
43037            ICTEX2(NCTEX2)='P'
43038          ELSEIF(ICASE.EQ.'LOWE')THEN
43039            NCTEX2=NCTEX2+1
43040            ICTEX2(NCTEX2)=IBASLC
43041            NCTEX2=NCTEX2+1
43042            ICTEX2(NCTEX2)='*'
43043            NCTEX2=NCTEX2+1
43044            ICTEX2(NCTEX2)='p'
43045          ELSE
43046            NCTEX2=NCTEX2+1
43047            ICTEX2(NCTEX2)=IBASLC
43048            NCTEX2=NCTEX2+1
43049            ICTEX2(NCTEX2)='*'
43050            NCTEX2=NCTEX2+1
43051            IF(ICTEXT(I).EQ.'P')ICTEX2(NCTEX2)='P'
43052            IF(ICTEXT(I).EQ.'p')ICTEX2(NCTEX2)='p'
43053          ENDIF
43054C
43055          ILASTT=I+3
43056          NSKIP=3
43057          GOTO1000
43058C
43059        ELSEIF(IC1.EQ.'T' .AND. IC2.EQ.'H' .AND. IC3.EQ.'E' .AND.
43060     1         IC4.EQ.'T' .AND. IC5.EQ.'(' .AND. IC6.EQ.')'
43061     1    )THEN
43062C
43063          IF(ICASE.EQ.'UPPE')THEN
43064            NCTEX2=NCTEX2+1
43065            ICTEX2(NCTEX2)=IBASLC
43066            NCTEX2=NCTEX2+1
43067            ICTEX2(NCTEX2)='*'
43068            NCTEX2=NCTEX2+1
43069            ICTEX2(NCTEX2)='Q'
43070          ELSEIF(ICASE.EQ.'LOWE')THEN
43071            NCTEX2=NCTEX2+1
43072            ICTEX2(NCTEX2)=IBASLC
43073            NCTEX2=NCTEX2+1
43074            ICTEX2(NCTEX2)='*'
43075            NCTEX2=NCTEX2+1
43076            ICTEX2(NCTEX2)='q'
43077          ELSE
43078            NCTEX2=NCTEX2+1
43079            ICTEX2(NCTEX2)=IBASLC
43080            NCTEX2=NCTEX2+1
43081            ICTEX2(NCTEX2)='*'
43082            NCTEX2=NCTEX2+1
43083            IF(ICTEXT(I).EQ.'Q')ICTEX2(NCTEX2)='Q'
43084            IF(ICTEXT(I).EQ.'q')ICTEX2(NCTEX2)='q'
43085          ENDIF
43086C
43087          ILASTT=I+5
43088          NSKIP=5
43089          GOTO1000
43090C
43091        ELSEIF(IC1.EQ.'R' .AND. IC2.EQ.'H' .AND. IC3.EQ.'O' .AND.
43092     1         IC4.EQ.'(' .AND. IC5.EQ.')'
43093     1    )THEN
43094C
43095          IF(ICASE.EQ.'UPPE')THEN
43096            NCTEX2=NCTEX2+1
43097            ICTEX2(NCTEX2)=IBASLC
43098            NCTEX2=NCTEX2+1
43099            ICTEX2(NCTEX2)='*'
43100            NCTEX2=NCTEX2+1
43101            ICTEX2(NCTEX2)='R'
43102          ELSEIF(ICASE.EQ.'LOWE')THEN
43103            NCTEX2=NCTEX2+1
43104            ICTEX2(NCTEX2)=IBASLC
43105            NCTEX2=NCTEX2+1
43106            ICTEX2(NCTEX2)='*'
43107            NCTEX2=NCTEX2+1
43108            ICTEX2(NCTEX2)='r'
43109          ELSE
43110            NCTEX2=NCTEX2+1
43111            ICTEX2(NCTEX2)=IBASLC
43112            NCTEX2=NCTEX2+1
43113            ICTEX2(NCTEX2)='*'
43114            NCTEX2=NCTEX2+1
43115            IF(ICTEXT(I).EQ.'R')ICTEX2(NCTEX2)='R'
43116            IF(ICTEXT(I).EQ.'r')ICTEX2(NCTEX2)='r'
43117          ENDIF
43118C
43119          ILASTT=I+4
43120          NSKIP=4
43121          GOTO1000
43122C
43123        ELSEIF(IC1.EQ.'S' .AND. IC2.EQ.'I' .AND. IC3.EQ.'G' .AND.
43124     1         IC4.EQ.'M' .AND. IC5.EQ.'(' .AND. IC6.EQ.')'
43125     1    )THEN
43126C
43127          IF(ICASE.EQ.'UPPE')THEN
43128            NCTEX2=NCTEX2+1
43129            ICTEX2(NCTEX2)=IBASLC
43130            NCTEX2=NCTEX2+1
43131            ICTEX2(NCTEX2)='*'
43132            NCTEX2=NCTEX2+1
43133            ICTEX2(NCTEX2)='S'
43134          ELSEIF(ICASE.EQ.'LOWE')THEN
43135            NCTEX2=NCTEX2+1
43136            ICTEX2(NCTEX2)=IBASLC
43137            NCTEX2=NCTEX2+1
43138            ICTEX2(NCTEX2)='*'
43139            NCTEX2=NCTEX2+1
43140            ICTEX2(NCTEX2)='s'
43141          ELSE
43142            NCTEX2=NCTEX2+1
43143            ICTEX2(NCTEX2)=IBASLC
43144            NCTEX2=NCTEX2+1
43145            ICTEX2(NCTEX2)='*'
43146            NCTEX2=NCTEX2+1
43147            IF(ICTEXT(I).EQ.'S')ICTEX2(NCTEX2)='S'
43148            IF(ICTEXT(I).EQ.'s')ICTEX2(NCTEX2)='s'
43149          ENDIF
43150C
43151          ILASTT=I+5
43152          NSKIP=5
43153          GOTO1000
43154C
43155        ELSEIF(IC1.EQ.'T' .AND. IC2.EQ.'A' .AND. IC3.EQ.'U' .AND.
43156     1         IC4.EQ.'(' .AND. IC5.EQ.')'
43157     1    )THEN
43158C
43159          IF(ICASE.EQ.'UPPE')THEN
43160            NCTEX2=NCTEX2+1
43161            ICTEX2(NCTEX2)=IBASLC
43162            NCTEX2=NCTEX2+1
43163            ICTEX2(NCTEX2)='*'
43164            NCTEX2=NCTEX2+1
43165            ICTEX2(NCTEX2)='T'
43166          ELSEIF(ICASE.EQ.'LOWE')THEN
43167            NCTEX2=NCTEX2+1
43168            ICTEX2(NCTEX2)=IBASLC
43169            NCTEX2=NCTEX2+1
43170            ICTEX2(NCTEX2)='*'
43171            NCTEX2=NCTEX2+1
43172            ICTEX2(NCTEX2)='t'
43173          ELSE
43174            NCTEX2=NCTEX2+1
43175            ICTEX2(NCTEX2)=IBASLC
43176            NCTEX2=NCTEX2+1
43177            ICTEX2(NCTEX2)='*'
43178            NCTEX2=NCTEX2+1
43179            IF(ICTEXT(I).EQ.'T')ICTEX2(NCTEX2)='T'
43180            IF(ICTEXT(I).EQ.'t')ICTEX2(NCTEX2)='t'
43181          ENDIF
43182C
43183          ILASTT=I+4
43184          NSKIP=4
43185          GOTO1000
43186C
43187        ELSEIF(IC1.EQ.'U' .AND. IC2.EQ.'P' .AND. IC3.EQ.'S' .AND.
43188     1         IC4.EQ.'I' .AND. IC5.EQ.'(' .AND. IC6.EQ.')'
43189     1    )THEN
43190C
43191          IF(ICASE.EQ.'UPPE')THEN
43192            NCTEX2=NCTEX2+1
43193            ICTEX2(NCTEX2)=IBASLC
43194            NCTEX2=NCTEX2+1
43195            ICTEX2(NCTEX2)='*'
43196            NCTEX2=NCTEX2+1
43197            ICTEX2(NCTEX2)='U'
43198          ELSEIF(ICASE.EQ.'LOWE')THEN
43199            NCTEX2=NCTEX2+1
43200            ICTEX2(NCTEX2)=IBASLC
43201            NCTEX2=NCTEX2+1
43202            ICTEX2(NCTEX2)='*'
43203            NCTEX2=NCTEX2+1
43204            ICTEX2(NCTEX2)='u'
43205          ELSE
43206            NCTEX2=NCTEX2+1
43207            ICTEX2(NCTEX2)=IBASLC
43208            NCTEX2=NCTEX2+1
43209            ICTEX2(NCTEX2)='*'
43210            NCTEX2=NCTEX2+1
43211            IF(ICTEXT(I).EQ.'U')ICTEX2(NCTEX2)='U'
43212            IF(ICTEXT(I).EQ.'u')ICTEX2(NCTEX2)='u'
43213          ENDIF
43214C
43215          ILASTT=I+5
43216          NSKIP=5
43217          GOTO1000
43218C
43219        ELSEIF(IC1.EQ.'O' .AND. IC2.EQ.'M' .AND. IC3.EQ.'E' .AND.
43220     1         IC4.EQ.'G' .AND. IC5.EQ.'(' .AND. IC6.EQ.')'
43221     1    )THEN
43222C
43223          IF(ICASE.EQ.'UPPE')THEN
43224            NCTEX2=NCTEX2+1
43225            ICTEX2(NCTEX2)=IBASLC
43226            NCTEX2=NCTEX2+1
43227            ICTEX2(NCTEX2)='*'
43228            NCTEX2=NCTEX2+1
43229            ICTEX2(NCTEX2)='W'
43230          ELSEIF(ICASE.EQ.'LOWE')THEN
43231            NCTEX2=NCTEX2+1
43232            ICTEX2(NCTEX2)=IBASLC
43233            NCTEX2=NCTEX2+1
43234            ICTEX2(NCTEX2)='*'
43235            NCTEX2=NCTEX2+1
43236            ICTEX2(NCTEX2)='w'
43237          ELSE
43238            NCTEX2=NCTEX2+1
43239            ICTEX2(NCTEX2)=IBASLC
43240            NCTEX2=NCTEX2+1
43241            ICTEX2(NCTEX2)='*'
43242            NCTEX2=NCTEX2+1
43243            IF(ICTEXT(I).EQ.'W')ICTEX2(NCTEX2)='W'
43244            IF(ICTEXT(I).EQ.'w')ICTEX2(NCTEX2)='w'
43245          ENDIF
43246C
43247          ILASTT=I+5
43248          NSKIP=5
43249          GOTO1000
43250C
43251        ELSEIF(IC1.EQ.'X' .AND. IC2.EQ.'I' .AND.
43252     1         IC3.EQ.'(' .AND. IC4.EQ.')'
43253     1    )THEN
43254C
43255          IF(ICASE.EQ.'UPPE')THEN
43256            NCTEX2=NCTEX2+1
43257            ICTEX2(NCTEX2)=IBASLC
43258            NCTEX2=NCTEX2+1
43259            ICTEX2(NCTEX2)='*'
43260            NCTEX2=NCTEX2+1
43261            ICTEX2(NCTEX2)='X'
43262          ELSEIF(ICASE.EQ.'LOWE')THEN
43263            NCTEX2=NCTEX2+1
43264            ICTEX2(NCTEX2)=IBASLC
43265            NCTEX2=NCTEX2+1
43266            ICTEX2(NCTEX2)='*'
43267            NCTEX2=NCTEX2+1
43268            ICTEX2(NCTEX2)='x'
43269          ELSE
43270            NCTEX2=NCTEX2+1
43271            ICTEX2(NCTEX2)=IBASLC
43272            NCTEX2=NCTEX2+1
43273            ICTEX2(NCTEX2)='*'
43274            NCTEX2=NCTEX2+1
43275            IF(ICTEXT(I).EQ.'X')ICTEX2(NCTEX2)='X'
43276            IF(ICTEXT(I).EQ.'x')ICTEX2(NCTEX2)='x'
43277          ENDIF
43278C
43279          ILASTT=I+3
43280          NSKIP=3
43281          GOTO1000
43282C
43283        ELSEIF(IC1.EQ.'P' .AND. IC2.EQ.'S' .AND. IC3.EQ.'I' .AND.
43284     1         IC4.EQ.'(' .AND. IC5.EQ.')'
43285     1    )THEN
43286C
43287          IF(ICASE.EQ.'UPPE')THEN
43288            NCTEX2=NCTEX2+1
43289            ICTEX2(NCTEX2)=IBASLC
43290            NCTEX2=NCTEX2+1
43291            ICTEX2(NCTEX2)='*'
43292            NCTEX2=NCTEX2+1
43293            ICTEX2(NCTEX2)='Y'
43294          ELSEIF(ICASE.EQ.'LOWE')THEN
43295            NCTEX2=NCTEX2+1
43296            ICTEX2(NCTEX2)=IBASLC
43297            NCTEX2=NCTEX2+1
43298            ICTEX2(NCTEX2)='*'
43299            NCTEX2=NCTEX2+1
43300            ICTEX2(NCTEX2)='y'
43301          ELSE
43302            NCTEX2=NCTEX2+1
43303            ICTEX2(NCTEX2)=IBASLC
43304            NCTEX2=NCTEX2+1
43305            ICTEX2(NCTEX2)='*'
43306            NCTEX2=NCTEX2+1
43307            IF(ICTEXT(I).EQ.'Y')ICTEX2(NCTEX2)='Y'
43308            IF(ICTEXT(I).EQ.'y')ICTEX2(NCTEX2)='y'
43309          ENDIF
43310C
43311          ILASTT=I+4
43312          NSKIP=4
43313          GOTO1000
43314C
43315        ELSEIF(IC1.EQ.'Z' .AND. IC2.EQ.'E' .AND. IC3.EQ.'T' .AND.
43316     1         IC4.EQ.'A' .AND. IC5.EQ.'(' .AND. IC6.EQ.')'
43317     1    )THEN
43318C
43319          IF(ICASE.EQ.'UPPE')THEN
43320            NCTEX2=NCTEX2+1
43321            ICTEX2(NCTEX2)=IBASLC
43322            NCTEX2=NCTEX2+1
43323            ICTEX2(NCTEX2)='*'
43324            NCTEX2=NCTEX2+1
43325            ICTEX2(NCTEX2)='Z'
43326          ELSEIF(ICASE.EQ.'LOWE')THEN
43327            NCTEX2=NCTEX2+1
43328            ICTEX2(NCTEX2)=IBASLC
43329            NCTEX2=NCTEX2+1
43330            ICTEX2(NCTEX2)='*'
43331            NCTEX2=NCTEX2+1
43332            ICTEX2(NCTEX2)='z'
43333          ELSE
43334            NCTEX2=NCTEX2+1
43335            ICTEX2(NCTEX2)=IBASLC
43336            NCTEX2=NCTEX2+1
43337            ICTEX2(NCTEX2)='*'
43338            NCTEX2=NCTEX2+1
43339            IF(ICTEXT(I).EQ.'Z')ICTEX2(NCTEX2)='Z'
43340            IF(ICTEXT(I).EQ.'z')ICTEX2(NCTEX2)='z'
43341          ENDIF
43342C
43343          ILASTT=I+5
43344          NSKIP=5
43345          GOTO1000
43346C
43347C       STEP 5: CHECK FOR CERTAIN SPECIAL CHARACTERS AND MATHEMATICAL
43348C               SYMBOLS.  BASICALLY SUPPORT THOSE THAT ARE SUPPORTED
43349C               IN THE POSTSCRIPT SYMBOL FONT.
43350C
43351        ELSEIF(IC1.EQ.'I' .AND. IC2.EQ.'N' .AND. IC3.EQ.'T' .AND.
43352     1         IC4.EQ.'E' .AND. IC5.EQ.'(' .AND. IC6.EQ.')'
43353     1    )THEN
43354C
43355          NCTEX2=NCTEX2+1
43356          ICTEX2(NCTEX2)=IBASLC
43357          NCTEX2=NCTEX2+1
43358          ICTEX2(NCTEX2)='i'
43359          NCTEX2=NCTEX2+1
43360          ICTEX2(NCTEX2)='s'
43361C
43362          ILASTT=I+5
43363          NSKIP=5
43364          IFONTT=1
43365          ASIZET=0.0
43366          OFFT=0.0
43367          GOTO1000
43368C
43369        ELSEIF(IC1.EQ.'S' .AND. IC2.EQ.'U' .AND. IC3.EQ.'M' .AND.
43370     1         IC4.EQ.'M' .AND. IC5.EQ.'(' .AND. IC6.EQ.')'
43371     1    )THEN
43372C
43373          NCTEX2=NCTEX2+1
43374          ICTEX2(NCTEX2)=IBASLC
43375          NCTEX2=NCTEX2+1
43376          ICTEX2(NCTEX2)='S'
43377          NCTEX2=NCTEX2+1
43378          ICTEX2(NCTEX2)='U'
43379C
43380          ILASTT=I+5
43381          NSKIP=5
43382          GOTO1000
43383C
43384        ELSEIF(IC1.EQ.'P' .AND. IC2.EQ.'R' .AND. IC3.EQ.'O' .AND.
43385     1         IC4.EQ.'D' .AND. IC5.EQ.'(' .AND. IC6.EQ.')'
43386     1    )THEN
43387C
43388          NCTEX2=NCTEX2+1
43389          ICTEX2(NCTEX2)=IBASLC
43390          NCTEX2=NCTEX2+1
43391          ICTEX2(NCTEX2)='P'
43392          NCTEX2=NCTEX2+1
43393          ICTEX2(NCTEX2)='R'
43394C
43395          ILASTT=I+5
43396          NSKIP=5
43397          GOTO1000
43398C
43399        ELSEIF(IC1.EQ.'I' .AND. IC2.EQ.'N' .AND. IC3.EQ.'F' .AND.
43400     1         IC4.EQ.'I' .AND. IC5.EQ.'(' .AND. IC6.EQ.')'
43401     1    )THEN
43402C
43403          NCTEX2=NCTEX2+1
43404          ICTEX2(NCTEX2)=IBASLC
43405          NCTEX2=NCTEX2+1
43406          ICTEX2(NCTEX2)='i'
43407          NCTEX2=NCTEX2+1
43408          ICTEX2(NCTEX2)='f'
43409C
43410          ILASTT=I+5
43411          NSKIP=5
43412          GOTO1000
43413C
43414        ELSEIF(IC1.EQ.'D' .AND. IC2.EQ.'O' .AND. IC3.EQ.'T' .AND.
43415     1         IC4.EQ.'P' .AND. IC5.EQ.'(' .AND. IC6.EQ.')'
43416     1    )THEN
43417C
43418          NCTEX2=NCTEX2+1
43419          ICTEX2(NCTEX2)=IBASLC
43420          NCTEX2=NCTEX2+1
43421          ICTEX2(NCTEX2)='m'
43422          NCTEX2=NCTEX2+1
43423          ICTEX2(NCTEX2)='d'
43424C
43425          ILASTT=I+5
43426          NSKIP=5
43427          GOTO1000
43428C
43429        ELSEIF(IC1.EQ.'D' .AND. IC2.EQ.'I' .AND. IC3.EQ.'V' .AND.
43430     1         IC4.EQ.'I' .AND. IC5.EQ.'(' .AND. IC6.EQ.')'
43431     1    )THEN
43432C
43433          NCTEX2=NCTEX2+1
43434          ICTEX2(NCTEX2)=IBASLC
43435          NCTEX2=NCTEX2+1
43436          ICTEX2(NCTEX2)='d'
43437          NCTEX2=NCTEX2+1
43438          ICTEX2(NCTEX2)='i'
43439C
43440          ILASTT=I+5
43441          NSKIP=5
43442          GOTO1000
43443C
43444        ELSEIF(IC1.EQ.'L' .AND. IC2.EQ.'T' .AND.
43445     1         IC3.EQ.'(' .AND. IC4.EQ.')'
43446     1    )THEN
43447C
43448          NCTEX2=NCTEX2+1
43449          ICTEX2(NCTEX2)='<'
43450C
43451          ILASTT=I+3
43452          NSKIP=5
43453          GOTO1000
43454C
43455        ELSEIF(IC1.EQ.'G' .AND. IC2.EQ.'T' .AND.
43456     1         IC3.EQ.'(' .AND. IC4.EQ.')'
43457     1    )THEN
43458C
43459          NCTEX2=NCTEX2+1
43460          ICTEX2(NCTEX2)='>'
43461C
43462          ILASTT=I+3
43463          NSKIP=5
43464          GOTO1000
43465C
43466        ELSEIF(IC1.EQ.'L' .AND. IC2.EQ.'T' .AND. IC3.EQ.'E' .AND.
43467     1         IC4.EQ.'Q' .AND. IC5.EQ.'(' .AND. IC6.EQ.')'
43468     1    )THEN
43469C
43470          NCTEX2=NCTEX2+1
43471          ICTEX2(NCTEX2)=IBASLC
43472          NCTEX2=NCTEX2+1
43473          ICTEX2(NCTEX2)='<'
43474          NCTEX2=NCTEX2+1
43475          ICTEX2(NCTEX2)='='
43476C
43477          ILASTT=I+5
43478          NSKIP=5
43479          GOTO1000
43480C
43481        ELSEIF(IC1.EQ.'G' .AND. IC2.EQ.'T' .AND. IC3.EQ.'E' .AND.
43482     1         IC4.EQ.'Q' .AND. IC5.EQ.'(' .AND. IC6.EQ.')'
43483     1    )THEN
43484C
43485          NCTEX2=NCTEX2+1
43486          ICTEX2(NCTEX2)=IBASLC
43487          NCTEX2=NCTEX2+1
43488          ICTEX2(NCTEX2)='>'
43489          NCTEX2=NCTEX2+1
43490          ICTEX2(NCTEX2)='='
43491C
43492          ILASTT=I+5
43493          NSKIP=5
43494          GOTO1000
43495C
43496        ELSEIF(IC1.EQ.'N' .AND. IC2.EQ.'O' .AND. IC3.EQ.'T' .AND.
43497     1         IC4.EQ.'=' .AND. IC5.EQ.'(' .AND. IC6.EQ.')'
43498     1    )THEN
43499C
43500          NCTEX2=NCTEX2+1
43501          ICTEX2(NCTEX2)=IBASLC
43502          NCTEX2=NCTEX2+1
43503          ICTEX2(NCTEX2)='!'
43504          NCTEX2=NCTEX2+1
43505          ICTEX2(NCTEX2)='='
43506C
43507          ILASTT=I+5
43508          NSKIP=5
43509          GOTO1000
43510C
43511        ELSEIF(IC1.EQ.'+' .AND. IC2.EQ.'-' .AND.
43512     1         IC3.EQ.'(' .AND. IC4.EQ.')'
43513     1    )THEN
43514C
43515          NCTEX2=NCTEX2+1
43516          ICTEX2(NCTEX2)=IBASLC
43517          NCTEX2=NCTEX2+1
43518          ICTEX2(NCTEX2)='+'
43519          NCTEX2=NCTEX2+1
43520          ICTEX2(NCTEX2)='-'
43521C
43522          ILASTT=I+3
43523          NSKIP=5
43524          GOTO1000
43525C
43526        ELSEIF(IC1.EQ.'T' .AND. IC2.EQ.'I' .AND. IC3.EQ.'L' .AND.
43527     1         IC4.EQ.'D' .AND. IC5.EQ.'(' .AND. IC6.EQ.')'
43528     1    )THEN
43529C
43530          NCTEX2=NCTEX2+1
43531          ICTEX2(NCTEX2)=CHAR(126)
43532C
43533          ILASTT=I+5
43534          NSKIP=5
43535          GOTO1000
43536C
43537        ELSEIF(IC1.EQ.'E' .AND. IC2.EQ.'Q' .AND. IC3.EQ.'U' .AND.
43538     1         IC4.EQ.'I' .AND. IC5.EQ.'(' .AND. IC6.EQ.')'
43539     1    )THEN
43540C
43541          NCTEX2=NCTEX2+1
43542          ICTEX2(NCTEX2)=IBASLC
43543          NCTEX2=NCTEX2+1
43544          ICTEX2(NCTEX2)='='
43545          NCTEX2=NCTEX2+1
43546          ICTEX2(NCTEX2)='='
43547C
43548          ILASTT=I+5
43549          NSKIP=5
43550          GOTO1000
43551C
43552        ELSEIF(IC1.EQ.'V' .AND. IC2.EQ.'A' .AND. IC3.EQ.'R' .AND.
43553     1         IC4.EQ.'I' .AND. IC5.EQ.'(' .AND. IC6.EQ.')'
43554     1    )THEN
43555C
43556          NCTEX2=NCTEX2+1
43557          ICTEX2(NCTEX2)=IBASLC
43558          NCTEX2=NCTEX2+1
43559          ICTEX2(NCTEX2)='p'
43560          NCTEX2=NCTEX2+1
43561          ICTEX2(NCTEX2)='t'
43562C
43563          ILASTT=I+5
43564          NSKIP=5
43565          GOTO1000
43566C
43567        ELSEIF(IC1.EQ.'C' .AND. IC2.EQ.'A' .AND. IC3.EQ.'R' .AND.
43568     1         IC4.EQ.'A' .AND. IC5.EQ.'(' .AND. IC6.EQ.')'
43569     1    )THEN
43570C
43571          NCTEX2=NCTEX2+1
43572          ICTEX2(NCTEX2)='^'
43573C
43574          ILASTT=I+5
43575          NSKIP=5
43576          GOTO1000
43577C
43578        ELSEIF(IC1.EQ.'T' .AND. IC2.EQ.'I' .AND. IC3.EQ.'M' .AND.
43579     1         IC4.EQ.'E' .AND. IC5.EQ.'(' .AND. IC6.EQ.')'
43580     1    )THEN
43581C
43582          NCTEX2=NCTEX2+1
43583          ICTEX2(NCTEX2)=IBASLC
43584          NCTEX2=NCTEX2+1
43585          ICTEX2(NCTEX2)='m'
43586          NCTEX2=NCTEX2+1
43587          ICTEX2(NCTEX2)='u'
43588C
43589          ILASTT=I+5
43590          NSKIP=5
43591          GOTO1000
43592C
43593        ELSEIF(IC1.EQ.'P' .AND. IC2.EQ.'A' .AND. IC3.EQ.'R' .AND.
43594     1         IC4.EQ.'T' .AND. IC5.EQ.'(' .AND. IC6.EQ.')'
43595     1    )THEN
43596C
43597          NCTEX2=NCTEX2+1
43598          ICTEX2(NCTEX2)=IBASLC
43599          NCTEX2=NCTEX2+1
43600          ICTEX2(NCTEX2)='p'
43601          NCTEX2=NCTEX2+1
43602          ICTEX2(NCTEX2)='d'
43603C
43604          ILASTT=I+5
43605          NSKIP=5
43606          GOTO1000
43607C
43608        ELSEIF(IC1.EQ.'R' .AND. IC2.EQ.'A' .AND. IC3.EQ.'D' .AND.
43609     1         IC4.EQ.'I' .AND. IC5.EQ.'(' .AND. IC6.EQ.')'
43610     1    )THEN
43611C
43612          NCTEX2=NCTEX2+1
43613          ICTEX2(NCTEX2)=IBASLC
43614          NCTEX2=NCTEX2+1
43615          ICTEX2(NCTEX2)='s'
43616          NCTEX2=NCTEX2+1
43617          ICTEX2(NCTEX2)='r'
43618C
43619          ILASTT=I+5
43620          NSKIP=5
43621          GOTO1000
43622C
43623        ELSEIF(IC1.EQ.'S' .AND. IC2.EQ.'U' .AND. IC3.EQ.'B' .AND.
43624     1         IC4.EQ.'S' .AND. IC5.EQ.'(' .AND. IC6.EQ.')'
43625     1    )THEN
43626C
43627          NCTEX2=NCTEX2+1
43628          ICTEX2(NCTEX2)=IBASLC
43629          NCTEX2=NCTEX2+1
43630          ICTEX2(NCTEX2)='S'
43631          NCTEX2=NCTEX2+1
43632          ICTEX2(NCTEX2)='B'
43633C
43634          ILASTT=I+5
43635          NSKIP=5
43636          GOTO1000
43637C
43638        ELSEIF(IC1.EQ.'S' .AND. IC2.EQ.'U' .AND. IC3.EQ.'P' .AND.
43639     1         IC4.EQ.'E' .AND. IC5.EQ.'(' .AND. IC6.EQ.')'
43640     1    )THEN
43641C
43642          NCTEX2=NCTEX2+1
43643          ICTEX2(NCTEX2)=IBASLC
43644          NCTEX2=NCTEX2+1
43645          ICTEX2(NCTEX2)='S'
43646          NCTEX2=NCTEX2+1
43647          ICTEX2(NCTEX2)='S'
43648C
43649          ILASTT=I+5
43650          NSKIP=5
43651          GOTO1000
43652C
43653        ELSEIF(IC1.EQ.'T' .AND. IC2.EQ.'H' .AND. IC3.EQ.'E' .AND.
43654     1         IC4.EQ.'X' .AND. IC5.EQ.'(' .AND. IC6.EQ.')'
43655     1    )THEN
43656C
43657          NCTEX2=NCTEX2+1
43658          ICTEX2(NCTEX2)=IBASLC
43659          NCTEX2=NCTEX2+1
43660          ICTEX2(NCTEX2)='t'
43661          NCTEX2=NCTEX2+1
43662          ICTEX2(NCTEX2)='e'
43663C
43664          ILASTT=I+5
43665          NSKIP=5
43666          GOTO1000
43667C
43668        ELSEIF(IC1.EQ.'T' .AND. IC2.EQ.'H' .AND. IC3.EQ.'F' .AND.
43669     1         IC4.EQ.'O' .AND. IC5.EQ.'(' .AND. IC6.EQ.')'
43670     1    )THEN
43671C
43672          NCTEX2=NCTEX2+1
43673          ICTEX2(NCTEX2)=IBASLC
43674          NCTEX2=NCTEX2+1
43675          ICTEX2(NCTEX2)='t'
43676          NCTEX2=NCTEX2+1
43677          ICTEX2(NCTEX2)='f'
43678C
43679          ILASTT=I+5
43680          NSKIP=5
43681          GOTO1000
43682C
43683        ELSEIF(IC1.EQ.'L' .AND. IC2.EQ.'B' .AND. IC3.EQ.'R' .AND.
43684     1         IC4.EQ.'A' .AND. IC5.EQ.'(' .AND. IC6.EQ.')'
43685     1    )THEN
43686C
43687          NCTEX2=NCTEX2+1
43688          ICTEX2(NCTEX2)=IBASLC
43689          NCTEX2=NCTEX2+1
43690          ICTEX2(NCTEX2)='l'
43691          NCTEX2=NCTEX2+1
43692          ICTEX2(NCTEX2)='c'
43693C
43694          ILASTT=I+5
43695          NSKIP=5
43696          GOTO1000
43697C
43698        ELSEIF(IC1.EQ.'R' .AND. IC2.EQ.'B' .AND. IC3.EQ.'R' .AND.
43699     1         IC4.EQ.'A' .AND. IC5.EQ.'(' .AND. IC6.EQ.')'
43700     1    )THEN
43701C
43702          NCTEX2=NCTEX2+1
43703          ICTEX2(NCTEX2)=IBASLC
43704          NCTEX2=NCTEX2+1
43705          ICTEX2(NCTEX2)='r'
43706          NCTEX2=NCTEX2+1
43707          ICTEX2(NCTEX2)='c'
43708C
43709          ILASTT=I+5
43710          NSKIP=5
43711          GOTO1000
43712C
43713        ELSEIF(IC1.EQ.'L' .AND. IC2.EQ.'C' .AND. IC3.EQ.'B' .AND.
43714     1         IC4.EQ.'R' .AND. IC5.EQ.'(' .AND. IC6.EQ.')'
43715     1    )THEN
43716C
43717          NCTEX2=NCTEX2+1
43718          ICTEX2(NCTEX2)=IBASLC
43719          NCTEX2=NCTEX2+1
43720          ICTEX2(NCTEX2)='l'
43721          NCTEX2=NCTEX2+1
43722          ICTEX2(NCTEX2)='t'
43723C
43724          ILASTT=I+5
43725          NSKIP=5
43726          GOTO1000
43727C
43728        ELSEIF(IC1.EQ.'R' .AND. IC2.EQ.'C' .AND. IC3.EQ.'B' .AND.
43729     1         IC4.EQ.'R' .AND. IC5.EQ.'(' .AND. IC6.EQ.')'
43730     1    )THEN
43731C
43732          NCTEX2=NCTEX2+1
43733          ICTEX2(NCTEX2)=IBASLC
43734          NCTEX2=NCTEX2+1
43735          ICTEX2(NCTEX2)='R'
43736          NCTEX2=NCTEX2+1
43737          ICTEX2(NCTEX2)='T'
43738          ICTEXT(I)=CHAR(125)
43739C
43740          ILASTT=I+5
43741          NSKIP=5
43742          GOTO1000
43743C
43744        ELSEIF(IC1.EQ.'R' .AND. IC2.EQ.'A' .AND. IC3.EQ.'R' .AND.
43745     1         IC4.EQ.'R' .AND. IC5.EQ.'(' .AND. IC6.EQ.')'
43746     1    )THEN
43747C
43748          NCTEX2=NCTEX2+1
43749          ICTEX2(NCTEX2)=IBASLC
43750          NCTEX2=NCTEX2+1
43751          ICTEX2(NCTEX2)='-'
43752          NCTEX2=NCTEX2+1
43753          ICTEX2(NCTEX2)='>'
43754C
43755          ILASTT=I+5
43756          NSKIP=5
43757          GOTO1000
43758C
43759        ELSEIF(IC1.EQ.'U' .AND. IC2.EQ.'A' .AND. IC3.EQ.'R' .AND.
43760     1         IC4.EQ.'R' .AND. IC5.EQ.'(' .AND. IC6.EQ.')'
43761     1    )THEN
43762C
43763          NCTEX2=NCTEX2+1
43764          ICTEX2(NCTEX2)=IBASLC
43765          NCTEX2=NCTEX2+1
43766          ICTEX2(NCTEX2)='u'
43767          NCTEX2=NCTEX2+1
43768          ICTEX2(NCTEX2)='a'
43769C
43770          ILASTT=I+5
43771          NSKIP=5
43772          GOTO1000
43773C
43774        ELSEIF(IC1.EQ.'D' .AND. IC2.EQ.'A' .AND. IC3.EQ.'R' .AND.
43775     1         IC4.EQ.'R' .AND. IC5.EQ.'(' .AND. IC6.EQ.')'
43776     1    )THEN
43777C
43778          NCTEX2=NCTEX2+1
43779          ICTEX2(NCTEX2)=IBASLC
43780          NCTEX2=NCTEX2+1
43781          ICTEX2(NCTEX2)='d'
43782          NCTEX2=NCTEX2+1
43783          ICTEX2(NCTEX2)='a'
43784C
43785          ILASTT=I+5
43786          NSKIP=5
43787          GOTO1000
43788C
43789        ELSEIF(IC1.EQ.'H' .AND. IC2.EQ.'B' .AND. IC3.EQ.'A' .AND.
43790     1         IC4.EQ.'R' .AND. IC5.EQ.'(' .AND. IC6.EQ.')'
43791     1    )THEN
43792C
43793          NCTEX2=NCTEX2+1
43794          ICTEX2(NCTEX2)=IBASLC
43795          NCTEX2=NCTEX2+1
43796          ICTEX2(NCTEX2)='h'
43797          NCTEX2=NCTEX2+1
43798          ICTEX2(NCTEX2)='b'
43799C
43800          ILASTT=I+5
43801          NSKIP=5
43802          GOTO1000
43803C
43804        ELSEIF(IC1.EQ.'D' .AND. IC2.EQ.'E' .AND. IC3.EQ.'G' .AND.
43805     1         IC4.EQ.'R' .AND. IC5.EQ.'(' .AND. IC6.EQ.')'
43806     1    )THEN
43807C
43808          NCTEX2=NCTEX2+1
43809          ICTEX2(NCTEX2)=IBASLC
43810          NCTEX2=NCTEX2+1
43811          ICTEX2(NCTEX2)='d'
43812          NCTEX2=NCTEX2+1
43813          ICTEX2(NCTEX2)='e'
43814C
43815          ILASTT=I+5
43816          NSKIP=5
43817          GOTO1000
43818C
43819        ENDIF
43820        NCTEX2=NCTEX2+1
43821        ICTEX2(NCTEX2)=ICTEXT(I)
43822C
43823 1000 CONTINUE
43824C
43825C               *****************
43826C               **  STEP 90--  **
43827C               **  EXIT       **
43828C               *****************
43829C
43830      IF(IBUGG3.EQ.'ON'.OR.ISUBRO.EQ.'STTR')THEN
43831        WRITE(ICOUT,999)
43832        CALL DPWRST('XXX','BUG ')
43833        WRITE(ICOUT,9011)
43834 9011   FORMAT('***** AT THE END       OF LIBPTR--')
43835        CALL DPWRST('XXX','BUG ')
43836        WRITE(ICOUT,9013)NCTEX2
43837 9013   FORMAT('NCTEX2 = ',I8)
43838        CALL DPWRST('XXX','BUG ')
43839        WRITE(ICOUT,9015)(ICTEX2(I)(1:1),I=1,MIN(80,NCTEX2))
43840 9015   FORMAT('ICTEX2 = ',80A1)
43841        CALL DPWRST('XXX','BUG ')
43842      ENDIF
43843C
43844      RETURN
43845      END
43846      SUBROUTINE LIMITS( A, B, INFIN, LOWER, UPPER )
43847      DOUBLE PRECISION A, B, LOWER, UPPER, PHI
43848      INTEGER INFIN
43849      LOWER = 0.0D0
43850      UPPER = 1.0D0
43851      IF ( INFIN .GE. 0 ) THEN
43852         IF ( INFIN .NE. 0 ) LOWER = PHI(A)
43853         IF ( INFIN .NE. 1 ) UPPER = PHI(B)
43854      ENDIF
43855C
43856      RETURN
43857      END
43858      SUBROUTINE LINEAR(IT,I1,I2,XS,YS,WH,WV,N,XMAXHF,I3,I4,
43859     1ALPHA,BETA,PRED,RES,ISUBRO,IBUGA3,IERROR)
43860C
43861C     PURPOSE--CARRY OUT A LEAST SQUARES WEIGHTED LINEAR FIT
43862C              OF THE DATA IN LOCATIONS I1 TO I2
43863C              OF THE HORIZONTALLY SORTED DATA
43864C              IN VARIABLES XS(.) AND YS(.).
43865C              AFTER THE FIT IS DONE, COMPUTE PREDICTED VALUES
43866C              AND RESIDUALS FOR ELEMENTS I3 TO I4 OF XS(.).
43867C     WRITTEN BY--JAMES J. FILLIBEN
43868C                 STATISTICAL ENGINEERING DIVISION
43869C                 INFORMATION TECHNOLOGY LABORATORY
43870C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
43871C                 GAITHERSBURG, MD 20899-8980
43872C                 PHONE--301-975-2855
43873C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
43874C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
43875C     LANGUAGE--ANSI FORTRAN (1977)
43876C     VERSION NUMBER--88/2
43877C     ORIGINAL VERSION--FEBRUARY   1988
43878C
43879C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
43880C
43881      CHARACTER*4 ISUBRO
43882      CHARACTER*4 IBUGA3
43883      CHARACTER*4 IERROR
43884C
43885      CHARACTER*4 ISUBN1
43886      CHARACTER*4 ISUBN2
43887C
43888C---------------------------------------------------------------------
43889C
43890      DIMENSION XS(*)
43891      DIMENSION YS(*)
43892      DIMENSION WH(*)
43893      DIMENSION WV(*)
43894      DIMENSION PRED(*)
43895      DIMENSION RES(*)
43896C
43897C-----COMMON----------------------------------------------------------
43898C
43899      INCLUDE 'DPCOP2.INC'
43900C
43901C-----START POINT-----------------------------------------------------
43902C
43903      ISUBN1='LINE'
43904      ISUBN2='AR  '
43905      IERROR='NO'
43906C
43907      IF(IBUGA3.EQ.'OFF'.AND.ISUBRO.NE.'NEAR')GOTO90
43908      WRITE(ICOUT,999)
43909  999 FORMAT(1X)
43910      CALL DPWRST('XXX','BUG ')
43911      WRITE(ICOUT,51)
43912   51 FORMAT('***** AT THE BEGINNING OF LINEAR--')
43913      CALL DPWRST('XXX','BUG ')
43914      WRITE(ICOUT,52)ISUBRO,IBUGA3,IERROR
43915   52 FORMAT('ISUBRO,IBUGA3,IERROR = ',A4,2X,A4,2X,A4)
43916      CALL DPWRST('XXX','BUG ')
43917      WRITE(ICOUT,53)IT,I1,I2,N,I3,I4
43918   53 FORMAT('IT,I1,I2,N,I3,I4 = ',6I8)
43919      CALL DPWRST('XXX','BUG ')
43920      WRITE(ICOUT,54)XMAXHF
43921   54 FORMAT('XMAXHF = ',E15.7)
43922      CALL DPWRST('XXX','BUG ')
43923      IF(N.LE.0)GOTO63
43924      DO61I=1,N
43925      WRITE(ICOUT,62)I,XS(I),YS(I),WH(I),WV(I)
43926   62 FORMAT('I,XS(I),YS(I),WH(I),WV(I) = ',I8,4E15.7)
43927      CALL DPWRST('XXX','BUG ')
43928   61 CONTINUE
43929   63 CONTINUE
43930   90 CONTINUE
43931C
43932C               ********************************************
43933C               **  STEP 1--                              **
43934C               **  CHECK THE INPUT ARGUMENTS FOR ERRORS  **
43935C               ********************************************
43936C
43937      IF(N.GE.1)GOTO119
43938      WRITE(ICOUT,999)
43939      CALL DPWRST('XXX','BUG ')
43940      WRITE(ICOUT,111)
43941  111 FORMAT('***** ERROR IN LINEAR--')
43942      CALL DPWRST('XXX','BUG ')
43943      WRITE(ICOUT,112)
43944  112 FORMAT('      THE INPUT FULL SAMPLE SIZE,')
43945      CALL DPWRST('XXX','BUG ')
43946      WRITE(ICOUT,113)
43947  113 FORMAT('      FOR WHICH LOWESS HORIZONTAL WEIGHTS')
43948      CALL DPWRST('XXX','BUG ')
43949      WRITE(ICOUT,114)
43950  114 FORMAT('      ARE TO BE COMPUTED, MUST BE 1 OR LARGER.')
43951      CALL DPWRST('XXX','BUG ')
43952      WRITE(ICOUT,115)
43953  115 FORMAT('      SUCH WAS NOT THE CASE HERE.')
43954      CALL DPWRST('XXX','BUG ')
43955      WRITE(ICOUT,116)N
43956  116 FORMAT('      THE FULL SAMPLE SIZE N = ',I8)
43957      CALL DPWRST('XXX','BUG ')
43958      WRITE(ICOUT,999)
43959      CALL DPWRST('XXX','BUG ')
43960      IERROR='YES'
43961      GOTO9000
43962  119 CONTINUE
43963C
43964      IF(IT.GE.1)GOTO129
43965      WRITE(ICOUT,999)
43966      CALL DPWRST('XXX','BUG ')
43967      WRITE(ICOUT,121)
43968  121 FORMAT('***** ERROR IN LINEAR--')
43969      CALL DPWRST('XXX','BUG ')
43970      WRITE(ICOUT,122)
43971  122 FORMAT('      THE INPUT TARGET OBSERVATION INDEX')
43972      CALL DPWRST('XXX','BUG ')
43973      WRITE(ICOUT,123)
43974  123 FORMAT('      FOR WHICH A LOWESS IS TO BE CARRIED OUT')
43975      CALL DPWRST('XXX','BUG ')
43976      WRITE(ICOUT,124)N
43977  124 FORMAT('      MUST BE BETWEEN 1 AND ',I8,' (INCLUSIVE).')
43978      CALL DPWRST('XXX','BUG ')
43979      WRITE(ICOUT,125)
43980  125 FORMAT('      SUCH WAS NOT THE CASE HERE.')
43981      CALL DPWRST('XXX','BUG ')
43982      WRITE(ICOUT,126)IT
43983  126 FORMAT('      THE TARGET OBSERVATION INDEX IT = ',I8)
43984      CALL DPWRST('XXX','BUG ')
43985      WRITE(ICOUT,999)
43986      CALL DPWRST('XXX','BUG ')
43987      IERROR='YES'
43988      GOTO9000
43989  129 CONTINUE
43990C
43991      IF(I1.LE.I2)GOTO139
43992      WRITE(ICOUT,999)
43993      CALL DPWRST('XXX','BUG ')
43994      WRITE(ICOUT,131)
43995  131 FORMAT('***** ERROR IN LINEAR--')
43996      CALL DPWRST('XXX','BUG ')
43997      WRITE(ICOUT,132)
43998  132 FORMAT('      THE  NEIGHBORHOOD LOWER INDEX')
43999      CALL DPWRST('XXX','BUG ')
44000      WRITE(ICOUT,133)
44001  133 FORMAT('      FOR WHICH A LOWESS IS TO BE CARRIED OUT')
44002      CALL DPWRST('XXX','BUG ')
44003      WRITE(ICOUT,134)
44004  134 FORMAT('      MUST NOT EXCEED THE NEIGHBORHOOD UPPER INDEX.')
44005      CALL DPWRST('XXX','BUG ')
44006      WRITE(ICOUT,135)
44007  135 FORMAT('      SUCH WAS NOT THE CASE HERE.')
44008      CALL DPWRST('XXX','BUG ')
44009      WRITE(ICOUT,136)IT
44010  136 FORMAT('      THE NEIGHBORHOOD INDICES I1 AND I2 = ',2I8)
44011      CALL DPWRST('XXX','BUG ')
44012      WRITE(ICOUT,999)
44013      CALL DPWRST('XXX','BUG ')
44014      IERROR='YES'
44015      GOTO9000
44016  139 CONTINUE
44017C
44018      IF(I3.LE.I4)GOTO149
44019      WRITE(ICOUT,999)
44020      CALL DPWRST('XXX','BUG ')
44021      WRITE(ICOUT,141)
44022  141 FORMAT('***** ERROR IN LINEAR--')
44023      CALL DPWRST('XXX','BUG ')
44024      WRITE(ICOUT,142)
44025  142 FORMAT('      THE  DESIRED LOWER INDEX FOR WHICH')
44026      CALL DPWRST('XXX','BUG ')
44027      WRITE(ICOUT,143)
44028  143 FORMAT('      LOWESS PREDICTED VALUES ARE TO BE COMPUTED')
44029      CALL DPWRST('XXX','BUG ')
44030      WRITE(ICOUT,144)
44031  144 FORMAT('      MUST NOT EXCEED THE DESIRED UPPER INDEX.')
44032      CALL DPWRST('XXX','BUG ')
44033      WRITE(ICOUT,145)
44034  145 FORMAT('      SUCH WAS NOT THE CASE HERE.')
44035      CALL DPWRST('XXX','BUG ')
44036      WRITE(ICOUT,146)I3,I4
44037  146 FORMAT('      THE DESIRED INDICES I3 AND I4 = ',2I8)
44038      CALL DPWRST('XXX','BUG ')
44039      WRITE(ICOUT,999)
44040      CALL DPWRST('XXX','BUG ')
44041      IERROR='YES'
44042      GOTO9000
44043  149 CONTINUE
44044C
44045C               ***********************************************
44046C               **  STEP 11--                                **
44047C               **  CARRY OUT A LEAST SQUARES WEIGHTED       **
44048C               **  LINEAR FIT                               **
44049C               ***********************************************
44050C
44051      IF(XMAXHF.LE.0.0)GOTO1200
44052      GOTO1300
44053C
44054C               ***********************************************
44055C               **  STEP 12--                                **
44056C               **  TREAT THE CASE WHEN ALL HORIXONTAL AXIS  **
44057C               **  VALUES ARE IDENTICAL                     **
44058C               ***********************************************
44059C
44060 1200 CONTINUE
44061      NN=I2-I1+1
44062      ANN=NN
44063C
44064      SUMY=0.0
44065      SUMW=0.0
44066      DO1210I=I1,I2
44067      W=WH(I)*WV(I)
44068      SUMY=SUMY+W*YS(I)
44069      SUMW=SUMW+W
44070 1210 CONTINUE
44071      YBAR=SUMY/SUMW
44072C
44073      ALPHA=YBAR
44074      BETA=0.0
44075C
44076      DO1220I=I3,I4
44077      PRED(I)=ALPHA
44078      RES(I)=YS(I)-PRED(I)
44079 1220 CONTINUE
44080C
44081      GOTO9000
44082C               *********************************************
44083C               **  STEP 13--                              **
44084C               **  TREAT THE CASE WHEN AT LEAST 1         **
44085C               **  HORIZONTAL AXIS VALUE IS DIFFERENT     **
44086C               *********************************************
44087C
44088 1300 CONTINUE
44089      NN=I2-I1+1
44090      ANN=NN
44091C
44092      SUMW=0.0
44093      DO1310I=I1,I2
44094      W=WH(I)*WV(I)
44095      SUMW=SUMW+W
44096 1310 CONTINUE
44097C
44098      IF(SUMW.GT.0.0)GOTO1319
44099      WRITE(ICOUT,1311)
44100 1311 FORMAT('***** ERROR IN LINEAR--')
44101      CALL DPWRST('XXX','BUG ')
44102      WRITE(ICOUT,1312)
44103 1312 FORMAT('      SUM OF WEIGHTS = 0')
44104      CALL DPWRST('XXX','BUG ')
44105      WRITE(ICOUT,1313)IT,I1,I2,N
44106 1313 FORMAT('IT,I1,I2,N = ',4I8)
44107      CALL DPWRST('XXX','BUG ')
44108      DO1314I=I1,I2
44109      WPROD=WH(I)*WV(I)
44110      WRITE(ICOUT,1315)I,WH(I),WV(I),WPROD
44111 1315 FORMAT('I,WH(I),WV(I),WPROD = ',I8,3E15.7)
44112      CALL DPWRST('XXX','BUG ')
44113 1314 CONTINUE
44114      IERROR='YES'
44115      GOTO9000
44116 1319 CONTINUE
44117C
44118      SUMX=0.0
44119      SUMY=0.0
44120      SUMW=0.0
44121      DO1320I=I1,I2
44122      W=WH(I)*WV(I)
44123      SUMX=SUMX+W*XS(I)
44124      SUMY=SUMY+W*YS(I)
44125      SUMW=SUMW+W
44126 1320 CONTINUE
44127      XBAR=SUMX/SUMW
44128      YBAR=SUMY/SUMW
44129C
44130      SUM1=0.0
44131      SUM2=0.0
44132      DO1330I=I1,I2
44133      W=WH(I)*WV(I)
44134      DELX=XS(I)-XBAR
44135      DELY=YS(I)-YBAR
44136      SUM1=SUM1+W*DELX*DELY
44137      SUM2=SUM2+W*DELX**2
44138 1330 CONTINUE
44139      BETA=0.0
44140      IF(SUM2.NE.0.0)BETA=SUM1/SUM2
44141      ALPHA=YBAR-BETA*XBAR
44142C
44143      DO1340I=I3,I4
44144      PRED(I)=ALPHA+BETA*XS(I)
44145      RES(I)=YS(I)-PRED(I)
44146 1340 CONTINUE
44147C
44148      GOTO9000
44149C
44150C               *****************
44151C               **  STEP 90--  **
44152C               **  EXIT       **
44153C               *****************
44154C
44155 9000 CONTINUE
44156      IF(IBUGA3.EQ.'OFF'.AND.ISUBRO.NE.'NEAR')GOTO9090
44157      WRITE(ICOUT,999)
44158      CALL DPWRST('XXX','BUG ')
44159      WRITE(ICOUT,9011)
44160 9011 FORMAT('***** AT THE END       OF LINEAR--')
44161      CALL DPWRST('XXX','BUG ')
44162      WRITE(ICOUT,9012)ISUBRO,IBUGA3,IERROR
44163 9012 FORMAT('ISUBRO,IBUGA3,IERROR = ',A4,2X,A4,2X,A4)
44164      CALL DPWRST('XXX','BUG ')
44165      WRITE(ICOUT,9013)IT,I1,I2,N,I3,I4
44166 9013 FORMAT('IT,I1,I2,N,I3,I4 = ',6I8)
44167      CALL DPWRST('XXX','BUG ')
44168      WRITE(ICOUT,9014)XMAXHF
44169 9014 FORMAT('XMAXHF = ',E15.7)
44170      CALL DPWRST('XXX','BUG ')
44171      IF(N.LE.0)GOTO9033
44172      DO9031I=I1,I2
44173      WRITE(ICOUT,9032)I,XS(I),YS(I),WH(I),WV(I)
44174 9032 FORMAT('I,XS(I),YS(I),WH(I),WV(I) = ',I8,4E15.7)
44175      CALL DPWRST('XXX','BUG ')
44176 9031 CONTINUE
44177 9033 CONTINUE
44178      WRITE(ICOUT,9040)ALPHA,BETA
44179 9040 FORMAT('ALPHA,BETA = ',2E15.7)
44180      CALL DPWRST('XXX','BUG ')
44181      IF(N.LE.0)GOTO9043
44182      DO9041I=I3,I4
44183      WRITE(ICOUT,9042)I,PRED(I),RES(I)
44184 9042 FORMAT('I,PRED(I),RES(I) = ',I8,2E15.7)
44185      CALL DPWRST('XXX','BUG ')
44186 9041 CONTINUE
44187 9043 CONTINUE
44188 9090 CONTINUE
44189C
44190      RETURN
44191      END
44192      SUBROUTINE LINFIT(Y,X,N,
44193     1                  ALPHA,BETA,XRESSD,XRESDF,CCXY,SDALPH,SDBETA,
44194     1                  CCALBE,
44195     1                  ISUBRO,IBUGA3,IERROR)
44196CCCCC THE ABOVE ARGUMENT LIST WAS AUGMENTED    DECEMBER 1993
44197C
44198C     PURPOSE--CARRY OUT A LEAST SQUARES LINEAR FIT
44199C              OF THE DATA IN Y(.) AND X(.).
44200C              AFTER THE FIT IS DONE, COMPUTE PREDICTED VALUES,
44201C              RESIDUALS, RESIDUAL STANDARD DEVIATION,
44202C              RESIDUAL DEGREES OF FREEDOM.
44203C              ALSO COMPUTE THE CORRELATION COEFFICIENT.
44204C     WRITTEN BY--JAMES J. FILLIBEN
44205C                 STATISTICAL ENGINEERING DIVISION
44206C                 INFORMATION TECHNOLOGY LABORATORY
44207C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
44208C                 GAITHERSBURG, MD 20899-8980
44209C                 PHONE--301-975-2855
44210C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
44211C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
44212C     LANGUAGE--ANSI FORTRAN (1977)
44213C     VERSION NUMBER--88/3
44214C     ORIGINAL VERSION--MARCH      1988
44215C     UPDATED         --DECEMBER   1993  SDA0, SDA1, CORR01
44216C     UPDATED         --DECEMBER   1993  PROTECT RESSD/DF
44217C
44218C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
44219C
44220      CHARACTER*4 ISUBRO
44221      CHARACTER*4 IBUGA3
44222      CHARACTER*4 IERROR
44223C
44224      CHARACTER*4 ISUBN1
44225      CHARACTER*4 ISUBN2
44226C
44227C---------------------------------------------------------------------
44228C
44229      DIMENSION Y(*)
44230      DIMENSION X(*)
44231CCCCC DIMENSION PRED(*)  DUE TO COMPLEXITIES WITH DP'S PRED & RES
44232CCCCC                    AND TEMP STORAGE
44233CCCCC DIMENSION RES(*)   DUE TO COMPLEXITIES WITH DP'S PRED & RES
44234CCCCC                    AND TEMP STORAGE
44235CCCCC DIMENSION SDPRED(*)
44236CCCCC DIMENSION SDRESV(*)
44237C
44238C-----COMMON----------------------------------------------------------
44239C
44240      INCLUDE 'DPCOP2.INC'
44241C
44242C-----START POINT-----------------------------------------------------
44243C
44244      ISUBN1='LINF'
44245      ISUBN2='IT  '
44246      IERROR='NO'
44247C
44248      AN=N
44249C
44250      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'NFIT')THEN
44251        WRITE(ICOUT,999)
44252  999   FORMAT(1X)
44253        CALL DPWRST('XXX','BUG ')
44254        WRITE(ICOUT,51)
44255   51   FORMAT('***** AT THE BEGINNING OF LINFIT--')
44256        CALL DPWRST('XXX','BUG ')
44257        WRITE(ICOUT,52)ISUBRO,IBUGA3,IERROR,N
44258   52   FORMAT('ISUBRO,IBUGA3,IERROR,N = ',3(A4,2X),I8)
44259        CALL DPWRST('XXX','BUG ')
44260        IF(N.GE.1)THEN
44261          DO61I=1,N
44262            WRITE(ICOUT,62)I,Y(I),X(I)
44263   62       FORMAT('I,Y(I),X(I) = ',I8,2G15.7)
44264            CALL DPWRST('XXX','BUG ')
44265   61     CONTINUE
44266        ENDIF
44267      ENDIF
44268C
44269C               ********************************************
44270C               **  STEP 1--                              **
44271C               **  CHECK THE INPUT ARGUMENTS FOR ERRORS  **
44272C               ********************************************
44273C
44274      IF(N.LT.1)THEN
44275        WRITE(ICOUT,999)
44276        CALL DPWRST('XXX','BUG ')
44277        WRITE(ICOUT,111)
44278  111   FORMAT('***** ERROR IN LINFIT--')
44279        CALL DPWRST('XXX','BUG ')
44280        WRITE(ICOUT,112)
44281  112   FORMAT('      THE INPUT SAMPLE SIZE MUST BE AT LEAST 1.')
44282        CALL DPWRST('XXX','BUG ')
44283        WRITE(ICOUT,116)N
44284  116   FORMAT('      THE SAMPLE SIZE = ',I8)
44285        CALL DPWRST('XXX','BUG ')
44286        WRITE(ICOUT,999)
44287        CALL DPWRST('XXX','BUG ')
44288        IERROR='YES'
44289        GOTO9000
44290      ENDIF
44291C
44292C               ***********************************************
44293C               **  STEP 11--                                **
44294C               **  CARRY OUT A LEAST SQUARES                **
44295C               **  LINEAR FIT                               **
44296C               ***********************************************
44297C
44298      SUMX=0.0
44299      SUMY=0.0
44300      DO1120I=1,N
44301         SUMX=SUMX+X(I)
44302         SUMY=SUMY+Y(I)
44303 1120 CONTINUE
44304      XBAR=SUMX/AN
44305      YBAR=SUMY/AN
44306C
44307      SUMXX=0.0
44308      SUMYY=0.0
44309      SUMXY=0.0
44310      DO1130I=1,N
44311         DELX=X(I)-XBAR
44312         DELY=Y(I)-YBAR
44313         SUMXX=SUMXX+DELX**2
44314         SUMYY=SUMYY+DELY**2
44315         SUMXY=SUMXY+DELX*DELY
44316 1130 CONTINUE
44317      BETA=0.0
44318      IF(SUMXX.NE.0.0)BETA=SUMXY/SUMXX
44319      ALPHA=YBAR-BETA*XBAR
44320C
44321CCCCC DO1140I=1,N
44322CCCCC    PRED(I)=ALPHA+BETA*X(I)
44323CCCCC    RES(I)=Y(I)-PRED(I)
44324C1140 CONTINUE
44325C
44326      XRESDF=N-2
44327      SUM=0.0
44328      DO1150I=1,N
44329         SUM=SUM+(Y(I)-(ALPHA+BETA*X(I)))**2
44330 1150 CONTINUE
44331      RESVAR=0.0
44332      IF(XRESDF.GT.0.0)RESVAR=SUM/XRESDF
44333      XRESSD=0.0
44334      IF(RESVAR.GT.0.0)XRESSD=SQRT(RESVAR)
44335C
44336C               ***********************************************
44337C               **  STEP 12--                                **
44338C               **  COMPUTE CORRELATION COEFFICIENT (X,Y)    **
44339C               ***********************************************
44340C
44341      ADENOM=0.0
44342      IF(SUMXX.GT.0.0.AND.SUMYY.GT.0.0)ADENOM=SQRT(SUMXX)*SQRT(SUMYY)
44343      CCXY=0.0
44344      IF(ADENOM.GT.0.0)CCXY=SUMXY/ADENOM
44345C
44346C               ************************************
44347C               **  STEP 13--                     **
44348C               **  COMPUTE SD OF ESTIMATES       **
44349C               **  AND CORR(ESTIMATES)           **
44350C               ************************************
44351C
44352      SDALPH=0.0
44353      SDBETA=0.0
44354      CCALBE=0.0
44355      SUM=0.0
44356      DO1200I=1,N
44357         SUM=SUM+X(I)*X(I)
44358 1200 CONTINUE
44359      IF(SUMXX.GT.0.0)THEN
44360         SDALPH=XRESSD*SQRT(SUM/(AN*SUMXX))
44361         SDBETA=XRESSD*SQRT(1.0/SUMXX)
44362      ENDIF
44363      IF(SUM.GT.0.0)THEN
44364         ANUM=(-XBAR)
44365         ADENOM=SQRT(SUM/AN)
44366         CCALBE=ANUM/ADENOM
44367      ENDIF
44368C
44369C               *******************************
44370C               **  STEP 14--                **
44371C               **  COMPUTE SD(PRED VALUES)  **
44372C               *******************************
44373C
44374CCCCC DO1300I=1,N
44375CCCCC    TERM1=1.0/AN
44376CCCCC    TERM2=0.0
44377CCCCC    IF(SUMXX.GT.0.0)TERM2=((X(I)-XBAR)**2)/SUMXX
44378CCCCC    SDPRED(I)=SDRES*SQRT(TERM1+TERM2)
44379CCCCC    SDRESV(I)=SDRES*SQRT(1.0-TERM1-TERM2)
44380C1300 CONTINUE
44381C
44382      GOTO9000
44383C
44384C               *****************
44385C               **  STEP 90--  **
44386C               **  EXIT       **
44387C               *****************
44388C
44389 9000 CONTINUE
44390      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'NFIT')THEN
44391        WRITE(ICOUT,999)
44392        CALL DPWRST('XXX','BUG ')
44393        WRITE(ICOUT,9011)
44394 9011   FORMAT('***** AT THE END       OF LINFIT--')
44395        CALL DPWRST('XXX','BUG ')
44396        WRITE(ICOUT,9031)IERROR,YBAR,XBAR
44397 9031   FORMAT('IERROR,YBAR,XBAR = ',A4,2X,2G15.7)
44398        CALL DPWRST('XXX','BUG ')
44399        WRITE(ICOUT,9032)SUMXX,SUMYY,SUMXY
44400 9032   FORMAT('SUMXX,SUMYY,SUMXY = ',3G15.7)
44401        CALL DPWRST('XXX','BUG ')
44402        WRITE(ICOUT,9036)ALPHA,BETA,XRESSD,XRESDF
44403 9036   FORMAT('ALPHA,BETA,XRESSD,XRESDF = ',4G15.7)
44404        CALL DPWRST('XXX','BUG ')
44405        WRITE(ICOUT,9038)ADENOM,CCXY
44406 9038 FORMAT('ADENOM,CCXY = ',2E15.7)
44407      CALL DPWRST('XXX','BUG ')
44408        WRITE(ICOUT,9039)ADENOM,CCXY,SDALPH,SDBETA,CCALBE
44409 9039   FORMAT('ADENOM,CCXY,SDALPH,SDBETA,CCALBE = ',5G15.7)
44410        CALL DPWRST('XXX','BUG ')
44411      ENDIF
44412C
44413      RETURN
44414      END
44415      SUBROUTINE LINFI2(Y,X,N,ALPHA,BETA,
44416     1                  ISUBRO,IBUGA3,IERROR)
44417C
44418C     PURPOSE--CARRY OUT A LEAST SQUARES LINEAR FIT
44419C              OF THE DATA IN Y(.) AND X(.).
44420C              THIS IS A MODIFIED VERSION OF LINFIT.  THE
44421C              DISTINCTION IS THAT THIS VERSION HAS BEEN PRUNED
44422C              DOWN TO ONLY GENERATE THE PARAMETER ESTIMATES
44423C              (USED BY PPCC PLOT FOR ESTIMATES OF LOCATION AND
44424C              SCALE).
44425C     WRITTEN BY--JAMES J. FILLIBEN
44426C                 STATISTICAL ENGINEERING DIVISION
44427C                 INFORMATION TECHNOLOGY LABORATORY
44428C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
44429C                 GAITHERSBURG, MD 20899-8980
44430C                 PHONE--301-975-2855
44431C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
44432C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
44433C     LANGUAGE--ANSI FORTRAN (1977)
44434C     VERSION NUMBER--2004/5
44435C     ORIGINAL VERSION--MAY        2004
44436C
44437C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
44438C
44439      CHARACTER*4 ISUBRO
44440      CHARACTER*4 IBUGA3
44441      CHARACTER*4 IERROR
44442C
44443      CHARACTER*4 ISUBN1
44444      CHARACTER*4 ISUBN2
44445C
44446C---------------------------------------------------------------------
44447C
44448      DIMENSION Y(*)
44449      DIMENSION X(*)
44450C
44451C-----COMMON----------------------------------------------------------
44452C
44453      INCLUDE 'DPCOP2.INC'
44454C
44455C-----START POINT-----------------------------------------------------
44456C
44457      ISUBN1='LINF'
44458      ISUBN2='I2  '
44459      IERROR='NO'
44460C
44461      AN=N
44462C
44463      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'NFI2')THEN
44464        WRITE(ICOUT,999)
44465  999   FORMAT(1X)
44466        CALL DPWRST('XXX','BUG ')
44467        WRITE(ICOUT,51)
44468   51   FORMAT('***** AT THE BEGINNING OF LINFI2--')
44469        CALL DPWRST('XXX','BUG ')
44470        WRITE(ICOUT,52)ISUBRO,IBUGA3,IERROR,N
44471   52   FORMAT('ISUBRO,IBUGA3,IERROR,N = ',3(A4,2X),I8)
44472        CALL DPWRST('XXX','BUG ')
44473        IF(N.GE.1)THEN
44474          DO61I=1,N
44475            WRITE(ICOUT,62)I,Y(I),X(I)
44476   62       FORMAT('I,Y(I),X(I) = ',I8,2G15.7)
44477            CALL DPWRST('XXX','BUG ')
44478   61     CONTINUE
44479        ENDIF
44480      ENDIF
44481C
44482C               ********************************************
44483C               **  STEP 1--                              **
44484C               **  CHECK THE INPUT ARGUMENTS FOR ERRORS  **
44485C               ********************************************
44486C
44487      IF(N.LT.1)THEN
44488        ALPHA=0.0
44489        BETA=1.0
44490        GOTO9000
44491      ENDIF
44492C
44493C               ***********************************************
44494C               **  STEP 11--                                **
44495C               **  CARRY OUT A LEAST SQUARES                **
44496C               **  LINEAR FIT                               **
44497C               ***********************************************
44498C
44499      SUMX=0.0
44500      SUMY=0.0
44501      DO1120I=1,N
44502         SUMX=SUMX+X(I)
44503         SUMY=SUMY+Y(I)
44504 1120 CONTINUE
44505      XBAR=SUMX/AN
44506      YBAR=SUMY/AN
44507C
44508      SUMXX=0.0
44509      SUMYY=0.0
44510      SUMXY=0.0
44511      DO1130I=1,N
44512         DELX=X(I)-XBAR
44513         DELY=Y(I)-YBAR
44514         SUMXX=SUMXX+DELX**2
44515         SUMYY=SUMYY+DELY**2
44516         SUMXY=SUMXY+DELX*DELY
44517 1130 CONTINUE
44518      BETA=0.0
44519      IF(SUMXX.NE.0.0)BETA=SUMXY/SUMXX
44520      ALPHA=YBAR-BETA*XBAR
44521C
44522C               *****************
44523C               **  STEP 90--  **
44524C               **  EXIT       **
44525C               *****************
44526C
44527 9000 CONTINUE
44528      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'NFI2')THEN
44529        WRITE(ICOUT,999)
44530        CALL DPWRST('XXX','BUG ')
44531        WRITE(ICOUT,9011)
44532 9011   FORMAT('***** AT THE END       OF LINFI2--')
44533        CALL DPWRST('XXX','BUG ')
44534        WRITE(ICOUT,9031)YBAR,XBAR,ALPHA,BETA
44535 9031   FORMAT('YBAR,XBAR,ALPHA,BETA = ',4G15.7)
44536        CALL DPWRST('XXX','BUG ')
44537        WRITE(ICOUT,9032)SUMXX,SUMYY,SUMXY
44538 9032   FORMAT('SUMXX,SUMYY,SUMXY = ',3G15.7)
44539        CALL DPWRST('XXX','BUG ')
44540      ENDIF
44541C
44542      RETURN
44543      END
44544      SUBROUTINE LINFI3(Y,X,N,
44545     1                  ALPHA,BETA,XRESSD,XRESDF,CCXY,SDALPH,SDBETA,
44546     1                  CCALBE,
44547     1                  ISUBRO,IBUGA3,IERROR)
44548C
44549C     PURPOSE--CARRY OUT A LEAST SQUARES LINEAR FIT OF THE DATA IN Y(.)
44550C              AND X(.).  AFTER THE FIT IS DONE, COMPUTE PREDICTED
44551C              VALUES, RESIDUALS, RESIDUAL STANDARD DEVIATION, RESIDUAL
44552C              DEGREES OF FREEDOM, AND THE CORRELATION COEFFICIENT.
44553C
44554C              THIS IS A COPY OF LINFIT THAT IMPLEMENTS THE FIT WITH
44555C              NO INTERCEPT TERM.
44556C
44557C     WRITTEN BY--JAMES J. FILLIBEN
44558C                 STATISTICAL ENGINEERING DIVISION
44559C                 INFORMATION TECHNOLOGY LABORATORY
44560C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
44561C                 GAITHERSBURG, MD 20899-8980
44562C                 PHONE--301-975-2855
44563C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
44564C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
44565C     LANGUAGE--ANSI FORTRAN (1977)
44566C     VERSION NUMBER--2016/11
44567C     ORIGINAL VERSION--NOVEMBER   2016
44568C
44569C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
44570C
44571      CHARACTER*4 ISUBRO
44572      CHARACTER*4 IBUGA3
44573      CHARACTER*4 IERROR
44574C
44575      CHARACTER*4 ISUBN1
44576      CHARACTER*4 ISUBN2
44577C
44578C---------------------------------------------------------------------
44579C
44580      DIMENSION Y(*)
44581      DIMENSION X(*)
44582C
44583C-----COMMON----------------------------------------------------------
44584C
44585      INCLUDE 'DPCOP2.INC'
44586C
44587C-----START POINT-----------------------------------------------------
44588C
44589      ISUBN1='LINF'
44590      ISUBN2='IT  '
44591      IERROR='NO'
44592C
44593      AN=N
44594C
44595      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'NFI3')THEN
44596        WRITE(ICOUT,999)
44597  999   FORMAT(1X)
44598        CALL DPWRST('XXX','BUG ')
44599        WRITE(ICOUT,51)
44600   51   FORMAT('***** AT THE BEGINNING OF LINFI3--')
44601        CALL DPWRST('XXX','BUG ')
44602        WRITE(ICOUT,52)ISUBRO,IBUGA3,IERROR,N
44603   52   FORMAT('ISUBRO,IBUGA3,IERROR,N = ',3(A4,2X),I8)
44604        CALL DPWRST('XXX','BUG ')
44605        IF(N.GE.1)THEN
44606          DO61I=1,N
44607            WRITE(ICOUT,62)I,Y(I),X(I)
44608   62       FORMAT('I,Y(I),X(I) = ',I8,2G15.7)
44609            CALL DPWRST('XXX','BUG ')
44610   61     CONTINUE
44611        ENDIF
44612      ENDIF
44613C
44614C               ********************************************
44615C               **  STEP 1--                              **
44616C               **  CHECK THE INPUT ARGUMENTS FOR ERRORS  **
44617C               ********************************************
44618C
44619      IF(N.LT.1)THEN
44620        WRITE(ICOUT,999)
44621        CALL DPWRST('XXX','BUG ')
44622        WRITE(ICOUT,111)
44623  111   FORMAT('***** ERROR IN LINFI3--')
44624        CALL DPWRST('XXX','BUG ')
44625        WRITE(ICOUT,112)
44626  112   FORMAT('      THE INPUT SAMPLE SIZE MUST BE AT LEAST 1.')
44627        CALL DPWRST('XXX','BUG ')
44628        WRITE(ICOUT,116)N
44629  116   FORMAT('      THE SAMPLE SIZE = ',I8)
44630        CALL DPWRST('XXX','BUG ')
44631        WRITE(ICOUT,999)
44632        CALL DPWRST('XXX','BUG ')
44633        IERROR='YES'
44634        GOTO9000
44635      ENDIF
44636C
44637C               ***********************************************
44638C               **  STEP 11--                                **
44639C               **  CARRY OUT A LEAST SQUARES                **
44640C               **  LINEAR FIT                               **
44641C               ***********************************************
44642C
44643      SUMX=0.0
44644      SUMY=0.0
44645      DO1120I=1,N
44646         SUMX=SUMX+X(I)
44647         SUMY=SUMY+Y(I)
44648 1120 CONTINUE
44649      XBAR=SUMX/AN
44650      YBAR=SUMY/AN
44651C
44652      SUMXX=0.0
44653      SUMYY=0.0
44654      SUMXY=0.0
44655      DO1130I=1,N
44656         DELX=X(I)-XBAR
44657         DELY=Y(I)-YBAR
44658         SUMXX=SUMXX+DELX**2
44659         SUMYY=SUMYY+DELY**2
44660         SUMXY=SUMXY+DELX*DELY
44661 1130 CONTINUE
44662      BETA=0.0
44663      IF(SUMXX.NE.0.0)BETA=SUMXY/SUMXX
44664      ALPHA=0.0
44665C
44666      XRESDF=N-1
44667      SUM=0.0
44668      DO1150I=1,N
44669         SUM=SUM+(Y(I)-(ALPHA+BETA*X(I)))**2
44670 1150 CONTINUE
44671      RESVAR=0.0
44672      IF(XRESDF.GT.0.0)RESVAR=SUM/XRESDF
44673      XRESSD=0.0
44674      IF(RESVAR.GT.0.0)XRESSD=SQRT(RESVAR)
44675C
44676C               ***********************************************
44677C               **  STEP 12--                                **
44678C               **  COMPUTE CORRELATION COEFFICIENT (X,Y)    **
44679C               ***********************************************
44680C
44681      ADENOM=0.0
44682      IF(SUMXX.GT.0.0.AND.SUMYY.GT.0.0)ADENOM=SQRT(SUMXX)*SQRT(SUMYY)
44683      CCXY=0.0
44684      IF(ADENOM.GT.0.0)CCXY=SUMXY/ADENOM
44685C
44686C               ************************************
44687C               **  STEP 13--                     **
44688C               **  COMPUTE SD OF ESTIMATES       **
44689C               **  AND CORR(ESTIMATES)           **
44690C               ************************************
44691C
44692      SDALPH=0.0
44693      SDBETA=0.0
44694      CCALBE=0.0
44695      SUM=0.0
44696      DO1200I=1,N
44697         SUM=SUM+X(I)*X(I)
44698 1200 CONTINUE
44699      IF(SUMXX.GT.0.0)THEN
44700         SDBETA=XRESSD*SQRT(1.0/SUMXX)
44701      ENDIF
44702      IF(SUM.GT.0.0)THEN
44703         ANUM=(-XBAR)
44704         ADENOM=SQRT(SUM/AN)
44705         CCALBE=ANUM/ADENOM
44706      ENDIF
44707C
44708      GOTO9000
44709C
44710C               *****************
44711C               **  STEP 90--  **
44712C               **  EXIT       **
44713C               *****************
44714C
44715 9000 CONTINUE
44716      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'NFI3')THEN
44717        WRITE(ICOUT,999)
44718        CALL DPWRST('XXX','BUG ')
44719        WRITE(ICOUT,9011)
44720 9011   FORMAT('***** AT THE END       OF LINFI3--')
44721        CALL DPWRST('XXX','BUG ')
44722        WRITE(ICOUT,9031)IERROR,YBAR,XBAR
44723 9031   FORMAT('IERROR,YBAR,XBAR = ',A4,2X,2G15.7)
44724        CALL DPWRST('XXX','BUG ')
44725        WRITE(ICOUT,9032)SUMXX,SUMYY,SUMXY
44726 9032   FORMAT('SUMXX,SUMYY,SUMXY = ',3G15.7)
44727        CALL DPWRST('XXX','BUG ')
44728        WRITE(ICOUT,9036)ALPHA,BETA,XRESSD,XRESDF
44729 9036   FORMAT('ALPHA,BETA,XRESSD,XRESDF = ',4G15.7)
44730        CALL DPWRST('XXX','BUG ')
44731        WRITE(ICOUT,9038)ADENOM,CCXY
44732 9038 FORMAT('ADENOM,CCXY = ',2G15.7)
44733      CALL DPWRST('XXX','BUG ')
44734        WRITE(ICOUT,9039)ADENOM,CCXY,SDALPH,SDBETA,CCALBE
44735 9039   FORMAT('ADENOM,CCXY,SDALPH,SDBETA,CCALBE = ',5G15.7)
44736        CALL DPWRST('XXX','BUG ')
44737      ENDIF
44738C
44739      RETURN
44740      END
44741      SUBROUTINE LININT(Y,X,N,X2,N2,IWRITE,Y2,
44742     1                  YTEMP,YDIST,XDIST,
44743     1                  IBUGG3,ISUBRO,IERROR)
44744C
44745C     PURPOSE--COMPUTE LINEAR INTERPOLATION OF A VARIABLE
44746C              (GENERATE INTERPOLATED POINTS).
44747C     INPUT  ARGUMENTS--Y      = SINGLE PRECISION VARIABLE
44748C                                CONTAINING THE ORIGINAL
44749C                                VERTICAL AXIS DATA POINTS.
44750C                     --X      = SINGLE PRECISION VARIABLE
44751C                                CONTAINING THE ORIGINAL
44752C                                HORIZONTAL AXIS DATA POINTS.
44753C                     --X2     = SINGLE PRECISION VARIABLE
44754C                                CONTAINING THE DESIRED
44755C                                HORIZONTAL AXIS INTERPOLATION
44756C                                POINTS.
44757C     OUTPUT ARGUMENTS--Y2     = SINGLE PRECISION VARIABLE
44758C                                CONTAINING THE COMPUTED
44759C                                VERTICAL AXIS INTERPOLATION
44760C                                POINTS.
44761C     NOTE--IT IS PROBABLY NOT PERMISSIBLE TO HAVE THE OUTPUT VECTOR Y2(.)
44762C           BEING IDENTICAL TO THE INPUT VECTOR Y(.)
44763C     NOTE--THIS SUBROUTINE DOES NOT ASSUME THAT THE INPUT
44764C           DATA IS ALREADY SORTED ACCORDING TO THE
44765C           HORIZONTAL AXIS VARIABLE.
44766C           SUCH SORTING IS DOEN HEREIN.
44767C     CAUTION--THE INPUT VECTORS Y AND X ARE SORTED HEREIN
44768C              AND SO MAY BE DIFFERENT UPON LEAVING THIS SUBROUTINE
44769C              THAN UPON ENTERING THIS SUBROUTINE.
44770C     WRITTEN BY--ALAN HECKERT
44771C                 STATISTICAL ENGINEERING DIVISION
44772C                 INFORMATION TECHNOLOGY LABORATORY
44773C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
44774C                 GAITHERSBURG, MD 20899-8980
44775C                 PHONE--301-975-2899
44776C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
44777C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
44778C     LANGUAGE--ANSI FORTRAN (1977)
44779C     VERSION NUMBER--94/5
44780C     ORIGINAL VERSION--MAY       1994.
44781C     UPDATED         --JULY      2019. MOVE CREATION OF SCRATCH
44782C                                       STORAGE TO CALLING ROUTINE
44783C
44784C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
44785C
44786      CHARACTER*4 IWRITE
44787      CHARACTER*4 IBUGG3
44788      CHARACTER*4 ISUBRO
44789      CHARACTER*4 IERROR
44790C
44791      CHARACTER*4 ISUBN1
44792      CHARACTER*4 ISUBN2
44793      CHARACTER*4 ISTEPN
44794C
44795C---------------------------------------------------------------------
44796C
44797      INCLUDE 'DPCOPA.INC'
44798C
44799      DIMENSION Y(*)
44800      DIMENSION X(*)
44801      DIMENSION X2(*)
44802      DIMENSION Y2(*)
44803      DIMENSION YTEMP(*)
44804      DIMENSION YDIST(*)
44805      DIMENSION XDIST(*)
44806C
44807C-----COMMON VARIABLES (GENERAL)--------------------------------------
44808C
44809      INCLUDE 'DPCOP2.INC'
44810C
44811C-----START POINT-----------------------------------------------------
44812C
44813      ISUBN1='LINI'
44814      ISUBN2='NT  '
44815      IERROR='NO'
44816C
44817      IF(IBUGG3.EQ.'ON'.OR.ISUBRO.EQ.'NINT')THEN
44818        WRITE(ICOUT,999)
44819  999   FORMAT(1X)
44820        CALL DPWRST('XXX','BUG ')
44821        WRITE(ICOUT,51)
44822   51   FORMAT('***** AT THE BEGINNING OF LININT--')
44823        CALL DPWRST('XXX','BUG ')
44824        WRITE(ICOUT,52)N,N2
44825   52   FORMAT('N,N2 = ',2I8)
44826        CALL DPWRST('XXX','BUG ')
44827        DO55I=1,N
44828          WRITE(ICOUT,56)I,Y(I),X(I)
44829   56     FORMAT('I,Y(I),X(I) = ',I8,2G15.7)
44830          CALL DPWRST('XXX','BUG ')
44831   55   CONTINUE
44832        DO65I=1,N2
44833          WRITE(ICOUT,66)I,X2(I)
44834   66     FORMAT('I,X2(I) = ',I8,G15.7)
44835          CALL DPWRST('XXX','BUG ')
44836   65   CONTINUE
44837      ENDIF
44838C
44839C               ****************************************
44840C               **  STEP 11--                         **
44841C               **  SORT THE INPUT DATA ACCORDING     **
44842C               **  TO THE HORIZONTAL AXIS VARIABLE   **
44843C               ****************************************
44844C
44845      CALL SORTC(X,Y,N,X,Y)
44846C
44847C               *******************************************************
44848C               **  STEP 12--                                        **
44849C               **  DETERMINE THE NUMBER OF DISTINCT X VALUES        **
44850C               *******************************************************
44851C
44852      ISTEPN='12'
44853      IF(IBUGG3.EQ.'ON'.OR.ISUBRO.EQ.'NINT')
44854     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
44855C
44856      NDIST=0
44857      DO1210I=1,N
44858        IF(NDIST.EQ.0)GOTO1220
44859        DO1215I2=1,NDIST
44860          IF(X(I).EQ.XDIST(I2))GOTO1210
44861 1215   CONTINUE
44862 1220   CONTINUE
44863        NDIST=NDIST+1
44864        XDIST(NDIST)=X(I)
44865 1210 CONTINUE
44866C
44867      CALL SORT(XDIST,NDIST,XDIST)
44868C
44869C               *****************************************************
44870C               **  STEP 13--                                      **
44871C               **  IF ALL DISTINCT (THAT IS, NO REPLICATION),     **
44872C               **  (THAT IS, HAVE NO REPLICATION),                **
44873C               **  THEN COPY OVER Y VALUES.                       **
44874C               **  IF NOT ALL DISTINCT                            **
44875C               **  (THAT IS, HAVE SOME REPLICATION),              **
44876C               **  THEN COMPUTE A MEAN VALUE OVER THE REPLICATES  **
44877C               **  AND TREAT THAT AS THE COMMON VALUE.            **
44878C               **  THE CORE OF THE INTERPOLATION CODE             **
44879C               **  IS EXPECTING SORTED, DISTINCT X VALUES.        **
44880C               *****************************************************
44881C
44882      IF(NDIST.EQ.N)THEN
44883        DO1311K=1,NDIST
44884          YDIST(K)=Y(K)
44885 1311   CONTINUE
44886      ELSE
44887        DO1321K=1,NDIST
44888          TAG=XDIST(K)
44889          J=0
44890          DO1322I=1,N
44891            IF(X(I).EQ.TAG)THEN
44892              J=J+1
44893              YTEMP(J)=Y(I)
44894            ENDIF
44895 1322     CONTINUE
44896          NI=J
44897          CALL MEAN(YTEMP,NI,IWRITE,YMEAN,IBUGG3,IERROR)
44898          YDIST(K)=YMEAN
44899 1321   CONTINUE
44900      ENDIF
44901C
44902C               ********************************************
44903C               **  STEP 14--                             **
44904C               **  COMPUTE INTERPOLATED VALUES           **
44905C               ********************************************
44906C
44907      CALL LININ2(YDIST,XDIST,NDIST,X2,N2,Y2,IBUGG3,ISUBRO,IERROR)
44908C
44909C               *****************
44910C               **  STEP 90--  **
44911C               **  EXIT.      **
44912C               *****************
44913C
44914      IF(IBUGG3.EQ.'ON'.OR.ISUBRO.EQ.'NINT')THEN
44915        WRITE(ICOUT,999)
44916        CALL DPWRST('XXX','BUG ')
44917        WRITE(ICOUT,9011)
44918 9011   FORMAT('***** AT THE END       OF LININT--')
44919        CALL DPWRST('XXX','BUG ')
44920        WRITE(ICOUT,9051)NDIST
44921 9051   FORMAT('NDIST = ',I8)
44922        CALL DPWRST('XXX','BUG ')
44923        DO9052I=1,NDIST
44924          WRITE(ICOUT,9053)I,XDIST(I),YDIST(I)
44925 9053     FORMAT('I,XDIST(I),YDIST(I) = ',I8,2G15.7)
44926          CALL DPWRST('XXX','BUG ')
44927 9052   CONTINUE
44928      ENDIF
44929C
44930      RETURN
44931      END
44932      SUBROUTINE LININ2(Y,X,N,X2,N2,Y2,IBUGG3,ISUBRO,IERROR)
44933C
44934C     PURPOSE--COMPUTE LINEAR INTERPOLATION OF A VARIABLE
44935C              (GENERATE INTERPOLATED POINTS).
44936C     INPUT  ARGUMENTS--Y      = SINGLE PRECISION VARIABLE
44937C                                CONTAINING THE ORIGINAL
44938C                                VERTICAL AXIS DATA POINTS.
44939C                     --X      = SINGLE PRECISION VARIABLE
44940C                                CONTAINING THE ORIGINAL
44941C                                HORIZONTAL AXIS DATA POINTS.
44942C                     --X2     = SINGLE PRECISION VARIABLE
44943C                                CONTAINING THE DESIRED
44944C                                HORIZONTAL AXIS INTERPOLATION
44945C                                POINTS.
44946C     OUTPUT ARGUMENTS--Y2     = SINGLE PRECISION VARIABLE
44947C                                CONTAINING THE COMPUTED
44948C                                VERTICAL AXIS INTERPOLATION
44949C                                POINTS.
44950C     NOTE--IT IS PROBABLY NOT PERMISSIBLE TO HAVE THE OUTPUT VECTOR Y2(.)
44951C           BEING IDENTICAL TO THE INPUT VECTOR Y(.)
44952C     NOTE--THIS SUBROUTINE DOES NOT ASSUME THAT THE INPUT
44953C           DATA IS ALREADY SORTED ACCORDING TO THE
44954C           HORIZONTAL AXIS VARIABLE.
44955C           SUCH SORTING IS DOEN HEREIN.
44956C     CAUTION--THE INPUT VECTORS Y AND X ARE SORTED HEREIN
44957C              AND SO MAY BE DIFFERENT UPON LEAVING THIS SUBROUTINE
44958C              THAN UPON ENTERING THIS SUBROUTINE.
44959C     WRITTEN BY--ALAN HECKERT
44960C                 STATISTICAL ENGINEERING DIVISION
44961C                 INFORMATION TECHNOLOGY LABORATORY
44962C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
44963C                 GAITHERSBURG, MD 20899-8980
44964C                 PHONE--301-975-2899
44965C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
44966C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
44967C     LANGUAGE--ANSI FORTRAN (1977)
44968C     VERSION NUMBER--94/5
44969C     ORIGINAL VERSION--MAY L     1994.
44970C
44971C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
44972C
44973      CHARACTER*4 IBUGG3
44974      CHARACTER*4 ISUBRO
44975      CHARACTER*4 IERROR
44976C
44977      CHARACTER*4 ISUBN1
44978      CHARACTER*4 ISUBN2
44979C
44980C---------------------------------------------------------------------
44981C
44982C
44983      DIMENSION Y(*)
44984      DIMENSION X(*)
44985      DIMENSION X2(*)
44986      DIMENSION Y2(*)
44987C
44988C-----COMMON VARIABLES (GENERAL)--------------------------------------
44989C
44990      INCLUDE 'DPCOP2.INC'
44991C
44992C-----START POINT-----------------------------------------------------
44993C
44994      ISUBN1='LINI'
44995      ISUBN2='N2  '
44996      IERROR='NO'
44997C
44998      I2=0
44999C
45000      IF(IBUGG3.EQ.'OFF'.AND.ISUBRO.NE.'NIN2')GOTO90
45001      WRITE(ICOUT,999)
45002  999 FORMAT(1X)
45003      CALL DPWRST('XXX','BUG ')
45004      WRITE(ICOUT,51)
45005   51 FORMAT('***** AT THE BEGINNING OF LININ2--')
45006      CALL DPWRST('XXX','BUG ')
45007      WRITE(ICOUT,52)N
45008   52 FORMAT('N = ',I8)
45009      CALL DPWRST('XXX','BUG ')
45010      DO55I=1,N
45011      WRITE(ICOUT,56)I,Y(I),X(I)
45012   56 FORMAT('I,Y(I),X(I) = ',I8,2E15.7)
45013      CALL DPWRST('XXX','BUG ')
45014   55 CONTINUE
45015      WRITE(ICOUT,62)N2
45016   62 FORMAT('N2 = ',I8)
45017      CALL DPWRST('XXX','BUG ')
45018      DO65I=1,N2
45019      WRITE(ICOUT,66)I,X2(I)
45020   66 FORMAT('I,X2(I) = ',I8,E15.7)
45021      CALL DPWRST('XXX','BUG ')
45022   65 CONTINUE
45023   90 CONTINUE
45024C
45025      NM1=N-1
45026      NM2=N-2
45027C
45028C               ****************************************
45029C               **  STEP 31--
45030C               **  COMPUTE INTERPOLATION VALUES
45031C               ****************************************
45032C
45033      DO3100J=1,N2
45034      XT=X2(J)
45035      IF(X(1).GT.XT.OR.XT.GT.X(N))GOTO3110
45036      GOTO3119
45037C
45038 3110 CONTINUE
45039      WRITE(ICOUT,999)
45040      CALL DPWRST('XXX','BUG ')
45041      WRITE(ICOUT,3111)
45042 3111 FORMAT('***** ERROR IN LININ2--')
45043      CALL DPWRST('XXX','BUG ')
45044      WRITE(ICOUT,3112)
45045 3112 FORMAT('      AN ATTEMPT WAS MADE TO COMPUTE')
45046      CALL DPWRST('XXX','BUG ')
45047      WRITE(ICOUT,3113)
45048 3113 FORMAT('      A SMOOTHED VALUE BEYOND THE RANGE')
45049      CALL DPWRST('XXX','BUG ')
45050      WRITE(ICOUT,3114)
45051 3114 FORMAT('      OF THE DATA--SUCH EXTRAPOLATION')
45052      CALL DPWRST('XXX','BUG ')
45053      WRITE(ICOUT,3115)
45054 3115 FORMAT('      IS UNRELIABLE AND NOT PERMITTED.')
45055      CALL DPWRST('XXX','BUG ')
45056      WRITE(ICOUT,3116)X(1)
45057 3116 FORMAT('         SMALLEST DATA POINT X(1)      = ',E15.7)
45058      CALL DPWRST('XXX','BUG ')
45059      WRITE(ICOUT,3117)X(N)
45060 3117 FORMAT('         LARGEST DATA POINT  X(N)      = ',E15.7)
45061      CALL DPWRST('XXX','BUG ')
45062      WRITE(ICOUT,3118)XT
45063 3118 FORMAT('         ATTEMPTED EXTRAPOLATION POINT = ',E15.7)
45064      CALL DPWRST('XXX','BUG ')
45065      IERROR='YES'
45066      GOTO9000
45067 3119 CONTINUE
45068C
45069      DO3200I=1,N
45070      I2=I
45071      IF(X(I).EQ.XT)GOTO3210
45072      IF(X(I).GT.XT)GOTO3220
45073 3200 CONTINUE
45074C
45075 3210 CONTINUE
45076      Y2(J)=Y(I2)
45077      GOTO3100
45078C
45079 3220 CONTINUE
45080      K1=I2-1
45081      DELX=X(I2)-X(K1)
45082      DELY=Y(I2)-Y(K1)
45083      SLOPE=DELY/DELX
45084      Y2(J)=SLOPE*(XT-X(K1))+Y(K1)
45085C
45086 3100 CONTINUE
45087C
45088C               ****************************************
45089C               **  STEP 41--
45090C               **  IF CALLED FOR,
45091C               **  WRITE OUT INTERPOLATION VALUES
45092C               ****************************************
45093C
45094      IF(IBUGG3.EQ.'OFF'.AND.ISUBRO.NE.'NIN2')GOTO4190
45095      DO4100J=1,N2
45096      WRITE(ICOUT,4110)X2(J),Y2(J)
45097      CALL DPWRST('XXX','BUG ')
45098 4110 FORMAT('X2(J),Y2(J) = ',2E15.7)
45099 4100 CONTINUE
45100 4190 CONTINUE
45101C
45102C               *****************
45103C               **  STEP 90--  **
45104C               **  EXIT.      **
45105C               *****************
45106C
45107 9000 CONTINUE
45108      IF(IBUGG3.EQ.'OFF'.AND.ISUBRO.NE.'NIN2')GOTO9090
45109      WRITE(ICOUT,999)
45110      CALL DPWRST('XXX','BUG ')
45111      WRITE(ICOUT,9011)
45112 9011 FORMAT('***** AT THE END       OF LININ2--')
45113      CALL DPWRST('XXX','BUG ')
45114      WRITE(ICOUT,9012)N,N2
45115 9012 FORMAT('N,N2 = ',2I8)
45116      CALL DPWRST('XXX','BUG ')
45117      WRITE(ICOUT,9041)N2
45118 9041 FORMAT('N2 = ',I8)
45119      CALL DPWRST('XXX','BUG ')
45120      DO9042I=1,N2
45121      WRITE(ICOUT,9043)I,X2(I),Y2(I)
45122 9043 FORMAT('I,X2(I),Y2(I) = ',I8,2E15.7)
45123      CALL DPWRST('XXX','BUG ')
45124 9042 CONTINUE
45125 9090 CONTINUE
45126C
45127      RETURN
45128      END
45129      REAL FUNCTION LININ3(X1,Y1,X2,Y2,X3,IBUGG3,ISUBRO,IERROR)
45130C
45131C     PURPOSE--COMPUTE LINEAR INTERPOLATION FOR PARAMETERS
45132C              (GENERATE INTERPOLATED POINTS).
45133C     INPUT  ARGUMENTS--Y1     = SINGLE PRECISION PARAMETER
45134C                                CONTAINING THE FIRST ORIGINAL
45135C                                VERTICAL AXIS DATA POINT.
45136C                     --X1     = SINGLE PRECISION PARAMETER
45137C                                CONTAINING THE FIRST ORIGINAL
45138C                                HORIZONTAL AXIS DATA POINT.
45139C                     --Y2     = SINGLE PRECISION PARAMETER
45140C                                CONTAINING THE SECOND ORIGINAL
45141C                                VERTICAL AXIS DATA POINT.
45142C                     --X2     = SINGLE PRECISION PARAMETER
45143C                                CONTAINING THE SECOND ORIGINAL
45144C                                HORIZONTAL AXIS DATA POINT.
45145C                     --X3     = SINGLE PRECISION PARAMETER
45146C                                CONTAINING THE DESIRED
45147C                                HORIZONTAL AXIS INTERPOLATION
45148C                                POINT.
45149C     OUTPUT ARGUMENTS--LININ3   CONTAINING THE COMPUTED
45150C                                VERTICAL AXIS INTERPOLATION
45151C                                POINTS.
45152C     WRITTEN BY--ALAN HECKERT
45153C                 STATISTICAL ENGINEERING DIVISION
45154C                 INFORMATION TECHNOLOGY LABORATORY
45155C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
45156C                 GAITHERSBURG, MD 20899-8980
45157C                 PHONE--301-975-2899
45158C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
45159C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
45160C     LANGUAGE--ANSI FORTRAN (1977)
45161C     VERSION NUMBER--2013/8
45162C     ORIGINAL VERSION--AUGUST    2013.
45163C
45164C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
45165C
45166      CHARACTER*4 IBUGG3
45167      CHARACTER*4 ISUBRO
45168      CHARACTER*4 IERROR
45169C
45170      CHARACTER*4 ISUBN1
45171      CHARACTER*4 ISUBN2
45172C
45173C---------------------------------------------------------------------
45174C
45175C-----COMMON VARIABLES (GENERAL)--------------------------------------
45176C
45177      INCLUDE 'DPCOP2.INC'
45178C
45179C-----START POINT-----------------------------------------------------
45180C
45181      ISUBN1='LINI'
45182      ISUBN2='N3  '
45183      IERROR='NO'
45184      LININ3=0.0
45185C
45186      IF(IBUGG3.EQ.'ON'.OR.ISUBRO.EQ.'NIN3')THEN
45187        WRITE(ICOUT,999)
45188  999   FORMAT(1X)
45189        CALL DPWRST('XXX','BUG ')
45190        WRITE(ICOUT,51)
45191   51   FORMAT('***** AT THE BEGINNING OF LININ3--')
45192        CALL DPWRST('XXX','BUG ')
45193        WRITE(ICOUT,56)Y1,X1,X2
45194   56   FORMAT('Y1,X1,X2 = ',3G15.7)
45195        CALL DPWRST('XXX','BUG ')
45196      ENDIF
45197C
45198C               ********************************************
45199C               **  STEP 14--                             **
45200C               **  COMPUTE INTERPOLATED VALUES           **
45201C               ********************************************
45202C
45203      IF(X2.LT.X1)THEN
45204        ATEMP=X2
45205        X2=X1
45206        X1=ATEMP
45207        ATEMP=Y2
45208        Y2=Y1
45209        Y1=ATEMP
45210      ENDIF
45211C
45212      IF(X3.LT.X1 .OR. X3.GT.X2)THEN
45213        WRITE(ICOUT,999)
45214        CALL DPWRST('XXX','BUG ')
45215        WRITE(ICOUT,101)
45216  101   FORMAT('***** ERROR IN LINEAR INTERPOLATION--')
45217        CALL DPWRST('XXX','BUG ')
45218        WRITE(ICOUT,103)
45219  103   FORMAT('      THE POINT TO BE INTERPOLATED IS OUT OF RANGE.')
45220        CALL DPWRST('XXX','BUG ')
45221        WRITE(ICOUT,105)X1
45222  105   FORMAT('      MINIMUM POINT:       ',G15.7)
45223        CALL DPWRST('XXX','BUG ')
45224        WRITE(ICOUT,107)X2
45225  107   FORMAT('      MAXIMUM POINT:       ',G15.7)
45226        CALL DPWRST('XXX','BUG ')
45227        WRITE(ICOUT,109)X3
45228  109   FORMAT('      INTERPOLATION POINT: ',G15.7)
45229        CALL DPWRST('XXX','BUG ')
45230        IERROR='YES'
45231        GOTO9000
45232      ENDIF
45233C
45234      Y3=Y1 + (Y2-Y1)*(X3-X1)/(X2-X1)
45235      LININ3=Y3
45236C
45237C               *****************
45238C               **  STEP 90--  **
45239C               **  EXIT.      **
45240C               *****************
45241C
45242 9000 CONTINUE
45243      IF(IBUGG3.EQ.'ON'.OR.ISUBRO.EQ.'NIN3')THEN
45244        WRITE(ICOUT,999)
45245        CALL DPWRST('XXX','BUG ')
45246        WRITE(ICOUT,9011)
45247 9011   FORMAT('***** AT THE END       OF LININ3--')
45248        CALL DPWRST('XXX','BUG ')
45249        WRITE(ICOUT,9012)IERROR,Y3
45250 9012   FORMAT('IERROR,Y3 = ',A4,2X,G15.7)
45251        CALL DPWRST('XXX','BUG ')
45252      ENDIF
45253C
45254      RETURN
45255      END
45256      SUBROUTINE LKCDF(X,A,B,BETA,CDF)
45257C
45258C     PURPOSE--THIS SUBROUTINE COMPUTES THE CUMULATIVE DISTRIBUTION
45259C              FUNCTION VALUE FOR THE LAGRANGE KATZ
45260C              DISTRIBUTION WITH SHAPE PARAMETERS A, B, AND BETA.
45261C              THIS DISTRIBUTION IS DEFINED FOR ALL NON-NEGATIVE
45262C              INTEGERS  X >= 0.
45263C
45264C              THE PROBABILITY MASS FUNCTION IS:
45265C              p(X;A,B,BETA)=
45266C                  (A/BETA)/((A/BETA) + (X*B/BETA) + X)*
45267C                  ((A/BETA)+X*b/BETA+X  X)*
45268C                  BETA**X*(1-BETA)**((A/BETA)+X*B/BETA)
45269C                  X = 0, 1, 2, 3, ,...
45270C                  A > 0, B > -BETA, BETA < 1
45271C
45272C              THE CUMULATIVE DISTRIBUTION FUNCTION IS COMPUTED
45273C              FROM THE FOLLOWING RECURRENCE RELATION:
45274C
45275C              P(X+1) = {(A+B*(X+1)+BETA*X)/(X+1)}*(1-BETA)**(b/BETA)*
45276C                       PROD[i=1 to X-1][(1 + b/(a+B*X+BETA*i)]*P(X)
45277C              WHERE P(0) = (1-BETA)**(A/BETA) AND
45278C                    P(1) = A*(1-BETA)**(b/BETA)*P(0)
45279C
45280C     INPUT  ARGUMENTS--X      = THE DOUBLE PRECISION VALUE AT
45281C                                WHICH THE CUMULATIVE DISTRIBUTION
45282C                                FUNCTION IS TO BE EVALUATED.
45283C                                X SHOULD BE A NON-NEGATIVE INTEGER.
45284C                     --A      = THE FIRST SHAPE PARAMETER
45285C                     --B      = THE SECOND SHAPE PARAMETER
45286C                     --BETA   = THE THIRD SHAPE PARAMETER
45287C     OUTPUT ARGUMENTS--CDF    = THE DOUBLE PRECISION CUMULATIVE
45288C                                DISTRIBUTION FUNCTION VALUE.
45289C     OUTPUT--THE DOUBLE PRECISION CUMULATIVE DISTRIBUTION FUNCTION
45290C             VALUE CDF FOR THE LAGRANGE KATZ DISTRIBUTION WITH
45291C             SHAPE PARAMETERS A, B, AND BETA
45292C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
45293C     RESTRICTIONS--X SHOULD BE A NON-NEGATIVE INTEGER
45294C                 --A > 0, B > -BETA, BETA < 1
45295C     MODE OF INTERNAL OPERATIONS--DOUBLE PRECISION.
45296C     LANGUAGE--ANSI FORTRAN (1977)
45297C     REFERENCES--CONSUL AND FAMOYE (2006), "LAGRANGIAN PROBABILITY
45298C                 DISTRIBUTIONS", BIRKHAUSER, CHAPTER 12.
45299C     WRITTEN BY--ALAN HECKERT
45300C                 STATISTICAL ENGINEERING DIVISION
45301C                 INFORMATION TECHNOLOGY LABORATORY
45302C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
45303C                 GAITHERSBURG, MD 20899-8980
45304C                 PHONE--301-975-2899
45305C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
45306C           OF THE NATIONAL BUREAU OF STANDARDS.
45307C     LANGUAGE--ANSI FORTRAN (1977)
45308C     VERSION NUMBER--2007/2
45309C     ORIGINAL VERSION--FEBRUARY  2007.
45310C
45311C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
45312C
45313C---------------------------------------------------------------------
45314C
45315      IMPLICIT DOUBLE PRECISION (A-H, O-Z)
45316C
45317C-----COMMON----------------------------------------------------------
45318C
45319      INCLUDE 'DPCOP2.INC'
45320C
45321C-----START POINT-----------------------------------------------------
45322C
45323C     CHECK THE INPUT ARGUMENTS FOR ERRORS
45324C
45325      IX=INT(X+0.5D0)
45326      CDF=0.0D0
45327C
45328      IF(IX.LT.0)THEN
45329        WRITE(ICOUT,4)
45330    4   FORMAT('***** ERROR--THE FIRST ARGUMENT TO LKCDF IS LESS ',
45331     1         'THAN 0.')
45332        CALL DPWRST('XXX','BUG ')
45333        WRITE(ICOUT,46)X
45334        CALL DPWRST('XXX','BUG ')
45335   46   FORMAT('***** THE VALUE OF THE ARGUMENT IS ',G15.7'.')
45336        GOTO9000
45337      ELSEIF(A.LE.0.0D0)THEN
45338        WRITE(ICOUT,15)
45339   15   FORMAT('***** ERROR--THE SECOND ARGUMENT TO LKCDF IS ',
45340     1         'NON-POSITIVE.')
45341        CALL DPWRST('XXX','BUG ')
45342        WRITE(ICOUT,46)A
45343        CALL DPWRST('XXX','BUG ')
45344        GOTO9000
45345      ELSEIF(BETA.GE.1.0D0)THEN
45346        WRITE(ICOUT,25)
45347   25   FORMAT('***** ERROR--THE FOURTH ARGUMENT TO LKCDF IS GREATER ',
45348     1         'THAN OR EQUAL TO 1.')
45349        CALL DPWRST('XXX','BUG ')
45350        WRITE(ICOUT,46)BETA
45351        CALL DPWRST('XXX','BUG ')
45352        GOTO9000
45353      ELSEIF(B.LE.-BETA)THEN
45354        WRITE(ICOUT,35)
45355   35   FORMAT('***** ERROR--THE THIRD ARGUMENT TO LKCDF IS LESS ',
45356     1         'THAN OR EQUAL TO -(FOURTH ARGUMENT).')
45357        CALL DPWRST('XXX','BUG ')
45358        WRITE(ICOUT,46)B
45359        CALL DPWRST('XXX','BUG ')
45360        WRITE(ICOUT,46)BETA
45361        CALL DPWRST('XXX','BUG ')
45362        GOTO9000
45363      ENDIF
45364C
45365C
45366C     USE THE RECURRENCE RELATION (PAGE 243 OF CONSUL AND FAMOYE):
45367C
45368      CDF=(1.0D0 - BETA)**(A/BETA)
45369      IF(IX.EQ.0)GOTO9000
45370C
45371      DPDF=A*(1.0D0 - BETA)**(B/BETA)*CDF
45372      CDF=CDF + DPDF
45373      IF(IX.EQ.1)GOTO9000
45374C
45375C     FOR X = 2, USE RELATION:
45376C
45377C         p(x+1;a,b,beta)=p(x;a+b,b,beta)*(a+c*x)/(1+x)
45378C
45379C     NOTE THAT WE NEED TO REPLACE A WITH A + B IN COMPUTATION
45380C     OF p(1).
45381C
45382      DP0=(1.0D0 - BETA)**((A+B)/BETA)
45383      DP1=(A+B)*(1.0D0 - BETA)**(B/BETA)*DP0
45384      DX=1.0D0
45385      C=A*(B+BETA)/(A+B)
45386      DPDF=DP1*(A + C*DX)/(1.0 + DX)
45387      CDF=CDF + DPDF
45388      IF(IX.EQ.2)GOTO9000
45389      DPDFSV=DPDF
45390C
45391      DTERM1=(B/BETA)*DLOG(1.0D0 - BETA)
45392      DO100I=3,IX
45393        DX=DBLE(I)
45394        DTERM2=DLOG(A + B*DX + BETA*(DX-1.0D0))
45395        DTERM3=DLOG(DX)
45396        IF(DPDFSV.LE.0.0D0)THEN
45397          GOTO9000
45398        ELSE
45399          DTERM4=DLOG(DPDFSV)
45400        ENDIF
45401C
45402        DSUM=0.0D0
45403        DO200J=1,I-2
45404          DSUM=DSUM + DLOG(1.0D0 + B/
45405     1         (A + B*(DX-1.0D0) + BETA*DBLE(J)))
45406  200   CONTINUE
45407C
45408        DPDF=DEXP(DTERM1 + DTERM2 - DTERM3 + DTERM4 + DSUM)
45409        CDF=CDF + DPDF
45410        DPDFSV=DPDF
45411  100 CONTINUE
45412C
45413 9000 CONTINUE
45414      RETURN
45415      END
45416      SUBROUTINE LKPDF(X,A,B,BETA,PDF)
45417C
45418C     PURPOSE--THIS SUBROUTINE COMPUTES THE PROBABILITY DENSITY
45419C              FUNCTION VALUE FOR THE LAGRANGE KATZ
45420C              DISTRIBUTION WITH SHAPE PARAMETERS A, B, AND BETA.
45421C              THIS DISTRIBUTION IS DEFINED FOR ALL NON-NEGATIVE
45422C              INTEGERS  X >= 0.
45423C
45424C              THE PROBABILITY MASS FUNCTION IS:
45425C              p(X;A,B,BETA)=
45426C                  (A/BETA)/((A/BETA) + (X*B/BETA) + X)*
45427C                  ((A/BETA)+X*b/BETA+X  X)*
45428C                  BETA**X*(1-BETA)**((A/BETA)+X*B/BETA)
45429C                  X = 0, 1, 2, 3, ,...
45430C                  A > 0, B > -BETA, BETA < 1
45431C
45432C              THE PROBABILITIES ARE COMPUTED
45433C              FROM THE FOLLOWING RECURRENCE RELATION:
45434C
45435C              P(X+1) = {(A+B*(X+1)+BETA*X)/(X+1)}*(1-BETA)**(b/BETA)*
45436C                       PROD[i=1 to X-1][(1 + b/(a+B*X+BETA*i)]*P(X)
45437C              WHERE P(0) = (1-BETA)**(A/BETA) AND
45438C                    P(1) = A*(1-BETA)**(b/BETA)*P(0)
45439C
45440C     INPUT  ARGUMENTS--X      = THE DOUBLE PRECISION VALUE AT
45441C                                WHICH THE PROBABILITY DENSITY
45442C                                FUNCTION IS TO BE EVALUATED.
45443C                                X SHOULD BE A NON-NEGATIVE INTEGER.
45444C                     --A      = THE FIRST SHAPE PARAMETER
45445C                     --B      = THE SECOND SHAPE PARAMETER
45446C                     --BETA   = THE THIRD SHAPE PARAMETER
45447C     OUTPUT ARGUMENTS--PDF    = THE DOUBLE PRECISION PROBABILITY
45448C                                DENSITY FUNCTION VALUE.
45449C     OUTPUT--THE DOUBLE PRECISION PROBABILITY DENSITY FUNCTION
45450C             VALUE PDF FOR THE LAGRANGE KATZ DISTRIBUTION WITH
45451C             SHAPE PARAMETERS A, B, AND BETA
45452C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
45453C     RESTRICTIONS--X SHOULD BE A NON-NEGATIVE INTEGER
45454C                 --A > 0, B > -BETA, BETA < 1
45455C     MODE OF INTERNAL OPERATIONS--DOUBLE PRECISION.
45456C     LANGUAGE--ANSI FORTRAN (1977)
45457C     REFERENCES--CONSUL AND FAMOYE (2006), "LAGRANGIAN PROBABILITY
45458C                 DISTRIBUTIONS", BIRKHAUSER, CHAPTER 12.
45459C     WRITTEN BY--ALAN HECKERT
45460C                 STATISTICAL ENGINEERING DIVISION
45461C                 INFORMATION TECHNOLOGY LABORATORY
45462C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
45463C                 GAITHERSBURG, MD 20899-8980
45464C                 PHONE--301-975-2899
45465C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
45466C           OF THE NATIONAL BUREAU OF STANDARDS.
45467C     LANGUAGE--ANSI FORTRAN (1977)
45468C     VERSION NUMBER--2007/2
45469C     ORIGINAL VERSION--FEBRUARY  2007.
45470C
45471C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
45472C
45473C---------------------------------------------------------------------
45474C
45475      IMPLICIT DOUBLE PRECISION (A-H, O-Z)
45476C
45477C-----COMMON----------------------------------------------------------
45478C
45479      INCLUDE 'DPCOP2.INC'
45480C
45481C-----START POINT-----------------------------------------------------
45482C
45483C     CHECK THE INPUT ARGUMENTS FOR ERRORS
45484C
45485      IX=INT(X+0.5D0)
45486      PDF=0.0D0
45487C
45488      IF(IX.LT.0)THEN
45489        WRITE(ICOUT,4)
45490    4   FORMAT('***** ERROR--THE FIRST ARGUMENT TO LKPDF IS LESS ',
45491     1         'THAN 0')
45492        CALL DPWRST('XXX','BUG ')
45493        WRITE(ICOUT,46)X
45494        CALL DPWRST('XXX','BUG ')
45495        GOTO9000
45496      ELSEIF(A.LE.0.0D0)THEN
45497        WRITE(ICOUT,15)
45498   15   FORMAT('***** ERROR--THE SECOND ARGUMENT TO LKPDF IS ',
45499     1         'NON-POSITIVE.')
45500        CALL DPWRST('XXX','BUG ')
45501        WRITE(ICOUT,46)A
45502        CALL DPWRST('XXX','BUG ')
45503        GOTO9000
45504      ELSEIF(BETA.GE.1.0D0)THEN
45505        WRITE(ICOUT,25)
45506   25   FORMAT('***** ERROR--THE FOURTH ARGUMENT TO LKPDF IS GREATER ',
45507     1         'THAN OR EQUAL TO 1.')
45508        CALL DPWRST('XXX','BUG ')
45509        WRITE(ICOUT,46)BETA
45510        CALL DPWRST('XXX','BUG ')
45511        GOTO9000
45512      ELSEIF(B.LE.-BETA)THEN
45513        WRITE(ICOUT,35)
45514   35   FORMAT('***** ERROR--THE THIRD ARGUMENT TO LKPDF IS LESS ',
45515     1         'THAN OR EQUAL TO -(FOURTH ARGUMENT).')
45516        CALL DPWRST('XXX','BUG ')
45517        WRITE(ICOUT,46)B
45518        CALL DPWRST('XXX','BUG ')
45519        WRITE(ICOUT,46)BETA
45520        CALL DPWRST('XXX','BUG ')
45521        GOTO9000
45522      ENDIF
45523   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',G15.7)
45524C
45525C     ALTHOUGH THE DIRECT COMPUTATION OF THE PDF MIGHT BE
45526C     MORE EFFICIENT IN SOME CASES, IT IS NOT CLEAR HOW TO
45527C     HANDLE NEGATIVE VALUES OF BETA (THE DLNGAM FUNCTION IS
45528C     ONLY IMPLEMENTED FOR POSITIVE ARGUMENTS).  SO IN THE
45529C     MEANTIME, USE THE RECURRENCE RELATION (PAGE 243 OF CONSUL
45530C     AND FAMOYE).
45531C
45532CCCCC  DX=DBLE(IX)
45533CCCCC  DTERM1=A/BETA
45534CCCCC  DTERM2=DX*B/BETA
45535C
45536CCCCC  DTERM3=DLOG(DTERM1) - DLOG(DTERM1 + DTERM2 + DX)
45537CCCCC  DTERM4=DX*DLOG(BETA)
45538CCCCC  DTERM5=(DTERM1+DTERM2)*DLOG(1.0D0 - BETA)
45539CCCCC  DTERM6=DLNGAM(DTERM1 + DTERM2 + DX + 1.0D0)
45540CCCCC  DTERM7=DLNGAM(DTERM1 + DTERM2 + 1.0D0)
45541CCCCC  DTERM8=DLNGAM(DX + 1.0D0)
45542CCCCC  DPDF=DTERM3 + DTERM4 + DTERM5 + DTERM6 - DTERM7 - DTERM8
45543CCCCC  PDF=DEXP(DPDF)
45544C
45545      CDF=(1.0D0 - BETA)**(A/BETA)
45546      IF(IX.EQ.0)THEN
45547        PDF=CDF
45548        GOTO9000
45549      ENDIF
45550C
45551      DPDF=A*(1.0D0 - BETA)**(B/BETA)*CDF
45552      IF(IX.EQ.1)THEN
45553        PDF=DPDF
45554        GOTO9000
45555      ENDIF
45556      CDF=CDF + DPDF
45557C
45558      DPDFSV=DPDF
45559      DTERM1=(B/BETA)*DLOG(1.0D0 - BETA)
45560C
45561      DO100I=2,IX
45562        DX=DBLE(I)
45563        DTERM2=DLOG(A + B*DX + BETA*(DX-1.0D0))
45564        DTERM3=DLOG(DX)
45565        IF(DPDFSV.LE.0.0D0)THEN
45566          GOTO9000
45567        ELSE
45568          DTERM4=DLOG(DPDFSV)
45569        ENDIF
45570C
45571        IF(I-2.GE.1)THEN
45572          DSUM=0.0D0
45573          DO200J=1,I-2
45574            DSUM=DSUM + DLOG(1.0D0 + B/
45575     1           (A + B*(DX-1.0D0) + BETA*DBLE(J)))
45576  200     CONTINUE
45577        ELSE
45578CCCCC     DSUM=DLOG(1.0D0 + B/(A + B))
45579          DSUM=DLOG(1.0D0)
45580        ENDIF
45581C
45582        DPDF=DEXP(DTERM1 + DTERM2 - DTERM3 + DTERM4 + DSUM)
45583        CDF=CDF + DPDF
45584        DPDFSV=DPDF
45585  100 CONTINUE
45586C
45587      PDF=DPDF
45588C
45589C
45590 9000 CONTINUE
45591      RETURN
45592      END
45593      SUBROUTINE LKPPF(P,A,B,BETA,PPF)
45594C
45595C     PURPOSE--THIS SUBROUTINE COMPUTES THE PERCENT POINT
45596C              FUNCTION VALUE FOR THE LAGRANGE KATZ
45597C              DISTRIBUTION WITH SHAPE PARAMETERS A, B, AND BETA.
45598C              THIS DISTRIBUTION IS DEFINED FOR ALL NON-NEGATIVE
45599C              INTEGERS  X >= 0.
45600C
45601C              THE PROBABILITY MASS FUNCTION IS:
45602C              p(X;A,B,BETA)=
45603C                  (A/BETA)/((A/BETA) + (X*B/BETA) + X)*
45604C                  ((A/BETA)+X*b/BETA+X  X)*
45605C                  BETA**X*(1-BETA)**((A/BETA)+X*B/BETA)
45606C                  X = 0, 1, 2, 3, ,...
45607C                  A > 0, B > -BETA, BETA < 1
45608C
45609C              THE CUMULATIVE DISTRIBUTION FUNCTION IS COMPUTED
45610C              FROM THE FOLLOWING RECURRENCE RELATION:
45611C
45612C              P(X+1) = {(A+B*(X+1)+BETA*X)/(X+1)}*(1-BETA)**(b/BETA)*
45613C                       PROD[i=1 to X-1][(1 + b/(a+B*X+BETA*i)]*P(X)
45614C              WHERE P(0) = (1-BETA)**(A/BETA) AND
45615C                    P(1) = A*(1-BETA)**(b/BETA)*P(0)
45616C
45617C              THE PERCENT POINT FUNCTION IS COMPUTED BY SUMMING
45618C              THE CUMULATIVE DISTRIBUTION FUNCTION UNTIL THE
45619C              APPROPRIATE PROBABILITY IS REACHED.
45620C
45621C     INPUT  ARGUMENTS--P      = THE DOUBLE PRECISION VALUE AT
45622C                                WHICH THE PERCENT POINT
45623C                                FUNCTION IS TO BE EVALUATED.
45624C                     --A      = THE FIRST SHAPE PARAMETER
45625C                     --B      = THE SECOND SHAPE PARAMETER
45626C                     --BETA   = THE THIRD SHAPE PARAMETER
45627C     OUTPUT ARGUMENTS--PPF    = THE DOUBLE PRECISION PERCENT POINT
45628C                                FUNCTION VALUE.
45629C     OUTPUT--THE DOUBLE PRECISION PERCENT POINT FUNCTION
45630C             VALUE PPF FOR THE LAGRANGE KATZ DISTRIBUTION WITH
45631C             SHAPE PARAMETERS A, B, AND BETA
45632C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
45633C     RESTRICTIONS--0 <= P < 1
45634C                 --A > 0, B > -BETA, BETA < 1
45635C     MODE OF INTERNAL OPERATIONS--DOUBLE PRECISION.
45636C     LANGUAGE--ANSI FORTRAN (1977)
45637C     REFERENCES--CONSUL AND FAMOYE (2006), "LAGRANGIAN PROBABILITY
45638C                 DISTRIBUTIONS", BIRKHAUSER, CHAPTER 12.
45639C     WRITTEN BY--ALAN HECKERT
45640C                 STATISTICAL ENGINEERING DIVISION
45641C                 INFORMATION TECHNOLOGY LABORATORY
45642C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
45643C                 GAITHERSBURG, MD 20899-8980
45644C                 PHONE--301-975-2899
45645C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
45646C           OF THE NATIONAL BUREAU OF STANDARDS.
45647C     LANGUAGE--ANSI FORTRAN (1977)
45648C     VERSION NUMBER--2007/2
45649C     ORIGINAL VERSION--FEBRUARY  2007.
45650C
45651C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
45652C
45653C---------------------------------------------------------------------
45654C
45655      IMPLICIT DOUBLE PRECISION (A-H, O-Z)
45656C
45657C-----COMMON----------------------------------------------------------
45658C
45659      REAL R1MACH
45660      INCLUDE 'DPCOMC.INC'
45661      INCLUDE 'DPCOP2.INC'
45662C
45663C-----START POINT-----------------------------------------------------
45664C
45665C     CHECK THE INPUT ARGUMENTS FOR ERRORS
45666C
45667      PPF=0.0D0
45668C
45669      IF(P.LT.0.0 .OR. P.GE.1.0)THEN
45670        WRITE(ICOUT,4)
45671    4   FORMAT('***** ERROR--THE FIRST ARGUMENT TO LKPPF IS OUTSIDE ',
45672     1         'THE (0,1] INTERVAL.')
45673        CALL DPWRST('XXX','BUG ')
45674        WRITE(ICOUT,46)P
45675        CALL DPWRST('XXX','BUG ')
45676        GOTO9000
45677      ELSEIF(A.LE.0.0D0)THEN
45678        WRITE(ICOUT,15)
45679   15   FORMAT('***** ERROR--THE SECOND ARGUMENT TO LKPPF IS ',
45680     1         'NON-POSITIVE.')
45681        CALL DPWRST('XXX','BUG ')
45682        WRITE(ICOUT,46)A
45683        CALL DPWRST('XXX','BUG ')
45684        GOTO9000
45685      ELSEIF(BETA.GE.1.0D0)THEN
45686        WRITE(ICOUT,25)
45687   25   FORMAT('***** ERROR--THE FOURTH ARGUMENT TO LKPPF IS GREATER ',
45688     1         'THAN OR EQUAL TO 1.')
45689        CALL DPWRST('XXX','BUG ')
45690        WRITE(ICOUT,46)BETA
45691        CALL DPWRST('XXX','BUG ')
45692        GOTO9000
45693      ELSEIF(B.LE.-BETA)THEN
45694        WRITE(ICOUT,35)
45695   35   FORMAT('***** ERROR--THE THIRD ARGUMENT TO LKPPF IS LESS ',
45696     1         'THAN OR EQUAL TO -(FOURTH ARGUMENT).')
45697        CALL DPWRST('XXX','BUG ')
45698        WRITE(ICOUT,46)B
45699        CALL DPWRST('XXX','BUG ')
45700        WRITE(ICOUT,46)BETA
45701        CALL DPWRST('XXX','BUG ')
45702        GOTO9000
45703      ENDIF
45704   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',G15.7)
45705C
45706C     USE THE RECURRENCE RELATION (PAGE 243 OF CONSUL AND FAMOYE):
45707C
45708      DEPS=1.0D-7
45709      DCDF=(1.0D0 - BETA)**(A/BETA)
45710      IF(DCDF.GE.P-DEPS)THEN
45711        PPF=0.0D0
45712        GOTO9000
45713      ENDIF
45714C
45715      DPDF=A*(1.0D0 - BETA)**(B/BETA)*DCDF
45716      DCDF=DCDF + DPDF
45717      IF(DCDF.GE.P-DEPS)THEN
45718        PPF=1.0D0
45719        GOTO9000
45720      ENDIF
45721C
45722      DPDFSV=DPDF
45723      DTERM1=(B/BETA)*DLOG(1.0D0 - BETA)
45724C
45725      I=1
45726C
45727  100 CONTINUE
45728        I=I+1
45729        IF(DBLE(I).GE.DBLE(I1MACH(9)))THEN
45730          WRITE(ICOUT,55)
45731   55     FORMAT('***** ERROR--THE COMPUTED PERCENT POINT VALUE ',
45732     1           'EXCEEDS THE LARGEST MACHINE INTEGER.')
45733          CALL DPWRST('XXX','BUG ')
45734          PPF=0.0D0
45735          GOTO9000
45736        ENDIF
45737        DX=DBLE(I)
45738C
45739        DTERM2=DLOG(A + B*DX + BETA*(DX-1.0D0))
45740        DTERM3=DLOG(DX)
45741        IF(DPDFSV.LE.0.0D0)THEN
45742          PPF=DBLE(I)
45743          GOTO9000
45744        ELSE
45745          DTERM4=DLOG(DPDFSV)
45746        ENDIF
45747C
45748        IF(I-2.GE.1)THEN
45749          DSUM=0.0D0
45750          DO200J=1,I-2
45751            DSUM=DSUM + DLOG(1.0D0 + B/
45752     1           (A + B*(DX-1.0D0) + BETA*DBLE(J)))
45753  200     CONTINUE
45754        ELSE
45755CCCCC     DSUM=DLOG(1.0D0 + B/(A + B))
45756          DSUM=DLOG(1.0D0)
45757        ENDIF
45758C
45759        DPDF=DEXP(DTERM1 + DTERM2 - DTERM3 + DTERM4 + DSUM)
45760        DCDF=DCDF + DPDF
45761        DPDFSV=DPDF
45762C
45763        IF(DCDF.GE.P-DEPS)THEN
45764          PPF=DBLE(I)
45765          GOTO9000
45766        ENDIF
45767      GOTO100
45768C
45769 9000 CONTINUE
45770      RETURN
45771      END
45772      SUBROUTINE LKRAN(N,A,B,BETA,ISEED,X)
45773C
45774C     PURPOSE--THIS SUBROUTINE GENERATES A RANDOM SAMPLE OF SIZE N
45775C              FROM THE LAGRANGE KATZ DISTRIBUTION
45776C              WITH SHAPE PARAMETERS A, B, AND BETA.
45777C              THE PROBABILITY MASS FUNCTION IS:
45778C
45779C              THE PROBABILITY MASS FUNCTION IS:
45780C              p(X;A,B,BETA)=
45781C                  (A/BETA)/((A/BETA) + (X*B/BETA) + X)*
45782C                  ((A/BETA)+X*b/BETA+X  X)*
45783C                  BETA**X*(1-BETA)**((A/BETA)+X*B/BETA)
45784C                  X = 0, 1, 2, 3, ,...
45785C                  A > 0, B > -BETA, BETA < 1
45786C
45787C     INPUT  ARGUMENTS--N      = THE DESIRED INTEGER NUMBER
45788C                                OF RANDOM NUMBERS TO BE
45789C                                GENERATED.
45790C                     --A      = THE SINGLE PRECISION VALUE
45791C                                OF THE FIRST SHAPE PARAMETER.
45792C                     --B      = THE SINGLE PRECISION VALUE
45793C                                OF THE SECOND SHAPE PARAMETER.
45794C                     --BETA   = THE SINGLE PRECISION VALUE
45795C                                OF THE THIRD SHAPE PARAMETER.
45796C     OUTPUT ARGUMENTS--X      = A SINGLE PRECISION VECTOR
45797C                                (OF DIMENSION AT LEAST N)
45798C                                INTO WHICH THE GENERATED
45799C                                RANDOM SAMPLE WILL BE PLACED.
45800C     OUTPUT--A RANDOM SAMPLE OF SIZE N
45801C             FROM THE LAGRANGE KATZ DISTRIBUTION
45802C             WITH SHAPE PARAMETERS A, B, AND BETA.
45803C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
45804C     RESTRICTIONS--THERE IS NO RESTRICTION ON THE MAXIMUM VALUE
45805C                   OF N FOR THIS SUBROUTINE.
45806C                 --A > 0, BETA < 1, B > -BETA
45807C     OTHER DATAPAC   SUBROUTINES NEEDED--UNIRAN, LKPPF
45808C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE.
45809C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
45810C     LANGUAGE--ANSI FORTRAN (1977)
45811C     REFERENCES--CONSUL AND FAMOYE (2006), "LAGRANGIAN PROBABILITY
45812C                 DISTRIBUTIONS", BIRKHAUSER, CHAPTER 12.
45813C     WRITTEN BY--JAMES J. FILLIBEN
45814C                 STATISTICAL ENGINEERING DIVISION
45815C                 INFORMATION TECHNOLOGY LABORATORY
45816C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
45817C                 GAITHERSBURG, MD 20899-8980
45818C                 PHONE--301-975-2899
45819C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
45820C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
45821C     LANGUAGE--ANSI FORTRAN (1977)
45822C     VERSION NUMBER--2007/2
45823C     ORIGINAL VERSION--FEBRUARY  2007.
45824C
45825C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
45826C
45827C---------------------------------------------------------------------
45828C
45829      REAL A
45830      REAL B
45831      REAL BETA
45832C
45833      DIMENSION X(*)
45834C
45835      DOUBLE PRECISION DPPF
45836C
45837C-----COMMON----------------------------------------------------------
45838C
45839      INCLUDE 'DPCOP2.INC'
45840C
45841C-----START POINT-----------------------------------------------------
45842C
45843C     CHECK THE INPUT ARGUMENTS FOR ERRORS
45844C
45845      IF(N.LT.1)THEN
45846        WRITE(ICOUT,5)
45847    5   FORMAT('***** ERROR--THE REQUESTED NUMBER OF LAGRANGE KATZ ',
45848     1         'RANDOM NUMBERS IS NON-POSITIVE.')
45849        CALL DPWRST('XXX','BUG ')
45850        WRITE(ICOUT,47)N
45851   47   FORMAT('***** THE VALUE OF THE ARGUMENT IS ',I8,'.')
45852        CALL DPWRST('XXX','BUG ')
45853        GOTO9999
45854      ELSEIF(A.LE.0.0)THEN
45855        WRITE(ICOUT,11)
45856   11   FORMAT('***** ERROR--THE A PARAMETER FOR THE LAGRANGE KATZ')
45857        CALL DPWRST('XXX','BUG ')
45858        WRITE(ICOUT,12)
45859   12   FORMAT('      RANDOM NUMBERS IS NON-POSITIVE.')
45860        CALL DPWRST('XXX','BUG ')
45861        WRITE(ICOUT,46)A
45862        CALL DPWRST('XXX','BUG ')
45863        GOTO9999
45864      ELSEIF(BETA.GE.1.0)THEN
45865        WRITE(ICOUT,21)
45866   21   FORMAT('***** ERROR--THE BETA PARAMETER FOR THE LAGRANGE KATZ')
45867        CALL DPWRST('XXX','BUG ')
45868        WRITE(ICOUT,22)
45869   22   FORMAT('      RANDOM NUMBERS IS GREATER THAN OR EQUAL TO 1.')
45870        CALL DPWRST('XXX','BUG ')
45871        WRITE(ICOUT,46)BETA
45872   46   FORMAT('***** THE VALUE OF THE ARGUMENT IS ',G15.7,'.')
45873        CALL DPWRST('XXX','BUG ')
45874        GOTO9999
45875      ELSEIF(B.LE.-BETA)THEN
45876        WRITE(ICOUT,31)
45877   31   FORMAT('***** ERROR--THE B PARAMETER FOR THE LAGRANGE KATZ')
45878        CALL DPWRST('XXX','BUG ')
45879        WRITE(ICOUT,32)
45880   32   FORMAT('      RANDOM NUMBERS IS LESS THAN OR EQUAL TO -BETA.')
45881        CALL DPWRST('XXX','BUG ')
45882        WRITE(ICOUT,48)B
45883   48   FORMAT('***** THE VALUE OF THE B ARGUMENT IS ',G15.7,'.')
45884        CALL DPWRST('XXX','BUG ')
45885        WRITE(ICOUT,49)BETA
45886   49   FORMAT('***** THE VALUE OF THE BETA ARGUMENT IS ',G15.7,'.')
45887        CALL DPWRST('XXX','BUG ')
45888        GOTO9999
45889      ENDIF
45890C
45891C     GENERATE N LAGRANGE KATZ DISTRIBUTION RANDOM NUMBERS USING
45892C     THE INVERSION METHOD.
45893C
45894      CALL UNIRAN(N,ISEED,X)
45895      DO100I=1,N
45896        ZTEMP=X(I)
45897        CALL LKPPF(DBLE(ZTEMP),DBLE(A),DBLE(B),DBLE(BETA),DPPF)
45898        X(I)=REAL(DPPF)
45899  100 CONTINUE
45900C
45901 9999 CONTINUE
45902C
45903      RETURN
45904      END
45905      SUBROUTINE LLGCDF(X,DELTA,CDF)
45906C
45907C     PURPOSE--THIS SUBROUTINE COMPUTES THE CUMULATIVE DISTRIBUTION
45908C              FUNCTION VALUE FOR THE LOG-LOGISTIC DISTRIBUTION.
45909C              THIS DISTRIBUTION IS DEFINED FOR ALL POSITIVE X
45910C              AND HAS THE PROBABILITY DENSITY FUNCTION
45911C                 F(X,DELTA) = DELTA*X**(DELTA-1)/[1+X**DELTA)**2]
45912C              THE CUMULATIVE DISTRIBUTION FUNCTION IS
45913C                 F(X,DELTA) = 1/(1+X**(-DELTA))
45914C     INPUT  ARGUMENTS--X      = THE SINGLE PRECISION VALUE
45915C                                AT WHICH THE PROBABILITY DENSITY
45916C                                FUNCTION IS TO BE EVALUATED.
45917C                                X SHOULD BE POSITIVE.
45918C                     --DELTA  = THE POSITIVE SHAPE PARAMETER
45919C     OUTPUT ARGUMENTS--CDF    = THE SINGLE PRECISION CUMULATIVE
45920C                                DISTRIBUTION FUNCTION VALUE.
45921C     OUTPUT--THE SINGLE PRECISION CUMULATIVE DISTRIBUTION
45922C             FUNCTION VALUE CDF FOR THE LOG-LOGISTIC DISTRIBUTION
45923C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
45924C     RESTRICTIONS--X SHOULD BE POSITIVE.
45925C                 --DELTA SHOULD BE POSITIVE.
45926C     LANGUAGE--ANSI FORTRAN.
45927C     REFERENCES--"MEASURING SKEWNESS WITH RESPECT TO THE MODE",
45928C                 ARNOLD AND GROENEVELD, AMERICAN STATISTICIAN,
45929C                 FEBRUARY, 1995.
45930C     WRITTEN BY--JAMES J. FILLIBEN
45931C                 STATISTICAL ENGINEERING LABORATORY (205.03)
45932C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
45933C                 GAITHERSBURG, MD 20899-8980
45934C                 PHONE:  301-975-2855
45935C     ORIGINAL VERSION--APRIL     1995.
45936C
45937C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
45938C
45939C---------------------------------------------------------------------
45940C
45941      DOUBLE PRECISION DX, DDELTA
45942      DOUBLE PRECISION DTERM1, DTERM2, DTERM3
45943C
45944      INCLUDE 'DPCOP2.INC'
45945C
45946C---------------------------------------------------------------------
45947C
45948C     CHECK THE INPUT ARGUMENTS FOR ERRORS
45949C
45950      IF(X.LT.0.0)THEN
45951        WRITE(ICOUT,4)
45952        CALL DPWRST('XXX','BUG ')
45953        WRITE(ICOUT,5)
45954        CALL DPWRST('XXX','BUG ')
45955        WRITE(ICOUT,46)X
45956        CALL DPWRST('XXX','BUG ')
45957        CDF=0.0
45958        GOTO9999
45959      ENDIF
45960      IF(DELTA.LE.0.0)THEN
45961        WRITE(ICOUT,14)
45962        CALL DPWRST('XXX','BUG ')
45963        WRITE(ICOUT,5)
45964        CALL DPWRST('XXX','BUG ')
45965        WRITE(ICOUT,46)DELTA
45966        CALL DPWRST('XXX','BUG ')
45967        CDF=0.0
45968        GOTO9999
45969      ENDIF
45970    4 FORMAT('***** NON-FATAL DIAGNOSTIC--THE FIRST INPUT ARGUMENT')
45971   14 FORMAT('***** NON-FATAL DIAGNOSTIC--THE SECOND INPUT ARGUMENT')
45972    5 FORMAT('      TO THE LLGCDF SUBROUTINE IS NEGATIVE *****')
45973   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',E15.8,' *****')
45974C
45975C-----START POINT-----------------------------------------------------
45976C
45977      CDF=0.0
45978      IF(X.EQ.0.0)GOTO9999
45979      DX=DBLE(X)
45980      DDELTA=DBLE(DELTA)
45981C
45982      DTERM1=DLOG(1.0D0)
45983      DTERM2=DLOG(1.0D0 + DX**(-DDELTA))
45984      DTERM3=DTERM1-DTERM2
45985      DCDF=DEXP(DTERM3)
45986      CDF=REAL(DCDF)
45987C
45988 9999 CONTINUE
45989      RETURN
45990      END
45991      SUBROUTINE LLGPDF(X,DELTA,PDF)
45992C
45993C     PURPOSE--THIS SUBROUTINE COMPUTES THE PROBABILITY DENSITY
45994C              FUNCTION VALUE FOR THE LOG-LOGISTIC DISTRIBUTION.
45995C              THIS DISTRIBUTION IS DEFINED FOR ALL POSITIVE X
45996C              AND HAS THE PROBABILITY DENSITY FUNCTION
45997C              F(X,DELTA) = DELTA*X**(DELTA-1)/[1+X**DELTA)**2]
45998C     INPUT  ARGUMENTS--X      = THE SINGLE PRECISION VALUE
45999C                                AT WHICH THE PROBABILITY DENSITY
46000C                                FUNCTION IS TO BE EVALUATED.
46001C                                X SHOULD BE POSITIVE.
46002C                     --DELTA  = THE POSITIVE SHAPE PARAMETER
46003C     OUTPUT ARGUMENTS--PDF    = THE SINGLE PRECISION PROBABILITY
46004C                                DENSITY FUNCTION VALUE.
46005C     OUTPUT--THE SINGLE PRECISION PROBABILITY DENSITY
46006C             FUNCTION VALUE PDF FOR THE LOG-LOGISTIC DISTRIBUTION
46007C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
46008C     RESTRICTIONS--X SHOULD BE POSITIVE.
46009C                 --DELTA SHOULD BE POSITIVE.
46010C     LANGUAGE--ANSI FORTRAN.
46011C     REFERENCES--"MEASURING SKEWNESS WITH RESPECT TO THE MODE",
46012C                 ARNOLD AND GROENEVELD, AMERICAN STATISTICIAN,
46013C                 FEBRUARY, 1995.
46014C     WRITTEN BY--JAMES J. FILLIBEN
46015C                 STATISTICAL ENGINEERING LABORATORY (205.03)
46016C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
46017C                 GAITHERSBURG, MD 20899-8980
46018C                 PHONE:  301-975-2855
46019C     ORIGINAL VERSION--APRIL     1995.
46020C
46021C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
46022C
46023C---------------------------------------------------------------------
46024C
46025      DOUBLE PRECISION DX, DDELTA
46026      DOUBLE PRECISION DUL, DZ, DPDF
46027      DOUBLE PRECISION DTERM1, DTERM2, DTERM3, DTERM4
46028C
46029      INCLUDE 'DPCOMC.INC'
46030      INCLUDE 'DPCOP2.INC'
46031C
46032C---------------------------------------------------------------------
46033C
46034C     CHECK THE INPUT ARGUMENTS FOR ERRORS
46035C
46036      IF(X.LT.0.0)THEN
46037        WRITE(ICOUT,4)
46038        CALL DPWRST('XXX','BUG ')
46039        WRITE(ICOUT,5)
46040        CALL DPWRST('XXX','BUG ')
46041        WRITE(ICOUT,46)X
46042        CALL DPWRST('XXX','BUG ')
46043        PDF=0.0
46044        GOTO9999
46045      ENDIF
46046      IF(DELTA.LE.0.0)THEN
46047        WRITE(ICOUT,14)
46048        CALL DPWRST('XXX','BUG ')
46049        WRITE(ICOUT,5)
46050        CALL DPWRST('XXX','BUG ')
46051        WRITE(ICOUT,46)DELTA
46052        CALL DPWRST('XXX','BUG ')
46053        PDF=0.0
46054        GOTO9999
46055      ENDIF
46056    4 FORMAT('***** NON-FATAL DIAGNOSTIC--THE FIRST INPUT ARGUMENT')
46057   14 FORMAT('***** NON-FATAL DIAGNOSTIC--THE SECOND INPUT ARGUMENT')
46058    5 FORMAT('      TO THE LLGPDF SUBROUTINE IS NEGATIVE *****')
46059   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',E15.8,' *****')
46060C
46061C-----START POINT-----------------------------------------------------
46062C
46063      PDF=0.0
46064      IF(X.EQ.0.0)GOTO9999
46065      DX=DBLE(X)
46066      DDELTA=DBLE(DELTA)
46067C
46068C CHECK FOR VALUE OF X**DELTA THAT IS TO LARGE (SET PDF TO 0)
46069C
46070      DUL=DLOG(DSQRT(D1MACH(2)))
46071      DZ=DDELTA*DLOG(DX)
46072      IF(DZ.GE.DUL)GOTO9999
46073C
46074      DTERM1=DLOG(DDELTA)
46075      DTERM2=(DDELTA-1.0D0)*DLOG(DX)
46076      DTERM3=2.0D0*DLOG(1.0D0+DX**DDELTA)
46077      DTERM4=DTERM1+DTERM2-DTERM3
46078      IF(DTERM4.GE.-80.0D0)THEN
46079        DPDF=DEXP(DTERM4)
46080      ELSE
46081        DPDF=0.0D0
46082      ENDIF
46083      PDF=REAL(DPDF)
46084C
46085 9999 CONTINUE
46086      RETURN
46087      END
46088      SUBROUTINE LLGPPF(P,DELTA,PPF)
46089C
46090C     PURPOSE--THIS SUBROUTINE COMPUTES THE PERCENT POINT
46091C              FUNCTION VALUE FOR THE LOG-LOGISTIC
46092C              DISTRIBUTION.
46093C     INPUT  ARGUMENTS--P      = THE SINGLE PRECISION VALUE
46094C                                (BETWEEN 0.0 (EXCLUSIVELY)
46095C                                AND 1.0 (EXCLUSIVELY))
46096C                                AT WHICH THE PERCENT POINT
46097C                                FUNCTION IS TO BE EVALUATED.
46098C     OUTPUT ARGUMENTS--PPF    = THE SINGLE PRECISION PERCENT
46099C                                POINT FUNCTION VALUE.
46100C     OUTPUT--THE SINGLE PRECISION PERCENT POINT FUNCTION .
46101C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
46102C     RESTRICTIONS--P SHOULD BE BETWEEN 0.0 (EXCLUSIVELY)
46103C                   AND 1.0 (EXCLUSIVELY).
46104C     LANGUAGE--ANSI FORTRAN.
46105C     REFERENCES--"MEASURING SKEWNESS WITH RESPECT TO THE MODE",
46106C                 ARNOLD AND GROENEVELD, AMERICAN STATISTICIAN,
46107C                 FEBRUARY, 1995.
46108C     WRITTEN BY--JAMES J. FILLIBEN
46109C                 STATISTICAL ENGINEERING LABORATORY (205.03)
46110C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
46111C                 GAITHERSBURG, MD 20899-8980
46112C                 PHONE:  301-921-2315
46113C     ORIGINAL VERSION--APRIL     1995.
46114C
46115C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
46116C
46117      DOUBLE PRECISION DTERM1, DTERM2, DTERM3
46118      DOUBLE PRECISION DPPF
46119C
46120C-----COMMON----------------------------------------------------------
46121C
46122      INCLUDE 'DPCOP2.INC'
46123C
46124C---------------------------------------------------------------------
46125C
46126C     CHECK THE INPUT ARGUMENTS FOR ERRORS
46127C
46128      IF(DELTA.LE.0.0)THEN
46129        WRITE(ICOUT,14)
46130        CALL DPWRST('XXX','BUG ')
46131        WRITE(ICOUT,5)
46132        CALL DPWRST('XXX','BUG ')
46133        WRITE(ICOUT,46)DELTA
46134        CALL DPWRST('XXX','BUG ')
46135        PDF=0.0
46136        GOTO9999
46137      ENDIF
46138   14 FORMAT('***** NON-FATAL DIAGNOSTIC--THE SECOND INPUT ARGUMENT')
46139    5 FORMAT('      TO THE LLGPDF SUBROUTINE IS NEGATIVE *****')
46140      IF(P.LT.0.0.OR.P.GE.1.0)GOTO50
46141      GOTO90
46142   50 CONTINUE
46143      WRITE(ICOUT,1)
46144      CALL DPWRST('XXX','BUG ')
46145      WRITE(ICOUT,2)
46146      CALL DPWRST('XXX','BUG ')
46147      WRITE(ICOUT,46)P
46148      CALL DPWRST('XXX','BUG ')
46149      PPF=0.0
46150      RETURN
46151   90 CONTINUE
46152    1 FORMAT(
46153     1'***** FATAL ERROR--THE FIRST  INPUT ARGUMENT TO THE LLGPPF')
46154    2 FORMAT(
46155     1'      SUBROUTINE IS OUTSIDE THE ALLOWABLE (0,1) INTERVAL *****')
46156   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',E15.8,' *****')
46157C
46158C-----START POINT-----------------------------------------------------
46159C
46160      PPF=0.0
46161      IF(P.EQ.0.0)GOTO9999
46162C
46163      DTERM1=(-1.0D0/DBLE(DELTA))
46164      DTERM2=DLOG((1.0D0-DBLE(P))/DBLE(P))
46165      DTERM3=DTERM1*DTERM2
46166      DPPF=DEXP(DTERM3)
46167      PPF=DPPF
46168C
46169 9999 CONTINUE
46170      RETURN
46171      END
46172      SUBROUTINE LLGRAN(N,DELTA,ISEED,X)
46173C
46174C     PURPOSE--THIS SUBROUTINE GENERATES A RANDOM SAMPLE OF SIZE N
46175C              FROM THE LOG-LOGISTIC DISTRIBUTION
46176C              WITH SHAPE PARAMETER VALUE = DELTA.
46177C     INPUT  ARGUMENTS--N      = THE DESIRED INTEGER NUMBER
46178C                                OF RANDOM NUMBERS TO BE
46179C                                GENERATED.
46180C                     --DELTA  = THE SINGLE PRECISION VALUE OF THE
46181C                                SHAPE PARAMETER.
46182C                                DELTA SHOULD BE POSITIVE.
46183C     OUTPUT ARGUMENTS--X      = A SINGLE PRECISION VECTOR
46184C                                (OF DIMENSION AT LEAST N)
46185C                                INTO WHICH THE GENERATED
46186C                                RANDOM SAMPLE WILL BE PLACED.
46187C     OUTPUT--A RANDOM SAMPLE OF SIZE N
46188C             FROM THE LOG-LOGISTIC DISTRIBUTION
46189C             WITH SHAPE PARAMETER VALUE = DELTA.
46190C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
46191C     RESTRICTIONS--THERE IS NO RESTRICTION ON THE MAXIMUM VALUE
46192C                   OF N FOR THIS SUBROUTINE.
46193C                 --DELTA SHOULD BE POSITIVE.
46194C     OTHER DATAPAC   SUBROUTINES NEEDED--UNIRAN.
46195C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE.
46196C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
46197C     LANGUAGE--ANSI FORTRAN (1977)
46198C     REFERENCES--XX
46199C     WRITTEN BY--JAMES J. FILLIBEN
46200C                 STATISTICAL ENGINEERING DIVISION
46201C                 INFORMATION TECHNOLOGY LABORATORY
46202C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
46203C                 GAITHERSBURG, MD 20899-8980
46204C                 PHONE--301-975-2855
46205C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
46206C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
46207C     LANGUAGE--ANSI FORTRAN (1977)
46208C     VERSION NUMBER--2001.10
46209C     ORIGINAL VERSION--OCTOBER   2001.
46210C
46211C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
46212C
46213C---------------------------------------------------------------------
46214C
46215      DIMENSION X(*)
46216C
46217C-----COMMON----------------------------------------------------------
46218C
46219      INCLUDE 'DPCOP2.INC'
46220C
46221C-----START POINT-----------------------------------------------------
46222C
46223C     CHECK THE INPUT ARGUMENTS FOR ERRORS
46224C
46225      IF(N.LT.1)THEN
46226        WRITE(ICOUT, 5)
46227        CALL DPWRST('XXX','BUG ')
46228        WRITE(ICOUT,47)N
46229        CALL DPWRST('XXX','BUG ')
46230        GOTO9000
46231      ENDIF
46232      IF(DELTA.LE.0.0)THEN
46233        WRITE(ICOUT,15)
46234        CALL DPWRST('XXX','BUG ')
46235        WRITE(ICOUT,46)DELTA
46236        CALL DPWRST('XXX','BUG ')
46237        GOTO9000
46238      ENDIF
46239    5 FORMAT('***** FATAL ERROR--THE 1ST INPUT ARGUMENT TO THE ',
46240     1'LLGRAN SUBROUTINE IS NON-POSITIVE *****')
46241   15 FORMAT('***** FATAL ERROR--THE 2ND INPUT ARGUMENT TO THE ',
46242     1'LLGRAN SUBROUTINE IS NON-POSITIVE *****')
46243   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',E15.8,' *****')
46244   47 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',I8,' *****')
46245C
46246C     GENERATE N UNIFORM (0,1) RANDOM NUMBERS;
46247C
46248      CALL UNIRAN(N,ISEED,X)
46249C
46250C     GENERATE N LOG-LOGISTIC DISTRIBUTION RANDOM NUMBERS
46251C     USING THE PERCENT POINT FUNCTION TRANSFORMATION METHOD.
46252C
46253      DO100I=1,N
46254        CALL LLGPPF(X(I),DELTA,XTEMP)
46255        X(I)=XTEMP
46256  100 CONTINUE
46257C
46258 9000 CONTINUE
46259      RETURN
46260      END
46261      SUBROUTINE LLTSLV(NR,N,A,X,B)
46262      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
46263C
46264C PURPOSE
46265C -------
46266C SOLVE AX=B WHERE A HAS THE FORM L(L-TRANSPOSE)
46267C BUT ONLY THE LOWER TRIANGULAR PART, L, IS STORED.
46268C
46269C PARAMETERS
46270C ----------
46271C NR           --> ROW DIMENSION OF MATRIX
46272C N            --> DIMENSION OF PROBLEM
46273C A(N,N)       --> MATRIX OF FORM L(L-TRANSPOSE).
46274C                  ON RETURN A IS UNCHANGED.
46275C X(N)        <--  SOLUTION VECTOR
46276C B(N)         --> RIGHT-HAND SIDE VECTOR
46277C
46278C NOTE
46279C ----
46280C IF B IS NOT REQUIRED BY CALLING PROGRAM, THEN
46281C B AND X MAY SHARE THE SAME STORAGE.
46282C
46283      DIMENSION A(NR,1),X(N),B(N)
46284C
46285C FORWARD SOLVE, RESULT IN X
46286C
46287      CALL FORSLV(NR,N,A,X,B)
46288C
46289C BACK SOLVE, RESULT IN X
46290C
46291      CALL BAKSLV(NR,N,A,X,X)
46292      RETURN
46293      END
46294      SUBROUTINE LMRGLO(PARA,XMOM,NMOM)
46295C===================================================== LMRGLO.FOR
46296C***********************************************************************
46297C*                                                                     *
46298C*  FORTRAN CODE WRITTEN FOR INCLUSION IN IBM RESEARCH REPORT RC20525, *
46299C*  'FORTRAN ROUTINES FOR USE WITH THE METHOD OF L-MOMENTS, VERSION 3' *
46300C*                                                                     *
46301C*  J. R. M. HOSKING                                                   *
46302C*  IBM RESEARCH DIVISION                                              *
46303C*  T. J. WATSON RESEARCH CENTER                                       *
46304C*  YORKTOWN HEIGHTS                                                   *
46305C*  NEW YORK 10598, U.S.A.                                             *
46306C*                                                                     *
46307C*  VERSION 3     AUGUST 1996                                          *
46308C*                                                                     *
46309C***********************************************************************
46310C
46311C  L-MOMENT RATIOS FOR THE GENERALIZED LOGISTIC DISTRIBUTION
46312C
46313C  PARAMETERS OF ROUTINE:
46314C  PARA   * INPUT* ARRAY OF LENGTH 3. CONTAINS THE PARAMETERS OF THE
46315C                  DISTRIBUTION, IN THE ORDER XI, ALPHA, K (LOCATION,
46316C                  SCALE, SHAPE).
46317C  XMOM   *OUTPUT* ARRAY OF LENGTH NMOM. ON EXIT, CONTAINS THE L-MOMENTS
46318C                  LAMBDA-1, LAMBDA-2, TAU-3, TAU-4, ... .
46319C  NMOM   * INPUT* NUMBER OF L-MOMENTS TO BE FOUND. AT MOST 20.
46320C
46321      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
46322      DOUBLE PRECISION PARA(3),XMOM(NMOM),Z(10,20)
46323C
46324      INCLUDE 'DPCOP2.INC'
46325C
46326      DATA ZERO/0D0/,ONE/1D0/
46327      DATA PI/3.141592653589793238D0/
46328C
46329C         SMALL IS USED TO DECIDE WHETHER TO APPROXIMATE THE FIRST 2
46330C         L-MOMENTS BY A POWER-SERIES EXPANSION WHEN G IS NEAR ZERO.
46331C         C1,C2 ARE COEFFICIENTS OF THIS POWER-SERIES EXPANSION.
46332C         C1 IS PI**2/6, C2 IS 7*PI**4/360.
46333C
46334      DATA SMALL/1D-4/
46335      DATA C1,C2/
46336     *  0.16449 34066 84822 644D 1,  0.18940 65658 99449 184D 1/
46337C
46338C         Z-ARRAY CONTAINS COEFFICIENTS OF THE REPRESENTATIONS OF
46339C         L-MOMENT RATIOS AS POLYNOMIALS IN THE SHAPE PARAMETER K
46340C
46341      DATA Z(1,3)/1D0/
46342      DATA (Z(I, 4),I=1, 2)/
46343     *  0.16666 66666 66666 667D 0,  0.83333 33333 33333 333D 0/
46344      DATA (Z(I, 5),I=1, 2)/
46345     *  0.41666 66666 66666 667D 0,  0.58333 33333 33333 333D 0/
46346      DATA (Z(I, 6),I=1, 3)/
46347     *  0.66666 66666 66666 667D-1,  0.58333 33333 33333 333D 0,
46348     *  0.35000 00000 00000 000D 0/
46349      DATA (Z(I, 7),I=1, 3)/
46350     *  0.23333 33333 33333 333D 0,  0.58333 33333 33333 333D 0,
46351     *  0.18333 33333 33333 333D 0/
46352      DATA (Z(I, 8),I=1, 4)/
46353     *  0.35714 28571 42857 143D-1,  0.42083 33333 33333 333D 0,
46354     *  0.45833 33333 33333 333D 0,  0.85119 04761 90476 190D-1/
46355      DATA (Z(I, 9),I=1, 4)/
46356     *  0.15099 20634 92063 492D 0,  0.51562 50000 00000 000D 0,
46357     *  0.29791 66666 66666 667D 0,  0.35466 26984 12698 413D-1/
46358      DATA (Z(I,10),I=1, 5)/
46359     *  0.22222 22222 22222 222D-1,  0.31889 32980 59964 727D 0,
46360     *  0.47997 68518 51851 852D 0,  0.16550 92592 59259 259D 0,
46361     *  0.13398 36860 67019 400D-1/
46362      DATA (Z(I,11),I=1, 5)/
46363     *  0.10650 79365 07936 508D 0,  0.44766 31393 29805 996D 0,
46364     *  0.36081 01851 85185 185D 0,  0.80390 21164 02116 402D-1,
46365     *  0.46285 27336 86067 019D-2/
46366      DATA (Z(I,12),I=1, 6)/
46367     *  0.15151 51515 15151 515D-1,  0.25131 61375 66137 566D 0,
46368     *  0.46969 52160 49382 716D 0,  0.22765 04629 62962 963D 0,
46369     *  0.34713 95502 64550 265D-1,  0.14727 13243 54657 688D-2/
46370      DATA (Z(I,13),I=1, 6)/
46371     *  0.79569 50456 95045 695D-1,  0.38976 59465 02057 613D 0,
46372     *  0.39291 73096 70781 893D 0,  0.12381 31062 61022 928D 0,
46373     *  0.13499 87139 91769 547D-1,  0.43426 15974 56041 900D-3/
46374      DATA (Z(I,14),I=1, 7)/
46375     *  0.10989 01098 90109 890D-1,  0.20413 29966 32996 633D 0,
46376     *  0.44773 66255 14403 292D 0,  0.27305 34428 27748 383D 0,
46377     *  0.59191 74382 71604 938D-1,  0.47768 77572 01646 091D-2,
46378     *  0.11930 26366 63747 775D-3/
46379      DATA (Z(I,15),I=1, 7)/
46380     *  0.61934 52050 59490 774D-1,  0.34203 17593 92870 504D 0,
46381     *  0.40701 37051 73427 396D 0,  0.16218 91928 06752 331D 0,
46382     *  0.25249 21002 35155 791D-1,  0.15509 34276 62872 107D-2,
46383     *  0.30677 82085 63922 850D-4/
46384      DATA (Z(I,16),I=1, 8)/
46385     *  0.83333 33333 33333 333D-2,  0.16976 83649 02293 474D 0,
46386     *  0.42219 12828 68366 202D 0,  0.30542 71728 94620 811D 0,
46387     *  0.84082 79399 72285 210D-1,  0.97243 57914 46208 113D-2,
46388     *  0.46528 02829 88616 322D-3,  0.74138 06706 96146 887D-5/
46389      DATA (Z(I,17),I=1, 8)/
46390     *  0.49716 60284 16028 416D-1,  0.30276 58385 89871 328D 0,
46391     *  0.41047 33000 89185 506D 0,  0.19483 90265 03251 764D 0,
46392     *  0.38659 80637 04648 526D-1,  0.34139 94076 42897 226D-2,
46393     *  0.12974 16173 71825 705D-3,  0.16899 11822 91033 482D-5/
46394      DATA (Z(I,18),I=1, 9)/
46395     *  0.65359 47712 41830 065D-2,  0.14387 48475 95085 690D 0,
46396     *  0.39643 28537 10259 464D 0,  0.32808 41807 20899 471D 0,
46397     *  0.10797 13931 65194 318D 0,  0.15965 33699 32077 769D-1,
46398     *  0.11012 77375 69143 819D-2,  0.33798 23645 82066 963D-4,
46399     *  0.36449 07853 33601 627D-6/
46400      DATA (Z(I,19),I=1, 9)/
46401     *  0.40878 45705 49276 431D-1,  0.27024 42907 25441 519D 0,
46402     *  0.40759 95245 14551 521D 0,  0.22211 14264 89320 008D 0,
46403     *  0.52846 38846 29533 398D-1,  0.59829 82392 72872 761D-2,
46404     *  0.32859 39655 65898 436D-3,  0.82617 91134 22830 354D-5,
46405     *  0.74603 37711 50646 605D-7/
46406      DATA (Z(I,20),I=1,10)/
46407     *  0.52631 57894 73684 211D-2,  0.12381 76557 53054 913D 0,
46408     *  0.37185 92914 44794 917D 0,  0.34356 87476 70189 607D 0,
46409     *  0.13019 86628 12524 058D 0,  0.23147 43648 99477 023D-1,
46410     *  0.20519 25194 79869 981D-2,  0.91205 82581 07571 930D-4,
46411     *  0.19023 86116 43414 884D-5,  0.14528 02606 97757 497D-7/
46412C
46413      U=PARA(1)
46414      A=PARA(2)
46415      G=PARA(3)
46416      IF(A.LE.ZERO.OR.DABS(G).GE.ONE)THEN
46417        WRITE(ICOUT,7000)
46418 7000   FORMAT('***** ERROR IN GENERALIZED LOGISTIC L-MOMENTS--')
46419        CALL DPWRST('XXX','WRIT')
46420        WRITE(ICOUT,7005)
46421 7005   FORMAT('      PARAMETERS INVALID')
46422        CALL DPWRST('XXX','WRIT')
46423        GOTO9000
46424      ELSEIF(NMOM.GT.20)THEN
46425        WRITE(ICOUT,7000)
46426        CALL DPWRST('XXX','WRIT')
46427        WRITE(ICOUT,7010)
46428 7010   FORMAT('      PARAMETER NMOM TOO LARGE')
46429        CALL DPWRST('XXX','WRIT')
46430        GOTO9000
46431      ENDIF
46432C
46433C         FIRST 2 MOMENTS
46434C
46435      GG=G*G
46436      ALAM1=-G*(C1+GG*C2)
46437      ALAM2=ONE+GG*(C1+GG*C2)
46438      IF(DABS(G).GT.SMALL)ALAM2=G*PI/DSIN(G*PI)
46439      IF(DABS(G).GT.SMALL)ALAM1=(ONE-ALAM2)/G
46440      XMOM(1)=U+A*ALAM1
46441      IF(NMOM.EQ.1)GOTO9000
46442      XMOM(2)=A*ALAM2
46443      IF(NMOM.EQ.2)GOTO9000
46444C
46445C         HIGHER MOMENTS
46446C
46447      DO 20 M=3,NMOM
46448         KMAX=M/2
46449         SUM=Z(KMAX,M)
46450         DO 10 K=KMAX-1,1,-1
46451            SUM=SUM*GG+Z(K,M)
46452   10    CONTINUE
46453         IF(M.NE.M/2*2)SUM=-G*SUM
46454         XMOM(M)=SUM
46455   20 CONTINUE
46456C
46457 9000 CONTINUE
46458      RETURN
46459C
46460      END
46461      SUBROUTINE LNHERM(X,AN,HN,ISIGN)
46462C
46463C     PURPOSE--THIS SUBROUTINE COMPUTES THE LOGARITHM OF THE HERMITE
46464C              POLYNOMIAL OF ORDER N.  THIS IS USEFUL FOR LARGER
46465C              ORDERS WHERE OVERFLOW MAY OCCUR WITH THE STANDARD
46466C              HERMITE POLYNOMIAL.
46467C
46468C              THE HERMITE POLYNOMIAL CAN BE NEGATIVE OR POSITIVE,
46469C              SO TAKE LOG OF ABSOLUTE VALUE, SAVE SIGN IN ISIGN.
46470C              IF HERMITE POLYNOMIAL IS ZERO, THEN SET THIS FUNCTION
46471C              TO ZERO.
46472C
46473C              THIS FUNCTION IS INTENDED FOR INTERMEDIATE PRIMARILY
46474C              FOR WHEN HIGH ORDER HERMITE POLYNOMIALS ARE USED IN
46475C              INTERMEDIATE CALCULATIONS AND LOGS CAN BE USED TO
46476C              HANDLE LARGE VALUES.
46477C
46478C     INPUT  ARGUMENTS--X      = THE SINGLE PRECISION INPUT ARGUMENT
46479C                       AN     = THE SINGLE PRECISION VALUE FOR THE
46480C                                ORDER OF THE FUNCTION (SHOULD BE
46481C                                NON-NEGATIVE ORDER)
46482C     OUTPUT ARGUMENTS--HN     = THE SINGLE PRECISION VALUE OF THE
46483C                                LOG HERMITE POLYNOMIAL.
46484C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
46485C     RESTRICTIONS--
46486C     OTHER DATAPAC   SUBROUTINES NEEDED--NONE
46487C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE
46488C     MODE OF INTERNAL OPERATIONS--SOME DOUBLE PRECISION.
46489C     LANGUAGE--ANSI FORTRAN.
46490C     REFERENCES--"HANDBOOK OF MATHEMATICAL FUNCTIONS, AMS 55",
46491C                 ABRAMOWITZ AND STEGUM.
46492C                 USE FOLLOWING RECURRENCE FORMULA:
46493C                    H(N+1) = 2.0*X*H(N)-2.0*N*H(N-1)
46494C                 FIRST FEW TERMS ARE FROM TABLE 22.12 OF ABRAMOWITZ
46495C                 AND STEGUM.
46496C                 COMPUTE THE HERMITE POLYNOMIAL IN THE STANDARD WAY
46497C                 (IN DOUBLE PRECISION), BUT TAKE LOG BEFORE CONVERTING
46498C                 TO SINGLE PRECISION.
46499C     WRITTEN BY--JAMES J. FILLIBEN
46500C                 STATISTICAL ENGINEERING LABORATORY (205.03)
46501C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
46502C                 GAITHERSBURG, MD 20899-8980
46503C                 PHONE:  301-975-2855
46504C     ORIGINAL VERSION--JULY       1995.
46505C
46506C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
46507C
46508      DOUBLE PRECISION DX
46509      DOUBLE PRECISION DN, DN2
46510      DOUBLE PRECISION DHN, DHN1, DHN2
46511C
46512C-----COMMON----------------------------------------------------------
46513C
46514      INCLUDE 'DPCOP2.INC'
46515C
46516C-----START POINT-----------------------------------------------------
46517C
46518      N=INT(AN+0.5)
46519      IF(N.LT.0)THEN
46520        WRITE(ICOUT,6)
46521        CALL DPWRST('XXX','BUG ')
46522        WRITE(ICOUT,47)N
46523        CALL DPWRST('XXX','BUG ')
46524        GOTO9999
46525      ENDIF
46526    6 FORMAT('***** NON-FATAL DIAGNOSTIC--THE 2ND INPUT ARGUMENT ',
46527     1'TO THE LNHERM SUBROUTINE IS NEGATIVE *****')
46528   47 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',I8,' *****')
46529C
46530      DX=DBLE(X)
46531      DN=DBLE(N)
46532C
46533      IF(N.LE.0)THEN
46534        DHN=1.0D0
46535      ELSEIF(N.EQ.1)THEN
46536        DHN=2.0D0*DX
46537      ELSEIF(N.EQ.2)THEN
46538        DHN=4.0D0*DX**2 - 2.0D0
46539      ELSEIF(N.EQ.3)THEN
46540        DHN=8.0D0*DX**3 - 12.0D0*DX
46541      ELSEIF(N.EQ.4)THEN
46542        DHN=16.0D0*DX**4 - 48.0D0*X**2 + 12.0D0
46543      ELSEIF(N.EQ.5)THEN
46544        DHN=32.0D0*DX**5 - 160.0D0*DX**3 + 120.0D0*DX
46545      ELSE
46546        DHN1=32.0D0*DX**5 - 160.0D0*DX**3 + 120.0D0*DX
46547        DHN2=16.0D0*DX**4 - 48.0D0*X**2 + 12.0D0
46548        DO1000I=6,N
46549          DN2=DBLE(I)-1.0D0
46550          DHN=2.0D0*DX*DHN1 - 2.0D0*DN2*DHN2
46551          DHN2=DHN1
46552          DHN1=DHN
46553 1000   CONTINUE
46554      ENDIF
46555C
46556      IF(DHN.GT.0.0)THEN
46557        DHN=DLOG(DHN)
46558        ISIGN=1
46559      ELSEIF(DHN.LT.0.D0)THEN
46560        DHN=DLOG(DABS(DHN))
46561        ISIGN=-1
46562      ELSE
46563        DHN=0.0D0
46564        ISIGN=0
46565      ENDIF
46566C
46567      HN=REAL(DHN)
46568C
46569 9999 CONTINUE
46570      RETURN
46571      END
46572      SUBROUTINE LNSRCH(N,X,F,G,P,XPLS,FPLS,MXTAKE,
46573CDPLT SUBROUTINE LNSRCH(N,X,F,G,P,XPLS,FPLS,OPTFCN,MXTAKE,
46574     +                  IRETCD,STEPMX,STEPTL,SX,IPR)
46575      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
46576C PURPOSE
46577C -------
46578C FIND A NEXT NEWTON ITERATE BY LINE SEARCH.
46579C
46580C PARAMETERS
46581C ----------
46582C N            --> DIMENSION OF PROBLEM
46583C X(N)         --> OLD ITERATE:   X[K-1]
46584C F            --> FUNCTION VALUE AT OLD ITERATE, F(X)
46585C G(N)         --> GRADIENT AT OLD ITERATE, G(X), OR APPROXIMATE
46586C P(N)         --> NON-ZERO NEWTON STEP
46587C XPLS(N)     <--  NEW ITERATE X[K]
46588C FPLS        <--  FUNCTION VALUE AT NEW ITERATE, F(XPLS)
46589C OPTFCN       --> NAME OF SUBROUTINE TO EVALUATE FUNCTION
46590C IRETCD      <--  RETURN CODE
46591C MXTAKE      <--  BOOLEAN FLAG INDICATING STEP OF MAXIMUM LENGTH USED
46592C STEPMX       --> MAXIMUM ALLOWABLE STEP SIZE
46593C STEPTL       --> RELATIVE STEP SIZE AT WHICH SUCCESSIVE ITERATES
46594C                  CONSIDERED CLOSE ENOUGH TO TERMINATE ALGORITHM
46595C SX(N)        --> DIAGONAL SCALING MATRIX FOR X
46596C IPR          --> DEVICE TO WHICH TO SEND OUTPUT
46597C
46598C INTERNAL VARIABLES
46599C ------------------
46600C SLN              NEWTON LENGTH
46601C RLN              RELATIVE LENGTH OF NEWTON STEP
46602C
46603      INTEGER N,IRETCD
46604      DIMENSION SX(N)
46605      DIMENSION X(N),G(N),P(N)
46606      DIMENSION XPLS(N)
46607      DIMENSION FHAT(1)
46608      LOGICAL MXTAKE
46609C
46610      PLMBDA=0.0
46611      PFPLS=0.0
46612C
46613      IPR=IPR
46614      MXTAKE=.FALSE.
46615      IRETCD=2
46616C$    WRITE(IPR,954)
46617C$    WRITE(IPR,955) (P(I),I=1,N)
46618      TMP=0.0D0
46619      DO 5 I=1,N
46620        TMP=TMP+SX(I)*SX(I)*P(I)*P(I)
46621    5 CONTINUE
46622      SLN=SQRT(TMP)
46623      IF(SLN.LE.STEPMX) GO TO 10
46624C
46625C NEWTON STEP LONGER THAN MAXIMUM ALLOWED
46626        SCL=STEPMX/SLN
46627        CALL SCLMUL(N,SCL,P,P)
46628        SLN=STEPMX
46629C$      WRITE(IPR,954)
46630C$      WRITE(IPR,955) (P(I),I=1,N)
46631   10 CONTINUE
46632      SLP=DDOT(N,G,1,P,1)
46633      RLN=0.D0
46634      DO 15 I=1,N
46635        RLN=MAX(RLN,ABS(P(I))/MAX(ABS(X(I)),1.D0/SX(I)))
46636   15 CONTINUE
46637      RMNLMB=STEPTL/RLN
46638      ALMBDA=1.0D0
46639C$    WRITE(IPR,952) SLN,SLP,RMNLMB,STEPMX,STEPTL
46640C
46641C LOOP
46642C CHECK IF NEW ITERATE SATISFACTORY.  GENERATE NEW LAMBDA IF NECESSARY.
46643C
46644  100 CONTINUE
46645      IF(IRETCD.LT.2) RETURN
46646      DO 105 I=1,N
46647        XPLS(I)=X(I) + ALMBDA*P(I)
46648  105 CONTINUE
46649      CALL OPTFCN(N,XPLS,FHAT)
46650      FPLS=FHAT(1)
46651C$    WRITE(IPR,950) ALMBDA
46652C$    WRITE(IPR,951)
46653C$    WRITE(IPR,955) (XPLS(I),I=1,N)
46654C$    WRITE(IPR,953) FPLS
46655      IF(FPLS.GT. F+SLP*1.D-4*ALMBDA) GO TO 130
46656C     IF(FPLS.LE. F+SLP*1.D-4*ALMBDA)
46657C     THEN
46658C
46659C SOLUTION FOUND
46660C
46661        IRETCD=0
46662        IF(ALMBDA.EQ.1.0 .AND. SLN.GT. .99D0*STEPMX) MXTAKE=.TRUE.
46663        GO TO 100
46664C
46665C SOLUTION NOT (YET) FOUND
46666C
46667C     ELSE
46668  130   CONTINUE
46669        IF(ALMBDA .GE. RMNLMB) GO TO 140
46670C       IF(ALMBDA .LT. RMNLMB)
46671C       THEN
46672C
46673C NO SATISFACTORY XPLS FOUND SUFFICIENTLY DISTINCT FROM X
46674C
46675          IRETCD=1
46676          GO TO 100
46677C       ELSE
46678C
46679C CALCULATE NEW LAMBDA
46680C
46681  140     IF(ALMBDA.NE.1.0D0) GO TO 150
46682C         IF(ALMBDA.EQ.1.0D0)
46683C         THEN
46684C
46685C FIRST BACKTRACK: QUADRATIC FIT
46686C
46687            TLMBDA=-SLP/(2.D0*(FPLS-F-SLP))
46688            GO TO 170
46689C         ELSE
46690C
46691C ALL SUBSEQUENT BACKTRACKS: CUBIC FIT
46692C
46693  150       CONTINUE
46694            T1=FPLS-F-ALMBDA*SLP
46695            T2=PFPLS-F-PLMBDA*SLP
46696            T3=1.0D0/(ALMBDA-PLMBDA)
46697            A=T3*(T1/(ALMBDA*ALMBDA) - T2/(PLMBDA*PLMBDA))
46698            B=T3*(T2*ALMBDA/(PLMBDA*PLMBDA)
46699     +           - T1*PLMBDA/(ALMBDA*ALMBDA) )
46700            DISC=B*B-3.0D0*A*SLP
46701            IF(DISC.LE. B*B) GO TO 160
46702C           IF(DISC.GT. B*B)
46703C           THEN
46704C
46705C ONLY ONE POSITIVE CRITICAL POINT, MUST BE MINIMUM
46706C
46707              TLMBDA=(-B+SIGN(1.0D0,A)*SQRT(DISC))/(3.0D0*A)
46708              GO TO 165
46709C           ELSE
46710C
46711C BOTH CRITICAL POINTS POSITIVE, FIRST IS MINIMUM
46712C
46713  160         TLMBDA=(-B-SIGN(1.0D0,A)*SQRT(DISC))/(3.0D0*A)
46714C           ENDIF
46715  165       IF(TLMBDA.GT. .5D0*ALMBDA) TLMBDA=.5D0*ALMBDA
46716C         ENDIF
46717  170     CONTINUE
46718          PLMBDA=ALMBDA
46719          PFPLS=FPLS
46720          IF(TLMBDA.GE. ALMBDA*.1D0) GO TO 180
46721C         IF(TLMBDA.LT.ALMBDA/10.D0)
46722C         THEN
46723            ALMBDA=ALMBDA*.1D0
46724            GO TO 190
46725C         ELSE
46726  180       ALMBDA=TLMBDA
46727C         ENDIF
46728C       ENDIF
46729C     ENDIF
46730  190 GO TO 100
46731CC950 FORMAT(18H LNSRCH    ALMBDA=,E20.13)
46732CC951 FORMAT(29H LNSRCH    NEW ITERATE (XPLS))
46733CC952 FORMAT(18H LNSRCH    SLN   =,E20.13/
46734CC   +       18H LNSRCH    SLP   =,E20.13/
46735CC   +       18H LNSRCH    RMNLMB=,E20.13/
46736CC   +       18H LNSRCH    STEPMX=,E20.13/
46737CC   +       18H LNSRCH    STEPTL=,E20.13)
46738CC953 FORMAT(19H LNSRCH    F(XPLS)=,E20.13)
46739CC954 FORMAT(26H0LNSRCH    NEWTON STEP (P))
46740CC955 FORMAT(14H LNSRCH       ,5(E20.13,3X))
46741      END
46742      DOUBLE PRECISION FUNCTION LOBACH(XVALUE)
46743C
46744C   DESCRIPTION:
46745C
46746C      This function calculates the Lobachewsky function L(x), defined as
46747C
46748C         LOBACH(x) = {integral 0 to x} ( -ln ( | cos t | ) dt
46749C
46750C      The code uses Chebyshev expansions whose coefficients are given
46751C      to 20 decimal places.
46752C
46753C
46754C   ERROR RETURNS:
46755C
46756C      If |x| too large, it is impossible to accurately reduce the
46757C      argument to the range [0,pi]. An error message is printed
46758C      and the program returns the value 0.0
46759C
46760C
46761C   MACHINE-DEPENDENT CONSTANTS:
46762C
46763C      NTERM1 - INTEGER - The no. of terms to be used of the array ARLOB1.
46764C                          The recommended value is such that
46765C                          ABS(ARLOB1(NTERM1)) < EPS/100
46766C
46767C      NTERM2 - INTEGER - The no. of terms to be used of the array ARLOB2.
46768C                          The recommended value is such that
46769C                          ABS(ARLOB2(NTERM2)) < EPS/100
46770C
46771C      XLOW1 - DOUBLE PRECISION - The value below which L(x) = 0.0 to machine-precision.
46772C                     The recommended value is
46773C                              cube-root ( 6*XMIN )
46774C
46775C      XLOW2 - DOUBLE PRECISION - The value below which L(x) = x**3/6 to
46776C                     machine-precision. The recommended value is
46777C                              sqrt ( 10*EPS )
46778C
46779C      XLOW3 - DOUBLE PRECISION - The value below which
46780C                         L(pi/2) - L(pi/2-x) = x ( 1 - log(x) )
46781C                     to machine-precision. The recommended value is
46782C                               sqrt ( 18*EPS )
46783C
46784C      XHIGH - DOUBLE PRECISION - The value of |x| above which it is impossible
46785C                     to accurately reduce the argument. The
46786C                     recommended value is   1 / EPS.
46787C
46788C      For values of EPS, and XMIN, refer to the file MACHCON.TXT
46789C
46790C      The machine-dependent constants are computed internally by
46791C      using the D1MACH subroutine.
46792C
46793C
46794C   INTRINSIC FUNCTIONS USED:
46795C
46796C      INT , LOG , SQRT
46797C
46798C
46799C   OTHER MISCFUN SUBROUTINES USED:
46800C
46801C          CHEVAL , ERRPRN, D1MACH
46802C
46803C
46804C   AUTHOR:
46805C
46806C      Dr. Allan J. MacLeod,
46807C      Dept. of Mathematics and Statistics,
46808C      University of Paisley,
46809C      High St.,
46810C      Paisley,
46811C      SCOTLAND
46812C
46813C      ( e-mail: macl_ms0@paisley.ac.uk )
46814C
46815C
46816C   LATEST UPDATE:
46817C                  23 January, 1996
46818C
46819      INTEGER INDPI2,INDSGN,NPI,NTERM1,NTERM2
46820      DOUBLE PRECISION ARLOB1(0:15),ARLOB2(0:10),
46821     1     CHEVAL,FVAL,FVAL1,HALF,LBPB21,LBPB22,LOBPIA,LOBPIB,
46822     2     LOBPI1,LOBPI2,ONE,ONEHUN,PI,PIBY2,PIBY21,PIBY22,PIBY4,PI1,
46823     3     PI11,PI12,PI2,SIX,T,TCON,TEN,TWO,X,XCUB,XHIGH,XLOW1,
46824     4     XLOW2,XLOW3,XR,XVALUE,ZERO
46825CCCCC CHARACTER FNNAME*6,ERRMSG*26
46826C
46827C-----COMMON----------------------------------------------------------
46828C
46829      INCLUDE 'DPCOMC.INC'
46830      INCLUDE 'DPCOP2.INC'
46831C
46832CCCCC DATA FNNAME/'LOBACH'/
46833CCCCC DATA ERRMSG/'ARGUMENT TOO LARGE IN SIZE'/
46834      DATA ZERO,HALF/ 0.0 D 0 , 0.5 D 0 /
46835      DATA ONE,TWO,SIX/ 1.0 D 0 , 2.0 D 0 , 6.0 D 0 /
46836      DATA TEN,ONEHUN/ 10.0 D 0 , 100.0 D 0 /
46837      DATA LOBPIA,LOBPIB/ 1115.0 D 0 , 512.0 D 0 /
46838      DATA LOBPI2/-1.48284 69639 78694 99311 D -4/
46839      DATA LBPB22/-7.41423 48198 93474 96556 D -5/
46840      DATA PI11,PI12/ 201.0 D 0 , 64.0 D 0 /
46841      DATA PI2/9.67653 58979 32384 62643 D -4/
46842      DATA PIBY22/4.83826 79489 66192 31322 D -4/
46843      DATA TCON/3.24227 78765 54808 68620 D 0/
46844      DATA ARLOB1/0.34464 88495 34813 00507  D    0,
46845     1            0.58419 83571 90277 669    D   -2,
46846     2            0.19175 02969 46003 30     D   -3,
46847     3            0.78725 16064 56769        D   -5,
46848     4            0.36507 47741 5804         D   -6,
46849     5            0.18302 87272 680          D   -7,
46850     6            0.96890 33300 5            D   -9,
46851     7            0.53390 55444              D  -10,
46852     8            0.30340 8025               D  -11,
46853     9            0.17667 875                D  -12,
46854     X            0.10493 93                 D  -13,
46855     1            0.63359                    D  -15,
46856     2            0.3878                     D  -16,
46857     3            0.240                      D  -17,
46858     4            0.15                       D  -18,
46859     5            0.1                        D  -19/
46860      DATA ARLOB2/2.03459 41803 61328 51087  D    0,
46861     1            0.17351 85882 02740 7681   D   -1,
46862     2            0.55162 80426 09052 1      D   -4,
46863     3            0.39781 64627 6598         D   -6,
46864     4            0.36901 80289 18           D   -8,
46865     5            0.38804 09214              D  -10,
46866     6            0.44069 698                D  -12,
46867     7            0.52767 4                  D  -14,
46868     8            0.6568                     D  -16,
46869     9            0.84                       D  -18,
46870     X            0.1                        D  -19/
46871C
46872C   Start computation
46873C
46874      X = ABS ( XVALUE )
46875      INDSGN = 1
46876      IF ( XVALUE .LT. ZERO ) THEN
46877         INDSGN = -1
46878      ENDIF
46879C
46880C   Compute the machine-dependent constants.
46881C
46882      XR = D1MACH(3)
46883      XHIGH = ONE / XR
46884C
46885C   Error test
46886C
46887      IF ( X .GT. XHIGH ) THEN
46888CCCCC    CALL ERRPRN(FNNAME,ERRMSG)
46889         WRITE(ICOUT,999)
46890         CALL DPWRST('XXX','BUG ')
46891         WRITE(ICOUT,101)X
46892         CALL DPWRST('XXX','BUG ')
46893         LOBACH = ZERO
46894         RETURN
46895      ENDIF
46896  999 FORMAT(1X)
46897  101 FORMAT('***** ERROR FROM LOBACH--ARGUMENT TOO LARGE.   ',
46898     1       'ARGUMENT = ',G15.7)
46899C
46900C   continue with constants
46901C
46902      T = XR / ONEHUN
46903      DO 10 NTERM1 = 15 , 0 , -1
46904         IF ( ABS(ARLOB1(NTERM1)) .GT. T ) GOTO 19
46905 10   CONTINUE
46906 19   DO 20 NTERM2 = 10 , 0 , -1
46907         IF ( ABS(ARLOB2(NTERM2)) .GT. T ) GOTO 29
46908 20   CONTINUE
46909 29   XLOW1 = ( SIX * D1MACH(1) ) ** (TWO/SIX)
46910      XLOW2 = SQRT ( TEN * XR )
46911      T = TWO * TEN - TWO
46912      XLOW3 = SQRT ( T * XR )
46913C
46914C   Reduce argument to [0,pi]
46915C
46916      PI1 = PI11/PI12
46917      PI = PI1 + PI2
46918      PIBY2 = PI/TWO
46919      PIBY21 = PI1/TWO
46920      PIBY4 = PIBY2/TWO
46921      NPI = INT ( X / PI )
46922      XR = ( X - NPI * PI1 ) - NPI * PI2
46923C
46924C   Reduce argument to [0,pi/2]
46925C
46926      INDPI2 = 0
46927      IF ( XR .GT. PIBY2 ) THEN
46928         INDPI2 = 1
46929         XR = ( PI1 - XR ) + PI2
46930      ENDIF
46931C
46932C   Code for argument in [0,pi/4]
46933C
46934      IF ( XR .LE. PIBY4 ) THEN
46935         IF ( XR .LT. XLOW1 ) THEN
46936            FVAL = ZERO
46937         ELSE
46938            XCUB = XR * XR * XR
46939            IF ( XR .LT. XLOW2 ) THEN
46940               FVAL = XCUB / SIX
46941            ELSE
46942               T = ( TCON * XR * XR - HALF ) - HALF
46943               FVAL = XCUB * CHEVAL(NTERM1,ARLOB1,T)
46944            ENDIF
46945         ENDIF
46946      ELSE
46947C
46948C   Code for argument in [pi/4,pi/2]
46949C
46950         XR = ( PIBY21 - XR ) + PIBY22
46951         IF ( XR .EQ. ZERO ) THEN
46952            FVAL1 = ZERO
46953         ELSE
46954            IF ( XR .LT. XLOW3 ) THEN
46955               FVAL1 = XR * ( ONE - LOG( XR ) )
46956            ELSE
46957               T = ( TCON * XR * XR - HALF ) - HALF
46958               FVAL1 = XR * ( CHEVAL(NTERM2,ARLOB2,T) - LOG( XR ) )
46959            ENDIF
46960         ENDIF
46961         LBPB21 = LOBPIA / ( LOBPIB + LOBPIB )
46962         FVAL = ( LBPB21 - FVAL1 ) + LBPB22
46963      ENDIF
46964      LOBPI1 = LOBPIA / LOBPIB
46965C
46966C   Compute value for argument in [pi/2,pi]
46967C
46968      IF ( INDPI2 .EQ. 1 ) THEN
46969         FVAL = ( LOBPI1 - FVAL ) + LOBPI2
46970      ENDIF
46971      LOBACH = FVAL
46972C
46973C   Scale up for arguments > pi
46974C
46975      IF ( NPI .GT. 0 ) THEN
46976         LOBACH = ( FVAL + NPI * LOBPI2 ) + NPI * LOBPI1
46977      ENDIF
46978      IF ( INDSGN .EQ. -1 ) THEN
46979         LOBACH = - LOBACH
46980      ENDIF
46981      RETURN
46982      END
46983      SUBROUTINE LOCAL (XI,YI,FI,NXG,XG,NYG,YG,NP,MP,AL,AB,C,IP,IER)
46984C
46985C     THIS SUBROUTINE CONSTRUCTS THE LOCAL APPROXIMANTS FOR THE GRID
46986C     VERSION OF FRANKE'S METHOD.  THE LOCAL APPROXIMATIONS ARE TAKEN
46987C     TO BE THE THIN PLATE SPLINES DESCRIBED BY DUCHON AND OTHERS.
46988C
46989C     THE ARGUMENTS ARE AS FOLLOWS.
46990C
46991C        XI   - \
46992C        YI   - INPUT.  THE DATA POINTS (XI,YI,FI),I=1,NPI.
46993C        FI   - /
46994C        NXG  - INPUT.  THE NUMBER OF VERTICAL GRID LINES.
46995C        XG   - INPUT.  THE COORDINATES OF THE VERTICAL GRID LINES, IN
46996C                       INCREASING ORDER.
46997C        NYG  - INPUT.  THE NUMBER OF HORIZONTAL GRID LINES.
46998C        YG   - INPUT.  THE COORDINATES OF THE HORIZONTAL GRID LINES, IN
46999C                       INCREASING ORDER.
47000C        NP   - INPUT.  AN ARRAY WHICH GIVES THE INITIAL SUBSCRIPT IN
47001C                       THE ARRAY MP AT WHICH THE SUBSCRIPTS FOR THE
47002C                       LOCAL INTERPOLATION POINTS ARE STORED.
47003C        MP   - INPUT.  AN ARRAY WHICH GIVES THE SUBSCRIPTS FOR THE
47004C                       LOCAL INTERPOLATION POINTS.
47005C        AL   - OUTPUT.  THE COEFFICIENTS FOR THE LINEAR PART OF THE
47006C                       LOCAL THIN PLATE SPLINE FIT.
47007C        AB   - OUTPUT.  THE COEFFICIENTS FOR THE THIN PLATE SPLINES
47008C        C    - OUTPUT.  NOT MEANINGFUL.  THIS IS A SCRATCH ARRAY USED
47009C                       DURING CALCULATION OF THE LOCAL APPROXIMATIONS.
47010C        IP   - OUTPUT.  NOT MEANINGFUL.  THIS IS A SCRATCH ARRAY USED
47011C                       TO STORE PIVOT ORDER IN EQUATION SOLUTION.
47012C        IER  - OUTPUT.  RETURN INDICATOR.
47013C                 = 0,  NORMAL RETURN.
47014C                 = 1,  SINGULAR MATRIX HAS BEEN DETECTED IN THE
47015C                       THIN PLATE SPLINE FIT.
47016C
47017C     SUBROUTINES USED
47018C        LINPACK:  SGECO,SGESL
47019C        SLATEC:  XERROR
47020C
47021      DIMENSION XI(*), YI(*), FI(*), NP(*), MP(*), AL(*), AB(*), XG(*),
47022     1 YG(*),C(*),IP(*)
47023C
47024C     ARITHMETIC STATEMENT FUNCTION FOR THE THIN PLATE SPLINE BASIS
47025C     FUNCTIONS.
47026C
47027      PHI(X,Y,XP,YP) = ((X-XP)**2+(Y-YP)**2)*LOG(((X-XP)**2+(Y-YP)**2)
47028     1 + 1.E-20)
47029      IER = 0
47030      IJ = 0
47031      DO 160 J=1,NYG
47032      DO 140 I=1,NXG
47033      IJ = IJ + 1
47034  140 CONTINUE
47035  160 CONTINUE
47036      IJ = 0
47037C
47038      DO 260 J=1,NYG
47039      DY = YG(J+2)-YG(J)
47040C
47041      DO 240 I=1,NXG
47042      DX = XG(I+2)-XG(I)
47043      IJ = IJ+1
47044      LEND = NP(IJ+1)-NP(IJ)
47045      LEND3 = LEND + 3
47046      IALS = (IJ-1)*3
47047C
47048      DO 200 LI=1,LEND
47049      MPI = NP(IJ)+LI-1
47050      KI = MP(MPI)
47051      XKI = (XI(KI)-XG(I))/DX
47052      YKI = (YI(KI)-YG(J))/DY
47053      LIJ = LEND*LEND3 + LI
47054      C(LIJ) = 1.
47055      C(LIJ+LEND3) = XKI
47056      C(LIJ+2*LEND3) = YKI
47057      LIJ = LEND3*(LI - 1) + LEND + 1
47058      C(LIJ) = 1.
47059      C(LIJ+1) = XKI
47060      C(LIJ+2) = YKI
47061      LIJL = LI
47062      LIJU = LEND3*(LI-1)+1
47063C
47064      DO 180 LJ=1,LI
47065      MPJ = NP(IJ)+LJ-1
47066      KJ = MP(MPJ)
47067      XKJ = (XI(KJ)-XG(I))/DX
47068      YKJ = (YI(KJ)-YG(J))/DY
47069      C(LIJL) = PHI(XKI,YKI,XKJ,YKJ)
47070      C(LIJU) = C(LIJL)
47071      LIJL = LIJL + LEND3
47072      LIJU = LIJU + 1
47073  180 CONTINUE
47074C
47075      LIJ = LEND3*LEND3 + LI
47076      C(LIJ) = FI(KI)
47077  200 CONTINUE
47078      DO 215 LLI=1,3
47079      LIJU = (LEND + LLI - 1)*LEND3 + LEND + 1
47080      LIJL = LEND*LEND3 + LEND + LLI
47081      DO 210 LLJ = 1,LLI
47082      C(LIJL) = 0.
47083      C(LIJU) = 0.
47084      LIJL = LIJL + LEND3
47085      LIJU = LIJU + 1
47086  210 CONTINUE
47087      LIJ = LEND3*LEND3 + LEND + LLI
47088      C(LIJ) = 0.
47089  215 CONTINUE
47090C
47091      LR = LEND3*LEND3 + 1
47092      LRR = LR + LEND3
47093C
47094      CALL SGECO(C,LEND3,LEND3,IP,RCOND,C(LRR))
47095      IF((.1*RCOND+1.).EQ.1.)GO TO 300
47096      CALL SGESL(C,LEND3,LEND3,IP,C(LR),0)
47097C
47098      DO 220 LI=1,LEND
47099      IAB = NP(IJ)+LI-1
47100      AB(IAB) = C(LR)
47101      LR = LR + 1
47102  220 CONTINUE
47103C
47104      AL(IALS+1) = C(LR)
47105      AL(IALS+2) = C(LR+1)
47106      AL(IALS+3) = C(LR+2)
47107  240 CONTINUE
47108C
47109  260 CONTINUE
47110C
47111      RETURN
47112C
47113C     ERROR RETURN
47114C
47115  300 IER = 1
47116      RETURN
47117      END
47118      SUBROUTINE LOEVL (XI,YI,NXG,XG,NYG,YG,NP,MP,AL,AB,NXO,XO,NYO
47119     1,YO,FO)
47120C
47121C     THIS SUBROUTINE EVALUATES THE INTERPOLANT FOR THE GRID VERSION OF
47122C     FRANKE'S METHOD.  THE FUNCTION IS EVALUATED AT THE GRID OF POINTS
47123C     INDICATED BY NXO, XO, NYO, YO, AND THESE VALUES ARE RETURNED
47124C     IN THE ARRAY FO, WHICH IS ASSUMED TO BE DIMENSIONED (NXO,NYO).
47125C
47126C     THE ARGUMENTS ARE AS FOLLOWS.
47127C
47128C        XI   - \
47129C        YI   - INPUT.  THE DATA POINTS (XI,YI,FI),I=1,...,NPI.
47130C        FI   - /
47131C        NXG  - INPUT.  THE NUMBER OF VERTICAL GRID LINES.
47132C        XG   - INPUT.  THE COORDINATES OF THE VERTICAL GRID LINES, IN
47133C                       INCREASING ORDER.
47134C        NYG  - INPUT.  THE NUMBER OF HORIZONTAL GRID LINES.
47135C        YG   - INPUT.  THE COORDINATES OF THE HORIZONTAL GRID LINES,
47136C                       IN INCREASING ORDER.
47137C        NP   - INPUT.  AN ARRAY WHICH GIVES THE INITIAL SUBSCRIPT IN
47138C                       THE ARRAY MP AT WHICH THE SUBSCRIPTS FOR THE
47139C                       LOCAL INTERPOLATION POINTS ARE STORED.
47140C        MP   - INPUT.  AN ARRAY WHICH GIVES THE SUBSCRIPTS FOR THE
47141C                       LOCAL INTERPOLATION POINTS.
47142C        AL   - INPUT.  THE COEFFICIENTS FOR THE LINEAR PART OF THE
47143C                       THIN PLATE SPLINE APPROXIMATIONS.
47144C        AB   - INPUT.  THE COEFFICIENTS FOR THE LOCAL THIN PLATE
47145C                       SPLINE APPROXIMATIONS.
47146C        NXO  - INPUT.  THE NUMBER OF XO VALUES AT WHICH THE INTERPO-
47147C                       LATION FUNCTION IS TO BE CALCULATED.
47148C        XO   - INPUT.  THE VALUES OF X AT WHICH THE INTERPOLATION
47149C                       FUNCTION IS TO BE CALCULATED.
47150C        NYO  - INPUT.  THE NUMBER OF YO VALUES AT WHICH THE INTERPO-
47151C                       LATION FUNCTION IS TO BE CALCULATED.
47152C        YO   - INPUT.  THE VALUES OF Y AT WHICH THE INTERPOLATION
47153C                       FUNCTION IS TO BE CALCULATED.
47154C        FO   - OUTPUT.  VALUES OF THE INTERPOLATION FUNCTION AT THE
47155C                       GRID POINTS INDICATED BY NXO, XO, NYO, YO.
47156C                       FO IS ASSUMED TO BE DIMENSIONED (NXO,NYO) IN THE
47157C                       CALLING PROGRAM.
47158C
47159      DIMENSION XG(*), YG(*), XI(*), YI(*), NP(*), MP(*), FC(4), AL(*),
47160     1AB(*), XO(*), YO(*), FO(NXO,1)
47161C
47162C     ARITHMETIC STATEMENT FUNCTION FOR THE HERMITE CUBIC.
47163C
47164      H3(S) = 1. - S**2*(3. - 2.*S)
47165C
47166C     ARITHMETIC STATEMENT FUNCTION FOR THE THIN PLATE SPLINE BASIS
47167C     FUNCTIONS.
47168C
47169      PHI(X,Y,XP,YP) = ((X-XP)**2+(Y-YP)**2)*LOG(((X-XP)**2+(Y-YP)**2)
47170     1 + 1.E-20)
47171C
47172      J = 1
47173C
47174      DO 640 JO=1,NYO
47175C
47176C       DETERMINE THE LOCATION OF THE POINT YO IN TERMS OF THE SMALLEST
47177C       VALUE OF J SUCH THAT YO(JO) IS IN SOME RECTANGLE (I,J).
47178C
47179        YV = YO(JO)
47180        JJS = J+1
47181        IF (YV.LT.YG(JJS)) JJS=1
47182C
47183        DO 100 JJ=JJS,NYG
47184          IF (YV.LT.YG(JJ+1)) GO TO 120
47185  100   CONTINUE
47186C
47187        J = NYG
47188        GO TO 140
47189  120   CONTINUE
47190        J = JJ-1
47191  140   CONTINUE
47192        JD = 3
47193        IF (J.GE.1) GO TO 160
47194        JD = 0
47195        J = 1
47196        GO TO 180
47197  160   CONTINUE
47198        IF (J.LT.NYG) GO TO 180
47199        JD = 6
47200  180   CONTINUE
47201        DY = YG(J+2)-YG(J+1)
47202        I = 1
47203C
47204        DO 620 IO=1,NXO
47205C
47206C         DETERMINE THE LOCATION OF THE POINT XO IN TERMS OF THE
47207C         SMALLEST VALUE OF I SUCH THAT XO(IO) IS IN THE
47208C         RECTANGLE (I,J).
47209C
47210          IIS = I+1
47211          XV = XO(IO)
47212          IF (XV.LT.XG(IIS)) IIS=1
47213C
47214          DO 200 II=IIS,NXG
47215            IF (XV.LT.XG(II+1)) GO TO 220
47216  200     CONTINUE
47217C
47218          I = NXG
47219          GO TO 240
47220  220     CONTINUE
47221          I = II-1
47222  240     CONTINUE
47223          ID = 2
47224          IF (I.GE.1) GO TO 260
47225          ID = 1
47226          I = 1
47227          GO TO 280
47228  260     CONTINUE
47229          IF (I.LT.NXG) GO TO 280
47230          ID = 3
47231  280     CONTINUE
47232          DX = XG(I+2)-XG(I+1)
47233          KD = ID+JD
47234          GO TO (300,360,300,440,520,440,300,360,300), KD
47235C
47236C         THIS IS FOR (XO(IO),YO(JO)) POINTS IN A SINGLE
47237C         RECTANGLE (I,J)
47238C
47239  300     CONTINUE
47240          FV = 0.
47241          IJ = (J-1)*NXG+I
47242          IAL = 3*IJ-2
47243          LMAX = NP(IJ+1)-NP(IJ)
47244          DXA = XG(I+2)-XG(I)
47245          DYA = YG(J+2)-YG(J)
47246          XVD = (XV-XG(I))/DXA
47247          YVD = (YV-YG(J))/DYA
47248C
47249          DO 320 L=1,LMAX
47250            MPS = NP(IJ)+L-1
47251            KI = MP(MPS)
47252            XKI = (XI(KI)-XG(I))/DXA
47253            YKI = (YI(KI)-YG(J))/DYA
47254            FV = FV+AB(MPS)*PHI(XKI,YKI,XVD,YVD)
47255  320     CONTINUE
47256C
47257          FV = FV + AL(IAL) + AL(IAL+1)*XVD + AL(IAL+2)*YVD
47258          GO TO 620
47259C
47260C         THIS IS FOR XO(IO),YO(JO)) POINTS WHICH ARE IN TWO
47261C         RECTANGLES, (I,J) AND (I+1,J).
47262C
47263  360     CONTINUE
47264          DYA = YG(J+2)-YG(J)
47265          YVD = (YV-YG(J))/DYA
47266C
47267          DO 420 IP=1,2
47268            FC(IP) = 0.
47269            IS = I+IP-1
47270            IJ = (J-1)*NXG+IS
47271            IAL = 3*IJ-2
47272            DXA = XG(IS+2)-XG(IS)
47273            XVD = (XV-XG(IS))/DXA
47274            LMAX = NP(IJ+1)-NP(IJ)
47275C
47276            DO 380 L=1,LMAX
47277              MPS = NP(IJ)+L-1
47278              KI = MP(MPS)
47279              XKI = (XI(KI)-XG(IS))/DXA
47280              YKI = (YI(KI)-YG(J))/DYA
47281              FC(IP) = FC(IP)+AB(MPS)*PHI(XKI,YKI,XVD,YVD)
47282  380       CONTINUE
47283C
47284            FC(IP)=FC(IP)+AL(IAL)+AL(IAL+1)*XVD+AL(IAL+2)*YVD
47285  420     CONTINUE
47286C
47287          WI = H3((XV-XG(I+1))/DX)
47288          FV = FC(1)*WI+(1.-WI)*FC(2)
47289          GO TO 620
47290C
47291C         THIS IS FOR (XO(IO),YO(JO)) POINTS WHICH ARE IN TWO
47292C         RECTANGLES, (I,J) AND (I,J+1).
47293C
47294  440     CONTINUE
47295          DXA = XG(I+2)-XG(I)
47296          XVD = (XV-XG(I))/DXA
47297C
47298          DO 500 JP=1,2
47299            FC(JP) = 0.
47300            JS = J+JP-1
47301            IJ = (JS-1)*NXG+I
47302            IAL = 3*IJ-2
47303            DYA = YG(JS+2)-YG(JS)
47304            YVD = (YV-YG(JS))/DYA
47305            LMAX = NP(IJ+1)-NP(IJ)
47306C
47307            DO 460 L=1,LMAX
47308              MPS = NP(IJ)+L-1
47309              KJ = MP(MPS)
47310              XKJ = (XI(KJ)-XG(I))/DXA
47311              YKJ = (YI(KJ)-YG(JS))/DYA
47312              FC(JP) = FC(JP)+AB(MPS)*PHI(XKJ,YKJ,XVD,YVD)
47313  460       CONTINUE
47314C
47315            FC(JP)=FC(JP)+AL(IAL)+AL(IAL+1)*XVD+AL(IAL+2)*YVD
47316  500     CONTINUE
47317C
47318          UJ = H3((YV-YG(J+1))/DY)
47319          FV = FC(1)*UJ+(1.-UJ)*FC(2)
47320          GO TO 620
47321C
47322C         THIS IS FOR (XO(IO),YO(JO)) POINTS WHICH ARE IN FOUR
47323C         RECTANGLES, (I,J), (I+1,J), (I,J+1), AND (I+1,J+1).
47324C
47325  520     CONTINUE
47326          KFC = 0
47327C
47328          DO 600 JP=1,2
47329            JS = J+JP-1
47330            DYA = YG(JS+2)-YG(JS)
47331            YVD = (YV-YG(JS))/DYA
47332C
47333            DO 580 IP=1,2
47334              IS = I+IP-1
47335              IJ = (JS-1)*NXG+IS
47336              IAL = 3*IJ-2
47337              KFC = KFC+1
47338              FC(KFC) = 0.
47339              DXA = XG(IS+2)-XG(IS)
47340              XVD = (XV-XG(IS))/DXA
47341              LMAX = NP(IJ+1)-NP(IJ)
47342C
47343              DO 540 L=1,LMAX
47344                MPS = NP(IJ)+L-1
47345                KI = MP(MPS)
47346                XKI = (XI(KI)-XG(IS))/DXA
47347                YKI = (YI(KI)-YG(JS))/DYA
47348                FC(KFC) = FC(KFC)+AB(MPS)*PHI(XKI,YKI,XVD,YVD)
47349  540         CONTINUE
47350C
47351              FC(KFC)=FC(KFC)+AL(IAL)+AL(IAL+1)*XVD+AL(IAL+2)*YVD
47352  580       CONTINUE
47353C
47354  600     CONTINUE
47355C
47356          WI = H3((XV-XG(I+1))/DX)
47357          UJ = H3((YV-YG(J+1))/DY)
47358          FV = WI*(UJ*FC(1)+(1.-UJ)*FC(3))+
47359     1         (1.-WI)*(UJ*FC(2)+(1.-UJ)*FC(4))
47360          FO(IO,JO) = FV
47361  620   CONTINUE
47362  640 CONTINUE
47363C
47364      RETURN
47365      END
47366      SUBROUTINE LOGARI(Y1,Y2,N1,IACASE,IWRITE,
47367     1Y3,N3,SCAL3,ITYP3,IBUGA3,ISUBRO,IERROR)
47368C
47369C     PURPOSE--CARRY OUT LOGICAL    ARITHMETIC OPERATIONS
47370C              OF THE REAL DATA IN Y1 AND Y2.
47371C
47372C     OPERATIONS--AND (OR CONJUNCTION OR MULTIPLICATION)
47373C                 OR (OR DISJUNCTION OR ADDITION)
47374C                 NAND
47375C                 NOR (OR EXCLUSIVE DISJUNCTION)
47376C                 IFTHEN (OR IMPLICATION)
47377C                 IFF (OR EQUIVALENCE)
47378C                 NOT (OR NEGATION OR NOT OR COMPLEMENT)
47379C                 XOR (OR EXCLUSIVE OR   OR EXCL. DISJUNCTION)
47380C
47381C     INPUT  ARGUMENTS--Y1 (REAL)
47382C                     --Y2 (REAL)
47383C     OUTPUT ARGUMENTS--Y3 (REAL)
47384C                       SCAL3
47385C                       ITYP3
47386C
47387C     NOTE--IT IS NOT PERMISSIBLE TO HAVE THE OUTPUT LOGICALY3(.)
47388C           BEING IDENTICAL TO THE INPUT LOGICALY1(.) OR Y2(.).
47389C     REFERENCE--HANDBOOK OF MATHEMATICAL TABLES AND FORMULAS,
47390C                BURINGTON, EDITION 5, PAGES 130-135.
47391C              --INTRODUCTION TO COMPUTER SCIENCE,
47392C                SCHEID, SCHAUM OUTLINE SERIES, PP. 3, 4, 6, 7, 43, 224.
47393C     WRITTEN BY--JAMES J. FILLIBEN
47394C                 STATISTICAL ENGINEERING DIVISION
47395C                 INFORMATION TECHNOLOGY LABORATORY
47396C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
47397C                 GAITHERSBURG, MD 20899-8980
47398C                 PHONE--301-975-2855
47399C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
47400C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
47401C     LANGUAGE--ANSI FORTRAN (1977)
47402C     VERSION NUMBER--87/9
47403C     ORIGINAL VERSION--AUGUST   1987.
47404C
47405C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
47406C
47407      CHARACTER*4 IACASE
47408      CHARACTER*4 IWRITE
47409      CHARACTER*4 ITYP3
47410      CHARACTER*4 IBUGA3
47411      CHARACTER*4 ISUBRO
47412      CHARACTER*4 IERROR
47413C
47414      CHARACTER*4 ISUBN1
47415      CHARACTER*4 ISUBN2
47416C
47417C---------------------------------------------------------------------
47418C
47419      INCLUDE 'DPCOPA.INC'
47420C
47421      DIMENSION Y1(*)
47422      DIMENSION Y2(*)
47423      DIMENSION Y3(*)
47424C
47425C-----COMMON----------------------------------------------------------
47426C
47427      INCLUDE 'DPCOP2.INC'
47428C
47429C-----START POINT-----------------------------------------------------
47430C
47431      ISUBN1='LOGA'
47432      ISUBN2='RI  '
47433      IERROR='NO'
47434C
47435      SCAL3=(-999.0)
47436      ITYP3='VECT'
47437C
47438      TOL=0.00001
47439      ONE=1.0
47440      ONEMIN=ONE-TOL
47441      ONEMAX=ONE+TOL
47442      ZERO=0.0
47443      ZERMIN=ZERO-TOL
47444      ZERMAX=ZERO+TOL
47445C
47446      IF(IBUGA3.EQ.'OFF'.AND.ISUBRO.NE.'GARI')GOTO90
47447      WRITE(ICOUT,999)
47448  999 FORMAT(1X)
47449      CALL DPWRST('XXX','BUG ')
47450      WRITE(ICOUT,51)
47451   51 FORMAT('***** AT THE BEGINNING OF LOGARI--')
47452      CALL DPWRST('XXX','BUG ')
47453      WRITE(ICOUT,52)IBUGA3,ISUBRO,IACASE,IWRITE
47454   52 FORMAT('IBUGA3,ISUBRO,IACASE,IWRITE = ',A4,2X,A4,2X,A4,2X,A4)
47455      CALL DPWRST('XXX','BUG ')
47456      WRITE(ICOUT,53)N1
47457   53 FORMAT('N1 = ',I8)
47458      CALL DPWRST('XXX','BUG ')
47459      DO55I=1,N1
47460      WRITE(ICOUT,56)I,Y1(I),Y2(I)
47461   56 FORMAT('I,Y1(I),Y2(I) = ',I8,2E13.5)
47462      CALL DPWRST('XXX','BUG ')
47463   55 CONTINUE
47464   90 CONTINUE
47465C
47466C               **************************************************
47467C               **  CARRY OUT LOGICAL    ARITHMETIC OPERATIONS  **
47468C               **************************************************
47469C
47470C               ********************************************
47471C               **  STEP 11--                             **
47472C               **  CHECK NUMBER OF INPUT OBSERVATIONS.   **
47473C               ********************************************
47474C
47475      IF(N1.LT.1)GOTO1100
47476      GOTO1190
47477C
47478 1100 CONTINUE
47479      IERROR='YES'
47480      WRITE(ICOUT,999)
47481      CALL DPWRST('XXX','BUG ')
47482      WRITE(ICOUT,1151)
47483 1151 FORMAT('***** ERROR IN LOGARI--')
47484      CALL DPWRST('XXX','BUG ')
47485      WRITE(ICOUT,1152)
47486 1152 FORMAT('      THE INPUT NUMBER OF OBSERVATIONS')
47487      CALL DPWRST('XXX','BUG ')
47488      WRITE(ICOUT,1153)
47489 1153 FORMAT('      IN THE VARIABLE FOR WHICH')
47490      CALL DPWRST('XXX','BUG ')
47491      IF(IACASE.EQ.'LOAN')WRITE(ICOUT,1161)
47492 1161 FORMAT('      THE LOGICAL    AND    IS TO BE ',
47493     1'COMPUTED')
47494      IF(IACASE.EQ.'LOAN')CALL DPWRST('XXX','BUG ')
47495      IF(IACASE.EQ.'LOOR')WRITE(ICOUT,1162)
47496 1162 FORMAT('      THE LOGICAL    OR     IS TO BE ',
47497     1'COMPUTED')
47498      IF(IACASE.EQ.'LOOR')CALL DPWRST('XXX','BUG ')
47499      IF(IACASE.EQ.'LONA')WRITE(ICOUT,1163)
47500 1163 FORMAT('      THE LOGICAL    NAND   IS TO BE ',
47501     1'COMPUTED')
47502      IF(IACASE.EQ.'LONA')CALL DPWRST('XXX','BUG ')
47503      IF(IACASE.EQ.'LONO')WRITE(ICOUT,1164)
47504 1164 FORMAT('      THE LOGICAL    NOR    IS TO BE ',
47505     1'COMPUTED')
47506      IF(IACASE.EQ.'LONO')CALL DPWRST('XXX','BUG ')
47507      IF(IACASE.EQ.'LOIM')WRITE(ICOUT,1165)
47508 1165 FORMAT('      THE LOGICAL    IMPLICATION   IS TO BE ',
47509     1'COMPUTED')
47510      IF(IACASE.EQ.'LOIM')CALL DPWRST('XXX','BUG ')
47511      IF(IACASE.EQ.'LOEQ')WRITE(ICOUT,1166)
47512 1166 FORMAT('      THE LOGICAL    EQUIVALENCE   IS TO BE ',
47513     1'COMPUTED')
47514      IF(IACASE.EQ.'LOEQ')CALL DPWRST('XXX','BUG ')
47515      IF(IACASE.EQ.'LONT')WRITE(ICOUT,1167)
47516 1167 FORMAT('      THE LOGICAL    NOT    IS TO BE ',
47517     1'COMPUTED')
47518      IF(IACASE.EQ.'LONT')CALL DPWRST('XXX','BUG ')
47519      IF(IACASE.EQ.'LOXO')WRITE(ICOUT,1168)
47520 1168 FORMAT('      THE LOGICAL    XOR    IS TO BE ',
47521     1'COMPUTED')
47522      IF(IACASE.EQ.'LOXO')CALL DPWRST('XXX','BUG ')
47523      WRITE(ICOUT,1181)
47524 1181 FORMAT('      MUST BE 1 OR LARGER.')
47525      CALL DPWRST('XXX','BUG ')
47526      WRITE(ICOUT,1182)
47527 1182 FORMAT('      SUCH WAS NOT THE CASE HERE.')
47528      CALL DPWRST('XXX','BUG ')
47529      WRITE(ICOUT,1183)N1
47530 1183 FORMAT('      THE INPUT NUMBER OF OBSERVATIONS HERE = ',I8,
47531     1'.')
47532      CALL DPWRST('XXX','BUG ')
47533      GOTO9000
47534C
47535 1190 CONTINUE
47536C
47537C               *********************************
47538C               **  STEP 12--                  **
47539C               **  BRANCH TO THE PROPER CASE  **
47540C               *********************************
47541C
47542      IF(IACASE.EQ.'LOAN')GOTO2100
47543      IF(IACASE.EQ.'LOOR')GOTO2200
47544      IF(IACASE.EQ.'LONA')GOTO2300
47545      IF(IACASE.EQ.'LONO')GOTO2400
47546      IF(IACASE.EQ.'LOIM')GOTO2500
47547      IF(IACASE.EQ.'LOEQ')GOTO2600
47548      IF(IACASE.EQ.'LONT')GOTO2700
47549      IF(IACASE.EQ.'LOXO')GOTO2800
47550C
47551      WRITE(ICOUT,999)
47552      CALL DPWRST('XXX','BUG ')
47553      WRITE(ICOUT,1211)
47554 1211 FORMAT('***** INTERNAL ERROR IN LOGARI--')
47555      CALL DPWRST('XXX','BUG ')
47556      WRITE(ICOUT,1212)
47557 1212 FORMAT('      IACASE NOT EQUAL TO')
47558      CALL DPWRST('XXX','BUG ')
47559      WRITE(ICOUT,1213)
47560 1213 FORMAT('      LOAN, LOOR, LONA, LONO, ')
47561      CALL DPWRST('XXX','BUG ')
47562      WRITE(ICOUT,1214)
47563 1214 FORMAT('      LOIM, LOEQ, LONT, OR LOXO')
47564      CALL DPWRST('XXX','BUG ')
47565      WRITE(ICOUT,1215)
47566 1215 FORMAT('      IACASE = ',A4)
47567      CALL DPWRST('XXX','BUG ')
47568      IERROR='YES'
47569      GOTO9000
47570C
47571C               *********************************************
47572C               **  STEP 21--                              **
47573C               **  TREAT THE LOGICAL    AND         CASE  **
47574C               **  0 0 1 1   &   0 1 0 1  YIELDS  0 0 0 1 **
47575C               *********************************************
47576C
47577 2100 CONTINUE
47578      DO2110I=1,N1
47579      Y3(I)=ZERO
47580      IF(ONEMIN.LE.Y1(I).AND.Y1(I).LE.ONEMAX.AND.
47581     1   ONEMIN.LE.Y2(I).AND.Y2(I).LE.ONEMAX)Y3(I)=ONE
47582 2110 CONTINUE
47583C
47584      ITYP3='VECT'
47585      N3=N1
47586      GOTO9000
47587C
47588C               *********************************************
47589C               **  STEP 22--                              **
47590C               **  TREAT THE LOGICAL    OR          CASE  **
47591C               **  0 0 1 1   &   0 1 0 1  YIELDS  0 1 1 1 **
47592C               *********************************************
47593C
47594 2200 CONTINUE
47595      DO2210I=1,N1
47596      Y3(I)=ONE
47597      IF(ZERMIN.LE.Y1(I).AND.Y1(I).LE.ZERMAX.AND.
47598     1   ZERMIN.LE.Y2(I).AND.Y2(I).LE.ZERMAX)Y3(I)=ZERO
47599 2210 CONTINUE
47600C
47601      ITYP3='VECT'
47602      N3=N1
47603      GOTO9000
47604C
47605C               ************************************************
47606C               **  STEP 23--                                 **
47607C               **  TREAT THE LOGICAL    NAND           CASE  **
47608C               **  0 0 1 1   &   0 1 0 1  YIELDS  1 1 1 0    **
47609C               ************************************************
47610C
47611 2300 CONTINUE
47612      DO2310I=1,N1
47613      Y3(I)=ONE
47614      IF(ONEMIN.LE.Y1(I).AND.Y1(I).LE.ONEMAX.AND.
47615     1   ONEMIN.LE.Y2(I).AND.Y2(I).LE.ONEMAX)Y3(I)=ZERO
47616 2310 CONTINUE
47617C
47618      ITYP3='VECT'
47619      N3=N1
47620      GOTO9000
47621C
47622C               ************************************************
47623C               **  STEP 24--                                 **
47624C               **  TREAT THE LOGICAL    NOR            CASE  **
47625C               **  0 0 1 1   &   0 1 0 1  YIELDS  1 0 0 0    **
47626C               ************************************************
47627C
47628 2400 CONTINUE
47629      DO2410I=1,N1
47630      Y3(I)=ZERO
47631      IF(ZERMIN.LE.Y1(I).AND.Y1(I).LE.ZERMAX.AND.
47632     1   ZERMIN.LE.Y2(I).AND.Y2(I).LE.ZERMAX)Y3(I)=ONE
47633 2410 CONTINUE
47634C
47635      ITYP3='VECT'
47636      N3=N1
47637      GOTO9000
47638C
47639C               ***************************************************
47640C               **  STEP 25--                                    **
47641C               **  TREAT THE LOGICAL    IMPLICATION       CASE  **
47642C               **  0 0 1 1   &   0 1 0 1  YIELDS  1 1 0 1       **
47643C               ***************************************************
47644C
47645 2500 CONTINUE
47646      DO2510I=1,N1
47647      Y3(I)=ONE
47648      IF(ONEMIN.LE.Y1(I).AND.Y1(I).LE.ONEMAX.AND.
47649     1   ZERMIN.LE.Y2(I).AND.Y2(I).LE.ZERMAX)Y3(I)=ZERO
47650 2510 CONTINUE
47651C
47652      ITYP3='VECT'
47653      N3=N1
47654      GOTO9000
47655C
47656C               ************************************************
47657C               **  STEP 26--                                 **
47658C               **  TREAT THE LOGICAL    EQUIVALENCE    CASE  **
47659C               **  0 0 1 1   &   0 1 0 1  YIELDS  1 0 0 1    **
47660C               ************************************************
47661C
47662 2600 CONTINUE
47663      DO2610I=1,N1
47664      Y3(I)=ZERO
47665      IF(ONEMIN.LE.Y1(I).AND.Y1(I).LE.ONEMAX.AND.
47666     1   ONEMIN.LE.Y2(I).AND.Y2(I).LE.ONEMAX)Y3(I)=ONE
47667      IF(ZERMIN.LE.Y1(I).AND.Y1(I).LE.ZERMAX.AND.
47668     1   ZERMIN.LE.Y2(I).AND.Y2(I).LE.ZERMAX)Y3(I)=ONE
47669 2610 CONTINUE
47670C
47671      ITYP3='VECT'
47672      N3=N1
47673      GOTO9000
47674C
47675C               *********************************************
47676C               **  STEP 27--                              **
47677C               **  TREAT THE LOGICAL    NOT         CASE  **
47678C               **  0 1      YIELDS  1 0                   **
47679C               *********************************************
47680C
47681 2700 CONTINUE
47682      DO2710I=1,N1
47683      Y3(I)=ZERO
47684      IF(ZERMIN.LE.Y1(I).AND.Y1(I).LE.ZERMAX)Y3(I)=ONE
47685 2710 CONTINUE
47686C
47687      ITYP3='VECT'
47688      N3=N1
47689      GOTO9000
47690C
47691C               ************************************************
47692C               **  STEP 28--                                 **
47693C               **  TREAT THE LOGICAL    XOR            CASE  **
47694C               **  0 0 1 1   &   0 1 0 1  YIELDS  0 1 1 0    **
47695C               ************************************************
47696C
47697 2800 CONTINUE
47698      DO2810I=1,N1
47699      Y3(I)=ONE
47700      IF(ONEMIN.LE.Y1(I).AND.Y1(I).LE.ONEMAX.AND.
47701     1   ONEMIN.LE.Y2(I).AND.Y2(I).LE.ONEMAX)Y3(I)=ZERO
47702      IF(ZERMIN.LE.Y1(I).AND.Y1(I).LE.ZERMAX.AND.
47703     1   ZERMIN.LE.Y2(I).AND.Y2(I).LE.ZERMAX)Y3(I)=ZERO
47704 2810 CONTINUE
47705C
47706      ITYP3='VECT'
47707      N3=N1
47708      GOTO9000
47709C
47710C               *****************
47711C               **  STEP 90--  **
47712C               **  EXIT.      **
47713C               *****************
47714C
47715 9000 CONTINUE
47716C
47717      IF(IBUGA3.EQ.'OFF'.AND.ISUBRO.NE.'GARI')GOTO9090
47718      WRITE(ICOUT,999)
47719      CALL DPWRST('XXX','BUG ')
47720      WRITE(ICOUT,9011)
47721 9011 FORMAT('***** AT THE END       OF LOGARI--')
47722      CALL DPWRST('XXX','BUG ')
47723      WRITE(ICOUT,9012)IBUGA3,ISUBRO,IACASE,IWRITE
47724 9012 FORMAT('IBUGA3,ISUBRO,IACASE,IWRITE = ',A4,2X,A4,2X,A4,2X,A4)
47725      CALL DPWRST('XXX','BUG ')
47726      WRITE(ICOUT,9013)IERROR
47727 9013 FORMAT('IERROR = ',A4)
47728      CALL DPWRST('XXX','BUG ')
47729      WRITE(ICOUT,9017)N1,N3
47730 9017 FORMAT('N1,N3 = ',2I8)
47731      CALL DPWRST('XXX','BUG ')
47732      WRITE(ICOUT,9018)SCAL3,ITYP3
47733 9018 FORMAT('SCAL3,ITYP3 = ',E15.7,2X,A4)
47734      CALL DPWRST('XXX','BUG ')
47735      IF(ITYP3.EQ.'SCAL')GOTO9090
47736      DO9021I=1,N1
47737      WRITE(ICOUT,9022)I,Y1(I),Y2(I)
47738 9022 FORMAT('I,Y1(I),Y2(I) = ',I8,2E13.5)
47739      CALL DPWRST('XXX','BUG ')
47740 9021 CONTINUE
47741      DO9031I=1,N3
47742      WRITE(ICOUT,9032)I,Y3(I)
47743 9032 FORMAT('I,Y3(I) = ',I8,E13.5)
47744      CALL DPWRST('XXX','BUG ')
47745 9031 CONTINUE
47746 9090 CONTINUE
47747C
47748      RETURN
47749      END
47750      SUBROUTINE LOGGAM(X,ALG)
47751C
47752C     THIS PROGRAM CALCULATES THE LOG(TO BASE E) OF THE GAMMA FUNCTION
47753C     THE INPUT IS SINGLE PRECISION X
47754C     THE OUTPUT IS SINGLE PRECISION ALG
47755C     ALL INTERNAL OPERATIONS ARE DONE IN SINGLE PRECISION
47756C     THE ALGORITHM IS TO USE THE RECURSION FORMULA G(X)=G(X+1)/X
47757C     UNTIL X IS LARGE ENOUGH TO USE AN ASYMPTOTIC FORMULA FOR G(X)--THE CUT-OFF
47758C     POINT USED WAS X = 10
47759C     THE ASYMPTOTIC FORMULA USED IS IN AMS 55, PAGE 257, 6.1.41 (THE FIRST 9
47760C     TERMS OF THE SERIES WERE USED--I.E., OUT TO X**-17)
47761C     ALTHOUGH THE DATA STATEMENT DEFINES 10 COEFFICIENTS, THE PROGRAM MAKES USE
47762C     OF ONLY 9 COEFFICIENTS (THE ERROR BEING BOUNDED BY THE TENTH COEFFICIENT
47763C     DIVIDED BY X**19
47764C     SUBROUTINES NEEDED--NONE
47765C     PRINTING--NONE UNLESS AN ERROR CONDITION EXISTS
47766C     WRITTEN BY--JAMES J. FILLIBEN
47767C                 STATISTICAL ENGINEERING DIVISION
47768C                 INFORMATION TECHNOLOGY LABORATORY
47769C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
47770C                 GAITHERSBURG, MD 20899-8980
47771C                 PHONE--301-975-2855
47772C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
47773C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
47774C     LANGUAGE--ANSI FORTRAN (1977)
47775C     VERSION NUMBER--82.6
47776C     ORIGINAL VERSION--JUNE      1972.
47777C     UPDATED         --FEBRUARY  1981.
47778C     UPDATED         --FEBRUARY  1982.
47779C     UPDATED         --MAY       1982.
47780C
47781C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
47782C
47783C---------------------------------------------------------------------
47784C
47785      DOUBLE PRECISION Y,Y2,Y3,Y4,Y5,DEN,A,B,C,D
47786C
47787      DIMENSION D(10)
47788C
47789C-----COMMON----------------------------------------------------------
47790C
47791      INCLUDE 'DPCOP2.INC'
47792C
47793C-----DATA STATEMENTS-------------------------------------------------
47794C
47795      DATA C/ .918938533204672741D0/
47796      DATA D(1),D(2),D(3),D(4),D(5)
47797     1                 /+.833333333333333333D-1,-.277777777777777778D-2,
47798     1+.793650793650793651D-3,-.595238095238095238D-3,+.8417508417508417
47799     151D-3/
47800      DATA D(6),D(7),D(8),D(9),D(10)
47801     1     /-.191752691752691753D-2,+.641025641025641025D-2,-.2955065359
47802     147712418D-1,+.179644372368830573D0,-.139243221690590111D1/
47803C
47804C-----START POINT-----------------------------------------------------
47805C
47806C     CHECK THE INPUT ARGUMENTS FOR ERRORS
47807C
47808      IF(X.LE.0.0D0)GOTO50
47809      GOTO90
47810   50 WRITE(ICOUT,5)
47811      CALL DPWRST('XXX','BUG ')
47812      WRITE(ICOUT,45)X
47813      CALL DPWRST('XXX','BUG ')
47814      RETURN
47815   90 CONTINUE
47816    5 FORMAT('***** FATAL ERROR--THE 1ST INPUT ARGUMENT TO THE ',
47817     1'LOGGAM SUBROUTINE IS NON-POSITIVE *****')
47818   45 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',D22.15,' *****')
47819C
47820      Y=X
47821      DEN=1.0D0
47822  100 IF(Y.GE.10.0D0)GOTO200
47823      DEN=DEN*Y
47824      Y=Y+1
47825      GOTO100
47826  200 Y2=Y*Y
47827      Y3=Y*Y2
47828      Y4=Y2*Y2
47829      Y5=Y2*Y3
47830      A=(Y-0.5D0)*DLOG(Y)-Y+C
47831      B=D(1)/Y+D(2)/Y3+D(3)/Y5+D(4)/(Y2*Y5)+D(5)/(Y4*Y5)+
47832     1D(6)/(Y*Y5*Y5)+D(7)/(Y3*Y5*Y5)+D(8)/(Y5*Y5*Y5)+D(9)/(Y2*Y5*Y5*Y5)
47833      ALG=(A+B)-DLOG(DEN)
47834C
47835      RETURN
47836      END
47837      SUBROUTINE LOGIST(N,X,X0,AK,IERROR)
47838C
47839C     PURPOSE--THIS SUBROUTINE GENERATES N LOGISTIC NUMBERS
47840C              (A CLASSIC CHAOS THEORY SEQUENCE)
47841C     INPUT  ARGUMENTS--N      = THE DESIRED INTEGER NUMBER
47842C                                OF LOGISTIC NUMBERS
47843C                                TO BE GENERATED.
47844C     OUTPUT ARGUMENTS--X      = A SINGLE PRECISION VECTOR
47845C                                (OF DIMENSION AT LEAST N)
47846C                                INTO WHICH THE GENERATED
47847C                                LOGISTIC NUMBERS
47848C                                WILL BE PLACED.
47849C                     --X0     = THE STARTING VALUE
47850C                                (THIS WILL BE THE FIRST VALUE
47851C                                OF THE OUTPUT SEQUENCE)
47852C                     --AK    = THE INDEX FOR THE SYSTEM
47853C     OUTPUT--N LOGISTIC-SEQUENCE NUMBERS.
47854C     RESTRICTIONS--THERE IS NO RESTRICTION ON THE MAXIMUM VALUE
47855C                   OF N FOR THIS SUBROUTINE.
47856C     LANGUAGE--ANSI FORTRAN (1977)
47857C     WRITTEN BY--JAMES J. FILLIBEN
47858C                 STATISTICAL ENGINEERING DIVISION
47859C                 INFORMATION TECHNOLOGY LABORATORY
47860C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
47861C                 GAITHERSBURG, MD 20899-8980
47862C                 PHONE--301-975-2855
47863C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
47864C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
47865C     LANGUAGE--ANSI FORTRAN (1977)
47866C     VERSION NUMBER--89.6
47867C     ORIGINAL VERSION--APRIL 1989.
47868C
47869C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
47870C
47871      CHARACTER*4 IERROR
47872C
47873C---------------------------------------------------------------------
47874C
47875      DIMENSION X(*)
47876C
47877C-----COMMON----------------------------------------------------------
47878C
47879      INCLUDE 'DPCOP2.INC'
47880C
47881C-----START POINT-----------------------------------------------------
47882C
47883      CPUMA3=CPUMAX/3.0
47884C
47885C               ******************************************
47886C               **  TREAT THE LOGISTIC SEQUENCE CASE    **
47887C               ******************************************
47888C
47889C               *******************************************
47890C               **  STEP 1--                             **
47891C               **  TEST THE INPUT ARGUMENTS FOR ERRORS  **
47892C               *******************************************
47893C
47894      IF(N.GE.1)GOTO190
47895      WRITE(ICOUT,999)
47896  999 FORMAT(1X)
47897      CALL DPWRST('XXX','BUG ')
47898      WRITE(ICOUT,101)
47899  101 FORMAT('***** ERROR IN LOGIST--')
47900      CALL DPWRST('XXX','BUG ')
47901      WRITE(ICOUT,102)
47902  102 FORMAT('      THE LENGTH OF THE DESIRED SEQUENCE')
47903      CALL DPWRST('XXX','BUG ')
47904      WRITE(ICOUT,103)
47905  103 FORMAT('      OF LOGISTIC NUMBERS MUST BE 1 OR LARGER;')
47906      CALL DPWRST('XXX','BUG ')
47907      WRITE(ICOUT,104)
47908  104 FORMAT('      SUCH WAS NOT THE CASE HERE.')
47909      CALL DPWRST('XXX','BUG ')
47910      WRITE(ICOUT,105)N
47911  105 FORMAT('      N = ',I8)
47912      CALL DPWRST('XXX','BUG ')
47913      IERROR='YES'
47914      GOTO9000
47915  190 CONTINUE
47916C
47917C               ******************************
47918C               **  STEP 2--                **
47919C               **  GENERATE THE SEQUENCE   **
47920C               ******************************
47921C
47922      X(1)=X0
47923      IF(N.LT.2)GOTO1190
47924      DO1100I=2,N
47925      I2=I
47926      IM1=I-1
47927      X(I)=AK*X(IM1)*(1.0-X(IM1))
47928      IF(X(I).GE.CPUMA3)GOTO1150
47929 1100 CONTINUE
47930      GOTO1190
47931C
47932 1150 CONTINUE
47933      I2P1=I2+1
47934      WRITE(ICOUT,1151)
47935 1151 FORMAT('***** ERROR IN LOGIST--')
47936      CALL DPWRST('XXX','BUG ')
47937      WRITE(ICOUT,1152)
47938 1152 FORMAT('      A NUMBER IN THE LOGISTIC SEQUENCE')
47939      CALL DPWRST('XXX','BUG ')
47940      WRITE(ICOUT,1153)
47941 1153 FORMAT('      HAS JUST EXCEEDED THE ')
47942      CALL DPWRST('XXX','BUG ')
47943      WRITE(ICOUT,1154)
47944 1154 FORMAT('      LARGEST FLOATING POINT NUMBER')
47945      CALL DPWRST('XXX','BUG ')
47946      WRITE(ICOUT,1155)
47947 1155 FORMAT('      ALLOWABLE FOR THIS COMPUTER (',E15.7,').')
47948      CALL DPWRST('XXX','BUG ')
47949      WRITE(ICOUT,1156)
47950 1156 FORMAT('      THE VALUE CAUSING THE OVERFLOW WAS')
47951      CALL DPWRST('XXX','BUG ')
47952      WRITE(ICOUT,1157)I2P1
47953 1157 FORMAT('      THE ',I8,'-TH NUMBER IN THE')
47954      CALL DPWRST('XXX','BUG ')
47955      WRITE(ICOUT,1158)
47956 1158 FORMAT('      LOGISTIC SEQUENCE.')
47957      CALL DPWRST('XXX','BUG ')
47958      IERROR='YES'
47959      GOTO9000
47960C
47961 1190 CONTINUE
47962C
47963C               *****************
47964C               **  STEP 90--  **
47965C               **  EXIT       **
47966C               *****************
47967C
47968 9000 CONTINUE
47969      RETURN
47970      END
47971      SUBROUTINE LOGIT(X,N1,Y,N2,PSTAMV,IWRITE,XIDTEM,STAT,
47972     1                  IBUGA3,IERROR)
47973C
47974C     PURPOSE--THIS SUBROUTINE COMPUTES THE BIAS CORRECTED
47975C             LOGARITHM OF THE ODDS RATIO.
47976C     INPUT  ARGUMENTS--X      = THE SINGLE PRECISION VECTOR OF
47977C                                (UNSORTED) OBSERVATIONS
47978C                                WHICH CONSTITUTE THE FIRST SET
47979C                                OF DATA.
47980C                     --N1     = THE INTEGER NUMBER OF OBSERVATIONS
47981C                                IN THE VECTOR X.
47982C                     --Y      = THE SINGLE PRECISION VECTOR OF
47983C                                (UNSORTED) OBSERVATIONS
47984C                                WHICH CONSTITUTE THE SECOND SET
47985C                                OF DATA.
47986C                     --N2     = THE INTEGER NUMBER OF OBSERVATIONS
47987C                                IN THE VECTOR Y.
47988C                     --PSTAMV = THE MISSING VALUE CODE
47989C     OUTPUT ARGUMENTS--STAT   = THE SINGLE PRECISION VALUE OF THE
47990C                                COMPUTED LOG ODDS RATIO
47991C                                BETWEEN THE 2 SETS OF DATA
47992C                                IN THE INPUT VECTORS X AND Y.
47993C     OUTPUT--THE COMPUTED SINGLE PRECISION VALUE OF THE
47994C             SAMPLE LOG ODDS RATIO BETWEEN THE 2 SETS
47995C             OF DATA IN THE INPUT VECTORS X AND Y.
47996C     RESTRICTIONS--THERE IS NO RESTRICTION ON THE MAXIMUM VALUE
47997C                   OF N FOR THIS SUBROUTINE.
47998C     OTHER DATAPAC   SUBROUTINES NEEDED--ODDDIS.
47999C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE.
48000C     MODE OF INTERNAL OPERATIONS--DOUBLE PRECISION.
48001C     LANGUAGE--ANSI FORTRAN (1977)
48002C     WRITTEN BY--JAMES J. FILLIBEN
48003C                 STATISTICAL ENGINEERING DIVISION
48004C                 INFORMATION TECHNOLOGY LABORATORY
48005C                 NATIONAL INSTIUTE OF STANDARDS AND TECHNOLOGY
48006C                 GAITHERSBURG, MD 20899-8980
48007C                 PHONE--301-975-2899
48008C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
48009C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
48010C     LANGUAGE--ANSI FORTRAN (1977)
48011C     VERSION NUMBER--2007/4
48012C     ORIGINAL VERSION--APRIL     2007.
48013C     UPDATED         --AUGUST    2007. IF 2X2 CASE, CHECK IF SUM
48014C                                       OF ENTRIES IS <= 4.  IN THIS
48015C                                       CASE, ASSUME WE HAVE RAW DATA
48016C
48017C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
48018C
48019      CHARACTER*4 IWRITE
48020      CHARACTER*4 IBUGA3
48021      CHARACTER*4 IERROR
48022C
48023      CHARACTER*4 ISTEPN
48024      CHARACTER*4 ISUBN1
48025      CHARACTER*4 ISUBN2
48026C
48027C---------------------------------------------------------------------
48028C
48029      DIMENSION X(*)
48030      DIMENSION Y(*)
48031      DIMENSION XIDTEM(*)
48032C
48033C-----COMMON----------------------------------------------------------
48034C
48035      INCLUDE 'DPCOP2.INC'
48036C
48037C-----START POINT-----------------------------------------------------
48038C
48039      ISUBN1='LOGI'
48040      ISUBN2='T   '
48041      IERROR='NO'
48042C
48043      IF(IBUGA3.EQ.'ON')THEN
48044        WRITE(ICOUT,999)
48045  999   FORMAT(1X)
48046        CALL DPWRST('XXX','BUG ')
48047        WRITE(ICOUT,51)
48048   51   FORMAT('***** AT THE BEGINNING OF LOGIT--')
48049        CALL DPWRST('XXX','BUG ')
48050        WRITE(ICOUT,52)IBUGA3
48051   52   FORMAT('IBUGA3 = ',A4)
48052        CALL DPWRST('XXX','BUG ')
48053        WRITE(ICOUT,53)N1,N2
48054   53   FORMAT('N1,N2 = ',2I8)
48055        CALL DPWRST('XXX','BUG ')
48056        DO55I=1,MAX(N1,N2)
48057          WRITE(ICOUT,56)I,X(I),Y(I)
48058   56     FORMAT('I,X(I),Y(I) = ',I8,2G15.7)
48059          CALL DPWRST('XXX','BUG ')
48060   55   CONTINUE
48061      ENDIF
48062C
48063C               ********************************************
48064C               **  STEP 21--                             **
48065C               **  CHECK THE INPUT ARGUMENTS FOR ERRORS  **
48066C               ********************************************
48067C
48068      ISTEPN='21'
48069      IF(IBUGA3.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
48070C
48071      IF(N1.LT.2)THEN
48072        WRITE(ICOUT,999)
48073        CALL DPWRST('XXX','WRIT')
48074        WRITE(ICOUT,1201)
48075 1201   FORMAT('***** ERROR IN THE BIAS CORRECTED ',
48076     1         'LOG ODDS RATIO')
48077        CALL DPWRST('XXX','WRIT')
48078        WRITE(ICOUT,1203)
48079 1203   FORMAT('      THE NUMBER OF OBSERVATIONS FOR THE FIRST ',
48080     1         'RESPONSE VARIABLES IS LESS THAN TWO')
48081        CALL DPWRST('XXX','WRIT')
48082        WRITE(ICOUT,1205)N1
48083 1205   FORMAT('SAMPLE SIZE = ',I8)
48084        CALL DPWRST('XXX','WRIT')
48085        IERROR='YES'
48086        GOTO9000
48087      ENDIF
48088C
48089      IF(N2.LT.2)THEN
48090        WRITE(ICOUT,999)
48091        CALL DPWRST('XXX','WRIT')
48092        WRITE(ICOUT,1201)
48093        CALL DPWRST('XXX','WRIT')
48094        WRITE(ICOUT,1213)
48095 1213   FORMAT('      THE NUMBER OF OBSERVATIONS FOR THE SECOND ',
48096     1         'RESPONSE VARIABLES IS LESS THAN TWO')
48097        CALL DPWRST('XXX','WRIT')
48098        WRITE(ICOUT,1205)N2
48099        CALL DPWRST('XXX','WRIT')
48100        IERROR='YES'
48101        GOTO9000
48102      ENDIF
48103C
48104C               ********************************************
48105C               **  STEP 22--                             **
48106C               **  CHECK THAT THE VARIABLES HAVE AT MOST **
48107C               **  TWO DISTINCT VALUES (1 INDICATES A    **
48108C               **  SUCCESS, 0 INDICATES A FAILURE).      **
48109C               ********************************************
48110C
48111      ISTEPN='22'
48112      IF(IBUGA3.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
48113C
48114C     NOTE: CHECK FOR SPECIAL CASE N = 2.  IN THIS CASE,
48115C           ASSUME WE HAVE A 2X2 TABLE OF COUNTS INSTEAD
48116C           OF RAW DATA.
48117C
48118      IF(N1.EQ.2 .AND. N2.EQ.2)THEN
48119        N11=INT(X(1)+0.5)
48120        N21=INT(X(2)+0.5)
48121        N12=INT(Y(1)+0.5)
48122        N22=INT(Y(2)+0.5)
48123C
48124C       CHECK IF ALL ENTRIES 0 OR 1. IF SO, ASSUME
48125C       RAW DATA CASE.
48126C
48127        IF((N11.EQ.0 .OR. N11.EQ.1) .AND.
48128     1     (N12.EQ.0 .OR. N12.EQ.1) .AND.
48129     1     (N21.EQ.0 .OR. N21.EQ.1) .AND.
48130     1     (N22.EQ.0 .OR. N22.EQ.1)) GOTO1349
48131C
48132        IF(N11.LT.0)THEN
48133          WRITE(ICOUT,999)
48134          CALL DPWRST('XXX','BUG ')
48135          WRITE(ICOUT,1201)
48136          CALL DPWRST('XXX','BUG ')
48137          WRITE(ICOUT,1311)
48138 1311     FORMAT('      ROW 1 COLUMN 1 OF THE COUNTS TABLE IS ',
48139     1           'NEGATIVE.')
48140          CALL DPWRST('XXX','BUG ')
48141        ELSEIF(N21.LT.0)THEN
48142          WRITE(ICOUT,999)
48143          CALL DPWRST('XXX','BUG ')
48144          WRITE(ICOUT,1201)
48145          CALL DPWRST('XXX','BUG ')
48146          WRITE(ICOUT,1321)
48147 1321     FORMAT('      ROW 2 COLUMN 1 OF THE COUNTS TABLE IS ',
48148     1           'NEGATIVE.')
48149          CALL DPWRST('XXX','BUG ')
48150        ELSEIF(N12.LT.0)THEN
48151          WRITE(ICOUT,999)
48152          CALL DPWRST('XXX','BUG ')
48153          WRITE(ICOUT,1201)
48154          CALL DPWRST('XXX','BUG ')
48155          WRITE(ICOUT,1331)
48156 1331     FORMAT('      ROW 1 COLUMN 2 OF THE COUNTS TABLE IS ',
48157     1           'NEGATIVE.')
48158          CALL DPWRST('XXX','BUG ')
48159        ELSEIF(N22.LT.0)THEN
48160          WRITE(ICOUT,999)
48161          CALL DPWRST('XXX','BUG ')
48162          WRITE(ICOUT,1201)
48163          CALL DPWRST('XXX','BUG ')
48164          WRITE(ICOUT,1341)
48165 1341     FORMAT('      ROW 2 COLUMN 2 OF THE COUNTS TABLE IS ',
48166     1           'NEGATIVE.')
48167          CALL DPWRST('XXX','BUG ')
48168        ENDIF
48169C
48170        AN11=REAL(N11)
48171        AN21=REAL(N21)
48172        AN12=REAL(N12)
48173        AN22=REAL(N22)
48174        GOTO3000
48175      ENDIF
48176C
48177 1349 CONTINUE
48178C
48179      CALL ODDDIS(X,N1,PSTAMV,IWRITE,XIDTEM,N11,N21,NOUT,
48180     1            IBUGA3,IERROR)
48181      IF(IERROR.EQ.'YES' .OR. IERROR.EQ.'ON')GOTO9000
48182      CALL ODDDIS(Y,N2,PSTAMV,IWRITE,XIDTEM,N12,N22,NOUT,
48183     1            IBUGA3,IERROR)
48184      IF(IERROR.EQ.'YES' .OR. IERROR.EQ.'ON')GOTO9000
48185      AN11=REAL(N11)
48186      AN21=REAL(N21)
48187      AN12=REAL(N12)
48188      AN22=REAL(N22)
48189      GOTO3000
48190C
48191C     COMPUTE THE BIAS CORRECTED LOG OF THE ODDS RATIO.
48192C
48193 3000 CONTINUE
48194      AN1=AN11+AN21
48195      AN2=AN12+AN22
48196      AN=AN1 + AN2
48197C
48198      P11=AN11/AN1
48199      P21=AN21/AN1
48200      P12=AN12/AN2
48201      P22=AN22/AN2
48202C
48203      STAT=LOG((AN11+0.5)*(AN22+0.5)/((AN12+0.5)*(AN21+0.5)))
48204C
48205C
48206C               *******************************
48207C               **  STEP 3--                 **
48208C               **  WRITE OUT A LINE         **
48209C               **  OF SUMMARY INFORMATION.  **
48210C               *******************************
48211C
48212      IF(IFEEDB.EQ.'OFF')GOTO890
48213      IF(IWRITE.EQ.'OFF' .OR. IWRITE.EQ.'NO')GOTO890
48214      WRITE(ICOUT,999)
48215      CALL DPWRST('XXX','BUG ')
48216      WRITE(ICOUT,811)STAT
48217  811 FORMAT('THE BIAS CORRECTED LOG ODDS RATIO = ',G15.7)
48218      CALL DPWRST('XXX','BUG ')
48219  890 CONTINUE
48220C
48221C               *****************
48222C               **  STEP 90--  **
48223C               **  EXIT.      **
48224C               *****************
48225C
48226 9000 CONTINUE
48227      IF(IBUGA3.EQ.'ON')THEN
48228        WRITE(ICOUT,999)
48229        CALL DPWRST('XXX','BUG ')
48230        WRITE(ICOUT,9011)
48231 9011   FORMAT('***** AT THE END OF LOGIT--')
48232        CALL DPWRST('XXX','BUG ')
48233        WRITE(ICOUT,9012)IBUGA3,IERROR
48234 9012   FORMAT('IBUGA3,IERROR = ',A4,2X,A4)
48235        CALL DPWRST('XXX','BUG ')
48236        WRITE(ICOUT,9013)N,N11,N12,N21,N22
48237 9013   FORMAT('N,N11,N12,N21,N22 = ',5I10)
48238        CALL DPWRST('XXX','BUG ')
48239        WRITE(ICOUT,9014)P11,P12,P21,P22
48240 9014   FORMAT('P11,P12,P21,P22 = ',4G15.7)
48241        CALL DPWRST('XXX','BUG ')
48242        WRITE(ICOUT,9015)STAT
48243 9015   FORMAT('STAT = ',G15.7)
48244        CALL DPWRST('XXX','BUG ')
48245      ENDIF
48246C
48247      RETURN
48248      END
48249      SUBROUTINE LOGISE(X,N1,Y,N2,PSTAMV,IWRITE,XIDTEM,STAT,
48250     1                  IBUGA3,IERROR)
48251C
48252C     PURPOSE--THIS SUBROUTINE COMPUTES THE STANDARD ERROR OF THE
48253C              BIAS CORRECTED LOGARITHM OF THE ODDS RATIO.
48254C     INPUT  ARGUMENTS--X      = THE SINGLE PRECISION VECTOR OF
48255C                                (UNSORTED) OBSERVATIONS
48256C                                WHICH CONSTITUTE THE FIRST SET
48257C                                OF DATA.
48258C                     --N1     = THE INTEGER NUMBER OF OBSERVATIONS
48259C                                IN THE VECTOR X.
48260C                     --Y      = THE SINGLE PRECISION VECTOR OF
48261C                                (UNSORTED) OBSERVATIONS
48262C                                WHICH CONSTITUTE THE SECOND SET
48263C                                OF DATA.
48264C                     --N2     = THE INTEGER NUMBER OF OBSERVATIONS
48265C                                IN THE VECTOR Y.
48266C     OUTPUT ARGUMENTS--STAT   = THE SINGLE PRECISION VALUE OF THE
48267C                                COMPUTED STANDARD ERROR OF THE
48268C                                LOG ODDS RATIO (BIAS CORRECTED)
48269C                                BETWEEN THE 2 SETS OF DATA
48270C                                IN THE INPUT VECTORS X AND Y.
48271C     OUTPUT--THE COMPUTED SINGLE PRECISION VALUE OF THE
48272C             SAMPLE STANDARD ERROR OF THE LOG ODDS RATIO BETWEEN
48273C             THE 2 SETS OF DATA IN THE INPUT VECTORS X AND Y.
48274C     RESTRICTIONS--THERE IS NO RESTRICTION ON THE MAXIMUM VALUE
48275C                   OF N FOR THIS SUBROUTINE.
48276C     OTHER DATAPAC   SUBROUTINES NEEDED--ODDDIS.
48277C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE.
48278C     MODE OF INTERNAL OPERATIONS--DOUBLE PRECISION.
48279C     LANGUAGE--ANSI FORTRAN (1977)
48280C     WRITTEN BY--JAMES J. FILLIBEN
48281C                 STATISTICAL ENGINEERING DIVISION
48282C                 INFORMATION TECHNOLOGY LABORATORY
48283C                 NATIONAL INSTIUTE OF STANDARDS AND TECHNOLOGY
48284C                 GAITHERSBURG, MD 20899-8980
48285C                 PHONE--301-975-2899
48286C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
48287C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
48288C     LANGUAGE--ANSI FORTRAN (1977)
48289C     VERSION NUMBER--2007/4
48290C     ORIGINAL VERSION--APRIL     2007.
48291C     UPDATED         --AUGUST    2007. IF 2X2 CASE, CHECK IF SUM
48292C                                       OF ENTRIES IS <= 4.  IN THIS
48293C                                       CASE, ASSUME WE HAVE RAW DATA
48294C
48295C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
48296C
48297      CHARACTER*4 IWRITE
48298      CHARACTER*4 IBUGA3
48299      CHARACTER*4 IERROR
48300C
48301      CHARACTER*4 ISTEPN
48302      CHARACTER*4 ISUBN1
48303      CHARACTER*4 ISUBN2
48304C
48305C---------------------------------------------------------------------
48306C
48307      DIMENSION X(*)
48308      DIMENSION Y(*)
48309      DIMENSION XIDTEM(*)
48310C
48311C-----COMMON----------------------------------------------------------
48312C
48313      INCLUDE 'DPCOP2.INC'
48314C
48315C-----START POINT-----------------------------------------------------
48316C
48317      ISUBN1='LOGI'
48318      ISUBN2='SE  '
48319      IERROR='NO'
48320C
48321C
48322      IF(IBUGA3.EQ.'ON')THEN
48323        WRITE(ICOUT,999)
48324  999   FORMAT(1X)
48325        CALL DPWRST('XXX','BUG ')
48326        WRITE(ICOUT,51)
48327   51   FORMAT('***** AT THE BEGINNING OF LOGISE--')
48328        CALL DPWRST('XXX','BUG ')
48329        WRITE(ICOUT,52)IBUGA3
48330   52   FORMAT('IBUGA3 = ',A4)
48331        CALL DPWRST('XXX','BUG ')
48332        WRITE(ICOUT,53)N1,N2
48333   53   FORMAT('N1,N2 = ',2I8)
48334        CALL DPWRST('XXX','BUG ')
48335        DO55I=1,MAX(N1,N2)
48336          WRITE(ICOUT,56)I,X(I),Y(I)
48337   56     FORMAT('I,X(I),Y(I) = ',I8,2G15.7)
48338          CALL DPWRST('XXX','BUG ')
48339   55   CONTINUE
48340      ENDIF
48341C
48342C               ********************************************
48343C               **  STEP 21--                             **
48344C               **  CHECK THE INPUT ARGUMENTS FOR ERRORS  **
48345C               ********************************************
48346C
48347      ISTEPN='21'
48348      IF(IBUGA3.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
48349C
48350      IF(N1.LT.2)THEN
48351        WRITE(ICOUT,999)
48352        CALL DPWRST('XXX','WRIT')
48353        WRITE(ICOUT,1201)
48354 1201   FORMAT('***** ERROR IN STANDARD ERROR OF BIAS CORRECTED ',
48355     1         'LOG ODDS RATIO')
48356        CALL DPWRST('XXX','WRIT')
48357        WRITE(ICOUT,1203)
48358 1203   FORMAT('      THE NUMBER OF OBSERVATIONS FOR THE FIRST ',
48359     1         'RESPONSE VARIABLES IS LESS THAN TWO')
48360        CALL DPWRST('XXX','WRIT')
48361        WRITE(ICOUT,1205)N1
48362 1205   FORMAT('SAMPLE SIZE = ',I8)
48363        CALL DPWRST('XXX','WRIT')
48364        IERROR='YES'
48365        GOTO9000
48366      ENDIF
48367C
48368      IF(N2.LT.2)THEN
48369        WRITE(ICOUT,999)
48370        CALL DPWRST('XXX','WRIT')
48371        WRITE(ICOUT,1201)
48372        CALL DPWRST('XXX','WRIT')
48373        WRITE(ICOUT,1213)
48374 1213   FORMAT('      THE NUMBER OF OBSERVATIONS FOR THE SECOND ',
48375     1         'RESPONSE VARIABLES IS LESS THAN TWO')
48376        CALL DPWRST('XXX','WRIT')
48377        WRITE(ICOUT,1205)N2
48378        CALL DPWRST('XXX','WRIT')
48379        IERROR='YES'
48380        GOTO9000
48381      ENDIF
48382C
48383C     NOTE: CHECK FOR SPECIAL CASE N = 2.  IN THIS CASE,
48384C           ASSUME WE HAVE A 2X2 TABLE OF COUNTS INSTEAD
48385C           OF RAW DATA.
48386C
48387      IF(N1.EQ.2 .AND. N2.EQ.2)THEN
48388        N11=INT(X(1)+0.5)
48389        N21=INT(X(2)+0.5)
48390        N12=INT(Y(1)+0.5)
48391        N22=INT(Y(2)+0.5)
48392C
48393C       CHECK IF ALL ENTRIES 0 OR 1. IF SO, ASSUME
48394C       RAW DATA CASE.
48395C
48396        IF((N11.EQ.0 .OR. N11.EQ.1) .AND.
48397     1     (N12.EQ.0 .OR. N12.EQ.1) .AND.
48398     1     (N21.EQ.0 .OR. N21.EQ.1) .AND.
48399     1     (N22.EQ.0 .OR. N22.EQ.1)) GOTO1349
48400C
48401        IF(N11.LT.0)THEN
48402          WRITE(ICOUT,999)
48403          CALL DPWRST('XXX','BUG ')
48404          WRITE(ICOUT,1201)
48405          CALL DPWRST('XXX','BUG ')
48406          WRITE(ICOUT,1311)
48407 1311     FORMAT('      ROW 1 COLUMN 1 OF THE COUNTS TABLE IS ',
48408     1           'NEGATIVE.')
48409          CALL DPWRST('XXX','BUG ')
48410        ELSEIF(N21.LT.0)THEN
48411          WRITE(ICOUT,999)
48412          CALL DPWRST('XXX','BUG ')
48413          WRITE(ICOUT,1201)
48414          CALL DPWRST('XXX','BUG ')
48415          WRITE(ICOUT,1321)
48416 1321     FORMAT('      ROW 2 COLUMN 1 OF THE COUNTS TABLE IS ',
48417     1           'NEGATIVE.')
48418          CALL DPWRST('XXX','BUG ')
48419        ELSEIF(N12.LT.0)THEN
48420          WRITE(ICOUT,999)
48421          CALL DPWRST('XXX','BUG ')
48422          WRITE(ICOUT,1201)
48423          CALL DPWRST('XXX','BUG ')
48424          WRITE(ICOUT,1331)
48425 1331     FORMAT('      ROW 1 COLUMN 2 OF THE COUNTS TABLE IS ',
48426     1           'NEGATIVE.')
48427          CALL DPWRST('XXX','BUG ')
48428        ELSEIF(N22.LT.0)THEN
48429          WRITE(ICOUT,999)
48430          CALL DPWRST('XXX','BUG ')
48431          WRITE(ICOUT,1201)
48432          CALL DPWRST('XXX','BUG ')
48433          WRITE(ICOUT,1341)
48434 1341     FORMAT('      ROW 2 COLUMN 2 OF THE COUNTS TABLE IS ',
48435     1           'NEGATIVE.')
48436          CALL DPWRST('XXX','BUG ')
48437        ENDIF
48438C
48439        AN11=REAL(N11)
48440        AN21=REAL(N21)
48441        AN12=REAL(N12)
48442        AN22=REAL(N22)
48443        GOTO3000
48444      ENDIF
48445C
48446C
48447C               ********************************************
48448C               **  STEP 22--                             **
48449C               **  CHECK THAT THE VARIABLES HAVE AT MOST **
48450C               **  TWO DISTINCT VALUES (1 INDICATES A    **
48451C               **  SUCCESS, 0 INDICATES A FAILURE).      **
48452C               ********************************************
48453C
48454 1349 CONTINUE
48455C
48456      ISTEPN='22'
48457      IF(IBUGA3.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
48458C
48459      CALL ODDDIS(X,N1,PSTAMV,IWRITE,XIDTEM,N11,N21,NOUT,
48460     1            IBUGA3,IERROR)
48461      IF(IERROR.EQ.'YES' .OR. IERROR.EQ.'ON')GOTO9000
48462      CALL ODDDIS(Y,N2,PSTAMV,IWRITE,XIDTEM,N12,N22,NOUT,
48463     1            IBUGA3,IERROR)
48464      IF(IERROR.EQ.'YES' .OR. IERROR.EQ.'ON')GOTO9000
48465      AN11=REAL(N11)
48466      AN21=REAL(N21)
48467      AN12=REAL(N12)
48468      AN22=REAL(N22)
48469      GOTO3000
48470C
48471C     COMPUTE THE BIAS CORRECTED LOG OF THE ODDS RATIO.
48472C
48473 3000 CONTINUE
48474      AN1=AN11+AN21
48475      AN2=AN12+AN22
48476      AN=AN1 + AN2
48477C
48478      P11=AN11/AN1
48479      P21=AN21/AN1
48480      P12=AN12/AN2
48481      P22=AN22/AN2
48482C
48483      STAT=SQRT((1.0/(AN11+0.5)) + (1.0/(AN21+0.5)) +
48484     1         (1.0/(AN12+0.5)) + (1.0/(AN22+0.5)))
48485C
48486C
48487C               *******************************
48488C               **  STEP 3--                 **
48489C               **  WRITE OUT A LINE         **
48490C               **  OF SUMMARY INFORMATION.  **
48491C               *******************************
48492C
48493      IF(IFEEDB.EQ.'OFF')GOTO890
48494      IF(IWRITE.EQ.'OFF' .OR. IWRITE.EQ.'NO')GOTO890
48495      WRITE(ICOUT,999)
48496      CALL DPWRST('XXX','BUG ')
48497      WRITE(ICOUT,811)STAT
48498  811 FORMAT('THE STANDARD ERROR OF BIAS CORRECTED LOG ODDS ',
48499     1       'RATIO = ',G15.7)
48500      CALL DPWRST('XXX','BUG ')
48501  890 CONTINUE
48502C
48503C               *****************
48504C               **  STEP 90--  **
48505C               **  EXIT.      **
48506C               *****************
48507C
48508 9000 CONTINUE
48509      IF(IBUGA3.EQ.'ON')THEN
48510        WRITE(ICOUT,999)
48511        CALL DPWRST('XXX','BUG ')
48512        WRITE(ICOUT,9011)
48513 9011   FORMAT('***** AT THE END OF LOGISE--')
48514        CALL DPWRST('XXX','BUG ')
48515        WRITE(ICOUT,9012)IBUGA3,IERROR
48516 9012   FORMAT('IBUGA3,IERROR = ',A4,2X,A4)
48517        CALL DPWRST('XXX','BUG ')
48518        WRITE(ICOUT,9013)N,N11,N12,N21,N22
48519 9013   FORMAT('N,N11,N12,N21,N22 = ',5I10)
48520        CALL DPWRST('XXX','BUG ')
48521        WRITE(ICOUT,9014)P11,P12,P21,P22
48522 9014   FORMAT('P11,P12,P21,P22 = ',4G15.7)
48523        CALL DPWRST('XXX','BUG ')
48524        WRITE(ICOUT,9015)STAT
48525 9015   FORMAT('STAT = ',G15.7)
48526        CALL DPWRST('XXX','BUG ')
48527      ENDIF
48528C
48529      RETURN
48530      END
48531      SUBROUTINE LOGCDF(X,CDF)
48532C
48533C     PURPOSE--THIS SUBROUTINE COMPUTES THE CUMULATIVE DISTRIBUTION
48534C              FUNCTION VALUE FOR THE LOGISTIC DISTRIBUTION
48535C              WITH MEAN = 0 AND STANDARD DEVIATION = PI/SQRT(3).
48536C              THIS DISTRIBUTION IS DEFINED FOR ALL X AND HAS
48537C              THE PROBABILITY DENSITY FUNCTION
48538C              F(X) = EXP(X)/(1+EXP(X)).
48539C     INPUT  ARGUMENTS--X      = THE SINGLE PRECISION VALUE AT
48540C                                WHICH THE CUMULATIVE DISTRIBUTION
48541C                                FUNCTION IS TO BE EVALUATED.
48542C     OUTPUT ARGUMENTS--CDF    = THE SINGLE PRECISION CUMULATIVE
48543C                                DISTRIBUTION FUNCTION VALUE.
48544C     OUTPUT--THE SINGLE PRECISION CUMULATIVE DISTRIBUTION
48545C             FUNCTION VALUE CDF.
48546C     PRINTING--NONE.
48547C     RESTRICTIONS--NONE.
48548C     OTHER DATAPAC   SUBROUTINES NEEDED--NONE.
48549C     FORTRAN LIBRARY SUBROUTINES NEEDED--EXP.
48550C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
48551C     LANGUAGE--ANSI FORTRAN.
48552C     REFERENCES--JOHNSON AND KOTZ, CONTINUOUS UNIVARIATE
48553C                 DISTRIBUTIONS--2, 1970, PAGES 1-21.
48554C     WRITTEN BY--JAMES J. FILLIBEN
48555C                 STATISTICAL ENGINEERING LABORATORY (205.03)
48556C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
48557C                 GAITHERSBURG, MD 20899-8980
48558C                 PHONE:  301-921-2315
48559C     ORIGINAL VERSION--APRIL     1994.
48560C
48561C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
48562C
48563C-----COMMON----------------------------------------------------------
48564C
48565      INCLUDE 'DPCOP2.INC'
48566C
48567C---------------------------------------------------------------------
48568C
48569C     CHECK THE INPUT ARGUMENTS FOR ERRORS.
48570C     NO INPUT ARGUMENT ERRORS POSSIBLE
48571C     FOR THIS DISTRIBUTION.
48572C
48573C-----START POINT-----------------------------------------------------
48574C
48575      IF(X.GE.0.0)GOTO150
48576      CDF=EXP(X)/(1.0+EXP(X))
48577      RETURN
48578  150 CDF=1.0/(1.0+EXP(-X))
48579      RETURN
48580C
48581      END
48582      SUBROUTINE LOGCHA(X,CHAZ)
48583C
48584C     PURPOSE--THIS SUBROUTINE COMPUTES THE CUMULATIVE HAZARD
48585C              FUNCTION VALUE FOR THE LOGISTIC DISTRIBUTION
48586C              WITH MEAN = 0 AND STANDARD DEVIATION = PI/SQRT(3).
48587C              THIS DISTRIBUTION IS DEFINED FOR ALL X AND HAS
48588C              THE CUMULATIVE HAZARD FUNCTION
48589C              F(X) = 1/(1+EXP(-X)).
48590C     INPUT  ARGUMENTS--X      = THE SINGLE PRECISION VALUE AT
48591C                                WHICH THE CUMULATIVE HAZARD
48592C                                FUNCTION IS TO BE EVALUATED.
48593C     OUTPUT ARGUMENTS--HAZ    = THE SINGLE PRECISION CUMULATIVE
48594C                                HAZARD FUNCTION VALUE.
48595C     OUTPUT--THE SINGLE PRECISION CUMULATIVE HAZARD
48596C             FUNCTION VALUE HAZ.
48597C     PRINTING--NONE.
48598C     RESTRICTIONS--NONE.
48599C     OTHER DATAPAC   SUBROUTINES NEEDED--NONE.
48600C     FORTRAN LIBRARY SUBROUTINES NEEDED--LOG, EXP.
48601C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
48602C     LANGUAGE--ANSI FORTRAN.
48603C     REFERENCES--EVANS, HASTINGS, AND PEACOCK, "STATISITCAL
48604C                 DISTRIBUTIONS", THIRD EDITION, 2000, PAGES 124-128.
48605C     WRITTEN BY--JAMES J. FILLIBEN
48606C                 STATISTICAL ENGINEERING LABORATORY
48607C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
48608C                 GAITHERSBURG, MD 20899-8980
48609C                 PHONE:  301-975-2899
48610C     ORIGINAL VERSION--OCTOBER   2003.
48611C
48612C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
48613C
48614C-----COMMON----------------------------------------------------------
48615C
48616      INCLUDE 'DPCOP2.INC'
48617C
48618C---------------------------------------------------------------------
48619C
48620C     CHECK THE INPUT ARGUMENTS FOR ERRORS.
48621C     NO INPUT ARGUMENT ERRORS POSSIBLE
48622C     FOR THIS DISTRIBUTION.
48623C
48624C-----START POINT-----------------------------------------------------
48625C
48626      CHAZ=LOG(1.0+EXP(-X))
48627C
48628      RETURN
48629      END
48630      SUBROUTINE LOGFUN (N, X, FVEC, IFLAG, XDATA, NOBS)
48631C
48632C     PURPOSE--THIS ROUTINE COMPUTES THE FUNCTIONS FOR THE
48633C              LOGISTIC MAXIMUM LIKELIHOOD EQUATIONS.
48634C
48635C              SUM[i=1 to n][1+EXP{-(X(i)-ahat)/bhat}]**(-1)-N/2 = 0
48636C
48637C              (X(i)-ahat)/bhat)/SUM[i=1 to n][1+EXP{-(X(i)-ahat)}]**(-1)
48638C              - 0.5*SUM[i=1 to n][(X(i)-ahat)/bhat] - 0.5*N = 0
48639C
48640C              CALLED BY SNSQE ROUTINE FOR SOLVING SIMULTANEOUS
48641C              NONLINEAR EQUATIONS.  NOTE THAT THE CALLING SEQUENCE
48642C              DID NOT ACCOMODATE A DATA ARRAY (AND ASSCIATED NUMBER OF
48643C              OBSERVATIONS), SO THESE WERE ADDED TO THE CALL LIST.
48644C     EXAMPLE--PARETO MAXIMUM LIKELIHOOD Y
48645C     REFERENCE--CHARLES ANTLE, LAWRENCE KLIMKO, AND WILLIAM
48646C                HARKNESS, (1970), "CONFIDENCE INTERVALS FOR THE
48647C                PARAMETERS OF THE LOGISTIC DISTRIBUTION", BIOMETRIKA,
48648C                PP. 397-402.
48649C     WRITTEN BY--JAMES J. FILLIBEN
48650C                 STATISTICAL ENGINEERING DIVISION
48651C                 CENTER FOR APPLIED MATHEMATICS
48652C                 NATIONAL BUREAU OF STANDARDS
48653C                 WASHINGTON, D. C. 20234
48654C                 PHONE--301-975-2855
48655C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
48656C           OF THE NATIONAL BUREAU OF STANDARDS.
48657C     LANGUAGE--ANSI FORTRAN (1977)
48658C     VERSION NUMBER--2003/10
48659C     ORIGINAL VERSION--OCTOBER   2003.
48660C
48661C---------------------------------------------------------------------
48662C
48663      DOUBLE PRECISION X(*)
48664      DOUBLE PRECISION FVEC(*)
48665      REAL XDATA(*)
48666C
48667      DOUBLE PRECISION DN
48668      DOUBLE PRECISION DA
48669      DOUBLE PRECISION DB
48670      DOUBLE PRECISION DX
48671      DOUBLE PRECISION DSUM1
48672      DOUBLE PRECISION DSUM2
48673      DOUBLE PRECISION DSUM3
48674      DOUBLE PRECISION DTERM1
48675      DOUBLE PRECISION DTERM2
48676C
48677C-----COMMON----------------------------------------------------------
48678C
48679      INCLUDE 'DPCOP2.INC'
48680C
48681C-----START POINT-----------------------------------------------------
48682C
48683C  COMPUTE SOME SUMS
48684C
48685      N=2
48686      IFLAG=0
48687C
48688      DN=DBLE(NOBS)
48689      DSUM1=0.0D0
48690      DSUM2=0.0D0
48691      DSUM3=0.0D0
48692      DA=X(1)
48693      DB=X(2)
48694      DO100I=1,NOBS
48695        DX=DBLE(XDATA(I))
48696        DTERM1=(DX - DA)/DB
48697        DTERM2=1.0D0 + DEXP(-DTERM1)
48698        DSUM1=DSUM1 + 1.0D0/DTERM2
48699        DSUM2=DSUM2 + DTERM1/DTERM2
48700        DSUM3=DSUM3 + DTERM1
48701  100 CONTINUE
48702C
48703      DTERM1=DSUM1 - 0.5D0*DN
48704      DTERM2=DSUM2 - 0.5D0*DSUM3 - 0.5D0*DN
48705C
48706C COMPUTE NONLINEAR FUNCTIONS
48707C
48708      FVEC(1) = DTERM1
48709      FVEC(2) = DTERM2
48710C
48711      RETURN
48712      END
48713      SUBROUTINE LOGHAZ(X,HAZ)
48714C
48715C     PURPOSE--THIS SUBROUTINE COMPUTES THE HAZARD
48716C              FUNCTION VALUE FOR THE LOGISTIC DISTRIBUTION
48717C              WITH MEAN = 0 AND STANDARD DEVIATION = PI/SQRT(3).
48718C              THIS DISTRIBUTION IS DEFINED FOR ALL X AND HAS
48719C              THE HAZARD FUNCTION
48720C              F(X) = 1/(1+EXP(-X)).
48721C     INPUT  ARGUMENTS--X      = THE SINGLE PRECISION VALUE AT
48722C                                WHICH THE HAZARD
48723C                                FUNCTION IS TO BE EVALUATED.
48724C     OUTPUT ARGUMENTS--HAZ    = THE SINGLE PRECISION HAZARD
48725C                                FUNCTION VALUE.
48726C     OUTPUT--THE SINGLE PRECISION HAZARD
48727C             FUNCTION VALUE HAZ.
48728C     PRINTING--NONE.
48729C     RESTRICTIONS--NONE.
48730C     OTHER DATAPAC   SUBROUTINES NEEDED--NONE.
48731C     FORTRAN LIBRARY SUBROUTINES NEEDED--EXP.
48732C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
48733C     LANGUAGE--ANSI FORTRAN.
48734C     REFERENCES--EVANS, HASTINGS, AND PEACOCK, "STATISITCAL
48735C                 DISTRIBUTIONS", THIRD EDITION, 2000, PAGES 124-128.
48736C     WRITTEN BY--JAMES J. FILLIBEN
48737C                 STATISTICAL ENGINEERING LABORATORY
48738C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
48739C                 GAITHERSBURG, MD 20899-8980
48740C                 PHONE:  301-975-2899
48741C     ORIGINAL VERSION--OCTOBER   2003.
48742C
48743C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
48744C
48745C-----COMMON----------------------------------------------------------
48746C
48747      INCLUDE 'DPCOP2.INC'
48748C
48749C---------------------------------------------------------------------
48750C
48751C     CHECK THE INPUT ARGUMENTS FOR ERRORS.
48752C     NO INPUT ARGUMENT ERRORS POSSIBLE
48753C     FOR THIS DISTRIBUTION.
48754C
48755C-----START POINT-----------------------------------------------------
48756C
48757      HAZ=1.0/(1.0+EXP(-X))
48758C
48759      RETURN
48760      END
48761      SUBROUTINE LOGLI1(Y,N,ALOC,SCALE,ALIK,AIC,AICC,BIC,
48762     1                  ISUBRO,IBUGA3,IERROR)
48763C
48764C     PURPOSE--THIS ROUTINE COMPUTES THE LIKELIHOOD FUNCTION FOR
48765C              THE LOGISTIC DISTRIBUTION.  THIS IS FOR THE RAW DATA
48766C              CASE (I.E., NO GROUPING AND NO CENSORING).
48767C
48768C              IT IS ASSUMED THAT BASIC ERROR CHECKING HAS ALREADY BEEN
48769C              PERFORMED.
48770C
48771C     WRITTEN BY--ALAN HECKERT
48772C                 STATISTICAL ENGINEERING DIVISION
48773C                 INFORMATION TECHNOLOGY LABORATORY
48774C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
48775C                 GAITHERSBURG, MD 20899-8980
48776C                 PHONE--301-975-2899
48777C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
48778C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
48779C     LANGUAGE--ANSI FORTRAN (1977)
48780C     VERSION NUMBER--2009/10
48781C     ORIGINAL VERSION--OCTOBER   2009.
48782C
48783C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
48784C
48785      CHARACTER*4 ISUBRO
48786      CHARACTER*4 IBUGA3
48787      CHARACTER*4 IERROR
48788C
48789      CHARACTER*4 IWRITE
48790      CHARACTER*4 ISUBN1
48791      CHARACTER*4 ISUBN2
48792      CHARACTER*4 ISTEPN
48793C
48794      DOUBLE PRECISION DX
48795      DOUBLE PRECISION DS
48796      DOUBLE PRECISION DU
48797      DOUBLE PRECISION DN
48798      DOUBLE PRECISION DNP
48799      DOUBLE PRECISION DLIK
48800      DOUBLE PRECISION DSUM1
48801      DOUBLE PRECISION DSUM2
48802      DOUBLE PRECISION DTERM1
48803      DOUBLE PRECISION DTERM3
48804C
48805C---------------------------------------------------------------------
48806C
48807      DIMENSION Y(*)
48808C
48809C-----COMMON----------------------------------------------------------
48810C
48811      INCLUDE 'DPCOP2.INC'
48812C
48813C-----START POINT-----------------------------------------------------
48814C
48815      ISUBN1='LOGL'
48816      ISUBN2='I1  '
48817      IERROR='NO'
48818C
48819      ALIK=-99.0
48820      AIC=-99.0
48821      AICC=-99.0
48822      BIC=-99.0
48823C
48824      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'GLI1')THEN
48825        WRITE(ICOUT,999)
48826  999   FORMAT(1X)
48827        CALL DPWRST('XXX','WRIT')
48828        WRITE(ICOUT,51)
48829   51   FORMAT('**** AT THE BEGINNING OF LOGLI1--')
48830        CALL DPWRST('XXX','WRIT')
48831        WRITE(ICOUT,52)IBUGA3,ISUBRO
48832   52   FORMAT('IBUGA3,ISUBRO = ',A4,2X,A4)
48833        CALL DPWRST('XXX','WRIT')
48834        WRITE(ICOUT,55)N,ALOC,SCALE
48835   55   FORMAT('N,ALOC,SCALE = ',I8,2G15.7)
48836        CALL DPWRST('XXX','WRIT')
48837        DO56I=1,MIN(N,100)
48838          WRITE(ICOUT,57)I,Y(I)
48839   57     FORMAT('I,Y(I) = ',I8,G15.7)
48840          CALL DPWRST('XXX','WRIT')
48841   56   CONTINUE
48842      ENDIF
48843C
48844C               ******************************************
48845C               **  STEP 1--                            **
48846C               **  COMPUTE LIKELIHOOD FUNCTION         **
48847C               ******************************************
48848C
48849      ISTEPN='1'
48850      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'GLI1')
48851     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
48852C
48853      IERFLG=0
48854      IERROR='NO'
48855      IWRITE='OFF'
48856C
48857C     THE LOGISTIC LOG-LIKELIHOOD FUNCTION CAN BE GIVEN AS:
48858C
48859C     SUM[i=1 to N][(X(I)-LOC)/SCALE)]  - 2*N*LOG(SCALE) -
48860C     2*SUM[i=1 to N][LOG(1 + EXP((X(I)-LOC)/SCALE)]
48861C
48862      DN=DBLE(N)
48863      DS=DBLE(SCALE)
48864      DU=DBLE(ALOC)
48865      DTERM1=-2.0D0*DN*DLOG(DS)
48866      DSUM1=0.0D0
48867      DSUM2=0.0D0
48868      DO1000I=1,N
48869        DX=DBLE(Y(I))
48870        DSUM1=DSUM1 + (DX-DU)/DS
48871        DSUM2=DSUM2 + DLOG(1.0D0 + DEXP((DX-DU)/DS))
48872 1000 CONTINUE
48873C
48874      DLIK=DSUM1 + DTERM1 - 2.0D0*DSUM2
48875      ALIK=REAL(DLIK)
48876      DNP=2.0D0
48877      AIC=REAL(-2.0D0*DLIK + 2.0D0*DNP)
48878      DTERM3=(2.0D0*DNP*(DNP+1.0D0))/(DN-DNP-1.0D0)
48879      AICC=REAL(-2.0D0*DLIK + 2.0D0*DNP + DTERM3)
48880      BIC=REAL(-2.0D0*DLIK + DNP*LOG(DN))
48881C
48882      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'GLI1')THEN
48883        WRITE(ICOUT,999)
48884        CALL DPWRST('XXX','WRIT')
48885        WRITE(ICOUT,9011)
48886 9011   FORMAT('**** AT THE END OF LOGLI1--')
48887        CALL DPWRST('XXX','WRIT')
48888        WRITE(ICOUT,9013)DSUM1,DSUM2,DTERM1,DTERM3
48889 9013   FORMAT('DSUM1,DSUM2,DTERM1,DTERM3 = ',4G15.7)
48890        CALL DPWRST('XXX','WRIT')
48891        WRITE(ICOUT,9014)ALIK,AIC,AICC,BIC
48892 9014   FORMAT('ALIK,AIC,AICC,BIC = ',4G15.7)
48893        CALL DPWRST('XXX','WRIT')
48894      ENDIF
48895C
48896      RETURN
48897      END
48898      SUBROUTINE LOGML1(Y,N,MAXNXT,
48899     1                  DTEMP1,
48900     1                  XMEAN,XSD,XMIN,XMAX,
48901     1                  ALOC,ASCALE,
48902     1                  ISUBRO,IBUGA3,IERROR)
48903C
48904C     PURPOSE--THIS ROUTINE COMPUTES THE MAXIMUM LIKELIHOOD ESTIMATES
48905C              FOR THE LOGISTIC DISTRIBUTION FOR THE RAW DATA CASE
48906C              (I.E., NO CENSORING AND NO GROUPING).
48907C
48908C              IT IS ASSUMED THAT BASIC ERROR CHECKING HAS ALREADY BEEN
48909C              PERFORMED.
48910C
48911C              PUT THIS IN A SEPARATE ROUTINE AS IT MAY BE CALLED
48912C              FROM MULTIPLE PLACES (DPMLLO WILL GENERATE THE OUTPUT
48913C              FOR THE LOGISTIC MLE COMMAND).
48914C
48915C     REFERENCE--CHARLES ANTLE, LAWRENCE KLIMKO, AND WILLIAM
48916C                HARKNESS, (1970), "CONFIDENCE INTERVALS FOR THE
48917C                PARAMETERS OF THE LOGISTIC DISTRIBUTION", BIOMETRIKA,
48918C                PP. 397-402.
48919C     WRITTEN BY--ALAN HECKERT
48920C                 STATISTICAL ENGINEERING DIVISION
48921C                 INFORMATION TECHNOLOGY LABORATORY
48922C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
48923C                 GAITHERSBURG, MD 20899-8980
48924C                 PHONE--301-975-2899
48925C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
48926C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
48927C     LANGUAGE--ANSI FORTRAN (1977)
48928C     VERSION NUMBER--2009/9
48929C     ORIGINAL VERSION--OCTOBER   2009. EXTRACTED AS A SEPARATE
48930C                                       SUBROUTINE (FROM DPMLLO)
48931C
48932C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
48933C
48934      CHARACTER*4 ISUBRO
48935      CHARACTER*4 IBUGA3
48936      CHARACTER*4 IERROR
48937C
48938      CHARACTER*40 IDIST
48939C
48940      CHARACTER*4 ISUBN1
48941      CHARACTER*4 ISUBN2
48942      CHARACTER*4 ISTEPN
48943C
48944      INTEGER IFLAG
48945C
48946C---------------------------------------------------------------------
48947C
48948      DIMENSION Y(*)
48949      DOUBLE PRECISION DTEMP1(*)
48950C
48951      DOUBLE PRECISION TOL
48952      DOUBLE PRECISION XPAR(2)
48953      DOUBLE PRECISION FVEC(2)
48954C
48955      EXTERNAL LOGFUN
48956C
48957C-----COMMON----------------------------------------------------------
48958C
48959      INCLUDE 'DPCOP2.INC'
48960C
48961C-----START POINT-----------------------------------------------------
48962C
48963      DATA PI/3.14159265358979/
48964C
48965      ISUBN1='LOGM'
48966      ISUBN2='L1  '
48967      IERROR='NO'
48968C
48969      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'GML1')THEN
48970        WRITE(ICOUT,999)
48971  999   FORMAT(1X)
48972        CALL DPWRST('XXX','WRIT')
48973        WRITE(ICOUT,51)
48974   51   FORMAT('**** AT THE BEGINNING OF LOGML1--')
48975        CALL DPWRST('XXX','WRIT')
48976        WRITE(ICOUT,52)IBUGA3,ISUBRO,N,MAXNXT
48977   52   FORMAT('IBUGA3,ISUBRO,N,MAXNXT = ',A4,2X,A4,2X,2I8)
48978        CALL DPWRST('XXX','WRIT')
48979        DO56I=1,MIN(N,100)
48980          WRITE(ICOUT,57)I,Y(I)
48981   57     FORMAT('I,Y(I) = ',I8,G15.7)
48982          CALL DPWRST('XXX','WRIT')
48983   56   CONTINUE
48984      ENDIF
48985C
48986C               ******************************************
48987C               **  STEP 1--                            **
48988C               **  CARRY OUT CALCULATIONS              **
48989C               **  FOR LOGISTIC MLE ESTIMATE           **
48990C               ******************************************
48991C
48992      ISTEPN='1'
48993      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'GML1')
48994     1CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
48995C
48996      IDIST='LOGISTIC'
48997      IFLAG=0
48998      CALL SUMRAW(Y,N,IDIST,IFLAG,
48999     1            XMEAN,XVAR,XSD,XMIN,XMAX,
49000     1            ISUBRO,IBUGA3,IERROR)
49001C
49002      XPAR(1)=DBLE(XMEAN)
49003      XPAR(2)=DBLE((SQRT(3.0)/PI)*XSD)
49004C
49005      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'GML1')THEN
49006        WRITE(ICOUT,101)XPAR(1),XPAR(2)
49007  101   FORMAT('XPAR(1),XPAR(2) = ',2G15.7)
49008        CALL DPWRST('XXX','WRIT')
49009      ENDIF
49010C
49011      IOPT=2
49012      TOL=1.0D-6
49013      NVAR=2
49014      NPRINT=-1
49015      INFO=0
49016      JAC=0
49017      LWA=MAXNXT
49018      CALL DNSQE(LOGFUN,JAC,IOPT,NVAR,XPAR,FVEC,TOL,NPRINT,INFO,
49019     1           DTEMP1,MAXNXT,Y,N)
49020C
49021      ALOC=REAL(XPAR(1))
49022      ASCALE=REAL(XPAR(2))
49023C
49024      IF(IBUGA3.EQ.'ON'.OR.ISUBRO.EQ.'GML1')THEN
49025        WRITE(ICOUT,999)
49026        CALL DPWRST('XXX','WRIT')
49027        WRITE(ICOUT,9011)
49028 9011   FORMAT('**** AT THE END OF LOGML1--')
49029        CALL DPWRST('XXX','WRIT')
49030        WRITE(ICOUT,9055)N,XMEAN,XSD,XMIN,XMAX
49031 9055   FORMAT('N,XMEAN,XSD,XMIN,XMAX = ',I8,4G15.7)
49032        CALL DPWRST('XXX','WRIT')
49033        WRITE(ICOUT,9056)ALOC,ASCALE
49034 9056   FORMAT('ALOC,ASCALE = ',2G15.7)
49035        CALL DPWRST('XXX','WRIT')
49036      ENDIF
49037C
49038      RETURN
49039      END
49040      SUBROUTINE LOGPDF(X,PDF)
49041C
49042C     PURPOSE--THIS SUBROUTINE COMPUTES THE PROBABILITY DENSITY
49043C              FUNCTION VALUE FOR THE LOGISTIC DISTRIBUTION
49044C              WITH MEAN = 0 AND STANDARD DEVIATION = PI/SQRT(3).
49045C              THIS DISTRIBUTION IS DEFINED FOR ALL X AND HAS
49046C              THE PROBABILITY DENSITY FUNCTION
49047C              F(X) = EXP(X)/(1+EXP(X)).
49048C     INPUT  ARGUMENTS--X      = THE SINGLE PRECISION VALUE AT
49049C                                WHICH THE PROBABILITY DENSITY
49050C                                FUNCTION IS TO BE EVALUATED.
49051C     OUTPUT ARGUMENTS--PDF    = THE SINGLE PRECISION PROBABILITY
49052C                                DENSITY FUNCTION VALUE.
49053C     OUTPUT--THE SINGLE PRECISION PROBABILITY DENSITY
49054C             FUNCTION VALUE PDF.
49055C     PRINTING--NONE.
49056C     RESTRICTIONS--NONE.
49057C     OTHER DATAPAC   SUBROUTINES NEEDED--NONE.
49058C     FORTRAN LIBRARY SUBROUTINES NEEDED--EXP.
49059C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
49060C     LANGUAGE--ANSI FORTRAN.
49061C     REFERENCES--JOHNSON AND KOTZ, CONTINUOUS UNIVARIATE
49062C                 DISTRIBUTIONS--2, 1970, PAGES 1-21.
49063C     WRITTEN BY--JAMES J. FILLIBEN
49064C                 STATISTICAL ENGINEERING LABORATORY (205.03)
49065C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
49066C                 GAITHERSBURG, MD 20899-8980
49067C                 PHONE:  301-921-2315
49068C     ORIGINAL VERSION--APRIL     1994.
49069C
49070C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
49071C
49072C-----COMMON----------------------------------------------------------
49073C
49074      INCLUDE 'DPCOP2.INC'
49075C
49076C---------------------------------------------------------------------
49077C
49078C     CHECK THE INPUT ARGUMENTS FOR ERRORS.
49079C     NO INPUT ARGUMENT ERRORS POSSIBLE
49080C     FOR THIS DISTRIBUTION.
49081C
49082C-----START POINT-----------------------------------------------------
49083C
49084      PDF=EXP(X)/((1.0+EXP(X))**2)
49085C
49086      RETURN
49087      END
49088      SUBROUTINE LOGPPF(P,PPF)
49089C
49090C     PURPOSE--THIS SUBROUTINE COMPUTES THE PERCENT POINT
49091C              FUNCTION VALUE FOR THE LOGISTIC DISTRIBUTION
49092C              WITH MEAN = 0 AND STANDARD DEVIATION = PI/SQRT(3).
49093C              THIS DISTRIBUTION IS DEFINED FOR ALL X AND HAS
49094C              THE PROBABILITY DENSITY FUNCTION
49095C              F(X) = EXP(X)/(1+EXP(X)).
49096C              NOTE THAT THE PERCENT POINT FUNCTION OF A DISTRIBUTION
49097C              IS IDENTICALLY THE SAME AS THE INVERSE CUMULATIVE
49098C              DISTRIBUTION FUNCTION OF THE DISTRIBUTION.
49099C     INPUT  ARGUMENTS--P      = THE SINGLE PRECISION VALUE
49100C                                (BETWEEN 0.0 AND 1.0)
49101C                                AT WHICH THE PERCENT POINT
49102C                                FUNCTION IS TO BE EVALUATED.
49103C     OUTPUT ARGUMENTS--PPF    = THE SINGLE PRECISION PERCENT
49104C                                POINT FUNCTION VALUE.
49105C     OUTPUT--THE SINGLE PRECISION PERCENT POINT
49106C             FUNCTION VALUE PPF.
49107C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
49108C     RESTRICTIONS--P SHOULD BE BETWEEN 0.0 AND 1.0, EXCLUSIVELY.
49109C     OTHER DATAPAC   SUBROUTINES NEEDED--NONE.
49110C     FORTRAN LIBRARY SUBROUTINES NEEDED--EXP.
49111C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
49112C     LANGUAGE--ANSI FORTRAN (1977)
49113C     REFERENCES--FILLIBEN, SIMPLE AND ROBUST LINEAR ESTIMATION
49114C                 OF THE LOCATION PARAMETER OF A SYMMETRIC
49115C                 DISTRIBUTION (UNPUBLISHED PH.D. DISSERTATION,
49116C                 PRINCETON UNIVERSITY), 1969, PAGES 21-44, 229-231.
49117C               --FILLIBEN, 'THE PERCENT POINT FUNCTION',
49118C                 (UNPUBLISHED MANUSCRIPT), 1970, PAGES 28-31.
49119C               --JOHNSON AND KOTZ, CONTINUOUS UNIVARIATE
49120C                 DISTRIBUTIONS--2, 1970, PAGES 1-21.
49121C     WRITTEN BY--JAMES J. FILLIBEN
49122C                 STATISTICAL ENGINEERING DIVISION
49123C                 INFORMATION TECHNOLOGY LABORATORY
49124C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
49125C                 GAITHERSBURG, MD 20899-8980
49126C                 PHONE--301-975-2855
49127C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
49128C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
49129C     LANGUAGE--ANSI FORTRAN (1966)
49130C               EXCEPTION--HOLLERITH STRINGS IN FORMAT STATEMENTS
49131C                          DENOTED BY QUOTES RATHER THAN NH.
49132C     VERSION NUMBER--82.6
49133C     ORIGINAL VERSION--JUNE      1972.
49134C     UPDATED         --SEPTEMBER 1975.
49135C     UPDATED         --NOVEMBER  1975.
49136C     UPDATED         --DECEMBER  1981.
49137C     UPDATED         --MAY       1982.
49138C
49139C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
49140C
49141C-----COMMON----------------------------------------------------------
49142C
49143      INCLUDE 'DPCOP2.INC'
49144C
49145C-----START POINT-----------------------------------------------------
49146C
49147C     CHECK THE INPUT ARGUMENTS FOR ERRORS
49148C
49149      IF(P.LE.0.0.OR.P.GE.1.0)GOTO50
49150      GOTO90
49151   50 WRITE(ICOUT,1)
49152      CALL DPWRST('XXX','BUG ')
49153      WRITE(ICOUT,46)P
49154      CALL DPWRST('XXX','BUG ')
49155      RETURN
49156   90 CONTINUE
49157    1 FORMAT('***** FATAL ERROR--THE 1ST INPUT ARGUMENT TO THE ',
49158     1'LOGPPF SUBROUTINE IS OUTSIDE THE ALLOWABLE (0,1) INTERVAL')
49159   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',E15.8,' *****')
49160C
49161CCCCC CALL QCORR(P,Q)
49162CCCCC PPF=LOG(P/Q)
49163      PPF=LOG(P/(1.0-P))
49164C
49165      RETURN
49166      END
49167      SUBROUTINE LOGRAN(N,ISEED,X)
49168C
49169C     PURPOSE--THIS SUBROUTINE GENERATES A RANDOM SAMPLE OF SIZE N
49170C              FROM THE LOGISTIC DISTRIBUTION
49171C              WITH MEAN = 0 AND STANDARD DEVIATION = PI/SQRT(3).
49172C              THIS DISTRIBUTION IS DEFINED FOR ALL X AND HAS
49173C              THE PROBABILITY DENSITY FUNCTION
49174C              F(X) = EXP(X)/(1+EXP(X)).
49175C     INPUT  ARGUMENTS--N      = THE DESIRED INTEGER NUMBER
49176C                                OF RANDOM NUMBERS TO BE
49177C                                GENERATED.
49178C     OUTPUT ARGUMENTS--X      = A SINGLE PRECISION VECTOR
49179C                                (OF DIMENSION AT LEAST N)
49180C                                INTO WHICH THE GENERATED
49181C                                RANDOM SAMPLE WILL BE PLACED.
49182C     OUTPUT--A RANDOM SAMPLE OF SIZE N
49183C             FROM THE LOGISTIC DISTRIBUTION
49184C             WITH MEAN = 0 AND STANDARD DEVIATION = PI/SQRT(3).
49185C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
49186C     RESTRICTIONS--THERE IS NO RESTRICTION ON THE MAXIMUM VALUE
49187C                   OF N FOR THIS SUBROUTINE.
49188C     OTHER DATAPAC   SUBROUTINES NEEDED--UNIRAN.
49189C     FORTRAN LIBRARY SUBROUTINES NEEDED--LOG.
49190C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
49191C     LANGUAGE--ANSI FORTRAN (1977)
49192C     REFERENCES--TOCHER, THE ART OF SIMULATION,
49193C                 1963, PAGES 14-15.
49194C               --HAMMERSLEY AND HANDSCOMB, MONTE CARLO METHODS,
49195C                 1964, PAGE 36.
49196C               --FILLIBEN, SIMPLE AND ROBUST LINEAR ESTIMATION
49197C                 OF THE LOCATION PARAMETER OF A SYMMETRIC
49198C                 DISTRIBUTION (UNPUBLISHED PH.D. DISSERTATION,
49199C                 PRINCETON UNIVERSITY), 1969, PAGE 230.
49200C               --FILLIBEN, 'THE PERCENT POINT FUNCTION',
49201C                 (UNPUBLISHED MANUSCRIPT), 1970, PAGES 28-31.
49202C               --JOHNSON AND KOTZ, CONTINUOUS UNIVARIATE
49203C                 DISTRIBUTIONS--2, 1970, PAGES 1-21.
49204C     WRITTEN BY--JAMES J. FILLIBEN
49205C                 STATISTICAL ENGINEERING DIVISION
49206C                 INFORMATION TECHNOLOGY LABORATORY
49207C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
49208C                 GAITHERSBURG, MD 20899-8980
49209C                 PHONE--301-975-2855
49210C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
49211C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
49212C     LANGUAGE--ANSI FORTRAN (1966)
49213C               EXCEPTION--HOLLERITH STRINGS IN FORMAT STATEMENTS
49214C                          DENOTED BY QUOTES RATHER THAN NH.
49215C     VERSION NUMBER--82.6
49216C     ORIGINAL VERSION--JUNE      1972.
49217C     UPDATED         --SEPTEMBER 1975.
49218C     UPDATED         --NOVEMBER  1975.
49219C     UPDATED         --DECEMBER  1981.
49220C     UPDATED         --MAY       1982.
49221C
49222C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
49223C
49224C---------------------------------------------------------------------
49225C
49226      DIMENSION X(*)
49227C
49228C-----COMMON----------------------------------------------------------
49229C
49230      INCLUDE 'DPCOP2.INC'
49231C
49232C-----START POINT-----------------------------------------------------
49233C
49234C     CHECK THE INPUT ARGUMENTS FOR ERRORS
49235C
49236      IF(N.LT.1)GOTO50
49237      GOTO90
49238   50 WRITE(ICOUT, 5)
49239      CALL DPWRST('XXX','BUG ')
49240      WRITE(ICOUT,47)N
49241      CALL DPWRST('XXX','BUG ')
49242      RETURN
49243   90 CONTINUE
49244    5 FORMAT('***** FATAL ERROR--THE 1ST INPUT ARGUMENT TO THE ',
49245     1'LOGRAN SUBROUTINE IS NON-POSITIVE *****')
49246   47 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',I8,' *****')
49247C
49248C     GENERATE N UNIFORM (0,1) RANDOM NUMBERS;
49249C
49250      CALL UNIRAN(N,ISEED,X)
49251C
49252C     GENERATE N LOGISTIC RANDOM NUMBERS
49253C     USING THE PERCENT POINT FUNCTION TRANSFORMATION METHOD.
49254C
49255      DO100I=1,N
49256      X(I)=LOG(X(I)/(1.0-X(I)))
49257  100 CONTINUE
49258C
49259      RETURN
49260      END
49261      SUBROUTINE LOGRD(X,N,NX,XG,T)
49262C     THIS SUBROUTINE PLACES A SET OF INTERVALS OVER THE SET OF POINTS
49263C     (X(I), I=1,...,N).  THIS IS DONE BY PLACING APPROXIMATELY EQUAL
49264C     NUMBERS OF THEM WITHIN EACH INTERVAL.
49265C
49266C     THE ARGUMENTS ARE AS FOLLOWS.
49267C
49268C        N   - INPUT.  THE NUMBER OF POINTS IN THE ARRAY X.
49269C        X   - INPUT.  THE ARRAY OF X POINTS.
49270C        NX  - INPUT.  THE DESIRED NUMBER OF INTERVALS.
49271C        XG  - OUTPUT.  THE COORDINATES OF THE INTERVAL ENDPOINTS.
49272C        T   - WORK ARRAY OF DIMENSION AT LEAST N.
49273C
49274C     SUBROUTINES USED
49275C        SLATEC:  SSORT
49276C
49277      DIMENSION X(*),XG(*),T(*)
49278C
49279      DO 100 I=1,N
49280        T(I) = X(I)
49281  100 CONTINUE
49282C
49283CCCCC CALL SSORT(T,T,N,1)
49284      CALL SORT(T,N,T)
49285C
49286      FINC = REAL(N-1)/REAL(NX+1)
49287      DO 140 J=1,NX
49288        FK = J*FINC + 1.
49289        K = INT(FK)
49290        WK1 = FK - K
49291        XG(J+1) = (1. - WK1)*T(K) + WK1*T(K+1)
49292  140 CONTINUE
49293C
49294      XG(1) = T(1)
49295      XG(NX+2) = T(N)
49296C
49297      RETURN
49298      END
49299      SUBROUTINE LOGSF(P,SF)
49300C
49301C     PURPOSE--THIS SUBROUTINE COMPUTES THE SPARSITY
49302C              FUNCTION VALUE FOR THE LOGISTIC DISTRIBUTION
49303C              WITH MEAN = 0 AND STANDARD DEVIATION = PI/SQRT(3).
49304C              THIS DISTRIBUTION IS DEFINED FOR ALL X AND HAS
49305C              THE PROBABILITY DENSITY FUNCTION
49306C              F(X) = EXP(X)/(1+EXP(X)).
49307C              NOTE THAT THE SPARSITY FUNCTION OF A DISTRIBUTION
49308C              IS THE DERIVATIVE OF THE PERCENT POINT FUNCTION,
49309C              AND ALSO IS THE RECIPROCAL OF THE PROBABILITY
49310C              DENSITY FUNCTION (BUT IN UNITS OF P RATHER THAN X).
49311C     INPUT  ARGUMENTS--P      = THE SINGLE PRECISION VALUE
49312C                                (BETWEEN 0.0 AND 1.0)
49313C                                AT WHICH THE SPARSITY
49314C                                FUNCTION IS TO BE EVALUATED.
49315C     OUTPUT ARGUMENTS--SF     = THE SINGLE PRECISION
49316C                                SPARSITY FUNCTION VALUE.
49317C     OUTPUT--THE SINGLE PRECISION SPARSITY
49318C             FUNCTION VALUE SF.
49319C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
49320C     RESTRICTIONS--P SHOULD BE BETWEEN 0.0 AND 1.0, EXCLUSIVELY.
49321C     OTHER DATAPAC   SUBROUTINES NEEDED--NONE.
49322C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE.
49323C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
49324C     LANGUAGE--ANSI FORTRAN.
49325C     REFERENCES--FILLIBEN, SIMPLE AND ROBUST LINEAR ESTIMATION
49326C                 OF THE LOCATION PARAMETER OF A SYMMETRIC
49327C                 DISTRIBUTION (UNPUBLISHED PH.D. DISSERTATION,
49328C                 PRINCETON UNIVERSITY), 1969, PAGES 21-44, 229-231.
49329C               --FILLIBEN, 'THE PERCENT POINT FUNCTION',
49330C                 (UNPUBLISHED MANUSCRIPT), 1970, PAGES 28-31.
49331C               --JOHNSON AND KOTZ, CONTINUOUS UNIVARIATE
49332C                 DISTRIBUTIONS--2, 1970, PAGES 1-21.
49333C     WRITTEN BY--JAMES J. FILLIBEN
49334C                 STATISTICAL ENGINEERING LABORATORY (205.03)
49335C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
49336C                 GAITHERSBURG, MD 20899-8980
49337C                 PHONE:  301-921-2315
49338C     ORIGINAL VERSION--APRIL     1994.
49339C
49340C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
49341C
49342C-----COMMON----------------------------------------------------------
49343C
49344      INCLUDE 'DPCOP2.INC'
49345C
49346C---------------------------------------------------------------------
49347C
49348C     CHECK THE INPUT ARGUMENTS FOR ERRORS
49349C
49350      IF(P.LE.0.0.OR.P.GE.1.0)GOTO50
49351      GOTO90
49352   50 CONTINUE
49353      WRITE(ICOUT,1)
49354      CALL DPWRST('XXX','BUG ')
49355      WRITE(ICOUT,2)
49356      CALL DPWRST('XXX','BUG ')
49357      WRITE(ICOUT,46)P
49358      CALL DPWRST('XXX','BUG ')
49359      RETURN
49360   90 CONTINUE
49361    1 FORMAT(
49362     1'***** FATAL ERROR--THE FIRST  INPUT ARGUMENT TO THE LOGSF')
49363    2 FORMAT(
49364     1'SUBROUTINE IS OUTSIDE THE ALLOWABLE (0,1) INTERVAL *****')
49365   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',E15.8,' *****')
49366C
49367C-----START POINT-----------------------------------------------------
49368C
49369      SF=1.0/(P-P*P)
49370C
49371      RETURN
49372      END
49373      SUBROUTINE LOSCDF(X,P,IR,CDF)
49374C
49375C     PURPOSE--THIS SUBROUTINE COMPUTES THE CUMULATIVE DISTRIBUTION
49376C              FUNCTION VALUE AT THE SINGLE PRECISION VALUE X
49377C              FOR THE LOST GAMES DISTRIBUTION
49378C              WITH SINGLE PRECISION SHAPE PARAMETERS P AND
49379C              IR.  THIS DISTRIBUTION IS DEFINED FOR ALL
49380C              NON-NEGATIVE INTEGER X >= IR.
49381C              THIS DISTRIBUTION HAS THE PROBABILITY MASS FUNCTION
49382C              p(X;P,IR) = (2*X-IR  X)*(1-P)**(X-IR)*(P)**X
49383C                          *(IR/(2*X-IR))   X = IR, IR+ 1, ...
49384C                                  (X*(X-K)!)
49385C              THIS DISTRIBUTION IS USED TO MODEL THE "GAMBLER'S
49386C              RUIN" PROBLEM.  IT CAN ALSO BE USED TO MODEL A
49387C              QUEUE WHERE THE QUEUE FOLLOWS A HOMOGENEOUS POISSON
49388C              PROCESS WITH PARAMETER LAMBDA, THE SERVICE TIME IS
49389C              EXPONENTIAL WITH PARAMETER MU < LAMBDA, AND THERE
49390C              ARE R INITIAL CUSTOMERS.  THE LOST GAMES DISTRIBUTION
49391C              IS THEN THE DISTRIBUTION OF THE NUMBER OF CUSTOMERS
49392C              SERVED UNTIL THE QUEUE FIRST VANISHES WITH
49393C              P = LAMBDA/(LAMBDA+MU).
49394C
49395C              NOTE THAT WE ARE USING DEVROYE'S FORMULATION OF
49396C              THE PDF.  HOWEVER, WE USE P > 0.5 (I.E., THE
49397C              PROBABILITY THAT THE GAMBLER LOSES ON A GIVEN
49398C              HAND) WHEREAS DEVROYE USES P < 0.5 = PROBABILITY
49399C              GAMBLER WINS ON A GIVEN HAND.
49400C
49401C     INPUT  ARGUMENTS--X      = THE SINGLE PRECISION VALUE
49402C                                AT WHICH THE CUMULATIVE DISTRIBUTION
49403C                                FUNCTION IS TO BE EVALUATED.
49404C                                X SHOULD BE AN INTEGR >= IR.
49405C                     --P      = THE SINGLE PRECISION VALUE
49406C                                OF THE FIRST SHAPE PARAMETER.
49407C                     --IR     = THE SINGLE PRECISION VALUE
49408C                                OF THE SECOND SHAPE PARAMETER.
49409C     OUTPUT ARGUMENTS--CDF    = THE SINGLE PRECISION CUMULATIVE
49410C                                DISTRIBUTION FUNCTION VALUE
49411C     OUTPUT--THE SINGLE PRECISION CUMULATIVE DISTRIBUTION
49412C             FUNCTION VALUE CDF FOR THE LOST GAMES DISTRIBUTION
49413C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
49414C     RESTRICTIONS--X SHOULD BE AN INTEGER >= IR
49415C                 --0.5 < P < 1,  AND IR >= 1
49416C     OTHER DATAPAC   SUBROUTINES NEEDED--DLNGAM.
49417C     FORTRAN LIBRARY SUBROUTINES NEEDED--DEXP, DLOG
49418C     MODE OF INTERNAL OPERATIONS--DOUBLE PRECISION.
49419C     LANGUAGE--ANSI FORTRAN (1977)
49420C     REFERENCES--JOHNSON, KOTZ, AND KEMP (1992).  "UNIVARIATE
49421C                 DISCRETE DISTRIBUTIONS", SECOND EDITION,
49422C                 WILEY, PP. 445-447.
49423C               --LUC DEVROYE (1986), "NON-UNIFORM RANDOM VARIATE
49424C                 GENERATION", SPRINGER-VERLANG, PP. 758-759.
49425C               --KEMP AND KEMP (1968), "ON A DISTRIBUTION ASSOCIATED
49426C                 WITH CERTAIN STOCHASTIC PROCESSES", JOURNAL OF
49427C                 THE ROYAL STATISTICAL SOCIETY, SERIES B, 30,
49428C                 PP. 401-410.
49429C               --HAIGHT (1961), "A DISTRIBUTION ANALOGOUS TO THE
49430C                 BOREL-TANNER", BIOMETRIKA, 48, PP. 167-173.
49431C     WRITTEN BY--JAMES J. FILLIBEN
49432C                 STATISTICAL ENGINEERING DIVISION
49433C                 INFORMATION TECHNOLOGY LABORATORY
49434C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
49435C                 GAITHERSBURG, MD 20899-8980
49436C                 PHONE--301-975-2855
49437C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
49438C           OF THE NATIONAL BUREAU OF STANDARDS.
49439C     LANGUAGE--ANSI FORTRAN (1977)
49440C     VERSION NUMBER--2006/6
49441C     ORIGINAL VERSION--JUNE      2006.
49442C
49443C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
49444C
49445C---------------------------------------------------------------------
49446C
49447      DOUBLE PRECISION DX
49448      DOUBLE PRECISION DP
49449      DOUBLE PRECISION DR
49450      DOUBLE PRECISION DPDF
49451      DOUBLE PRECISION DPDFSV
49452      DOUBLE PRECISION DCDF
49453      DOUBLE PRECISION DC1
49454      DOUBLE PRECISION DC2
49455      DOUBLE PRECISION DC3
49456CCCCC DOUBLE PRECISION DTERM1
49457CCCCC DOUBLE PRECISION DTERM2
49458CCCCC DOUBLE PRECISION DTERM3
49459CCCCC DOUBLE PRECISION DLNGAM
49460C
49461C-----COMMON----------------------------------------------------------
49462C
49463      INCLUDE 'DPCOP2.INC'
49464C
49465C-----START POINT-----------------------------------------------------
49466C
49467      CDF=0.0
49468C
49469C     CHECK THE INPUT ARGUMENTS FOR ERRORS
49470C
49471      IF(P.LE.0.5 .OR. P.GE.1.0)THEN
49472        WRITE(ICOUT,11)
49473        CALL DPWRST('XXX','BUG ')
49474        WRITE(ICOUT,46)P
49475        CALL DPWRST('XXX','BUG ')
49476        CDF=0.0
49477        GOTO9999
49478      ENDIF
49479   11 FORMAT('***** ERROR--THE SECOND ARGUMENT TO LOSCDF ',
49480     1' IS OUTSIDE THE ALLOWABLE (0.5,1) INTERVAL')
49481C
49482      IF(IR.LT.0)THEN
49483        WRITE(ICOUT,12)
49484        CALL DPWRST('XXX','BUG ')
49485        WRITE(ICOUT,47)IR
49486        CALL DPWRST('XXX','BUG ')
49487        CDF=0.0
49488        GOTO9999
49489      ENDIF
49490   12 FORMAT('***** ERROR--THE THIRD ARGUMENT TO LOSCDF IS ',
49491     1' NEGATIVE')
49492      INTX=INT(X+0.5)
49493      IF(INTX.LT.IR)THEN
49494        WRITE(ICOUT,5)
49495        CALL DPWRST('XXX','BUG ')
49496        WRITE(ICOUT,47)INTX
49497        CALL DPWRST('XXX','BUG ')
49498        WRITE(ICOUT,48)INTX
49499        CALL DPWRST('XXX','BUG ')
49500        CDF=0.0
49501        GOTO9999
49502      ENDIF
49503    5 FORMAT('***** ERROR--THE FIRST ARGUMENT TO LOSCDF IS LESS ',
49504     1'THAN THE THIRD ARUGMENT')
49505C
49506   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',G15.7)
49507   47 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',I8)
49508   48 FORMAT('***** THE VALUE OF THE THIRD ARGUMENT IS ',I8)
49509C
49510      DP=DBLE(P)
49511      DR=DBLE(IR)
49512      DCDF=0.0D0
49513C
49514CCCCC DO100I=INTX,IR,-1
49515CCCCC   DX=DBLE(I)
49516CCCCC   DTERM1=DLNGAM(2.0D0*DX-DR+1) - DLNGAM(DX+1.0D0) -
49517CCCCC1         DLNGAM(DX-DR+1.0D0)
49518CCCCC   DTERM2=(DX-DR)*DLOG(1.0D0-DP) + DX*DLOG(DP)
49519CCCCC   DTERM3=DLOG(DR) - DLOG(2.0D0*DX - DR)
49520CCCCC   DPDF=DEXP(DTERM1 + DTERM2 + DTERM3)
49521CCCCC   DCDF=DCDF+DPDF
49522CC100 CONTINUE
49523C
49524CCCCC CDF=REAL(DCDF)
49525C
49526C     USE THE RECURRENCE RELATION (FROM KEMP AND KEMP):
49527C
49528C     P(X;P,R) = C*P(X-1;P,R)
49529C
49530C     WHERE
49531C
49532C        C = (2*X-R-1)*(2*X-R-2)*P*(1-P)/[X*(X-R)]
49533C
49534      DC1=DLOG(DP) + DLOG(1.0D0 - DP)
49535      DPDF=DR*DLOG(DP)
49536      DPDFSV=DPDF
49537      DCDF=DEXP(DPDF)
49538C
49539      IF(INTX.GT.IR)THEN
49540        DO200I=IR+1,INTX
49541          DX=DBLE(I)
49542          DC2=DLOG(2.0D0*DX-DR-1.0D0) + DLOG(2.0D0*DX-DR-2.0D0)
49543          DC3=DLOG(DX) + DLOG(DX-DR)
49544          DPDF=DC2 - DC3 + DC1 + DPDFSV
49545          DCDF=DCDF + DEXP(DPDF)
49546          DPDFSV=DPDF
49547  200   CONTINUE
49548      ENDIF
49549C
49550      CDF=REAL(DCDF)
49551C
49552 9999 CONTINUE
49553
49554      RETURN
49555      END
49556      SUBROUTINE LOSPDF(X,P,IR,PDF)
49557C
49558C     PURPOSE--THIS SUBROUTINE COMPUTES THE PROBABILITY MASS
49559C              FUNCTION VALUE AT THE SINGLE PRECISION VALUE X
49560C              FOR THE LOST GAMES DISTRIBUTION
49561C              WITH SINGLE PRECISION SHAPE PARAMETERS P AND
49562C              IR.  THIS DISTRIBUTION IS DEFINED FOR ALL
49563C              NON-NEGATIVE INTEGER X >= IR.
49564C              THIS DISTRIBUTION HAS THE PROBABILITY FUNCTION
49565C              p(X;P,IR) = (2*X-IR  X)*(1-P)**(X-IR)*(P)**X
49566C                          *(IR/(2*X-IR))   X = IR, IR+ 1, ...
49567C                                  (X*(X-K)!)
49568C              THIS DISTRIBUTION IS USED TO MODEL THE "GAMBLER'S
49569C              RUIN" PROBLEM.  IT CAN ALSO BE USED TO MODEL A
49570C              QUEUE WHERE THE QUEUE FOLLOWS A HOMOGENEOUS POISSON
49571C              PROCESS WITH PARAMETER LAMBDA, THE SERVICE TIME IS
49572C              EXPONENTIAL WITH PARAMETER MU < LAMBDA, AND THERE
49573C              ARE R INITIAL CUSTOMERS.  THE LOST GAMES DISTRIBUTION
49574C              IS THEN THE DISTRIBUTION OF THE NUMBER OF CUSTOMERS
49575C              SERVED UNTIL THE QUEUE FIRST VANISHES WITH
49576C              P = LAMBDA/(LAMBDA+MU).
49577C
49578C              NOTE THAT WE ARE USING DEVROYE'S FORMULATION OF
49579C              THE PDF.  HOWEVER, WE USE P > 0.5 (I.E., THE
49580C              PROBABILITY THAT THE GAMBLER LOSES ON A GIVEN
49581C              HAND) WHEREAS DEVROYE USES P < 0.5 = PROBABILITY
49582C              GAMBLER WINS ON A GIVEN HAND.
49583C
49584C     INPUT  ARGUMENTS--X      = THE SINGLE PRECISION VALUE
49585C                                AT WHICH THE PROBABILITY MASS
49586C                                FUNCTION IS TO BE EVALUATED.
49587C                                X SHOULD BE AN INTEGR >= IR.
49588C                     --P      = THE SINGLE PRECISION VALUE
49589C                                OF THE FIRST SHAPE PARAMETER.
49590C                     --IR     = THE SINGLE PRECISION VALUE
49591C                                OF THE SECOND SHAPE PARAMETER.
49592C     OUTPUT ARGUMENTS--PDF    = THE SINGLE PRECISION PROBABILITY
49593C                                MASS FUNCTION VALUE
49594C     OUTPUT--THE SINGLE PRECISION PROBABILITY DENSITY
49595C             FUNCTION VALUE PDF
49596C             FOR THE LOST GAMES DISTRIBUTION
49597C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
49598C     RESTRICTIONS--X SHOULD BE A POSITIVE INTEGER
49599C                 --0.5 < P < 1,  AND IR >= 1
49600C     OTHER DATAPAC   SUBROUTINES NEEDED--DLNGAM.
49601C     FORTRAN LIBRARY SUBROUTINES NEEDED--DEXP, DLOG
49602C     MODE OF INTERNAL OPERATIONS--DOUBLE PRECISION.
49603C     LANGUAGE--ANSI FORTRAN (1977)
49604C     REFERENCES--JOHNSON, KOTZ, AND KEMP (1992).  "UNIVARIATE
49605C                 DISCRETE DISTRIBUTIONS", SECOND EDITION,
49606C                 WILEY, PP. 445-447.
49607C               --LUC DEVROYE (1986), "NON-UNIFORM RANDOM VARIATE
49608C                 GENERATION", SPRINGER-VERLANG, PP. 758-759.
49609C               --KEMP AND KEMP (1968), "ON A DISTRIBUTION ASSOCIATED
49610C                 WITH CERTAIN STOCHASTIC PROCESSES", JOURNAL OF
49611C                 THE ROYAL STATISTICAL SOCIETY, SERIES B, 30,
49612C                 PP. 401-410.
49613C               --HAIGHT (1961), "A DISTRIBUTION ANALOGOUS TO THE
49614C                 BOREL-TANNER", BIOMETRIKA, 48, PP. 167-173.
49615C     WRITTEN BY--JAMES J. FILLIBEN
49616C                 STATISTICAL ENGINEERING DIVISION
49617C                 INFORMATION TECHNOLOGY LABORATORY
49618C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
49619C                 GAITHERSBURG, MD 20899-8980
49620C                 PHONE--301-975-2855
49621C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
49622C           OF THE NATIONAL BUREAU OF STANDARDS.
49623C     LANGUAGE--ANSI FORTRAN (1977)
49624C     VERSION NUMBER--2006/6
49625C     ORIGINAL VERSION--JUNE      2006.
49626C
49627C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
49628C
49629C---------------------------------------------------------------------
49630C
49631      DOUBLE PRECISION DX
49632      DOUBLE PRECISION DP
49633      DOUBLE PRECISION DR
49634      DOUBLE PRECISION DPDF
49635      DOUBLE PRECISION DTERM1
49636      DOUBLE PRECISION DTERM2
49637      DOUBLE PRECISION DTERM3
49638      DOUBLE PRECISION DLNGAM
49639C
49640C-----COMMON----------------------------------------------------------
49641C
49642      INCLUDE 'DPCOP2.INC'
49643C
49644C-----START POINT-----------------------------------------------------
49645C
49646      PDF=0.0
49647C
49648C     CHECK THE INPUT ARGUMENTS FOR ERRORS
49649C
49650      IF(P.LE.0.5 .OR. P.GE.1.0)THEN
49651        WRITE(ICOUT,11)
49652        CALL DPWRST('XXX','BUG ')
49653        WRITE(ICOUT,46)P
49654        CALL DPWRST('XXX','BUG ')
49655        PDF=0.0
49656        GOTO9999
49657      ENDIF
49658   11 FORMAT('***** ERROR--THE SECOND ARGUMENT TO LOSPDF ',
49659     1' IS OUTSIDE THE ALLOWABLE (0.5,1) INTERVAL')
49660C
49661      IF(IR.LT.0)THEN
49662        WRITE(ICOUT,12)
49663        CALL DPWRST('XXX','BUG ')
49664        WRITE(ICOUT,47)IR
49665        CALL DPWRST('XXX','BUG ')
49666        PDF=0.0
49667        GOTO9999
49668      ENDIF
49669   12 FORMAT('***** ERROR--THE THIRD ARGUMENT TO LOSPDF IS ',
49670     1' NON-POSITIVE')
49671      INTX=INT(X+0.5)
49672      IF(INTX.LT.IR)THEN
49673        WRITE(ICOUT,5)
49674        CALL DPWRST('XXX','BUG ')
49675        WRITE(ICOUT,47)INTX
49676        CALL DPWRST('XXX','BUG ')
49677        WRITE(ICOUT,48)INTX
49678        CALL DPWRST('XXX','BUG ')
49679        PDF=0.0
49680        GOTO9999
49681      ENDIF
49682    5 FORMAT('***** ERROR--THE FIRST ARGUMENT TO LOSPDF IS LESS ',
49683     1'THAN THE THIRD ARUGMENT')
49684C
49685   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',G15.7)
49686   47 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',I8)
49687   48 FORMAT('***** THE VALUE OF THE THIRD ARGUMENT IS ',I8)
49688C
49689      DX=DBLE(INTX)
49690      DP=DBLE(P)
49691      DR=DBLE(IR)
49692C
49693      DTERM1=DLNGAM(2.0D0*DX-DR+1) - DLNGAM(DX+1.0D0) -
49694     1       DLNGAM(DX-DR+1.0D0)
49695      DTERM2=(DX-DR)*DLOG(1.0D0-DP) + DX*DLOG(DP)
49696      DTERM3=DLOG(DR) - DLOG(2.0D0*DX - DR)
49697      DPDF=DEXP(DTERM1 + DTERM2 + DTERM3)
49698C
49699      PDF=REAL(DPDF)
49700C
49701 9999 CONTINUE
49702      RETURN
49703      END
49704      SUBROUTINE LOSPPF(P,PPAR,IR,PPF)
49705C
49706C     PURPOSE--THIS SUBROUTINE COMPUTES THE PERCENT POINT
49707C              FUNCTION VALUE AT THE SINGLE PRECISION VALUE P
49708C              FOR THE LOST GAMES DISTRIBUTION
49709C              WITH SINGLE PRECISION SHAPE PARAMETERS PPAR AND
49710C              IR.  THIS DISTRIBUTION IS DEFINED FOR ALL
49711C              NON-NEGATIVE INTEGER X >= IR.
49712C              THIS DISTRIBUTION HAS THE PROBABILITY MASS FUNCTION
49713C              p(X;P,IR) = (2*X-IR  X)*(1-P)**(X-IR)*(P)**X
49714C                          *(IR/(2*X-IR))   X = IR, IR+ 1, ...
49715C                                  (X*(X-K)!)
49716C              THIS DISTRIBUTION IS USED TO MODEL THE "GAMBLER'S
49717C              RUIN" PROBLEM.  IT CAN ALSO BE USED TO MODEL A
49718C              QUEUE WHERE THE QUEUE FOLLOWS A HOMOGENEOUS POISSON
49719C              PROCESS WITH PARAMETER LAMBDA, THE SERVICE TIME IS
49720C              EXPONENTIAL WITH PARAMETER MU < LAMBDA, AND THERE
49721C              ARE R INITIAL CUSTOMERS.  THE LOST GAMES DISTRIBUTION
49722C              IS THEN THE DISTRIBUTION OF THE NUMBER OF CUSTOMERS
49723C              SERVED UNTIL THE QUEUE FIRST VANISHES WITH
49724C              P = LAMBDA/(LAMBDA+MU).
49725C
49726C              NOTE THAT WE ARE USING DEVROYE'S FORMULATION OF
49727C              THE PDF.  HOWEVER, WE USE P > 0.5 (I.E., THE
49728C              PROBABILITY THAT THE GAMBLER LOSES ON A GIVEN
49729C              HAND) WHEREAS DEVROYE USES P < 0.5 = PROBABILITY
49730C              GAMBLER WINS ON A GIVEN HAND.
49731C
49732C     INPUT  ARGUMENTS--P      = THE SINGLE PRECISION VALUE
49733C                                AT WHICH THE PERCENT POINT
49734C                                FUNCTION IS TO BE EVALUATED.
49735C                                0 <= P <= 1.
49736C                     --PPAR   = THE SINGLE PRECISION VALUE
49737C                                OF THE FIRST SHAPE PARAMETER.
49738C                     --IR     = THE SINGLE PRECISION VALUE
49739C                                OF THE SECOND SHAPE PARAMETER.
49740C     OUTPUT ARGUMENTS--PPF    = THE SINGLE PRECISION PERCENT POINT
49741C                                FUNCTION VALUE
49742C     OUTPUT--THE SINGLE PRECISION PERCENT POINT
49743C             FUNCTION VALUE PPF FOR THE LOST GAMES DISTRIBUTION
49744C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
49745C     RESTRICTIONS--0 <= P <= 1
49746C                 --0.5 < P < 1,  AND IR >= 0
49747C     OTHER DATAPAC   SUBROUTINES NEEDED--DLNGAM.
49748C     FORTRAN LIBRARY SUBROUTINES NEEDED--DEXP, DLOG
49749C     MODE OF INTERNAL OPERATIONS--DOUBLE PRECISION.
49750C     LANGUAGE--ANSI FORTRAN (1977)
49751C     REFERENCES--JOHNSON, KOTZ, AND KEMP (1992).  "UNIVARIATE
49752C                 DISCRETE DISTRIBUTIONS", SECOND EDITION,
49753C                 WILEY, PP. 445-447.
49754C               --LUC DEVROYE (1986), "NON-UNIFORM RANDOM VARIATE
49755C                 GENERATION", SPRINGER-VERLANG, PP. 758-759.
49756C               --KEMP AND KEMP (1968), "ON A DISTRIBUTION ASSOCIATED
49757C                 WITH CERTAIN STOCHASTIC PROCESSES", JOURNAL OF
49758C                 THE ROYAL STATISTICAL SOCIETY, SERIES B, 30,
49759C                 PP. 401-410.
49760C               --HAIGHT (1961), "A DISTRIBUTION ANALOGOUS TO THE
49761C                 BOREL-TANNER", BIOMETRIKA, 48, PP. 167-173.
49762C     WRITTEN BY--JAMES J. FILLIBEN
49763C                 STATISTICAL ENGINEERING DIVISION
49764C                 INFORMATION TECHNOLOGY LABORATORY
49765C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
49766C                 GAITHERSBURG, MD 20899-8980
49767C                 PHONE--301-975-2855
49768C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
49769C           OF THE NATIONAL BUREAU OF STANDARDS.
49770C     LANGUAGE--ANSI FORTRAN (1977)
49771C     VERSION NUMBER--2006/6
49772C     ORIGINAL VERSION--JUNE      2006.
49773C
49774C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
49775C
49776C---------------------------------------------------------------------
49777C
49778      DOUBLE PRECISION DX
49779      DOUBLE PRECISION DP
49780      DOUBLE PRECISION DPPAR
49781      DOUBLE PRECISION DR
49782      DOUBLE PRECISION DPDF
49783      DOUBLE PRECISION DPDFSV
49784      DOUBLE PRECISION DCDF
49785CCCCC DOUBLE PRECISION DTERM1
49786CCCCC DOUBLE PRECISION DTERM2
49787CCCCC DOUBLE PRECISION DTERM3
49788CCCCC DOUBLE PRECISION DLNGAM
49789      DOUBLE PRECISION DC1
49790      DOUBLE PRECISION DC2
49791      DOUBLE PRECISION DC3
49792      DOUBLE PRECISION DEPS
49793C
49794C-----COMMON----------------------------------------------------------
49795C
49796      INCLUDE 'DPCOMC.INC'
49797      INCLUDE 'DPCOP2.INC'
49798C
49799C-----START POINT-----------------------------------------------------
49800C
49801      PPF=0.0
49802C
49803C     CHECK THE INPUT ARGUMENTS FOR ERRORS
49804C
49805      IF(PPAR.LE.0.5 .OR. PPAR.GE.1.0)THEN
49806        WRITE(ICOUT,11)
49807        CALL DPWRST('XXX','BUG ')
49808        WRITE(ICOUT,46)P
49809        CALL DPWRST('XXX','BUG ')
49810        PPF=0.0
49811        GOTO9999
49812      ENDIF
49813   11 FORMAT('***** ERROR--THE SECOND ARGUMENT TO LOSPPF ',
49814     1' IS OUTSIDE THE ALLOWABLE (0.5,1) INTERVAL')
49815C
49816      IF(IR.LT.0)THEN
49817        WRITE(ICOUT,12)
49818        CALL DPWRST('XXX','BUG ')
49819        WRITE(ICOUT,47)IR
49820        CALL DPWRST('XXX','BUG ')
49821        PPF=0.0
49822        GOTO9999
49823      ENDIF
49824   12 FORMAT('***** ERROR--THE THIRD ARGUMENT TO LOSPPF IS ',
49825     1' NEGATIVE')
49826C
49827      IF(P.LT.0.0 .OR. P.GE.1.0)THEN
49828        WRITE(ICOUT,13)
49829        CALL DPWRST('XXX','BUG ')
49830        WRITE(ICOUT,46)P
49831        CALL DPWRST('XXX','BUG ')
49832        PPF=0.0
49833        GOTO9999
49834      ENDIF
49835   13 FORMAT('***** ERROR--THE FIRST ARGUMENT TO LOSPPF ',
49836     1' IS OUTSIDE THE ALLOWABLE (0,1) INTERVAL')
49837C
49838   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',G15.7)
49839   47 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',I8)
49840C
49841C     USE THE RECURRENCE RELATION (FROM KEMP AND KEMP):
49842C
49843C     P(X;P,R) = C*P(X-1;P,R)
49844C
49845C     WHERE
49846C
49847C        C = (2*X-R-1)*(2*X-R-2)*P*(1-P)/[X*(X-R)]
49848C
49849      DEPS=1.0D-7
49850      DPPAR=DBLE(PPAR)
49851      DP=DBLE(P)
49852      DR=DBLE(IR)
49853      I=IR
49854      DPDFSV=DR*DLOG(DPPAR)
49855      DCDF=DEXP(DPDFSV)
49856      IF(DCDF.GE.DP-DEPS)THEN
49857        PPF=REAL(IR)
49858        GOTO9999
49859      ENDIF
49860C
49861      DC1=DLOG(DPPAR) + DLOG(1.0D0 - DPPAR)
49862  100 CONTINUE
49863        I=I+1
49864        IF(DBLE(I).GE.DBLE(I1MACH(9)))THEN
49865          WRITE(ICOUT,55)
49866   55     FORMAT('***** ERROR--THE COMPUTED PERCENT POINT VALUE ',
49867     1           'EXCEEDS THE LARGEST MACHINE INTEGER.')
49868          CALL DPWRST('XXX','BUG ')
49869          PPF=REAL(I)
49870          GOTO9999
49871        ENDIF
49872        DX=DBLE(I)
49873CCCCC   DTERM1=DLNGAM(2.0D0*DX-DR+1) - DLNGAM(DX+1.0D0) -
49874CCCCC1         DLNGAM(DX-DR+1.0D0)
49875CCCCC   DTERM2=(DX-DR)*DLOG(1.0D0-DPPAR) + DX*DLOG(DPPAR)
49876CCCCC   DTERM3=DLOG(DR) - DLOG(2.0D0*DX - DR)
49877CCCCC   DPDF=DEXP(DTERM1 + DTERM2 + DTERM3)
49878CCCCC   DCDF=DCDF+DPDF
49879        DC2=DLOG(2.0D0*DX-DR-1.0D0) + DLOG(2.0D0*DX-DR-2.0D0)
49880        DC3=DLOG(DX) + DLOG(DX-DR)
49881        DPDF=DC2 - DC3 + DC1 + DPDFSV
49882        DCDF=DCDF + DEXP(DPDF)
49883        DPDFSV=DPDF
49884        IF(DCDF.GE.DP-DEPS)THEN
49885          PPF=REAL(I)
49886          GOTO9999
49887        ENDIF
49888      GOTO100
49889C
49890 9999 CONTINUE
49891      RETURN
49892      END
49893      SUBROUTINE LOSRAN(N,P,IR,ISEED,X)
49894C
49895C     PURPOSE--THIS SUBROUTINE GENERATES A RANDOM SAMPLE OF SIZE N
49896C              FROM THE LOST GAMES DISTRIBUTION
49897C              WITH SHAPE PARAMETERS P AND IR.
49898C              IR.  THIS DISTRIBUTION IS DEFINED FOR ALL
49899C              NON-NEGATIVE INTEGER X >= IR.
49900C              THIS DISTRIBUTION HAS THE PROBABILITY FUNCTION
49901C              p(X;P,IR) = (2*X-IR  X)*(1-P)**(X-IR)*(P)**X
49902C                          *(IR/(2*X-IR))   X = IR, IR+ 1, ...
49903C                                  (X*(X-K)!)
49904C              THIS DISTRIBUTION IS USED TO MODEL THE "GAMBLER'S
49905C              RUIN" PROBLEM.  IT CAN ALSO BE USED TO MODEL A
49906C              QUEUE WHERE THE QUEUE FOLLOWS A HOMOGENEOUS POISSON
49907C              PROCESS WITH PARAMETER LAMBDA, THE SERVICE TIME IS
49908C              EXPONENTIAL WITH PARAMETER MU < LAMBDA, AND THERE
49909C              ARE R INITIAL CUSTOMERS.  THE LOST GAMES DISTRIBUTION
49910C              IS THEN THE DISTRIBUTION OF THE NUMBER OF CUSTOMERS
49911C              SERVED UNTIL THE QUEUE FIRST VANISHES WITH
49912C              P = LAMBDA/(LAMBDA+MU).
49913C
49914C              NOTE THAT WE ARE USING DEVROYE'S FORMULATION OF
49915C              THE PDF.  HOWEVER, WE USE P > 0.5 (I.E., THE
49916C              PROBABILITY THAT THE GAMBLER LOSES ON A GIVEN
49917C              HAND) WHEREAS DEVROYE USES P < 0.5 = PROBABILITY
49918C              GAMBLER WINS ON A GIVEN HAND.
49919C
49920C     INPUT  ARGUMENTS--N      = THE DESIRED INTEGER NUMBER
49921C                                OF RANDOM NUMBERS TO BE
49922C                                GENERATED.
49923C                     --P      = THE SINGLE PRECISION VALUE
49924C                                OF THE FIRST SHAPE PARAMETER.
49925C                     --IR     = THE SINGLE PRECISION VALUE
49926C                                OF THE SECOND SHAPE PARAMETER.
49927C     OUTPUT ARGUMENTS--X      = A SINGLE PRECISION VECTOR
49928C                                (OF DIMENSION AT LEAST N)
49929C                                INTO WHICH THE GENERATED
49930C                                RANDOM SAMPLE WILL BE PLACED.
49931C     OUTPUT--A RANDOM SAMPLE OF SIZE N FROM THE LOST GAMES
49932C             DISTRIBUTION WITH SHAPE PARAMETERS P AND IR.
49933C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
49934C     RESTRICTIONS--THERE IS NO RESTRICTION ON THE MAXIMUM VALUE
49935C                   OF N FOR THIS SUBROUTINE.
49936C                 --0 < P < 1, IR A NON-NEGATIVE INTEGER
49937C     OTHER DATAPAC   SUBROUTINES NEEDED--UNIRAN, LOSPPF
49938C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE.
49939C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
49940C     LANGUAGE--ANSI FORTRAN (1977)
49941C     REFERENCES--JOHNSON, KOTZ, AND KEMP (1992).  "UNIVARIATE
49942C                 DISCRETE DISTRIBUTIONS", SECOND EDITION,
49943C                 WILEY, PP. 445-447.
49944C               --LUC DEVROYE (1986), "NON-UNIFORM RANDOM VARIATE
49945C                 GENERATION", SPRINGER-VERLANG, PP. 758-759.
49946C               --KEMP AND KEMP (1968), "ON A DISTRIBUTION ASSOCIATED
49947C                 WITH CERTAIN STOCHASTIC PROCESSES", JOURNAL OF
49948C                 THE ROYAL STATISTICAL SOCIETY, SERIES B, 30,
49949C                 PP. 401-410.
49950C               --HAIGHT (1961), "A DISTRIBUTION ANALOGOUS TO THE
49951C                 BOREL-TANNER", BIOMETRIKA, 48, PP. 167-173.
49952C     WRITTEN BY--JAMES J. FILLIBEN
49953C                 STATISTICAL ENGINEERING DIVISION
49954C                 INFORMATION TECHNOLOGY LABORATORY
49955C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
49956C                 GAITHERSBURG, MD 20899-8980
49957C                 PHONE--301-975-2899
49958C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
49959C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
49960C     LANGUAGE--ANSI FORTRAN (1977)
49961C     VERSION NUMBER--2006/6
49962C     ORIGINAL VERSION--JUNE      2006.
49963C
49964C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
49965C
49966C---------------------------------------------------------------------
49967C
49968      INTEGER N
49969      INTEGER IR
49970      DIMENSION X(*)
49971C
49972C-----COMMON----------------------------------------------------------
49973C
49974      INCLUDE 'DPCOP2.INC'
49975C
49976C-----DATA STATEMENTS-------------------------------------------------
49977C
49978C-----START POINT-----------------------------------------------------
49979C
49980C     CHECK THE INPUT ARGUMENTS FOR ERRORS
49981C
49982      IF(N.LT.1)THEN
49983        WRITE(ICOUT, 5)
49984        CALL DPWRST('XXX','BUG ')
49985        WRITE(ICOUT,47)N
49986        CALL DPWRST('XXX','BUG ')
49987        GOTO9999
49988      ENDIF
49989    5 FORMAT('***** ERROR--THE REQUESTED NUMBER OF ',
49990     1'LOST GAMES RANDOM NUMBERS IS NON-POSITIVE')
49991C
49992      IF(P.LE.0.5 .OR. P.GE.1.0)THEN
49993        WRITE(ICOUT,11)
49994        CALL DPWRST('XXX','BUG ')
49995        WRITE(ICOUT,12)
49996        CALL DPWRST('XXX','BUG ')
49997        WRITE(ICOUT,46)P
49998        CALL DPWRST('XXX','BUG ')
49999        PDF=0.0
50000        GOTO9999
50001      ENDIF
50002   11 FORMAT('***** ERROR--THE P PARAMETER FOR THE LOST GAMES')
50003   12 FORMAT('      RANDOM NUMBERS IS OUTSIDE THE ALLOWABLE (0.5,1) ',
50004     1       'INTERVAL')
50005C
50006      IF(IR.LT.0)THEN
50007        WRITE(ICOUT,21)
50008        CALL DPWRST('XXX','BUG ')
50009        WRITE(ICOUT,47)IR
50010        CALL DPWRST('XXX','BUG ')
50011        PDF=0.0
50012        GOTO9999
50013      ENDIF
50014   21 FORMAT('***** ERROR--THE R PARAMETER FOR THE LOST GAMES ',
50015     1       'RANDOM NUMBERS IS NON-POSITIVE')
50016C
50017   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',G15.7)
50018   47 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',I8)
50019C
50020      CALL UNIRAN(N,ISEED,X)
50021      DO100I=1,N
50022        XTEMP=X(I)
50023        CALL LOSPPF(XTEMP,P,IR,PPF)
50024        X(I)=PPF
50025  100 CONTINUE
50026C
50027 9999 CONTINUE
50028C
50029      RETURN
50030      END
50031      SUBROUTINE LOLIP (NXG,XG,NYG,YG,NPI,XI,YI,NP,MP,MPM,NMAX,D)
50032C
50033C     THIS SUBROUTINE DETERMINES THE LOCAL INTERPOLATION POINTS FOR THE
50034C     GRID VERSION OF FRANKE'S METHOD OF SURFACE INTERPOLATION.
50035C     MINPTS POINTS ARE REQUIRED FOR EACH REGION.
50036C     IF FEWER THAN MINPTS POINTS ARE FOUND IN THE REGION, THE NEXT
50037C     CLOSEST POINTS (IN THE SUP NORM AFTER THE CURRENT RECTANGLE IS
50038C     TRANSFORMED ONTO (0,1)) ARE USED.  MINPTS IS SET TO 3, WHICH IS
50039C     THE RECOMMENDED VALUE, ALTHOUGH IT MAY BE ALTERED.
50040C
50041C     THE ARGUMENTS ARE AS FOLLOWS.
50042C
50043C        NXG  - INPUT.  NUMBER OF VERTICAL GRID LINES.
50044C        XG   - INPUT.  THE COORDINATES OF THE VERTICAL GRID LINES, IN
50045C                       INCREASING ORDER
50046C        NYG  - INPUT.  NUMBER OF HORIZONTAL GRID LINES.
50047C        YG   - INPUT.  THE COORDINATES OF THE HORIZONTAL GRID LINES,
50048C                       IN INCREASING ORDER.
50049C        NPI  - INPUT.  THE NUMBER OF DATA POINTS.
50050C        XI   - \
50051C        YI   - INPUT.  THE DATA POINTS (XI,YI), I=1,...,NPI.
50052C        FI   - /
50053C        NP   - OUTPUT.  AN ARRAY WHICH GIVES THE INITIAL SUBSCRIPT IN
50054C                       THE ARRAY MP AT WHICH THE SUBSCRIPTS FOR THE
50055C                       LOCAL INTERPOLATION POINTS ARE STORED.
50056C        MP   - OUTPUT.  AN ARRAY WHICH GIVES THE SUBSCRIPTS FOR THE
50057C                       LOCAL INTERPOLATION POINTS.
50058C        MPM  - INPUT.  DIMENSION OF THE ARRAY MP IN THE CALLING PROGRAM
50059C        NMAX - OUTPUT.  THE MAXIMUM NUMBER OF INTERPOLATION POINTS
50060C                        OVER ALL THE REGIONS.
50061C        D    - A WORK ARRAY OF DIMENSION AT LEAST NPI.
50062C
50063      DIMENSION XG(*), YG(*), XI(*), YI(*), NP(*), MP(*), D(*)
50064      DATA MINPTS/3/
50065      IJ = 1
50066      NP(1) = 1
50067      NMAX = 0
50068      L = 0
50069C
50070      DO 200 J=1,NYG
50071        YGA = (YG(J+2)+YG(J))/2.
50072        DYG = YG(J+2)-YG(J)
50073C
50074        DO 180 I=1,NXG
50075          XGA = (XG(I+2)+XG(I))/2.
50076          DXG = XG(I+2)-XG(I)
50077          IJ = IJ+1
50078C
50079C         DETERMINE THE POINTS IN THE (I,J)TH RECTANGLE.
50080C
50081          DO 120 NK=1,NPI
50082            D(NK) = AMAX1(ABS(XI(NK) - XGA)/DXG,ABS(YI(NK) - YGA)/DYG)
50083            IF(D(NK).GT..6125)GO TO 120
50084            D(NK) = 1.E10
50085            L = L + 1
50086            LL = MIN0(L,MPM)
50087            MP(LL) = NK
50088  120     CONTINUE
50089C
50090          NP(IJ) = L+1
50091          IF (NP(IJ)-NP(IJ-1).GE.MINPTS) GO TO 180
50092C
50093C         ADD THE CLOSEST POINTS IF THERE ARE LESS THAN MINPTS IN THE
50094C         RECTANGLE.
50095C
50096          LM = MINPTS-(NP(IJ)-NP(IJ-1))
50097C
50098          DO 160 II=1,LM
50099            L = L+1
50100            LL = MIN0(L,MPM)
50101            MP(LL) = 1
50102            DM = D(1)
50103C
50104            DO 140 NK=2,NPI
50105              IF (D(NK).GE.DM) GO TO 140
50106              DM = D(NK)
50107              MP(LL) = NK
50108  140       CONTINUE
50109C
50110            NK = MP(LL)
50111            D(NK) = 1.E10
50112  160     CONTINUE
50113C
50114          NP(IJ) = L+1
50115          NMAX = MAX0(NMAX,NP(IJ)-NP(IJ-1))
50116C
50117  180   CONTINUE
50118  200 CONTINUE
50119C
50120      RETURN
50121      END
50122      SUBROUTINE LOTPS (MODE,NPPR,NPI,XI,YI,FI,NXO,XO,NYO,YO,IWK,NIWK,
50123     1                  NIWKU,WK,NWK,NWKU,FO,KER)
50124C***START PROLOGUE LOTPS
50125C
50126C     THIS VERSION IS DATED 03/04/82.
50127C
50128C                RICHARD FRANKE
50129C                DEPARTMENT OF MATHEMATICS
50130C                NAVAL POSTGRADUATE SCHOOL
50131C                MONTEREY, CALIFORNIA  93940
50132C                     (408)646-2758 / 2206
50133C
50134C
50135C
50136C     REFERENCE
50137C        SMOOTH INTERPOLATION OF SCATTERED DATA BY LOCAL THIN
50138C        PLATE SPLINES, COMPUTERS AND MATHEMATICS WITH
50139C        APPLICATIONS 8(1982)???-???+8
50140C                    OR
50141C        NAVAL POSTGRADUATE SCHOOL TR#NPS-53-81-002, 1981
50142C        (AVAILABLE FROM NTIS, AD-A098 232/2)
50143C
50144C     ABSTRACT
50145C        SUBROUTINE LOTPS SERVES AS THE USER INTERFACE FOR A SET OF
50146C        SUBROUTINES WHICH SOLVE THE SCATTERED DATA INTERPOLATION
50147C        PROBLEM.  A SMOOTH FUNCTION PASSING THROUGH THE GIVEN POINTS
50148C        (XI(K),YI(K),FI(K)),K=1,...,NPI IS CONSTRUCTED.
50149C        THE RESULT RETURNED IS AN ARRAY OF VALUES, FO(I,J), OF THE INT-
50150C        ERPOLATION FUNCTION AT GRID POINTS, (XO(I),YO(J)),I=1,...,NXO,
50151C        J=1,...,NYO.
50152C        THE METHOD USED INVOLVES CONSTRUCTION OF LOCALLY DEFINED 'THIN
50153C        PLATE SPLINES', WHICH ARE THEN BLENDED TOGETHER SMOOTHLY
50154C        THROUGH THE USE OF A PARTITION OF UNITY DEFINED ON A
50155C        RECTANGULAR GRID ON THE PLANE.  THE FUNCTIONS IN THE PARTITION
50156C        OF UNITY ARE UNIVARIATE PIECEWISE HERMITE CUBIC POLYNOMIALS.
50157C
50158C     CAUTIONS
50159C        THE USER SHOULD BE AWARE THAT FOR SOME DATA THE INTERPOLATION
50160C        FUNCTION MAY BE ILL-BEHAVED.  SOME INVESTIGATION OF ITS
50161C        BEHAVIOR FOR THE TYPE OF DATA TO BE INPUT SHOULD BE UNDERTAKEN
50162C        BEFORE IMBEDDING ANY SCHEME FOR SCATTERED DATA INTERPOLATION
50163C        INTO ANOTHER PROGRAM.
50164C
50165C     DESCRIPTION OF ARGUMENTS
50166C
50167C        MODE - INPUT.  INDICATES THE STATUS OF THE CALCULATION.
50168C                 = 1,  SET UP THE PROBLEM.  COMPUTE THE COEFFICIENTS
50169C                       FOR THE LOCAL APPROXIMATIONS BY THIN PLATE
50170C                       SPLINES, AND RETURN THE GRID OF INTERPOLATED
50171C                       FUNCTION VALUES INDICATED BY NXO, XO, NYO, YO
50172C                       IN THE ARRAY FO.
50173C                 = 2,  THIS MODE VALUE IS A CONVENIENCE FOR USERS WHO
50174C                       WISH TO CALL THE ROUTINE TO EVALUATE THE
50175C                       SURFACE REPEATEDLY ON DIFFERENT GRIDS OF
50176C                       POINTS.  A CALL TO LOTPS WITH MODE = 1 HAS
50177C                       BEEN MADE PREVIOUSLY, NOW CALCULATE
50178C                       THE GRID OF INTERPOLATED POINTS INDICATED
50179C                       BY NXO, XO, NYO, YO IN IN THE ARRAY FO.  THE
50180C                       PROGRAM ASSUMES THAT THE ARRAYS XI, YI, IWK,
50181C                       AND WK ARE UNCHANGED FROM THE PREVIOUS CALL.
50182C        NPPR - INPUT.  DESIRED AVERAGE NUMBER OF POINTS PER REGION.
50183C                       THE SUGGESTED VALUE FOR THE NOVICE USER IS TEN,
50184C                       WHICH USUALLY GIVES GOOD RESULTS.  THIS PAR-
50185C                       AMETER HAS TO DO WITH THE LOCAL PROPERTY OF THE
50186C                       SURFACE.  THE INFLUENCE REGION OF A POINT HAS
50187C                       AREA WHICH IS ROUGHLY PROPORTIONAL TO NPPR.
50188C                       UNDER CERTAIN CONDITIONS, SUCH AS TO PRESERVE
50189C                       ROTATIONAL INVARIANCE, OR TO FORCE CERTAIN
50190C                       SETS OF POINTS TO BELONG TO THE SAME REGION,
50191C                       THE USER MAY SPECIFY HIS OWN GRID LINES.
50192C                       IF THE USER WISHES TO SPECIFY HIS OWN GRID LINES
50193C                       X TILDA AND Y TILDA, HE MAY DO SO BY SETTING
50194C                       NPPR = 0 AND SETTING NECESSARY VALUES IN THE
50195C                       ARRAYS IWK AND WK, AS NOTED BELOW.  DATA WHICH
50196C                       HAS A POOR DISTRIBUTION OVER THE REGION OF INT-
50197C                       EREST SHOULD PROBABLY HAVE THE GRID SPECIFIED.
50198C                       THIS IS ALSO ADVISABLE IF THE X-Y POINTS OCCUR
50199C                       ALONG LINES.  SEE THE REFERENCE FOR ADDITIONAL
50200C                       DETAILS.
50201C        NPI  - INPUT.  NUMBER OF INPUT DATA POINTS.
50202C        XI   - \
50203C        YI   - INPUT ARRAYS.  THE DATA POINTS (XI,YI,FI), I=1,...,NPI.
50204C        FI   - /
50205C        NXO  - INPUT.  THE NUMBER OF XO VALUES AT WHICH THE INTERP-
50206C                       OLATION FUNCTION IS TO BE CALCULATED.
50207C        XO   - INPUT ARRAY.  THE VALUES OF X AT WHICH THE INTERPOLATION
50208C                       FUNCTION IS TO BE CALCULATED.  THESE SHOULD
50209C                       BE IN INCREASING ORDER FOR MOST EFFICIENT
50210C                       EVALUATION, HOWEVER, THEY ONLY NEED TO BE
50211C                       MONOTONIC.
50212C        NYO  - INPUT.  THE NUMBER OF YO VALUES AT WHICH THE INTERP-
50213C                       OLATION FUNCTION IS TO BE CALCULATED.
50214C        YO   - INPUT ARRAY.  THE VALUES OF Y AT WHICH THE INTERPOLATION
50215C                       FUNCTION IS TO BE CALCULATED.  THESE SHOULD
50216C                       BE IN INCREASING ORDER FOR MOST EFFICIENT
50217C                       EVALUATION, HOWEVER, THEY ONLY NEED TO BE
50218C                       MONOTONIC.
50219C        IWK  - INPUT/OUTPUT ARRAY.  THIS ARRAY IS OUTPUT WHEN MODE = 1
50220C                       AND IS INPUT WHEN MODE = 2.  THIS MUST BE
50221C                       AN ARRAY DIMENSIONED APPROXIMATELY 7*NPI.  THE
50222C                       EXACT DIMENSION IS NOT KNOWN A PRIORI, BUT
50223C                       WILL BE RETURNED AS THE VALUE OF NIWKU.
50224C                       WHEN NPPR IS INPUT AS ZERO THE USER MUST
50225C                       SPECIFY THE NUMBER OF VERTICAL GRID LINES (THE
50226C                       NUMBER OF X TILDA VALUES) IN IWK(1) AND THE
50227C                       NUMBER OF HORIZONTAL GRID LINES (THE NUMBER OF
50228C                       Y TILDA VALUES) IN IWK(2).
50229C        NIWK - INPUT.  ON ENTRY WITH MODE = 1 THIS MUST BE SET TO THE
50230C                       DIMENSION OF THE ARRAY IWK IN THE CALLING
50231C                       PROGRAM.
50232C        NIWKU- OUTPUT.  THE ACTUAL NUMBER OF LOCATIONS NEEDED IN THE
50233C                       ARRAY IWK.
50234C        WK   - INPUT/OUTPUT ARRAY.  THIS ARRAY IS OUTPUT WHEN MODE = 1
50235C                       AND IS INPUT WHEN MODE = 2.  THIS MUST BE AN
50236C                       ARRAY DIMENSIONED APPROXIMATELY 7*NPI PLUS
50237C                       THE NUMBER NEEDED TO SET UP AND SOLVE THE SYSTEM
50238C                       OF EQUATIONS FOR THE LOCAL APPROXIMATIONS.  FOR
50239C                       NPPR NONZERO THIS WILL BE ABOUT 2.5*NPPR*NPPR
50240C                       PLUS 11*NPPR.  THE EXACT DIMENSION IS NOT KNOWN
50241C                       A PRIORI, BUT WILL BE RETURNED AS THE VALUE OF
50242C                       NWKU.
50243C                       WHEN NPPR IS INPUT AS ZERO THE USER MUST SPECIFY
50244C                       THE VALUES OF X TILDA AND Y TILDA AS FOLLOWS.
50245C                       WK(2), ... , WK(NXG+1) ARE THE NXG (= IWK(1))
50246C                       X GRID VALUES, X(I) TILDA, IN INCREASING ORDER.
50247C                       TYPICALLY WK(1) = MIN X(I), ALTHOUGH IT NEED
50248C                       NOT BE.  WK(1) MUST BE LESS THAN OR EQUAL TO
50249C                       WK(2), AND SHOULD BE LESS THAN OR EQUAL TO
50250C                       MIN X(I).  WK(NXG+2) IS USUALLY MAX X(I), AL-
50251C                       THOUGH IT NEED NOT BE.  WK(NXG+2) MUST BE
50252C                       GREATER THAN WK(NXG+1), AND SHOULD BE GREATER
50253C                       THAN OR EQUAL TO MAX X(I).
50254C                       THE VALUES OF WK(NXG+3), ... , WK(NXG+NYG+4)
50255C                       ARE THE Y GRID VALUES, Y(I) TILDA, AND MUST
50256C                       SATISFY DUAL CONDITIONS.
50257C        NWK  - INPUT.  ON ENTRY WITH MODE = 1 THIS MUST BE SET TO THE
50258C                       DIMENSION OF THE ARRAY WK IN THE CALLING
50259C                       PROGRAM.
50260C        NWKU - OUTPUT.  THE ACTUAL NUMBER OF LOCATIONS NEEDED IN THE
50261C                       ARRAY WK.
50262C        FO   - OUTPUT ARRAY.  VALUES OF THE INTERPOLATION FUNCTION AT
50263C                       THE GRID OF POINTS INDICATED BY NXO, XO, NYO, YO
50264C                       FO IS ASSUMED TO BE DIMENSIONED (NXO,NYO) IN THE
50265C                       CALLING PROGRAM.
50266C        KER  - OUTPUT.  RETURN INDICATOR.
50267C                 = 0,  NORMAL RETURN.
50268C                 = NONZERO, ERROR CONDITION ENCOUNTERED.
50269C
50270C     ERROR MESSAGES
50271C        NO. 1   FATAL         SINGULAR MATRIX IN THE CALCULATION OF
50272C                              LOCAL THIN PLATE SPLINES.  TRY LARGER
50273C                              VALUE FOR NPPR AND/OR MINPTS.  (MINPTS
50274C                              IS IN SUBROUTINE LOLIP.)
50275C        NO. 2   RECOVERABLE   FIRST CALL TO LOTPS MUST BE WITH MODE=1
50276C        NO. 3   FATAL         PREVIOUS ERROR RETURN FROM SUBROUTINE
50277C                              LOCAL NOT CORRECTED.
50278C        NO. 4   FATAL         ARRAY IWK AND/OR WK NOT DIMENSIONED LARGE
50279C                              ENOUGH.  REDIMENSION AS GIVEN BY NIWKU
50280C                              AND NWKU.
50281C        NO. 5   RECOVERABLE   MODE IS OUT OF RANGE.
50282C
50283C     SUBROUTINES USED
50284C
50285C        THIS PACKAGE:  LOGRD, LOLIP, LOCAL, LOEVL.
50286C        LINPACK: SGECO, SGESL
50287C        SLATEC:  SSORT, XERROR
50288C
50289C***END PROLOGUE
50290      DIMENSION XI(NPI), YI(NPI), FI(NPI), IWK(NIWK), WK(NWK),
50291     1 XO(NXO), YO(NYO), FO(NXO,NYO)
50292      DATA KERO/-1/
50293C
50294      IABWK=0
50295      IALWK=0
50296      MPWK=0
50297      NYGWK=0
50298C
50299      IF (MODE.LT.1.OR.MODE.GT.2) GO TO 220
50300      KER = 0
50301C
50302C     ON INITIAL ENTRY MODE = 1, THE GRID LINES ARE SET UP,
50303C     LOCAL INTERPOLATION POINTS ARE DETERMINED AND LOCAL APPROXIMATIONS
50304C     ARE COMPUTED.
50305C
50306      IF (MODE.EQ.2) GO TO 140
50307      NXGWK = 1
50308      NPWK = 3
50309      IF (NPPR.LE.0) GO TO 100
50310      NXG = INT(SQRT(4.*REAL(NPI)/REAL(NPPR))-.5)
50311      NXG = MAX0(NXG,1)
50312      NYG = NXG
50313      IWK(1) = NXG
50314      IWK(2) = NYG
50315      GO TO 120
50316  100 NXG = IWK(1)
50317      NYG = IWK(2)
50318  120 IALWK = NXG+NYG+5
50319      IABWK = IALWK + 3*NXG*NYG
50320      NYGWK = NXG+3
50321      MPWK = NXG*NYG+4
50322C
50323      IF(NPPR.LE.0)GO TO 130
50324      CALL LOGRD(XI,NPI,NXG,WK(NXGWK),WK(IALWK))
50325      CALL LOGRD(YI,NPI,NYG,WK(NYGWK),WK(IALWK))
50326  130 CONTINUE
50327C
50328C     DETERMINE THE LOCAL INTERPOLATION POINTS FOR THE REGIONS.
50329      MWK = NWK - MPWK + 1
50330      CALL LOLIP (NXG,WK(NXGWK),NYG,WK(NYGWK),NPI,XI,YI,IWK(NPWK),
50331     1IWK(MPWK),MWK,NMAX,WK(IALWK))
50332      NCFM = IABWK +IWK(MPWK - 1)-1
50333      NWKU = NCFM + (NMAX+3)*(NMAX+5) - 1
50334      NIPVT = NXG*NYG+3+IWK(MPWK-1)
50335      NIWKU = NIPVT + NMAX + 2
50336      IF (NIWKU.GT.NIWK) GO TO 200
50337      IF (NWKU.GT.NWK) GO TO 200
50338C
50339C     COMPUTE THE LOCAL APPROXIMATIONS.
50340      CALL LOCAL (XI,YI,FI,NXG,WK(NXGWK),NYG,WK(NYGWK),IWK(NPWK),
50341     1 IWK(MPWK),WK(IALWK),WK(IABWK),WK(NCFM),IWK(NIPVT),IER)
50342      KERO = IER
50343      IF (IER.NE.0) GO TO 160
50344  140 IF (KERO.NE.0) GO TO 180
50345C
50346C     COMPUTE THE FUNCTION VALUES ON THE DESIRED GRID OF POINTS.
50347C
50348      CALL LOEVL (XI,YI,IWK(1),WK(NXGWK),IWK(2),WK(NYGWK),IWK(NPWK),
50349     1 IWK(MPWK),WK(IALWK),WK(IABWK),NXO,XO,NYO,YO,FO)
50350      RETURN
50351C
50352C     ERROR RETURNS
50353C
50354  160 KER = IER
50355CCCCC IF(IER.NE.0)CALL XERROR('LOTPS-SINGULAR MATRIX IN LOCAL; INCREAS
50356CCCCC1E NPPR OR SPECIFY OWN GRID LINES',71,1,2)
50357      RETURN
50358  180 KER = 3
50359      IF (KERO.LT.0) GO TO 190
50360CCCCC  CALL XERROR('LOTPS-PREVIOUS ERROR FROM SUBROUTINE LOCAL HAS NOT
50361CCCCC1BEEN CORRECTED.',65,3,2)
50362      RETURN
50363  190 KER = 2
50364CCCCC CALL XERROR('LOTPS-FIRST CALL TO LOTPS MUST BE WITH MODE = 1',
50365CCCCC1 47,2,1)
50366      RETURN
50367  200 KER = 4
50368CCCCC CALL XERROR('LOTPS-WORK ARRAYS IWK AND/OR WK NOT DIMENSIONED LAR
50369CCCCC1GE ENOUGH',60,4,2)
50370      RETURN
50371  220 KER = 5
50372CCCCC CALL XERROR('LOTPS-MODE IS OUT OF RANGE.  MUST BE 1 OR 2',43,5,
50373CCCCC1 1)
50374      RETURN
50375      END
50376      SUBROUTINE LOWESS(Y,X,N,ALOWFR,ALOWDG,
50377CCCCC MARCH 1994.  ADD ARGUMENT.
50378CCCCC SUBROUTINE LOWESS(Y,X,N,ALOWFR,
50379     1XTEMP1,XTEMP2,YS,XS,WH,WV,XTEMP7,MAXNXT,
50380     1PRED2,RES2,ISUBRO,IBUGA3,IERROR)
50381C
50382C     PURPOSE--THIS ROUTINE PERFORMS A LOWESS FIT/SMOOTH
50383C              OF THE DATA IN Y AND X
50384C     WRITTEN BY--JAMES J. FILLIBEN
50385C                 STATISTICAL ENGINEERING DIVISION
50386C                 INFORMATION TECHNOLOGY LABORATORY
50387C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
50388C                 GAITHERSBURG, MD 20899-8980
50389C                 PHONE--301-975-2855
50390C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
50391C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
50392C     LANGUAGE--ANSI FORTRAN (1966)
50393C               EXCEPTION--HOLLERITH STRINGS IN FORMAT STATEMENTS
50394C                          DENOTED BY QUOTES RATHER THAN NH.
50395C     VERSION NUMBER--88/2
50396C     ORIGINAL VERSION--FEBRUARY  1988.
50397C     UPDATED         --MAY       1989.  ERROR BRANCHES AFTER CALLS
50398C     UPDATED         --MARCH     1994.  SUPPORT QUADRATIC LOWESS FITS
50399C
50400C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
50401C
50402      CHARACTER*4 ISUBRO
50403      CHARACTER*4 IBUGA3
50404      CHARACTER*4 IERROR
50405C
50406      CHARACTER*4 ISUBN1
50407      CHARACTER*4 ISUBN2
50408      CHARACTER*4 ISTEPN
50409C
50410C---------------------------------------------------------------------
50411C
50412      DIMENSION Y(*)
50413      DIMENSION X(*)
50414      DIMENSION XTEMP1(*)
50415      DIMENSION XTEMP2(*)
50416      DIMENSION YS(*)
50417      DIMENSION XS(*)
50418      DIMENSION WH(*)
50419      DIMENSION WV(*)
50420      DIMENSION XTEMP7(*)
50421      DIMENSION PRED2(*)
50422      DIMENSION RES2(*)
50423C
50424C-----COMMON----------------------------------------------------------
50425C
50426      INCLUDE 'DPCOP2.INC'
50427C
50428C-----START POINT-----------------------------------------------------
50429C
50430      ISUBN1='LOWE'
50431      ISUBN2='SS  '
50432      IERROR='NO'
50433C
50434      IF(IBUGA3.EQ.'OFF'.AND.ISUBRO.NE.'WESS')GOTO90
50435      WRITE(ICOUT,999)
50436  999 FORMAT(1X)
50437      CALL DPWRST('XXX','BUG ')
50438      WRITE(ICOUT,51)
50439   51 FORMAT('**** AT THE BEGINNING OF LOWESS--')
50440      CALL DPWRST('XXX','BUG ')
50441      WRITE(ICOUT,52)ISUBRO,IBUGA3,IERROR
50442   52 FORMAT('ISUBRO,IBUGA3,IERROR = ',A4,2X,A4,2X,A4)
50443      CALL DPWRST('XXX','BUG ')
50444      WRITE(ICOUT,61)N,ALOWFR
50445   61 FORMAT('N,ALOWFR = ',I8,E15.7)
50446      CALL DPWRST('XXX','BUG ')
50447      IF(N.LE.0)GOTO64
50448      DO62I=1,N
50449      WRITE(ICOUT,63)I,Y(I),X(I)
50450   63 FORMAT('I,Y(I),X(I) = ',I8,2E15.7)
50451      CALL DPWRST('XXX','BUG ')
50452   62 CONTINUE
50453   64 CONTINUE
50454   90 CONTINUE
50455C
50456C               ***********************************
50457C               **  STEP 11--                    **
50458C               **  SORT THE DATA                **
50459C               **  ACCORDING TO THE HORIZONTAL  **
50460C               **  AXIS VARIABLE.               **
50461C               **  RECORD THE ORDER OF THE      **
50462C               **  INCOMING DATA.               **
50463C               ***********************************
50464C
50465      ISTEPN='11'
50466      IF(IBUGA3.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
50467C
50468      CALL SORTC(X,Y,N,XS,YS)
50469C
50470      DO1100I=1,N
50471      XTEMP1(I)=I
50472 1100 CONTINUE
50473      CALL SORTC(X,XTEMP1,N,XS,XTEMP7)
50474C
50475      AN=N
50476C
50477C               ***********************************************
50478C               **  STEP 12--                                **
50479C               **  COMPUTE THE TOTAL                        **
50480C               **  NUMBER OF NEIGHBORS IN  A NEIGHBORHOOD   **
50481C               ***********************************************
50482C
50483      ISTEPN='12'
50484      IF(IBUGA3.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
50485C
50486      NN=INT(ALOWFR*AN+0.5)
50487      ANN=NN
50488C
50489C               ***********************************************
50490C               **  STEP 21--                                **
50491C               **  SET THE VERTICAL (ROBUSTNESS) WEIGHTS    **
50492C               **  EQUAL TO UNITY PRIOR TO COMPUTING        **
50493C               **  INITIAL PREDICTED VALUES                 **
50494C               ***********************************************
50495C
50496      ISTEPN='21'
50497      IF(IBUGA3.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
50498C
50499      DO2100I=1,N
50500      WV(I)=1.0
50501 2100 CONTINUE
50502C
50503C               ************************************************
50504C               **  STEP 22--                                 **
50505C               **  LOOP THROUGH EACH OF THE                  **
50506C               **  N HORIZONTAL DATA POINTS                  **
50507C               **  FROM SMALLEST TO LARGEST.                 **
50508C               **  FOR EACH DATA POINT--                     **
50509C               **     1) COMPUTE NEIGHBORHOOD LIMITS         **
50510C               **     2) COMPUTE HORIZONTAL WEIGHTS          **
50511C               **        FOR EACH NEIGHBORHOOD POINT         **
50512C               **     3) COMPUTE A INITIAL PREDICTED VALUE   **
50513C               **        FOR THAT POINT VIA A                **
50514C               **        WEIGHTED LINEAR FIT                 **
50515C               **        USING HORIZONTAL WEIGHTS ONLY.      **
50516C               ************************************************
50517C
50518      ISTEPN='22'
50519      IF(IBUGA3.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
50520C
50521      DO2200IT=1,N
50522C
50523      CALL NEIGH(IT,NN,XS,N,I1,I2,ISUBRO,IBUGA3,IERROR)
50524      IF(IERROR.EQ.'YES')GOTO9000
50525C
50526      DEL1=XS(IT)-XS(I1)
50527      DEL2=XS(I2)-XS(IT)
50528      XMAXHF=DEL1
50529      IF(DEL2.GT.DEL1)XMAXHF=DEL2
50530      CALL WEIGHH(IT,I1,I2,XS,N,XMAXHF,
50531     1WH,ISUBRO,IBUGA3,IERROR)
50532      IF(IERROR.EQ.'YES')GOTO9000
50533C
50534      I3=IT
50535      I4=IT
50536CCCCC MARCH 1994.  ADD CHECK FOR QUADRATIC DEGREE.
50537      IF(ALOWDG.GT.1.5)THEN
50538      CALL QUAFIT(IT,I1,I2,XS,YS,WH,WV,N,XMAXHF,I3,I4,
50539     1ALPHA,BETA1,BETA2,PRED2,RES2,ISUBRO,IBUGA3,IERROR)
50540      ELSE
50541      CALL LINEAR(IT,I1,I2,XS,YS,WH,WV,N,XMAXHF,I3,I4,
50542     1ALPHA,BETA,PRED2,RES2,ISUBRO,IBUGA3,IERROR)
50543      ENDIF
50544      IF(IERROR.EQ.'YES')GOTO9000
50545C
50546 2200 CONTINUE
50547C
50548C               *************************************************
50549C               **  STEP 31--                                  **
50550C               **  BASED ON THE INITIAL PREDICTED VALUES      **
50551C               **  AND THE CONSEQUENTIAL RESIDUALS,           **
50552C               **  COMPUTE VERTICAL (ROBUSTNESS) WEIGHTS      **
50553C               **  FOR ALL N DATA POINTS                      **
50554C               *************************************************
50555C
50556      ISTEPN='31'
50557      IF(IBUGA3.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
50558C
50559      CALL WEIGHV(RES2,N,XTEMP1,XTEMP2,MAXNXT,
50560     1WV,ISUBRO,IBUGA3,IERROR)
50561      IF(IERROR.EQ.'YES')GOTO9000
50562C
50563C               ************************************************
50564C               **  STEP 32--                                 **
50565C               **  AGAIN LOOP THROUGH EACH OF THE            **
50566C               **  N HORIZONTAL DATA POINTS                  **
50567C               **  FROM SMALLEST TO LARGEST.                 **
50568C               **  FOR EACH DATA POINT--                     **
50569C               **     1) COMPUTE NEIGHBORHOOD LIMITS         **
50570C               **     2) COMPUTE HORIZONTAL WEIGHTS          **
50571C               **        FOR EACH NEIGHBORHOOD POINT         **
50572C               **     3) COMPUTE A FINAL PREDICTED VALUE     **
50573C               **        FOR THAT POINT VIA A                **
50574C               **        WEIGHTED LINEAR FIT                 **
50575C               **        USING BOTH THE HORIZONTAL WEIGHTS   **
50576C               **        AND THE VERTICAL WEIGHTS            **
50577C               ************************************************
50578C
50579      ISTEPN='32'
50580      IF(IBUGA3.EQ.'ON')CALL TRACE2(ISTEPN,ISUBN1,ISUBN2)
50581C
50582      DO3200IT=1,N
50583C
50584      CALL NEIGH(IT,NN,XS,N,I1,I2,ISUBRO,IBUGA3,IERROR)
50585      IF(IERROR.EQ.'YES')GOTO9000
50586C
50587      DEL1=XS(IT)-XS(I1)
50588      DEL2=XS(I2)-XS(IT)
50589      XMAXHF=DEL1
50590      IF(DEL2.GT.DEL1)XMAXHF=DEL2
50591      CALL WEIGHH(IT,I1,I2,XS,N,XMAXHF,
50592     1WH,ISUBRO,IBUGA3,IERROR)
50593      IF(IERROR.EQ.'YES')GOTO9000
50594C
50595      I3=IT
50596      I4=IT
50597CCCCC MARCH 1994.  ADD CHECK FOR QUADRATIC DEGREE.
50598      IF(ALOWDG.GT.1.5)THEN
50599      CALL QUAFIT(IT,I1,I2,XS,YS,WH,WV,N,XMAXHF,I3,I4,
50600     1ALPHA,BETA1,BETA2,PRED2,RES2,ISUBRO,IBUGA3,IERROR)
50601      ELSE
50602      CALL LINEAR(IT,I1,I2,XS,YS,WH,WV,N,XMAXHF,I3,I4,
50603     1ALPHA,BETA,PRED2,RES2,ISUBRO,IBUGA3,IERROR)
50604      ENDIF
50605      IF(IERROR.EQ.'YES')GOTO9000
50606C
50607 3200 CONTINUE
50608C
50609      DO3300I=1,N
50610      XTEMP1(I)=PRED2(I)
50611      XTEMP2(I)=RES2(I)
50612 3300 CONTINUE
50613C
50614      DO3400I=1,N
50615      J=INT(XTEMP7(I)+0.5)
50616      PRED2(J)=XTEMP1(I)
50617      RES2(J)=XTEMP2(I)
50618 3400 CONTINUE
50619C
50620C               *****************
50621C               **  STEP 90--  **
50622C               **  EXIT       **
50623C               *****************
50624C
50625 9000 CONTINUE
50626      IF(IBUGA3.EQ.'OFF'.AND.ISUBRO.NE.'WESS')GOTO9090
50627      WRITE(ICOUT,999)
50628      CALL DPWRST('XXX','BUG ')
50629      WRITE(ICOUT,9011)
50630 9011 FORMAT('**** AT THE END       OF LOWESS--')
50631      CALL DPWRST('XXX','BUG ')
50632      WRITE(ICOUT,9012)ISUBRO,IBUGA3,IERROR
50633 9012 FORMAT('ISUBRO,IBUGA3,IERROR = ',A4,2X,A4,2X,A4)
50634      CALL DPWRST('XXX','BUG ')
50635      WRITE(ICOUT,9021)N,ALOWFR,NN
50636 9021 FORMAT('N,ALOWFR,NN = ',I8,E15.7,I8)
50637      CALL DPWRST('XXX','BUG ')
50638      IF(N.LE.0)GOTO9024
50639      DO9022I=1,N
50640      WRITE(ICOUT,9023)I,Y(I),X(I),PRED2(I),RES2(I)
50641 9023 FORMAT('I,Y(I),X(I),PRED2(I),RES2(I) = ',I8,4E11.3)
50642      CALL DPWRST('XXX','BUG ')
50643 9022 CONTINUE
50644 9024 CONTINUE
50645      IF(N.LE.0)GOTO9034
50646      DO9032I=1,N
50647      WRITE(ICOUT,9033)I,YS(I),XS(I),WH(I),WV(I),PRED2(I),RES2(I)
50648 9033 FORMAT('I,YS(I),XS(I),WH(I),WV(I),PRED2(I),RES2(I) = ',
50649     1I8,6E11.3)
50650      CALL DPWRST('XXX','BUG ')
50651 9032 CONTINUE
50652 9034 CONTINUE
50653 9090 CONTINUE
50654C
50655      RETURN
50656      END
50657      SUBROUTINE LOWHIN(X,N,IWRITE,XTEMP,MAXNXT,XLOWHI,IBUGA3,IERROR)
50658C
50659C     PURPOSE--THIS SUBROUTINE COMPUTES THE
50660C              SAMPLE LOWER HINGE
50661C              OF THE DATA IN THE INPUT VECTOR X.
50662C     INPUT  ARGUMENTS--X      = THE SINGLE PRECISION VECTOR OF
50663C                                (UNSORTED OR SORTED) OBSERVATIONS.
50664C                     --N      = THE INTEGER NUMBER OF OBSERVATIONS
50665C                                IN THE VECTOR X.
50666C     OUTPUT ARGUMENTS--XLOWHI = THE SINGLE PRECISION VALUE OF THE
50667C                                COMPUTED SAMPLE LOWER HINGE.
50668C     OUTPUT--THE COMPUTED SINGLE PRECISION VALUE OF THE
50669C             SAMPLE LOWER HINGE.
50670C     OTHER DATAPAC   SUBROUTINES NEEDED--SORT.
50671C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE.
50672C     MODE OF INTERNAL OPERATIONS--DOUBLE PRECISION.
50673C     LANGUAGE--ANSI FORTRAN (1977)
50674C     REFERENCES--
50675C     WRITTEN BY--JAMES J. FILLIBEN
50676C                 STATISTICAL ENGINEERING DIVISION
50677C                 INFORMATION TECHNOLOGY LABORATORY
50678C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
50679C                 GAITHERSBURG, MD 20899-8980
50680C                 PHONE--301-975-2855
50681C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
50682C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
50683C     LANGUAGE--ANSI FORTRAN (1977)
50684C     VERSION NUMBER--82.6
50685C     ORIGINAL VERSION--JUNE      1981.
50686C     UPDATED         --AUGUST    1981.
50687C     UPDATED         --MAY       1982.
50688C
50689C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
50690C
50691      CHARACTER*4 IWRITE
50692      CHARACTER*4 IBUGA3
50693      CHARACTER*4 IERROR
50694C
50695      CHARACTER*4 ISUBN1
50696      CHARACTER*4 ISUBN2
50697C
50698C---------------------------------------------------------------------
50699C
50700      DIMENSION X(*)
50701      DIMENSION XTEMP(*)
50702C
50703C-----COMMON----------------------------------------------------------
50704C
50705      INCLUDE 'DPCOP2.INC'
50706C
50707C-----START POINT-----------------------------------------------------
50708C
50709      ISUBN1='LOWH'
50710      ISUBN2='IN  '
50711      IERROR='NO'
50712C
50713      IARG1=0
50714      IARG2=0
50715C
50716      IF(IBUGA3.EQ.'ON')THEN
50717        WRITE(ICOUT,999)
50718  999   FORMAT(1X)
50719        CALL DPWRST('XXX','BUG ')
50720        WRITE(ICOUT,51)
50721   51   FORMAT('***** AT THE BEGINNING OF LOWHIN--')
50722        CALL DPWRST('XXX','BUG ')
50723        WRITE(ICOUT,52)IBUGA3,N
50724   52   FORMAT('IBUGA3,N = ',A4,2X,I8)
50725        CALL DPWRST('XXX','BUG ')
50726        DO55I=1,N
50727          WRITE(ICOUT,56)I,X(I)
50728   56     FORMAT('I,X(I) = ',I8,G15.7)
50729          CALL DPWRST('XXX','BUG ')
50730   55   CONTINUE
50731      ENDIF
50732C
50733C               ***************************
50734C               **  COMPUTE LOWER HINGE  **
50735C               ***************************
50736C
50737C               ********************************************
50738C               **  STEP 1--                              **
50739C               **  CHECK THE INPUT ARGUMENTS FOR ERRORS  **
50740C               ********************************************
50741C
50742      AN=N
50743C
50744      IF(N.LT.1 .OR. N.GT.MAXNXT)THEN
50745        IERROR='YES'
50746        WRITE(ICOUT,999)
50747        CALL DPWRST('XXX','BUG ')
50748        WRITE(ICOUT,111)
50749  111   FORMAT('***** ERROR IN LOWER HINGE--')
50750        CALL DPWRST('XXX','BUG ')
50751        WRITE(ICOUT,112)
50752  112   FORMAT('      THE NUMBER OF OBSERVATIONS FOR THE RESPONSE')
50753        CALL DPWRST('XXX','BUG ')
50754        WRITE(ICOUT,113)MAXNXT
50755  113   FORMAT('      VARIABLE IS LESS THAN 1 OR GREATER THAN ',I8,'.')
50756        CALL DPWRST('XXX','BUG ')
50757        WRITE(ICOUT,117)N
50758  117   FORMAT('      THE NUMBER OF OBSERVATIONS = ',I8,'.')
50759        CALL DPWRST('XXX','BUG ')
50760        GOTO9000
50761      ELSEIF(N.EQ.1)THEN
50762        WRITE(ICOUT,999)
50763        CALL DPWRST('XXX','BUG ')
50764        WRITE(ICOUT,121)
50765  121   FORMAT('***** WARNING IN LOWER HINGE--')
50766        CALL DPWRST('XXX','BUG ')
50767        WRITE(ICOUT,123)
50768  123   FORMAT('      THERE IS ONLY A SINGLE RESPONSE VALUE.')
50769        CALL DPWRST('XXX','BUG ')
50770        XLOWHI=X(1)
50771        GOTO9000
50772      ENDIF
50773C
50774      HOLD=X(1)
50775      DO135I=2,N
50776        IF(X(I).NE.HOLD)GOTO139
50777  135 CONTINUE
50778      WRITE(ICOUT,999)
50779      CALL DPWRST('XXX','BUG ')
50780      WRITE(ICOUT,121)
50781      CALL DPWRST('XXX','BUG ')
50782      WRITE(ICOUT,136)HOLD
50783  136 FORMAT('      THE RESPONSE VALUES ARE EQUAL TO ',G15.7)
50784      CALL DPWRST('XXX','BUG ')
50785      XLOWHI=HOLD
50786      GOTO9000
50787  139 CONTINUE
50788C
50789C               ********************************
50790C               **  STEP 2--                  **
50791C               **  COMPUTE THE LOWER HINGE.  **
50792C               ********************************
50793C
50794      CALL SORT(X,N,XTEMP)
50795C
50796      N2=(N+1)/2
50797      IARG1=(N2+1)/2
50798      IARG2=(N2+1)-IARG1
50799      XLOWHI=(XTEMP(IARG1)+XTEMP(IARG2))/2.0
50800C
50801C               j******************************
50802C               **  STEP 3--                 **
50803C               **  WRITE OUT A LINE         **
50804C               **  OF SUMMARY INFORMATION.  **
50805C               *******************************
50806C
50807      IF(IFEEDB.EQ.'ON' .AND. IWRITE.EQ.'ON')THEN
50808        WRITE(ICOUT,999)
50809        CALL DPWRST('XXX','BUG ')
50810        WRITE(ICOUT,811)N,XLOWHI
50811  811   FORMAT('THE LOWER HINGE OF THE ',I8,' OBSERVATIONS = ',G15.7)
50812        CALL DPWRST('XXX','BUG ')
50813      ENDIF
50814C
50815C               *****************
50816C               **  STEP 90--  **
50817C               **  EXIT.      **
50818C               *****************
50819C
50820 9000 CONTINUE
50821      IF(IBUGA3.EQ.'ON')THEN
50822        WRITE(ICOUT,999)
50823        CALL DPWRST('XXX','BUG ')
50824        WRITE(ICOUT,9011)
50825 9011   FORMAT('***** AT THE END       OF LOWHIN--')
50826        CALL DPWRST('XXX','BUG ')
50827        WRITE(ICOUT,9012)IERROR,IARG1,IARG2,XLOWHI
50828 9012   FORMAT('IERROR,IARG1,IARG2,XLOWHI = ',A4,2X,2I8,G15.7)
50829        CALL DPWRST('XXX','BUG ')
50830      ENDIF
50831C
50832      RETURN
50833      END
50834      SUBROUTINE LOWQUA(X,N,IWRITE,XTEMP,MAXNXT,XLOWQU,IBUGA3,IERROR)
50835C
50836C     PURPOSE--THIS SUBROUTINE COMPUTES THE SAMPLE LOWER QUARTILE
50837C              OF THE DATA IN THE INPUT VECTOR X.
50838C     INPUT  ARGUMENTS--X      = THE SINGLE PRECISION VECTOR OF
50839C                                (UNSORTED OR SORTED) OBSERVATIONS.
50840C                     --N      = THE INTEGER NUMBER OF OBSERVATIONS
50841C                                IN THE VECTOR X.
50842C     OUTPUT ARGUMENTS--XLOWQU = THE SINGLE PRECISION VALUE OF THE
50843C                                COMPUTED SAMPLE LOWER QUARTILE.
50844C     OUTPUT--THE COMPUTED SINGLE PRECISION VALUE OF THE
50845C             SAMPLE LOWER QUARTILE.
50846C     OTHER DATAPAC   SUBROUTINES NEEDED--SORT.
50847C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE.
50848C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
50849C     LANGUAGE--ANSI FORTRAN (1977)
50850C     REFERENCES--
50851C     WRITTEN BY--JAMES J. FILLIBEN
50852C                 STATISTICAL ENGINEERING DIVISION
50853C                 INFORMATION TECHNOLOGY LABORATORY
50854C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
50855C                 GAITHERSBURG, MD 20899-8980
50856C                 PHONE--301-975-2855
50857C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
50858C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
50859C     LANGUAGE--ANSI FORTRAN (1966)
50860C               EXCEPTION--HOLLERITH STRINGS IN FORMAT STATEMENTS
50861C                          DENOTED BY QUOTES RATHER THAN NH.
50862C     VERSION NUMBER--82.6
50863C     ORIGINAL VERSION--JUNE      1981.
50864C     UPDATED         --AUGUST    1981.
50865C     UPDATED         --MAY       1982.
50866C     UPDATED         --OCTOBER   2008. WEIGHTING OF NEAREST TWO
50867C                                       POINTS WAS REVERSED
50868C
50869C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
50870C
50871      CHARACTER*4 IWRITE
50872      CHARACTER*4 IBUGA3
50873      CHARACTER*4 IERROR
50874C
50875      CHARACTER*4 ISUBN1
50876      CHARACTER*4 ISUBN2
50877C
50878C---------------------------------------------------------------------
50879C
50880      DIMENSION X(*)
50881      DIMENSION XTEMP(*)
50882C
50883C-----COMMON----------------------------------------------------------
50884C
50885      INCLUDE 'DPCOP2.INC'
50886C
50887C-----START POINT-----------------------------------------------------
50888C
50889      ISUBN1='LOWQ'
50890      ISUBN2='UA  '
50891      IERROR='NO'
50892C
50893      NI=0
50894      NIP1=0
50895C
50896      ANI=0.0
50897      A2NI=0.0
50898      REM=0.0
50899C
50900      IF(IBUGA3.EQ.'ON')THEN
50901        WRITE(ICOUT,999)
50902  999   FORMAT(1X)
50903        CALL DPWRST('XXX','BUG ')
50904        WRITE(ICOUT,51)
50905   51   FORMAT('***** AT THE BEGINNING OF LOWQUA--')
50906        CALL DPWRST('XXX','BUG ')
50907        WRITE(ICOUT,53)N,IBUGA3
50908   53   FORMAT('N,IBUGA3 = ',I8,2X,A4)
50909        CALL DPWRST('XXX','BUG ')
50910        DO55I=1,N
50911          WRITE(ICOUT,56)I,X(I)
50912   56     FORMAT('I,X(I) = ',I8,G15.7)
50913          CALL DPWRST('XXX','BUG ')
50914   55   CONTINUE
50915      ENDIF
50916C
50917C               ******************************
50918C               **  COMPUTE LOWER QUARTILE  **
50919C               ******************************
50920C
50921C               ********************************************
50922C               **  STEP 1--                              **
50923C               **  CHECK THE INPUT ARGUMENTS FOR ERRORS  **
50924C               ********************************************
50925C
50926      AN=N
50927C
50928      IF(N.LT.1 .OR. N.GT.MAXNXT)THEN
50929        WRITE(ICOUT,999)
50930        CALL DPWRST('XXX','BUG ')
50931        WRITE(ICOUT,111)
50932  111   FORMAT('***** ERROR IN LOWER QUARTILE--')
50933        CALL DPWRST('XXX','BUG ')
50934        WRITE(ICOUT,112)
50935  112   FORMAT('      THE NUMBER OF OBSERVATIONS FOR THE RESPONSE ',
50936     1         'VARIABLE')
50937        CALL DPWRST('XXX','BUG ')
50938        WRITE(ICOUT,115)MAXNXT
50939  115   FORMAT('      MUST BE BETWEEN 1 AND ',I8,' (INCLUSIVELY).')
50940        CALL DPWRST('XXX','BUG ')
50941        WRITE(ICOUT,117)N
50942  117   FORMAT('      THE NUMBER OF OBSERVATIONS = ',I8,'.')
50943        CALL DPWRST('XXX','BUG ')
50944        IERROR='YES'
50945        GOTO9000
50946      ENDIF
50947C
50948      IF(N.EQ.1)THEN
50949CCCCC   WRITE(ICOUT,999)
50950CCCCC   CALL DPWRST('XXX','BUG ')
50951CCCCC   WRITE(ICOUT,121)
50952CC121   FORMAT('***** WARNING IN LOWER QUARTILE--',
50953CCCCC1         'THERE IS ONLY ONE RESPONSE VALUE.')
50954CCCCC   CALL DPWRST('XXX','BUG ')
50955        XLOWQU=X(1)
50956        GOTO9000
50957      ENDIF
50958C
50959      HOLD=X(1)
50960      DO135I=2,N
50961        IF(X(I).NE.HOLD)GOTO139
50962  135 CONTINUE
50963CCCCC WRITE(ICOUT,999)
50964CCCCC CALL DPWRST('XXX','BUG ')
50965CCCCC WRITE(ICOUT,136)HOLD
50966CC136 FORMAT('***** WARNING IN LOWER QUARTILE--',
50967CCCCC1       'THE RESPONSE VARIABLE HAS ALL ELEMENTS = ',G15.7)
50968CCCCC CALL DPWRST('XXX','BUG ')
50969      XLOWQU=HOLD
50970      GOTO9000
50971  139 CONTINUE
50972C
50973C               ***********************************
50974C               **  STEP 2--                     **
50975C               **  COMPUTE THE LOWER QUARTILE.  **
50976C               ***********************************
50977C
50978      CALL SORT(X,N,XTEMP)
50979C
50980      P=0.25
50981C
50982      ANI=P*(AN+1.0)
50983      NI=INT(ANI)
50984      A2NI=NI
50985      REM=ANI-A2NI
50986      NIP1=NI+1
50987      IF(NI.LE.1)NI=1
50988      IF(NI.GE.N)NI=N
50989      IF(NIP1.LE.1)NIP1=1
50990      IF(NIP1.GE.N)NIP1=N
50991CCCCC 10/20/2008: WEIGHTING IS BACKWARDS
50992CCCCC XLOWQU=REM*XTEMP(NI)+(1.0-REM)*XTEMP(NIP1)
50993      XLOWQU=(1.0-REM)*XTEMP(NI)+REM*XTEMP(NIP1)
50994C
50995C               *******************************
50996C               **  STEP 3--                 **
50997C               **  WRITE OUT A LINE         **
50998C               **  OF SUMMARY INFORMATION.  **
50999C               *******************************
51000C
51001      IF(IFEEDB.EQ.'ON' .AND.IWRITE.EQ.'ON')THEN
51002        WRITE(ICOUT,999)
51003        CALL DPWRST('XXX','BUG ')
51004        WRITE(ICOUT,811)N,XLOWQU
51005  811   FORMAT('THE LOWER QUARTILE OF THE ',I8,' OBSERVATIONS = ',
51006     1         G15.7)
51007        CALL DPWRST('XXX','BUG ')
51008      ENDIF
51009C
51010C               *****************
51011C               **  STEP 90--  **
51012C               **  EXIT.      **
51013C               *****************
51014C
51015 9000 CONTINUE
51016      IF(IBUGA3.EQ.'ON')THEN
51017        WRITE(ICOUT,999)
51018        CALL DPWRST('XXX','BUG ')
51019        WRITE(ICOUT,9011)
51020 9011   FORMAT('***** AT THE END       OF LOWQUA--')
51021        CALL DPWRST('XXX','BUG ')
51022        WRITE(ICOUT,9014)ANI,NI,A2NI,REM,NIP1
51023 9014   FORMAT('ANI,NI,A2NI,REM,NIP1 = ',G15.7,I8,2G15.7,I8)
51024        CALL DPWRST('XXX','BUG ')
51025        WRITE(ICOUT,9015)IERROR,XLOWQU
51026 9015   FORMAT('IERROR,XLOWQU = ',A4,2X,G15.7)
51027        CALL DPWRST('XXX','BUG ')
51028      ENDIF
51029C
51030      RETURN
51031      END
51032      DOUBLE PRECISION FUNCTION LPLFUN (ALPHA,X)
51033C
51034C     PURPOSE--THIS ROUTINE IS USED IN FINDING THE Lp LOCATION
51035C              ESTIMATE.  THIS FUNCTION FINDS THE ROOT OF
51036C
51037C              SUM[i=1 to n][|X(i)-alpha|**(p-1)*SIGN(x(i)-ALPHA) = 0
51038C
51039C              CALLED BY DFZER2 ROUTINE FOR FINDING THE ROOT OF A
51040C              FUNCTION.
51041C     EXAMPLE--LET A = LP LOCATION Y
51042C     REFERENCES--FRANCESCA PENNECCHI AND LUCA CALLEGARO, "BETWEEN
51043C                 THE MEAN AND THE MEDIAN: THE Lp ESTIMATOR",
51044C                 METROLOGIA, 43, 2006, PP. 213-219.
51045C     WRITTEN BY--JAMES J. FILLIBEN
51046C                 STATISTICAL ENGINEERING DIVISION
51047C                 INFORMATION TECHNOLOGY LABORATORY
51048C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
51049C                 GAITHERSBUG, MD 20899-8980
51050C                 PHONE--301-975-2855
51051C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
51052C           OF THE NATIONAL BUREAU OF STANDARDS.
51053C     LANGUAGE--ANSI FORTRAN (1977)
51054C     VERSION NUMBER--2007/11
51055C     ORIGINAL VERSION--NOVEMBER   2007.
51056C
51057C---------------------------------------------------------------------
51058C
51059      DOUBLE PRECISION ALPHA
51060      DOUBLE PRECISION X(*)
51061C
51062      INTEGER N
51063      DOUBLE PRECISION DP
51064      COMMON/LPLCOM/DP,N
51065C
51066C---------------------------------------------------------------------
51067C
51068      DOUBLE PRECISION DSUM
51069      DOUBLE PRECISION DTERM1
51070      DOUBLE PRECISION DX
51071C
51072      INCLUDE 'DPCOP2.INC'
51073C
51074C-----START POINT-----------------------------------------------------
51075C
51076C  COMPUTE SOME SUMS
51077C
51078      DSUM=0.0D0
51079      DO100I=1,N
51080        DX=X(I)
51081        DTERM1=DX-ALPHA
51082        IF(DTERM1.GE.0.0D0)THEN
51083          DFACT=1.0D0
51084        ELSE
51085          DFACT=-1.0D0
51086        ENDIF
51087        DSUM=DSUM + DFACT*DABS(DTERM1)**(DP-1.0D0)
51088  100 CONTINUE
51089C
51090      LPLFUN=DSUM
51091C
51092      RETURN
51093      END
51094      SUBROUTINE LPLOC(X,N,P,IWRITE,XTEMP,DTEMP,MAXNXT,XLP,
51095     1                 IBUGA3,IERROR)
51096C
51097C     PURPOSE--THIS SUBROUTINE COMPUTES THE SAMPLE LP LOCATION
51098C              ESTIMATE OF THE DATA IN THE INPUT VECTOR X.
51099C
51100C              GIVEN THE MODEL
51101C
51102C                 X(i) = ALPHA + E(i)
51103C
51104C              THE L(p) ESTIMATOR OF ALPHA IS
51105C
51106C                 L(p)(X(i)) = Arg(alpha)
51107C                     MIN{(SUM[i=1 to n][|X(i) - ALPHA|**p)**(1/p)}
51108C
51109C              OR EQUIVALENTLY
51110C
51111C                 L(p)(X(i)) = Arg(alpha)
51112C                     MIN{SUM[i=1 to n][|X(i) - ALPHA|**p}
51113C
51114C              THIS ESTIMATE IS THE SOLUTION OF THE EQUATION
51115C
51116C              SUM[i=1 to n][|X(i)-alpha|**(p-1)*SIGN(x(i)-ALPHA) = 0
51117C
51118C              THERE ARE 3 SPECIAL CASES:
51119C
51120C               P = 1   - SAMPLE MEDIAN
51121C               P = 2   - SAMPLE MEAN
51122C               P = INF - SAMPLE MID-RANGE
51123C
51124C     INPUT  ARGUMENTS--X      = THE SINGLE PRECISION VECTOR OF
51125C                                (UNSORTED OR SORTED) OBSERVATIONS.
51126C                     --N      = THE INTEGER NUMBER OF OBSERVATIONS
51127C                                IN THE VECTOR X.
51128C                     --P      = THE SINGLE PRECISION VALUE OF THE
51129C                                "p" PARAMETER.
51130C     OUTPUT ARGUMENTS--XLP    = THE SINGLE PRECISION VALUE OF THE
51131C                                COMPUTED SAMPLE LP LOCATION ESTIMATE.
51132C     OUTPUT--THE COMPUTED SINGLE PRECISION VALUE OF THE
51133C             SAMPLE LP LOCATION ESTIMATE.
51134C     OTHER DATAPAC   SUBROUTINES NEEDED--SORT.
51135C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE.
51136C     MODE OF INTERNAL OPERATIONS--DOUBLE PRECISION.
51137C     LANGUAGE--ANSI FORTRAN (1977)
51138C     REFERENCES--FRANCESCA PENNECCHI AND LUCA CALLEGARO, "BETWEEN
51139C                 THE MEAN AND THE MEDIAN: THE Lp ESTIMATOR",
51140C                 METROLOGIA, 43, 2006, PP. 213-219.
51141C     WRITTEN BY--JAMES J. FILLIBEN
51142C                 STATISTICAL ENGINEERING DIVISION
51143C                 INFORMATION TECHNOLOGY LABORATORY
51144C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
51145C                 GAITHERSBURG, MD 20899-8980
51146C                 PHONE--301-975-2855
51147C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
51148C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
51149C     LANGUAGE--ANSI FORTRAN (1977)
51150C     ORIGINAL VERSION--NOVEMBER  2007.
51151C
51152C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
51153C
51154      CHARACTER*4 IWRITE
51155      CHARACTER*4 IBUGA3
51156      CHARACTER*4 IERROR
51157C
51158      CHARACTER*4 ISUBN1
51159      CHARACTER*4 ISUBN2
51160C
51161C---------------------------------------------------------------------
51162C
51163      DIMENSION X(*)
51164      DIMENSION XTEMP(*)
51165      DOUBLE PRECISION DTEMP(*)
51166C
51167      DOUBLE PRECISION LPLFUN
51168      EXTERNAL LPLFUN
51169      DOUBLE PRECISION DP
51170      COMMON/LPLCOM/DP,IN
51171C
51172      DOUBLE PRECISION DXLOW
51173      DOUBLE PRECISION DXUP
51174      DOUBLE PRECISION DXSTRT
51175      DOUBLE PRECISION DAE
51176      DOUBLE PRECISION DRE
51177C
51178C---------------------------------------------------------------------
51179C
51180      INCLUDE 'DPCOP2.INC'
51181C
51182C-----START POINT-----------------------------------------------------
51183C
51184      ISUBN1='LPLO'
51185      ISUBN2='C   '
51186      IERROR='NO'
51187C
51188      IF(IBUGA3.EQ.'ON')THEN
51189        WRITE(ICOUT,999)
51190  999   FORMAT(1X)
51191        CALL DPWRST('XXX','BUG ')
51192        WRITE(ICOUT,51)
51193   51   FORMAT('***** AT THE BEGINNING OF LPLOC--')
51194        CALL DPWRST('XXX','BUG ')
51195        WRITE(ICOUT,52)IBUGA3,N,P
51196   52   FORMAT('IBUGA3,N,P = ',A4,2X,I10,2X,G15.7)
51197        CALL DPWRST('XXX','BUG ')
51198        DO55I=1,MIN(N,100)
51199          WRITE(ICOUT,56)I,X(I)
51200   56     FORMAT('I,X(I) = ',I8,E15.7)
51201          CALL DPWRST('XXX','BUG ')
51202   55   CONTINUE
51203      ENDIF
51204C
51205C               **********************
51206C               **  COMPUTE LPLOC   **
51207C               **********************
51208C
51209C               ********************************************
51210C               **  STEP 1--                              **
51211C               **  CHECK THE INPUT ARGUMENTS FOR ERRORS  **
51212C               ********************************************
51213C
51214      AN=N
51215C
51216      IF(N.LT.1 .OR.N.GT.MAXNXT)THEN
51217        WRITE(ICOUT,999)
51218        CALL DPWRST('XXX','BUG ')
51219        WRITE(ICOUT,111)
51220  111   FORMAT('***** ERROR IN LP LOCATION--')
51221        CALL DPWRST('XXX','BUG ')
51222        WRITE(ICOUT,112)
51223  112   FORMAT('      THE INPUT NUMBER OF OBSERVATIONS IN THE')
51224        CALL DPWRST('XXX','BUG ')
51225        WRITE(ICOUT,113)
51226  113   FORMAT('      RESPONSE VARIABLE IS LESS THAN 1 OR GREATER')
51227        CALL DPWRST('XXX','BUG ')
51228        WRITE(ICOUT,115)MAXNXT
51229  115   FORMAT('      THAN ',I10)
51230        CALL DPWRST('XXX','BUG ')
51231        WRITE(ICOUT,117)N
51232  117   FORMAT('      THE INPUT NUMBER OF OBSERVATIONS = ',I10,'.')
51233        CALL DPWRST('XXX','BUG ')
51234        IERROR='YES'
51235        GOTO9000
51236      ENDIF
51237C
51238      IF(P.LT.1.0)THEN
51239        WRITE(ICOUT,999)
51240        CALL DPWRST('XXX','BUG ')
51241        WRITE(ICOUT,111)
51242        CALL DPWRST('XXX','BUG ')
51243        WRITE(ICOUT,122)
51244  122   FORMAT('      THE P PARAMETER IS LESS THAN 1.')
51245        CALL DPWRST('XXX','BUG ')
51246        WRITE(ICOUT,127)P
51247  127   FORMAT('      THE VALUE OF P = ',G15.7)
51248        CALL DPWRST('XXX','BUG ')
51249        IERROR='YES'
51250        GOTO9000
51251      ENDIF
51252C
51253      IF(N.EQ.1)THEN
51254        XLP=X(1)
51255        GOTO8000
51256      ENDIF
51257C
51258      HOLD=X(1)
51259      DO135I=2,N
51260        IF(X(I).NE.HOLD)GOTO139
51261  135 CONTINUE
51262      XLP=HOLD
51263      GOTO8000
51264  139 CONTINUE
51265C
51266      EPS=1.0E-6
51267      ATEMP=ABS(P-1.0)
51268      IF(ATEMP.LE.EPS)THEN
51269        CALL MEDIAN(X,N,IWRITE,XTEMP,MAXNXT,XLP,IBUGA3,IERROR)
51270        GOTO8000
51271      ENDIF
51272      ATEMP=ABS(P-2.0)
51273      IF(ATEMP.LE.EPS)THEN
51274        CALL MEAN(X,N,IWRITE,XLP,IBUGA3,IERROR)
51275        GOTO8000
51276      ENDIF
51277      IF(P.GT.10.0)THEN
51278        CALL MIDRAN(X,N,IWRITE,XLP,IBUGA3,IERROR)
51279        GOTO8000
51280      ENDIF
51281C
51282C               ***************************
51283C               **  STEP 2--             **
51284C               **  COMPUTE THE LPLOC.   **
51285C               ***************************
51286C
51287C     STEP 1: USE MEDIAN AS STARTING VALUE.
51288C
51289      CALL SORT(X,N,XTEMP)
51290C
51291      IEVODD=N-(N/2)*2
51292      NMID=N/2
51293      NMIDP1=NMID+1
51294      IF(IEVODD.EQ.0)XMED=(XTEMP(NMID)+XTEMP(NMIDP1))/2.0
51295      IF(IEVODD.EQ.1)XMED=XTEMP(NMIDP1)
51296C
51297C     STEP 2: USE DFZER2 TO FIND ROOT OF EQUATION.
51298C
51299      IN=N
51300      DP=DBLE(P)
51301      DO200I=1,N
51302        DTEMP(I)=DBLE(XTEMP(I))
51303  200 CONTINUE
51304C
51305      DXSTRT=DBLE(XMED)
51306      DAE=0.000001D0
51307      DRE=DAE
51308      IFLAG=0
51309      DXLOW=DBLE(XTEMP(1))
51310      DXUP=DBLE(XTEMP(N))
51311      CALL DFZER2(LPLFUN,DXLOW,DXUP,DXSTRT,DRE,DAE,IFLAG,DTEMP)
51312C
51313      XLP=REAL(DXLOW)
51314C
51315      IF(IFLAG.EQ.2)THEN
51316C
51317C  NOTE: SUPPRESS THIS MESSAGE FOR NOW.
51318CCCCC   WRITE(ICOUT,999)
51319CCCCC   CALL DPWRST('XXX','BUG ')
51320CCCCC   WRITE(ICOUT,111)
51321CCCCC   CALL DPWRST('XXX','BUG ')
51322CCCCC   WRITE(ICOUT,1113)
51323C1113   FORMAT('      ESTIMATE OF LPLOC MAY NOT BE COMPUTED TO ',
51324CCCCC1         'DESIRED TOLERANCE.')
51325CCCCC   CALL DPWRST('XXX','BUG ')
51326      ELSEIF(IFLAG.EQ.3)THEN
51327        WRITE(ICOUT,999)
51328        CALL DPWRST('XXX','BUG ')
51329        WRITE(ICOUT,1121)
51330 1121   FORMAT('***** WARNING FROM LP LOCATION ESTIMATE--')
51331        CALL DPWRST('XXX','BUG ')
51332        WRITE(ICOUT,1123)
51333 1123   FORMAT('      ESTIMATE MAY BE NEAR A SINGULAR POINT.')
51334        CALL DPWRST('XXX','BUG ')
51335      ELSEIF(IFLAG.EQ.4)THEN
51336        WRITE(ICOUT,999)
51337        CALL DPWRST('XXX','BUG ')
51338        WRITE(ICOUT,111)
51339        CALL DPWRST('XXX','BUG ')
51340        WRITE(ICOUT,1133)
51341 1133   FORMAT('      APPROPRIATE BRACKETING INTERVAL NOT FOUND.')
51342        CALL DPWRST('XXX','BUG ')
51343      ELSEIF(IFLAG.EQ.5)THEN
51344        WRITE(ICOUT,999)
51345        CALL DPWRST('XXX','BUG ')
51346        WRITE(ICOUT,1121)
51347        CALL DPWRST('XXX','BUG ')
51348        WRITE(ICOUT,1143)
51349 1143   FORMAT('      MAXIMUM ITERATIONS EXCEEDED.')
51350        CALL DPWRST('XXX','BUG ')
51351      ENDIF
51352C
51353C
51354C               *******************************
51355C               **  STEP 3--                 **
51356C               **  WRITE OUT A LINE         **
51357C               **  OF SUMMARY INFORMATION.  **
51358C               *******************************
51359C
51360 8000 CONTINUE
51361      IF(IFEEDB.EQ.'ON' .AND. IWRITE.EQ.'ON')THEN
51362        WRITE(ICOUT,999)
51363        CALL DPWRST('XXX','BUG ')
51364        WRITE(ICOUT,811)N,XLP,P
51365  811   FORMAT('THE Lp LOCATION ESTIMATE OF THE ',I8,
51366     1         ' OBSERVATIONS = ',G15.7,'(P = ',F5.2,')')
51367        CALL DPWRST('XXX','BUG ')
51368      ENDIF
51369C
51370C               *****************
51371C               **  STEP 90--  **
51372C               **  EXIT.      **
51373C               *****************
51374C
51375 9000 CONTINUE
51376      IF(IBUGA3.EQ.'OFF')GOTO9090
51377      WRITE(ICOUT,999)
51378      CALL DPWRST('XXX','BUG ')
51379      WRITE(ICOUT,9011)
51380 9011 FORMAT('***** AT THE END       OF LPLOC--')
51381      CALL DPWRST('XXX','BUG ')
51382      WRITE(ICOUT,9012)IBUGA3,IERROR
51383 9012 FORMAT('IBUGA3,IERROR = ',A4,2X,A4)
51384      CALL DPWRST('XXX','BUG ')
51385      WRITE(ICOUT,9013)N
51386 9013 FORMAT('N = ',I8)
51387      CALL DPWRST('XXX','BUG ')
51388      WRITE(ICOUT,9015)XMED
51389 9015 FORMAT('XMED = ',E15.7)
51390      CALL DPWRST('XXX','BUG ')
51391 9090 CONTINUE
51392C
51393      RETURN
51394      END
51395      SUBROUTINE LPOCDF(X,LAMBDA,THETA,CDF)
51396C
51397C     PURPOSE--THIS SUBROUTINE COMPUTES THE CUMULATIVE DISTRIBUTION
51398C              FUNCTION VALUE AT THE SINGLE PRECISION VALUE X
51399C              FOR THE LAGRANGE-POISSON DISTRIBUTION
51400C              WITH SINGLE PRECISION SHAPE PARAMETERS LAMBDA AND
51401C              THETA.  THIS DISTRIBUTION IS DEFINED FOR ALL
51402C              NON-NEGATIVE INTEGER X >= 0.
51403C              THIS DISTRIBUTION HAS THE PROBABILITY FUNCTION
51404C              p(X;LAMBDA,THETA) = THETA*EXP(-THETA-LAMBDA*X)*
51405C                                  (THETA+LAMBDA*X)**(X-1)/
51406C                                  (X*(X-K)!)
51407C                                  X >= 0; 0 < LAMBDA < 1; THETA > 0.
51408C              NOTE THAT THIS DISTRIBUTION IS A SHIFTED AND
51409C              RE-PARAMETERIZED VERSION OF THE BOREL-TANNER
51410C              DISTRIBUTION.
51411C     INPUT  ARGUMENTS--X      = THE SINGLE PRECISION VALUE
51412C                                AT WHICH THE PROBABILITY DENSITY
51413C                                FUNCTION IS TO BE EVALUATED.
51414C                                X SHOULD BE A NON-NEGATIVE INTEGR
51415C                     --LAMBDA = THE SINGLE PRECISION VALUE
51416C                                OF THE FIRST SHAPE PARAMETER.
51417C                     --THETA  = THE SINGLE PRECISION VALUE
51418C                                OF THE SECOND SHAPE PARAMETER.
51419C     OUTPUT ARGUMENTS--CDF    = THE SINGLE PRECISION CUMULATIVE
51420C                                DISTRIBUTION FUNCTION VALUE
51421C     OUTPUT--THE SINGLE PRECISION PROBABILITY DENSITY
51422C             FUNCTION VALUE CDF
51423C             FOR THE LAGRANGE-POISSON DISTRIBUTION
51424C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
51425C     RESTRICTIONS--X SHOULD BE A POSITIVE INTEGER
51426C                 --0 < LAMBDA < 1,  AND THETA > 0
51427C     OTHER DATAPAC   SUBROUTINES NEEDED--LNGAMM.
51428C     FORTRAN LIBRARY SUBROUTINES NEEDED--DEXP, DLOG
51429C     MODE OF INTERNAL OPERATIONS--DOUBLE PRECISION.
51430C     LANGUAGE--ANSI FORTRAN (1977)
51431C     REFERENCES--JOHNSON, KOTZ, AND KEMP (1992).  "UNIVARIATE
51432C                 DISCRETE DISTRIBUTIONS", SECOND EDITION,
51433C                 WILEY, PP. 394-400.
51434C     WRITTEN BY--JAMES J. FILLIBEN
51435C                 STATISTICAL ENGINEERING DIVISION
51436C                 INFORMATION TECHNOLOGY LABORATORY
51437C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
51438C                 GAITHERSBURG, MD 20899-8980
51439C                 PHONE--301-975-2855
51440C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
51441C           OF THE NATIONAL BUREAU OF STANDARDS.
51442C     LANGUAGE--ANSI FORTRAN (1977)
51443C     VERSION NUMBER--2006/5
51444C     ORIGINAL VERSION--MAY       2006.
51445C
51446C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
51447C
51448C---------------------------------------------------------------------
51449C
51450      REAL THETA
51451      REAL LAMBDA
51452C
51453      DOUBLE PRECISION DX
51454      DOUBLE PRECISION DLAMB
51455      DOUBLE PRECISION DTHETA
51456      DOUBLE PRECISION DPDF
51457      DOUBLE PRECISION DCDF
51458      DOUBLE PRECISION DTERM1
51459      DOUBLE PRECISION DTERM2
51460      DOUBLE PRECISION DLNGAM
51461C
51462C-----COMMON----------------------------------------------------------
51463C
51464      INCLUDE 'DPCOP2.INC'
51465C
51466C-----START POINT-----------------------------------------------------
51467C
51468      CDF=0.0
51469C
51470C     CHECK THE INPUT ARGUMENTS FOR ERRORS
51471C
51472      IF(LAMBDA.LE.0.0 .OR. LAMBDA.GE.1.0)THEN
51473        WRITE(ICOUT,11)
51474        CALL DPWRST('XXX','BUG ')
51475        WRITE(ICOUT,46)LAMBDA
51476        CALL DPWRST('XXX','BUG ')
51477        GOTO9999
51478      ELSEIF(THETA.LE.0.0)THEN
51479        WRITE(ICOUT,12)
51480        CALL DPWRST('XXX','BUG ')
51481        WRITE(ICOUT,46)THETA
51482        CALL DPWRST('XXX','BUG ')
51483        GOTO9999
51484      ENDIF
51485      INTX=INT(X+0.5)
51486      IF(INTX.LT.0)THEN
51487        CDF=0.0
51488        GOTO9999
51489      ENDIF
51490C
51491   11 FORMAT('***** ERROR--THE SECOND ARGUMENT TO LPOCDF ',
51492     1       'IS OUTSIDE THE ALLOWABLE (0,1) INTERVAL.')
51493   12 FORMAT('***** ERROR--THE THIRD ARGUMENT TO LPOCDF ',
51494     1       'IS NON-POSITIVE.')
51495   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',G15.7)
51496C
51497      DLAMB=DBLE(LAMBDA)
51498      DTHETA=DBLE(THETA)
51499      DCDF=0.0D0
51500C
51501      IF(INTX.EQ.0)THEN
51502        DCDF=DEXP(-DTHETA)
51503      ELSEIF(INTX.EQ.1)THEN
51504        DCDF=DEXP(-DTHETA) + DTHETA*DEXP(-DTHETA-DLAMB)
51505      ELSE
51506        DO100I=INTX,0,-1
51507          DX=DBLE(I)
51508          DTERM1=DLOG(DTHETA) + (-DTHETA-DLAMB*DX) +
51509     1           (DX-1.0D0)*DLOG(DTHETA+DLAMB*DX)
51510          DTERM2=DLNGAM(DX+1.0D0)
51511          DPDF=DEXP(DTERM1 - DTERM2)
51512          DCDF=DCDF + DPDF
51513  100   CONTINUE
51514      ENDIF
51515C
51516      CDF=REAL(DCDF)
51517C
51518 9999 CONTINUE
51519      RETURN
51520      END
51521      SUBROUTINE LPOFUN(N,XPAR,FVEC,IFLAG,Y,K)
51522C
51523C     PURPOSE--THIS ROUTINE COMPUTES THE FUNCTIONS FOR THE
51524C              LAGRANGE-POISSON WEIGHTED DISCREPENCIES (A
51525C              MODIFICATION OF MAXIMUM LIKELIHOOD) EQUATIONS.
51526C
51527C              SUM[i=1 to k][Y(i) - LPOPDF(X)]*
51528C                 [(X*(THETA+LAMBDA)/(THETA*(THETA+LAMBDA*X)) - 1] = 0
51529C
51530C              SUM[i=1 to k][Y(i) - LPOPDF(X)]*
51531C                 [(X*(X-1)/(THETA+LAMBDA*X)) - X] = 0
51532C
51533C              WITH THETA AND LAMBDA DENOTING THE SHAPE PARAMETERS.
51534C              THIS ROUTINE ASSUMES THE DATA IS IN THE FORM
51535C
51536C                   X(I)  FREQ(I)
51537C
51538C              CALLED BY DNSQE ROUTINE FOR SOLVING SIMULTANEOUS
51539C              NONLINEAR EQUATIONS.  NOTE THAT THE CALLING SEQUENCE
51540C              DID NOT ACCOMODATE A DATA ARRAY (AND ASSCIATED NUMBER OF
51541C              OBSERVATIONS), SO THESE WERE ADDED TO THE CALL LIST.
51542C              SINCE DNSQE ONLY PASSES ONE ARRAY, WE SPLIT INTO
51543C              TWO PARTS: 1 - MAXNXT/2 ARE THE FREQUENCIES WHILE
51544C              (MAXNXT/2 + 1) - MAXNXT ARE THE CLASS VALUES (I.E.,
51545C              THE X).
51546C     EXAMPLE--LAGRANGE-POISSON MAXIMUM LIKELIHOOD Y
51547C     REFERENCE --FELIX FAMOYE AND CARL M. -S. LEE (1992),
51548C                 "ESTIMATION OF GENERALIZED POISSON DISTRIBUTION",
51549C                 COMMUNICATIONS IN STATISTICS -- SIMULATION,
51550C                 21(1), PP. 173-188.
51551C     WRITTEN BY--ALAN HECKERT
51552C                 STATISTICAL ENGINEERING DIVISION
51553C                 INFORMATION TECHNOLOGY LABORATORY
51554C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
51555C                 GAITHERSBUG, MD 20899-8980
51556C                 PHONE--301-975-2899
51557C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
51558C           OF THE NATIONAL BUREAU OF STANDARDS.
51559C     LANGUAGE--ANSI FORTRAN (1977)
51560C     VERSION NUMBER--2006/6
51561C     ORIGINAL VERSION--JUNE      2006.
51562C
51563C---------------------------------------------------------------------
51564C
51565      DOUBLE PRECISION XPAR(*)
51566      DOUBLE PRECISION FVEC(*)
51567      REAL Y(*)
51568C
51569      DOUBLE PRECISION DX
51570      DOUBLE PRECISION DTHETA
51571      DOUBLE PRECISION DLAMB
51572      DOUBLE PRECISION DTERM1
51573      DOUBLE PRECISION DTERM2
51574      DOUBLE PRECISION DTERM3
51575      DOUBLE PRECISION DSUM1
51576      DOUBLE PRECISION DSUM2
51577C
51578      DOUBLE PRECISION XBAR
51579      COMMON/LPOCOM/XBAR,MAXNXT,NTOT
51580C
51581C-----COMMON----------------------------------------------------------
51582C
51583      INCLUDE 'DPCOP2.INC'
51584C
51585C-----START POINT-----------------------------------------------------
51586C
51587C  COMPUTE SOME SUMS
51588C
51589      IFLAG=0
51590      N=2
51591C
51592      DLAMB=XPAR(1)
51593      DTHETA=XPAR(2)
51594C
51595      IINDX=MAXNXT/2
51596C
51597      DSUM1=0.0D0
51598      DSUM2=0.0D0
51599C
51600      DO200I=1,K
51601C
51602        DX=DBLE(Y(IINDX+I))
51603        DFREQ=Y(I)
51604C
51605        CALL LPOPDF(REAL(DX),REAL(DLAMB),REAL(DTHETA),PDF)
51606        DTERM1=(DFREQ-DBLE(PDF))
51607C
51608        DTERM2=DX*(DTHETA+DLAMB)/(DTHETA*(DTHETA+DLAMB*DX))
51609        DSUM1=DSUM1 + DTERM1*(DTERM2 - 1.0D0)
51610        DTERM3=DX*(DX-1.0D0)/(DTHETA+DLAMB*DX) - DX
51611        DSUM2=DSUM2 + DTERM1*DTERM3
51612C
51613  200 CONTINUE
51614C
51615      FVEC(1)=DSUM1
51616      FVEC(2)=DSUM2
51617C
51618      RETURN
51619      END
51620      SUBROUTINE LPOFU2(N,XPAR,FVEC,IFLAG,Y,K)
51621C
51622C     PURPOSE--THIS ROUTINE COMPUTES THE FUNCTIONS FOR THE
51623C              LAGRANGE POISSON MAXIMUM LIKELIHOOD EQUATION.
51624C
51625C              THE MAXIMUM LIKELIHOOD ESTIMATE OF LAMBDA IS
51626C              THE SOLUTION OF THE EQUATION:
51627C
51628C                 SUM[X=0 to K][X*(X-1)*N(X)/(XBAR+(X-XBAR)*LAMBDA)] -
51629C                 N*XBAR = 0
51630C
51631C              THIS ROUTINE ASSUMES THE DATA IS IN THE FORM
51632C
51633C                   X(I)  FREQ(I)
51634C
51635C              CALLED BY DNSQE ROUTINE FOR SOLVING SIMULTANEOUS
51636C              NONLINEAR EQUATIONS.  NOTE THAT THE CALLING SEQUENCE
51637C              DID NOT ACCOMODATE A DATA ARRAY (AND ASSCIATED NUMBER OF
51638C              OBSERVATIONS), SO THESE WERE ADDED TO THE CALL LIST.
51639C              SINCE DNSQE ONLY PASSES ONE ARRAY, WE SPLIT INTO
51640C              TWO PARTS: 1 - MAXNXT/2 ARE THE FREQUENCIES WHILE
51641C              (MAXNXT/2 + 1) - MAXNXT ARE THE CLASS VALUES (I.E.,
51642C              THE X).
51643C     EXAMPLE--LAGRANGE POISSON MAXIMUM LIKELIHOOD Y
51644C     REFERENCES--CONSUL AND FAMOYE (2006), "LAGRANGIAN PROBABILITY
51645C                 DISTRIBUTIONS", BIRKHAUSER, CHAPTER 9.
51646C     WRITTEN BY--JAMES J. FILLIBEN
51647C                 STATISTICAL ENGINEERING DIVISION
51648C                 INFORMATION TECHNOLOGY LABORATORY
51649C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
51650C                 GAITHERSBUG, MD 20899-8980
51651C                 PHONE--301-975-2855
51652C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
51653C           OF THE NATIONAL BUREAU OF STANDARDS.
51654C     LANGUAGE--ANSI FORTRAN (1977)
51655C     VERSION NUMBER--2006/7
51656C     ORIGINAL VERSION--JULY      2006.
51657C
51658C---------------------------------------------------------------------
51659C
51660      DOUBLE PRECISION XPAR(*)
51661      DOUBLE PRECISION FVEC(*)
51662      REAL Y(*)
51663C
51664      DOUBLE PRECISION DLAMBD
51665      DOUBLE PRECISION DTERM1
51666      DOUBLE PRECISION DSUM1
51667      DOUBLE PRECISION DN
51668      DOUBLE PRECISION DX
51669      DOUBLE PRECISION DFREQ
51670C
51671      DOUBLE PRECISION XBAR
51672      COMMON/LPOCOM/XBAR,MAXROW,NTOT
51673C
51674C-----COMMON----------------------------------------------------------
51675C
51676      INCLUDE 'DPCOP2.INC'
51677C
51678C-----START POINT-----------------------------------------------------
51679C
51680      IFLAG=0
51681      N=2
51682C
51683      DLAMBD=XPAR(1)
51684      DN=DBLE(NTOT)
51685      IINDX=MAXROW/2
51686C
51687      DTERM1=DN*XBAR
51688C
51689      DSUM1=0.0D0
51690      DO100I=0,K
51691        DX=DBLE(Y(IINDX+I))
51692        DFREQ=Y(I+1)
51693        DSUM1=DSUM1 + DX*(DX-1.0D0)*DFREQ/(XBAR+(DX-XBAR)*DLAMBD)
51694  100 CONTINUE
51695C
51696      FVEC(1)=DSUM1 - DTERM1
51697C
51698      RETURN
51699      END
51700      SUBROUTINE LPOFU3(N,XPAR,FVEC,IFLAG,Y,K)
51701C
51702C     PURPOSE--THIS ROUTINE COMPUTES THE FUNCTIONS FOR THE
51703C              LAGRANGE-POISSON EWRC METHOD.  EWRC IS A
51704C              COMBINATION OF THE WEIGHTED DISCREPENCIES AND
51705C              MAXIMUM LIKELIHOOD METHODS.  THE EWRC ESTIMATES
51706C              ARE THE SOLUTIONS OF THE FOLLOWING EQUATIONS:
51707C
51708C              SUM[i=1 to k][Y(i)*(Y(i) - LPOPDF(X))]*
51709C                 [(X*(THETA+LAMBDA)/(THETA*(THETA+LAMBDA*X)) - 1] = 0
51710C
51711C              SUM[i=1 to k][Y(i)*(Y(i) - LPOPDF(X))]*
51712C                 [(X*(X-1)/(THETA+LAMBDA*X)) - X] = 0
51713C
51714C              WITH THETA AND LAMBDA DENOTING THE SHAPE PARAMETERS.
51715C              THIS ROUTINE ASSUMES THE DATA IS IN THE FORM
51716C
51717C                   X(I)  FREQ(I)
51718C
51719C              CALLED BY DNSQE ROUTINE FOR SOLVING SIMULTANEOUS
51720C              NONLINEAR EQUATIONS.  NOTE THAT THE CALLING SEQUENCE
51721C              DID NOT ACCOMODATE A DATA ARRAY (AND ASSCIATED NUMBER OF
51722C              OBSERVATIONS), SO THESE WERE ADDED TO THE CALL LIST.
51723C              SINCE DNSQE ONLY PASSES ONE ARRAY, WE SPLIT INTO
51724C              TWO PARTS: 1 - MAXNXT/2 ARE THE FREQUENCIES WHILE
51725C              (MAXNXT/2 + 1) - MAXNXT ARE THE CLASS VALUES (I.E.,
51726C              THE X).
51727C     EXAMPLE--LAGRANGE-POISSON MAXIMUM LIKELIHOOD Y
51728C     REFERENCE --FELIX FAMOYE AND CARL M. -S. LEE (1992),
51729C                 "ESTIMATION OF GENERALIZED POISSON DISTRIBUTION",
51730C                 COMMUNICATIONS IN STATISTICS -- SIMULATION,
51731C                 21(1), PP. 173-188.
51732C               --CONSUL AND FAMOYE (2006), "LAGRANGIAN PROBABILITY
51733C                 DISTRIBUTIONS", BIRKHAUSER, CHAPTER 9.
51734C     WRITTEN BY--JAMES J. FILLIBEN
51735C                 STATISTICAL ENGINEERING DIVISION
51736C                 INFORMATION TECHNOLOGY LABORATORY
51737C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
51738C                 GAITHERSBUG, MD 20899-8980
51739C                 PHONE--301-975-2855
51740C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
51741C           OF THE NATIONAL BUREAU OF STANDARDS.
51742C     LANGUAGE--ANSI FORTRAN (1977)
51743C     VERSION NUMBER--2006/8
51744C     ORIGINAL VERSION--AUGUST    2006.
51745C
51746C---------------------------------------------------------------------
51747C
51748      DOUBLE PRECISION XPAR(*)
51749      DOUBLE PRECISION FVEC(*)
51750      REAL Y(*)
51751C
51752      DOUBLE PRECISION DX
51753      DOUBLE PRECISION DTHETA
51754      DOUBLE PRECISION DLAMB
51755      DOUBLE PRECISION DTERM1
51756      DOUBLE PRECISION DTERM2
51757      DOUBLE PRECISION DTERM3
51758      DOUBLE PRECISION DSUM1
51759      DOUBLE PRECISION DSUM2
51760C
51761      DOUBLE PRECISION XBAR
51762      COMMON/LPOCOM/XBAR,MAXNXT,NTOT
51763C
51764C-----COMMON----------------------------------------------------------
51765C
51766      INCLUDE 'DPCOP2.INC'
51767C
51768C-----START POINT-----------------------------------------------------
51769C
51770C  COMPUTE SOME SUMS
51771C
51772      IFLAG=0
51773      N=2
51774C
51775      DLAMB=XPAR(1)
51776      DTHETA=XPAR(2)
51777C
51778      IINDX=MAXNXT/2
51779C
51780      DSUM1=0.0D0
51781      DSUM2=0.0D0
51782C
51783      DO200I=1,K
51784C
51785        DX=DBLE(Y(IINDX+I))
51786        DFREQ=Y(I)
51787C
51788        CALL LPOPDF(REAL(DX),REAL(DLAMB),REAL(DTHETA),PDF)
51789        DTERM1=DFREQ*(DFREQ-DBLE(PDF))
51790C
51791        DTERM2=DX*(DTHETA+DLAMB)/(DTHETA*(DTHETA+DLAMB*DX))
51792        DSUM1=DSUM1 + DTERM1*(DTERM2 - 1.0D0)
51793        DTERM3=DX*(DX-1.0D0)/(DTHETA+DLAMB*DX) - DX
51794        DSUM2=DSUM2 + DTERM1*DTERM3
51795C
51796  200 CONTINUE
51797C
51798      FVEC(1)=DSUM1
51799      FVEC(2)=DSUM2
51800C
51801      RETURN
51802      END
51803      SUBROUTINE LPOPDF(X,LAMBDA,THETA,PDF)
51804C
51805C     PURPOSE--THIS SUBROUTINE COMPUTES THE PROBABILITY DENSITY
51806C              FUNCTION VALUE AT THE SINGLE PRECISION VALUE X
51807C              FOR THE LAGRANGE-POISSON DISTRIBUTION
51808C              WITH SINGLE PRECISION SHAPE PARAMETERS LAMBDA AND
51809C              THETA.  THIS DISTRIBUTION IS DEFINED FOR ALL
51810C              NON-NEGATIVE INTEGER X >= 0.
51811C              THIS DISTRIBUTION HAS THE PROBABILITY FUNCTION
51812C              p(X;LAMBDA,THETA) = THETA*EXP(-THETA-LAMBDA*X)*
51813C                                  (THETA+LAMBDA*X)**(X-1)/
51814C                                  (X*(X-K)!)
51815C                                  X >= 0; 0 < LAMBDA < 1; THETA > 0.
51816C              NOTE THAT THIS DISTRIBUTION IS A SHIFTED AND
51817C              RE-PARAMETERIZED VERSION OF THE BOREL-TANNER
51818C              DISTRIBUTION.
51819C     INPUT  ARGUMENTS--X      = THE SINGLE PRECISION VALUE
51820C                                AT WHICH THE PROBABILITY DENSITY
51821C                                FUNCTION IS TO BE EVALUATED.
51822C                                X SHOULD BE A NON-NEGATIVE INTEGR
51823C                     --LAMBDA = THE SINGLE PRECISION VALUE
51824C                                OF THE FIRST SHAPE PARAMETER.
51825C                     --THETA  = THE SINGLE PRECISION VALUE
51826C                                OF THE SECOND SHAPE PARAMETER.
51827C     OUTPUT ARGUMENTS--PDF    = THE SINGLE PRECISION PROBABILITY
51828C                                MASS FUNCTION VALUE
51829C     OUTPUT--THE SINGLE PRECISION PROBABILITY DENSITY
51830C             FUNCTION VALUE PDF
51831C             FOR THE LAGRANGE-POISSON DISTRIBUTION
51832C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
51833C     RESTRICTIONS--X SHOULD BE A POSITIVE INTEGER
51834C                 --0 < LAMBDA < 1,  AND THETA > 0
51835C     OTHER DATAPAC   SUBROUTINES NEEDED--LNGAMM.
51836C     FORTRAN LIBRARY SUBROUTINES NEEDED--DEXP, DLOG
51837C     MODE OF INTERNAL OPERATIONS--DOUBLE PRECISION.
51838C     LANGUAGE--ANSI FORTRAN (1977)
51839C     REFERENCES--JOHNSON, KOTZ, AND KEMP (1992).  "UNIVARIATE
51840C                 DISCRETE DISTRIBUTIONS", SECOND EDITION,
51841C                 WILEY, PP. 394-400.
51842C     WRITTEN BY--JAMES J. FILLIBEN
51843C                 STATISTICAL ENGINEERING DIVISION
51844C                 INFORMATION TECHNOLOGY LABORATORY
51845C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
51846C                 GAITHERSBURG, MD 20899-8980
51847C                 PHONE--301-975-2855
51848C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
51849C           OF THE NATIONAL BUREAU OF STANDARDS.
51850C     LANGUAGE--ANSI FORTRAN (1977)
51851C     VERSION NUMBER--2006/5
51852C     ORIGINAL VERSION--MAY       2006.
51853C
51854C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
51855C
51856C---------------------------------------------------------------------
51857C
51858      REAL THETA
51859      REAL LAMBDA
51860C
51861      DOUBLE PRECISION DX
51862      DOUBLE PRECISION DLAMB
51863      DOUBLE PRECISION DTHETA
51864      DOUBLE PRECISION DPDF
51865      DOUBLE PRECISION DTERM1
51866      DOUBLE PRECISION DTERM2
51867      DOUBLE PRECISION DLNGAM
51868C
51869C-----COMMON----------------------------------------------------------
51870C
51871      INCLUDE 'DPCOP2.INC'
51872C
51873C-----START POINT-----------------------------------------------------
51874C
51875      PDF=0.0
51876C
51877C     CHECK THE INPUT ARGUMENTS FOR ERRORS
51878C
51879      IF(LAMBDA.LE.0.0 .OR. LAMBDA.GE.1.0)THEN
51880        WRITE(ICOUT,11)
51881        CALL DPWRST('XXX','BUG ')
51882        WRITE(ICOUT,46)LAMBDA
51883        CALL DPWRST('XXX','BUG ')
51884        PDF=0.0
51885        GOTO9999
51886      ENDIF
51887C
51888      IF(THETA.LE.0.0)THEN
51889        WRITE(ICOUT,12)
51890        CALL DPWRST('XXX','BUG ')
51891        WRITE(ICOUT,46)THETA
51892        CALL DPWRST('XXX','BUG ')
51893        PDF=0.0
51894        GOTO9999
51895      ENDIF
51896      INTX=INT(X+0.5)
51897      IF(INTX.LT.0)THEN
51898        WRITE(ICOUT,5)
51899        CALL DPWRST('XXX','BUG ')
51900        WRITE(ICOUT,47)INTX
51901        CALL DPWRST('XXX','BUG ')
51902        PDF=0.0
51903        GOTO9999
51904      ENDIF
51905C
51906    5 FORMAT('***** ERROR--THE FIRST INPUT ARGUMENT TO THE LPOPDF ',
51907     1'SUBROUTINE IS NON-POSITIVE')
51908   11 FORMAT('***** ERROR--THE SECOND INPUT ARGUMENT TO THE ',
51909     1' LPOPDF SUBROUTINE IS OUTSIDE THE ALLOWABLE (0,1) INTERVAL')
51910   12 FORMAT('***** ERROR--THE THIRD INPUT ARGUMENT TO THE ',
51911     1' LPOPDF SUBROUTINE IS NON-POSITIVE')
51912   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',G15.7)
51913   47 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',I8)
51914C
51915      DX=DBLE(INTX)
51916      DLAMB=DBLE(LAMBDA)
51917      DTHETA=DBLE(THETA)
51918C
51919      IF(INTX.EQ.0)THEN
51920        DPDF=DEXP(-DTHETA)
51921      ELSEIF(INTX.EQ.1)THEN
51922        DPDF=DTHETA*DEXP(-DTHETA-DLAMB)
51923      ELSE
51924        DTERM1=DLOG(DTHETA) + (-DTHETA-DLAMB*DX) +
51925     1         (DX-1.0D0)*DLOG(DTHETA+DLAMB*DX)
51926        DTERM2=DLNGAM(DX+1.0D0)
51927        DPDF=DEXP(DTERM1 - DTERM2)
51928      ENDIF
51929      PDF=REAL(DPDF)
51930C
51931 9999 CONTINUE
51932      RETURN
51933      END
51934      SUBROUTINE LPOPPF(P,LAMBDA,THETA,PPF)
51935C
51936C     PURPOSE--THIS SUBROUTINE COMPUTES THE PERCENT POINT
51937C              FUNCTION VALUE AT THE SINGLE PRECISION VALUE P
51938C              FOR THE LAGRANGE-POISSON DISTRIBUTION
51939C              WITH SINGLE PRECISION SHAPE PARAMETERS LAMBDA AND
51940C              THETA.  THIS DISTRIBUTION IS DEFINED FOR ALL
51941C              NON-NEGATIVE INTEGER X >= 0.
51942C              THIS DISTRIBUTION HAS THE PROBABILITY FUNCTION
51943C              p(X;LAMBDA,THETA) = THETA*EXP(-THETA-LAMBDA*X)*
51944C                                  (THETA+LAMBDA*X)**(X-1)/
51945C                                  (X*(X-K)!)
51946C                                  X >= 0; 0 < LAMBDA < 1; THETA > 0.
51947C              NOTE THAT THIS DISTRIBUTION IS A SHIFTED AND
51948C              RE-PARAMETERIZED VERSION OF THE BOREL-TANNER
51949C              DISTRIBUTION.
51950C     INPUT  ARGUMENTS--P      = THE SINGLE PRECISION VALUE
51951C                                AT WHICH THE PERCENT POINT
51952C                                FUNCTION IS TO BE EVALUATED.
51953C                                X SHOULD BE A NON-NEGATIVE INTEGR
51954C                     --LAMBDA = THE SINGLE PRECISION VALUE
51955C                                OF THE FIRST SHAPE PARAMETER.
51956C                     --THETA  = THE SINGLE PRECISION VALUE
51957C                                OF THE SECOND SHAPE PARAMETER.
51958C     OUTPUT ARGUMENTS--PPF    = THE SINGLE PRECISION PERCENT POINT
51959C                                FUNCTION VALUE
51960C     OUTPUT--THE SINGLE PRECISION PERCENT POINT
51961C             FUNCTION VALUE PPF
51962C             FOR THE LAGRANGE-POISSON DISTRIBUTION
51963C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
51964C     RESTRICTIONS--0 <= P < 1
51965C                 --0 < LAMBDA < 1,  AND THETA > 0
51966C     OTHER DATAPAC   SUBROUTINES NEEDED--LNGAMM.
51967C     FORTRAN LIBRARY SUBROUTINES NEEDED--DEXP, DLOG
51968C     MODE OF INTERNAL OPERATIONS--DOUBLE PRECISION.
51969C     LANGUAGE--ANSI FORTRAN (1977)
51970C     REFERENCES--JOHNSON, KOTZ, AND KEMP (1992).  "UNIVARIATE
51971C                 DISCRETE DISTRIBUTIONS", SECOND EDITION,
51972C                 WILEY, PP. 394-400.
51973C     WRITTEN BY--JAMES J. FILLIBEN
51974C                 STATISTICAL ENGINEERING DIVISION
51975C                 INFORMATION TECHNOLOGY LABORATORY
51976C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
51977C                 GAITHERSBURG, MD 20899-8980
51978C                 PHONE--301-975-2855
51979C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
51980C           OF THE NATIONAL BUREAU OF STANDARDS.
51981C     LANGUAGE--ANSI FORTRAN (1977)
51982C     VERSION NUMBER--2006/5
51983C     ORIGINAL VERSION--MAY       2006.
51984C
51985C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
51986C
51987C---------------------------------------------------------------------
51988C
51989      REAL P
51990      REAL THETA
51991      REAL LAMBDA
51992C
51993      DOUBLE PRECISION DX
51994      DOUBLE PRECISION DP
51995      DOUBLE PRECISION DLAMB
51996      DOUBLE PRECISION DTHETA
51997      DOUBLE PRECISION DCDF
51998      DOUBLE PRECISION DPDF
51999      DOUBLE PRECISION DTERM1
52000      DOUBLE PRECISION DTERM2
52001      DOUBLE PRECISION DEPS
52002      DOUBLE PRECISION DLNGAM
52003C
52004C-----COMMON----------------------------------------------------------
52005C
52006      INCLUDE 'DPCOMC.INC'
52007      INCLUDE 'DPCOP2.INC'
52008C
52009C-----START POINT-----------------------------------------------------
52010C
52011      PPF=0.0
52012C
52013C     CHECK THE INPUT ARGUMENTS FOR ERRORS
52014C
52015      PPF=0.0
52016      IF(P.LT.0.0.OR.P.GE.1.0)THEN
52017        WRITE(ICOUT,1)
52018        CALL DPWRST('XXX','BUG ')
52019        WRITE(ICOUT,46)P
52020        CALL DPWRST('XXX','BUG ')
52021        GOTO9999
52022      ELSEIF(LAMBDA.LE.0.0 .OR. LAMBDA.GE.1.0)THEN
52023        WRITE(ICOUT,11)
52024        CALL DPWRST('XXX','BUG ')
52025        WRITE(ICOUT,46)LAMBDA
52026        CALL DPWRST('XXX','BUG ')
52027        GOTO9999
52028      ELSEIF(THETA.LE.0.0)THEN
52029        WRITE(ICOUT,12)
52030        CALL DPWRST('XXX','BUG ')
52031        WRITE(ICOUT,46)THETA
52032        CALL DPWRST('XXX','BUG ')
52033        GOTO9999
52034      ENDIF
52035C
52036    1 FORMAT('***** ERROR--THE FIRST ARGUMENT TO LPOPPF ',
52037     1       'IS OUTSIDE THE ALLOWABLE (0,1] INTERVAL.')
52038   11 FORMAT('***** ERROR--THE SECOND ARGUMENT TO LPOPPF ',
52039     1       'IS OUTSIDE THE ALLOWABLE (0,1) INTERVAL')
52040   12 FORMAT('***** ERROR--THE THIRD ARGUMENT TO LPOPPF ',
52041     1       'IS NON-POSITIVE')
52042   46 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',G15.7)
52043C
52044      DP=DBLE(P)
52045      DLAMB=DBLE(LAMBDA)
52046      DTHETA=DBLE(THETA)
52047C
52048      IF(P.LE.0.0)THEN
52049        PPF=0.0
52050        GOTO9999
52051      ENDIF
52052C
52053C     COMPUTE PDF FOR X = 0
52054C
52055      DEPS=1.0D-7
52056      DCDF=DEXP(-DTHETA)
52057C
52058      IF(DCDF.GE.DP-DEPS)THEN
52059        PPF=0.0
52060        GOTO9999
52061      ENDIF
52062      I=0
52063C
52064      DCDF=DCDF + DTHETA*DEXP(-DTHETA-DLAMB)
52065      IF(DCDF.GE.DP-DEPS)THEN
52066        PPF=1.0
52067        GOTO9999
52068      ENDIF
52069      I=1
52070C
52071  100 CONTINUE
52072        I=I+1
52073        IF(DBLE(I).GE.DBLE(I1MACH(9)))THEN
52074          WRITE(ICOUT,55)
52075   55     FORMAT('***** ERROR--THE COMPUTED PERCENT POINT VALUE ',
52076     1           'EXCEEDS THE LARGEST MACHINE INTEGER.')
52077          CALL DPWRST('XXX','BUG ')
52078          PPF=0.0
52079          GOTO9999
52080        ENDIF
52081        DX=DBLE(I)
52082        DTERM1=DLOG(DTHETA) + (-DTHETA-DLAMB*DX) +
52083     1         (DX-1.0D0)*DLOG(DTHETA+DLAMB*DX)
52084        DTERM2=DLNGAM(DX+1.0D0)
52085        DPDF=DEXP(DTERM1 - DTERM2)
52086        DCDF=DCDF + DPDF
52087        IF(DCDF.GE.DP-DEPS)THEN
52088          PPF=REAL(I)
52089          GOTO9999
52090        ENDIF
52091      GOTO100
52092C
52093 9999 CONTINUE
52094      RETURN
52095      END
52096      SUBROUTINE LPORAN(N,LAMBDA,THETA,ISEED,X)
52097C
52098C     PURPOSE--THIS SUBROUTINE GENERATES A RANDOM SAMPLE OF SIZE N
52099C              FROM THE LAGRANGE-POISSON DISTRIBUTION
52100C              WITH SHAPE PARAMETERS LAMBDA AND THETA.
52101C              THIS DISTRIBUTION IS DEFINED FOR ALL
52102C              NON-NEGATIVE INTEGER X >= 0.
52103C              THIS DISTRIBUTION HAS THE PROBABILITY FUNCTION
52104C              p(X;LAMBDA,THETA) = THETA*EXP(-THETA-LAMBDA*X)*
52105C                                  (THETA+LAMBDA*X)**(X-1)/
52106C                                  (X*(X-K)!)
52107C                                  X >= 0; 0 < LAMBDA < 1; THETA > 0.
52108C              NOTE THAT THIS DISTRIBUTION IS A SHIFTED AND
52109C              RE-PARAMETERIZED VERSION OF THE BOREL-TANNER
52110C              DISTRIBUTION.
52111C     INPUT  ARGUMENTS--N      = THE DESIRED INTEGER NUMBER
52112C                                OF RANDOM NUMBERS TO BE
52113C                                GENERATED.
52114C                     --LAMBDA = THE SINGLE PRECISION VALUE
52115C                                OF THE FIRST SHAPE PARAMETER.
52116C                     --THETA  = THE SINGLE PRECISION VALUE
52117C                                OF THE SECOND SHAPE PARAMETER.
52118C     OUTPUT ARGUMENTS--X      = A SINGLE PRECISION VECTOR
52119C                                (OF DIMENSION AT LEAST N)
52120C                                INTO WHICH THE GENERATED
52121C                                RANDOM SAMPLE WILL BE PLACED.
52122C     OUTPUT--A RANDOM SAMPLE OF SIZE N
52123C             FROM THE LAGRANGE-POISSON DISTRIBUTION
52124C             WITH SHAPE PARAMETERS LAMBDA AND THETA.
52125C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
52126C     RESTRICTIONS--THERE IS NO RESTRICTION ON THE MAXIMUM VALUE
52127C                   OF N FOR THIS SUBROUTINE.
52128C                 --0 < LAMBDA < 1, THETA > 0
52129C     OTHER DATAPAC   SUBROUTINES NEEDED--UNIRAN, LPOPPF
52130C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE.
52131C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
52132C     LANGUAGE--ANSI FORTRAN (1977)
52133C     REFERENCES--JOHNSON, KOTZ, AND KEMP (1992).  "UNIVARIATE
52134C                 DISCRETE DISTRIBUTIONS", SECOND EDITION,
52135C                 WILEY, PP. 394-400.
52136C     WRITTEN BY--JAMES J. FILLIBEN
52137C                 STATISTICAL ENGINEERING DIVISION
52138C                 INFORMATION TECHNOLOGY LABORATORY
52139C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
52140C                 GAITHERSBURG, MD 20899-8980
52141C                 PHONE--301-975-2899
52142C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
52143C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
52144C     LANGUAGE--ANSI FORTRAN (1977)
52145C     VERSION NUMBER--2006/6
52146C     ORIGINAL VERSION--JUNE      2006.
52147C
52148C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
52149C
52150C---------------------------------------------------------------------
52151C
52152      REAL LAMBDA
52153      REAL THETA
52154      DIMENSION X(*)
52155C
52156CCCCC DIMENSION U(2)
52157C
52158CCCCC DOUBLE PRECISION PI
52159CCCCC DOUBLE PRECISION C
52160CCCCC DOUBLE PRECISION V
52161CCCCC DOUBLE PRECISION Y
52162CCCCC DOUBLE PRECISION DK
52163CCCCC DOUBLE PRECISION DLAMB
52164CCCCC DOUBLE PRECISION U1
52165CCCCC DOUBLE PRECISION W
52166CCCCC DOUBLE PRECISION WT
52167C
52168C-----COMMON----------------------------------------------------------
52169C
52170      INCLUDE 'DPCOP2.INC'
52171C
52172C-----START POINT-----------------------------------------------------
52173C
52174C     CHECK THE INPUT ARGUMENTS FOR ERRORS
52175C
52176      IF(N.LT.1)THEN
52177        WRITE(ICOUT, 5)
52178    5   FORMAT('***** ERROR--THE REQUESTED NUMBER OF ',
52179     1         'LAGRANGE-POISSON RANDOM NUMBERS IS NON-POSITIVE')
52180        CALL DPWRST('XXX','BUG ')
52181        WRITE(ICOUT,47)N
52182   47   FORMAT('***** THE VALUE OF THE ARGUMENT IS ',I8,'.')
52183        CALL DPWRST('XXX','BUG ')
52184        GOTO9999
52185      ELSEIF(LAMBDA.LE.0.0 .OR. LAMBDA.GE.1.0)THEN
52186        WRITE(ICOUT,11)
52187   11   FORMAT('***** ERROR--THE LAMBDA PARAMETER FOR THE ',
52188     1         'LAGRANGE-POISSON RANDOM NUMBERS IS OUTSIDE THE ',
52189     1         '(0,1) INTERVAL.')
52190        CALL DPWRST('XXX','BUG ')
52191        WRITE(ICOUT,46)LAMBDA
52192   46   FORMAT('***** THE VALUE OF THE ARGUMENT IS ',G15.7,'.')
52193        CALL DPWRST('XXX','BUG ')
52194        GOTO9999
52195      ELSEIF(THETA.LE.0.0)THEN
52196        WRITE(ICOUT,12)
52197   12   FORMAT('***** ERROR--THE THETA PARAMETER FOR THE ',
52198     1         'LAGRANGE-POISSON RANDOM NUMBERS IS NON-POSITIVE.')
52199        CALL DPWRST('XXX','BUG ')
52200        WRITE(ICOUT,46)THETA
52201        CALL DPWRST('XXX','BUG ')
52202        GOTO9999
52203      ENDIF
52204C
52205C     GENERATE N LAGRANGE-POISSON DISTRIBUTION RANDOM NUMBERS
52206C     USING THE ALGORITHM GIVEN IN THE DEVROYE PAPER.
52207C
52208C     I DON'T THINK I HAVE THIS QUITE RIGHT, SO JUST USE
52209C     INVERSE PPF METHOD FOR NOW.
52210C
52211CCCCC NTEMP=2
52212CCCCC C=1.0D0/DSQRT(2.0D0*PI)
52213CCCCC DK=DBLE(IK)
52214CCCCC DLAMB=DBLE(LAMBDA)
52215C
52216CCCCC DO100I=1,N
52217C
52218C110    CONTINUE
52219CCCCC   CALL UNIRAN(NTEMP,ISEED,U)
52220CCCCC   U1=DBLE(U(1))
52221C
52222CCCCC   V=(1.0D0 + 4.0D0*C*DSQRT(DK))*U1
52223C
52224CCCCC   IF(V.LE.1.0D0)THEN
52225CCCCC     X(I)=REAL(IK)
52226CCCCC     GOTO100
52227CCCCC   ELSEIF(V.GT.1.0D0 .AND. V.LE.1.0D0+2.0D0*C*DSQRT(DK))THEN
52228CCCCC     Y=DK + 1.0D0 + (V - 1.0D0)**2/(4.0D0*C*C)
52229CCCCC     T=C/DSQRT(Y-1.0D0-DK)
52230CCCCC   ELSE
52231CCCCC     Y=DK + 1.0D0 + (2.0D0*DK*C/(1.0D0+4.0D0*C*DSQRT(DK)-V))**2
52232CCCCC     T=DK*C/(Y-1.0D0-DK)**1.5
52233CCCCC   ENDIF
52234C
52235CCCCC   W=DBLE(U(2))
52236CCCCC   WT=W*T
52237CCCCC   CALL LPOCDF(REAL(Y),LAMBDA,K,CDF)
52238CCCCC   CALL LPOPDF(REAL(Y),LAMBDA,K,PDF)
52239CCCCC   CALL LPOPDF(REAL(Y),LAMBDA,K,PPF)
52240CCCCC   IF(WT.LT.DBLE(PPF))THEN
52241CCCCC     IY=INT(Y+0.5)
52242CCCCC     X(I)=REAL(IY)
52243CCCCC     GOTO100
52244CCCCC   ELSE
52245CCCCC     GOTO110
52246CCCCC   ENDIF
52247C
52248C 100 CONTINUE
52249C
52250      CALL UNIRAN(N,ISEED,X)
52251      DO100I=1,N
52252        XTEMP=X(I)
52253        CALL LPOPPF(XTEMP,LAMBDA,THETA,PPF)
52254        X(I)=PPF
52255  100 CONTINUE
52256C
52257 9999 CONTINUE
52258C
52259      RETURN
52260      END
52261      SUBROUTINE LPVARI(X,N,P,IWRITE,XTEMP,DTEMP,MAXNXT,XLPVAR,
52262     1                 IQUASE,IBUGA3,IERROR)
52263C
52264C     PURPOSE--THIS SUBROUTINE COMPUTES THE APPROXIMATE VARIANCE
52265C              OF THE SAMPLE LP LOCATION ESTIMATE OF THE DATA IN THE
52266C              INPUT VECTOR X.
52267C
52268C              GIVEN THE MODEL
52269C
52270C                 X(i) = ALPHA + E(i)
52271C
52272C              THE L(p) ESTIMATOR OF ALPHA IS
52273C
52274C                 L(p)(X(i)) = Arg(alpha)
52275C                     MIN{(SUM[i=1 to n][|X(i) - ALPHA|**p)**(1/p)}
52276C
52277C              OR EQUIVALENTLY
52278C
52279C                 L(p)(X(i)) = Arg(alpha)
52280C                     MIN{SUM[i=1 to n][|X(i) - ALPHA|**p}
52281C
52282C              THIS ESTIMATE IS THE SOLUTION OF THE EQUATION
52283C
52284C              SUM[i=1 to n][|X(i)-alpha|**(p-1)*SIGN(x(i)-ALPHA) = 0
52285C
52286C              THERE ARE 3 SPECIAL CASES:
52287C
52288C               P = 1   - SAMPLE MEDIAN
52289C               P = 2   - SAMPLE MEAN
52290C               P = INF - SAMPLE MID-RANGE
52291C
52292C               THE ESTIMATE OF THE ASYMPTOTIC VARIANCE IS THEN:
52293C
52294C               w(p)^2 = m(2*p-2)/[(p-1)*m(p-2)]**2
52295C
52296C               WHERE
52297C
52298C               m(r) = (1/n)*SUM[i=1 to n][|X(i)-Lp(X(i))|**r]
52299C
52300C               THE VARIANCE OF THE LP ESTIMATE IS THEN OBTAINED
52301C               BY DIVIDING w(p)^2 BY N.
52302C
52303C     INPUT  ARGUMENTS--X      = THE SINGLE PRECISION VECTOR OF
52304C                                (UNSORTED OR SORTED) OBSERVATIONS.
52305C                     --N      = THE INTEGER NUMBER OF OBSERVATIONS
52306C                                IN THE VECTOR X.
52307C                     --P      = THE SINGLE PRECISION VALUE OF THE
52308C                                "p" PARAMETER.
52309C     OUTPUT ARGUMENTS--XLPVAR = THE SINGLE PRECISION VALUE OF THE
52310C                                COMPUTED VARIANCE OF THE SAMPLE
52311C                                LP LOCATION ESTIMATE.
52312C     OUTPUT--THE COMPUTED SINGLE PRECISION VALUE OF THE VARIANCE OF
52313C             THE SAMPLE LP LOCATION ESTIMATE.
52314C     OTHER DATAPAC   SUBROUTINES NEEDED--SORT, LPLOC.
52315C     FORTRAN LIBRARY SUBROUTINES NEEDED--DABS.
52316C     MODE OF INTERNAL OPERATIONS--DOUBLE PRECISION.
52317C     LANGUAGE--ANSI FORTRAN (1977)
52318C     REFERENCES--FRANCESCA PENNECCHI AND LUCA CALLEGARO, "BETWEEN
52319C                 THE MEAN AND THE MEDIAN: THE Lp ESTIMATOR",
52320C                 METROLOGIA, 43, 2006, PP. 213-219.
52321C
52322C     NOTE--SEEMS TO BE DISCREPANCY WITH FRANCESCA RESULTS IN
52323C           PAPER AND RESULT RETURNED HERE.  BOOTSTRAP ESTIMATE
52324C           IS CLOSE TO REPORTED RESULT, SUGGESTING THAT THE
52325C           PUBLISHED FORMULA MAY BE IN ERROR.  FRANCESCA WILL
52326C           INVESTIGATE, CODE BELOW WILL BE ADJUSTED WHEN I
52327C           HEAR BACK FROM HER.
52328C     WRITTEN BY--JAMES J. FILLIBEN
52329C                 STATISTICAL ENGINEERING DIVISION
52330C                 INFORMATION TECHNOLOGY LABORATORY
52331C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
52332C                 GAITHERSBURG, MD 20899-8980
52333C                 PHONE--301-975-2855
52334C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
52335C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
52336C     LANGUAGE--ANSI FORTRAN (1977)
52337C     ORIGINAL VERSION--NOVEMBER  2007.
52338C
52339C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
52340C
52341      CHARACTER*4 IQUASE
52342      CHARACTER*4 IWRITE
52343      CHARACTER*4 IBUGA3
52344      CHARACTER*4 IERROR
52345C
52346      CHARACTER*4 ISUBN1
52347      CHARACTER*4 ISUBN2
52348C
52349C---------------------------------------------------------------------
52350C
52351      DIMENSION X(*)
52352      DIMENSION XTEMP(*)
52353      DOUBLE PRECISION DTEMP(*)
52354C
52355      DOUBLE PRECISION DX
52356      DOUBLE PRECISION DP
52357      DOUBLE PRECISION DSUM1
52358      DOUBLE PRECISION DSUM2
52359      DOUBLE PRECISION DTERM1
52360      DOUBLE PRECISION DTERM2
52361      DOUBLE PRECISION DR1
52362      DOUBLE PRECISION DR2
52363      DOUBLE PRECISION DLP
52364      DOUBLE PRECISION DLPVAR
52365C
52366C-----COMMON----------------------------------------------------------
52367C
52368      INCLUDE 'DPCOP2.INC'
52369C
52370C-----START POINT-----------------------------------------------------
52371C
52372      ISUBN1='LPVA'
52373      ISUBN2='RI  '
52374      IERROR='NO'
52375C
52376      IF(IBUGA3.EQ.'ON')THEN
52377        WRITE(ICOUT,999)
52378  999   FORMAT(1X)
52379        CALL DPWRST('XXX','BUG ')
52380        WRITE(ICOUT,51)
52381   51   FORMAT('***** AT THE BEGINNING OF LPVARI--')
52382        CALL DPWRST('XXX','BUG ')
52383        WRITE(ICOUT,52)IBUGA3,N,P
52384   52   FORMAT('IBUGA3,N,P = ',A4,2X,I10,2X,G15.7)
52385        CALL DPWRST('XXX','BUG ')
52386        DO55I=1,MIN(N,100)
52387          WRITE(ICOUT,56)I,X(I)
52388   56     FORMAT('I,X(I) = ',I8,G15.7)
52389          CALL DPWRST('XXX','BUG ')
52390   55   CONTINUE
52391      ENDIF
52392C
52393C               **********************
52394C               **  COMPUTE LPLOC   **
52395C               **********************
52396C
52397C               ********************************************
52398C               **  STEP 1--                              **
52399C               **  CHECK THE INPUT ARGUMENTS FOR ERRORS  **
52400C               ********************************************
52401C
52402      AN=N
52403C
52404      IF(N.LT.1 .OR.N.GT.MAXNXT)THEN
52405        WRITE(ICOUT,999)
52406        CALL DPWRST('XXX','BUG ')
52407        WRITE(ICOUT,111)
52408  111   FORMAT('***** ERROR IN VARIANCE OF LP LOCATION--')
52409        CALL DPWRST('XXX','BUG ')
52410        WRITE(ICOUT,112)
52411  112   FORMAT('      THE INPUT NUMBER OF OBSERVATIONS IN THE')
52412        CALL DPWRST('XXX','BUG ')
52413        WRITE(ICOUT,113)
52414  113   FORMAT('      RESPONSE VARIABLE IS LESS THAN 1 OR GREATER')
52415        CALL DPWRST('XXX','BUG ')
52416        WRITE(ICOUT,115)MAXNXT
52417  115   FORMAT('      THAN ',I10)
52418        CALL DPWRST('XXX','BUG ')
52419        WRITE(ICOUT,117)N
52420  117   FORMAT('      THE INPUT NUMBER OF OBSERVATIONS = ',I10,'.')
52421        CALL DPWRST('XXX','BUG ')
52422        IERROR='YES'
52423        GOTO9000
52424      ENDIF
52425C
52426      IF(P.LT.1.0)THEN
52427        WRITE(ICOUT,999)
52428        CALL DPWRST('XXX','BUG ')
52429        WRITE(ICOUT,111)
52430        CALL DPWRST('XXX','BUG ')
52431        WRITE(ICOUT,122)
52432  122   FORMAT('      THE P PARAMETER IS LESS THAN 1.')
52433        CALL DPWRST('XXX','BUG ')
52434        WRITE(ICOUT,127)P
52435  127   FORMAT('      THE VALUE OF P = ',G15.7)
52436        CALL DPWRST('XXX','BUG ')
52437        IERROR='YES'
52438        GOTO9000
52439      ENDIF
52440C
52441      IF(N.EQ.1)THEN
52442        XLPVAR=0.0
52443        GOTO8000
52444      ENDIF
52445C
52446      HOLD=X(1)
52447      DO135I=2,N
52448        IF(X(I).NE.HOLD)GOTO139
52449  135 CONTINUE
52450      XLPVAR=0.0
52451      GOTO8000
52452  139 CONTINUE
52453C
52454      CALL LPLOC(X,N,P,IWRITE,XTEMP,DTEMP,MAXNXT,XLP,
52455     1           IBUGA3,IERROR)
52456C
52457C               ************************************
52458C               **  STEP 2--                      **
52459C               **  COMPUTE THE VARIANCE OF THE   **
52460C               **  Lp ESTIMATE.                  **
52461C               ************************************
52462C
52463       EPS=1.0E-06
52464       IF(ABS(P-1.0).LE.EPS)THEN
52465         P100=0.5
52466         CALL QUANSE(P100,X,N,IWRITE,XTEMP,MAXNXT,IQUASE,XLPVAR,
52467     1               IBUGA3,IERROR)
52468       ELSE
52469         DLP=DBLE(XLP)
52470         DP=DBLE(P)
52471         DSUM1=0.0D0
52472         DSUM2=0.0D0
52473         DR1=2.0D0*DP - 2.0D0
52474         DR2=DP - 2.0D0
52475C
52476         DO1000I=1,N
52477           DX=DBLE(X(I))
52478           DTERM1=DABS(DX-DLP)**DR1
52479           DTERM2=DABS(DX-DLP)**DR2
52480           DSUM1=DSUM1 + DTERM1
52481           DSUM2=DSUM2 + DTERM2
52482 1000   CONTINUE
52483C
52484        DTERM1=DSUM1/(DSUM2**2)
52485        DTERM2=DBLE(N)/((DP-1.0D0)**2)
52486        DLPVAR=DTERM1*DTERM2/DBLE(N)
52487        XLPVAR=REAL(DLPVAR)
52488      ENDIF
52489C
52490C               *******************************
52491C               **  STEP 3--                 **
52492C               **  WRITE OUT A LINE         **
52493C               **  OF SUMMARY INFORMATION.  **
52494C               *******************************
52495C
52496 8000 CONTINUE
52497      IF(IFEEDB.EQ.'ON' .AND. IWRITE.EQ.'ON')THEN
52498        WRITE(ICOUT,999)
52499        CALL DPWRST('XXX','BUG ')
52500        WRITE(ICOUT,811)N
52501  811   FORMAT('THE VARIANCE OF THE Lp LOCATION ESTIMATE OF THE ',I8,
52502     1         ' OBSERVATIONS')
52503        CALL DPWRST('XXX','BUG ')
52504        WRITE(ICOUT,813)XLPVAR,P
52505  813   FORMAT('= ',G15.7,'(P = ',F5.2,')')
52506        CALL DPWRST('XXX','BUG ')
52507      ENDIF
52508C
52509C               *****************
52510C               **  STEP 90--  **
52511C               **  EXIT.      **
52512C               *****************
52513C
52514 9000 CONTINUE
52515      IF(IBUGA3.EQ.'ON')THEN
52516        WRITE(ICOUT,999)
52517        CALL DPWRST('XXX','BUG ')
52518        WRITE(ICOUT,9011)
52519 9011   FORMAT('***** AT THE END       OF LPVARI--')
52520        CALL DPWRST('XXX','BUG ')
52521        WRITE(ICOUT,9012)IBUGA3,IERROR
52522 9012   FORMAT('IBUGA3,IERROR = ',A4,2X,A4)
52523        CALL DPWRST('XXX','BUG ')
52524        WRITE(ICOUT,9013)N
52525 9013   FORMAT('N = ',I8)
52526        CALL DPWRST('XXX','BUG ')
52527        WRITE(ICOUT,9015)XLP,XLPVAR
52528 9015   FORMAT('XLP,XLPVAR = ',2G15.7)
52529        CALL DPWRST('XXX','BUG ')
52530        WRITE(ICOUT,9017)DR1,DR2,DSUM1,DSUM2
52531 9017   FORMAT('DR1,DR2,DSUM1,DSUM2 = ',4G15.7)
52532        CALL DPWRST('XXX','BUG ')
52533      ENDIF
52534C
52535      RETURN
52536      END
52537      LOGICAL FUNCTION LSAME( CA, CB )
52538*
52539*  -- LAPACK auxiliary routine (version 1.1) --
52540*     Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
52541*     Courant Institute, Argonne National Lab, and Rice University
52542*     February 29, 1992
52543*
52544*     .. Scalar Arguments ..
52545      CHARACTER          CA, CB
52546*     ..
52547*
52548*  Purpose
52549*  =======
52550*
52551*  LSAME returns .TRUE. if CA is the same letter as CB regardless of
52552*  case.
52553*
52554*  Arguments
52555*  =========
52556*
52557*  CA      (input) CHARACTER*1
52558*  CB      (input) CHARACTER*1
52559*          CA and CB specify the single characters to be compared.
52560*
52561*     .. Intrinsic Functions ..
52562      INTRINSIC          ICHAR
52563*     ..
52564*     .. Local Scalars ..
52565      INTEGER            INTA, INTB, ZCODE
52566*     ..
52567*     .. Executable Statements ..
52568*
52569*     Test if the characters are equal
52570*
52571      LSAME = CA.EQ.CB
52572      IF( LSAME )
52573     $   RETURN
52574*
52575*     Now test for equivalence if both characters are alphabetic.
52576*
52577      ZCODE = ICHAR( 'Z' )
52578*
52579*     Use 'Z' rather than 'A' so that ASCII can be detected on Prime
52580*     machines, on which ICHAR returns a value with bit 8 set.
52581*     ICHAR('A') on Prime machines returns 193 which is the same as
52582*     ICHAR('A') on an EBCDIC machine.
52583*
52584      INTA = ICHAR( CA )
52585      INTB = ICHAR( CB )
52586*
52587      IF( ZCODE.EQ.90 .OR. ZCODE.EQ.122 ) THEN
52588*
52589*        ASCII is assumed - ZCODE is the ASCII code of either lower or
52590*        upper case 'Z'.
52591*
52592         IF( INTA.GE.97 .AND. INTA.LE.122 ) INTA = INTA - 32
52593         IF( INTB.GE.97 .AND. INTB.LE.122 ) INTB = INTB - 32
52594*
52595      ELSE IF( ZCODE.EQ.233 .OR. ZCODE.EQ.169 ) THEN
52596*
52597*        EBCDIC is assumed - ZCODE is the EBCDIC code of either lower or
52598*        upper case 'Z'.
52599*
52600         IF( INTA.GE.129 .AND. INTA.LE.137 .OR.
52601     $       INTA.GE.145 .AND. INTA.LE.153 .OR.
52602     $       INTA.GE.162 .AND. INTA.LE.169 ) INTA = INTA + 64
52603         IF( INTB.GE.129 .AND. INTB.LE.137 .OR.
52604     $       INTB.GE.145 .AND. INTB.LE.153 .OR.
52605     $       INTB.GE.162 .AND. INTB.LE.169 ) INTB = INTB + 64
52606*
52607      ELSE IF( ZCODE.EQ.218 .OR. ZCODE.EQ.250 ) THEN
52608*
52609*        ASCII is assumed, on Prime machines - ZCODE is the ASCII code
52610*        plus 128 of either lower or upper case 'Z'.
52611*
52612         IF( INTA.GE.225 .AND. INTA.LE.250 ) INTA = INTA - 32
52613         IF( INTB.GE.225 .AND. INTB.LE.250 ) INTB = INTB - 32
52614      END IF
52615      LSAME = INTA.EQ.INTB
52616*
52617*     RETURN
52618*
52619*     End of LSAME
52620*
52621      END
52622      SUBROUTINE LSNCDF(X,ALMBDA,SD,CDF)
52623C
52624C     PURPOSE--THIS SUBROUTINE COMPUTES THE CUMULATIVE DISTRIBUTION
52625C              FUNCTION VALUE FOR THE LOG-SKEW-NORMAL DISTRIBUTION
52626C              WITH SHAPE PARAMETERS = LAMBDA AND SD (SD IS THE
52627C              SCALE PARAMETER OF THE CORRESPONDING NORMAL
52628C              DISTRIBUTION).
52629C              THIS DISTRIBUTION IS DEFINED FOR POSITIVE X AND HAS
52630C              THE CUMULATIVE DISTRIBUTION FUNCTION
52631C                 LSNCDF(X,LAMBDA,SD) = SNCDF(LOG(X)/SD,LAMBDA)
52632C              WITH SNPDF DENOTING THE SKEW-NORMAL PROBABILITY
52633C              DENSITY FUNCTION.
52634C     INPUT  ARGUMENTS--X      = THE SINGLE PRECISION VALUE AT
52635C                                WHICH THE CUMULATIVE DISTRIBUTION
52636C                                FUNCTION IS TO BE EVALUATED.
52637C                                X SHOULD BE NON-NEGATIVE.
52638C                     --ALMBDA = THE FIRST SHAPE PARAMETER
52639C                     --SD     = THE SECOND SHAPE PARAMETER
52640C     OUTPUT ARGUMENTS--PDF    = THE SINGLE PRECISION CUMULATIVE
52641C                                DISTRIBUTION FUNCTION VALUE.
52642C     OUTPUT--THE SINGLE PRECISION CUMULATIVE DISTRIBUTION
52643C             FUNCTION VALUE PDF FOR THE LOG-SKEWED-NORMAL DISTRIBUTION
52644C             WITH SHAPE PARAMETERS = LAMBDA AND SD.
52645C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
52646C     RESTRICTIONS--NONE.
52647C     OTHER DATAPAC   SUBROUTINES NEEDED--SNCDF
52648C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE.
52649C     MODE OF INTERNAL OPERATIONS--DOUBLE PRECISION.
52650C     LANGUAGE--ANSI FORTRAN (1977)
52651C     REFERENCES--JOHNSON, KOTZ, AND BALAKRISHNAN, "CONTINUOUS
52652C                 UNIVARIATE DISTRIBUTIONS--VOLUME I", SECOND EDITION,
52653C                 JOHN WILEY, 1994, PAGE 454.
52654C               --"Log-Skew-Normal and Log-Skew-t Distributions as
52655C                 Models for Family Income Data", Azzalini, Cappello,
52656C                 and Kotz, paper downloaded from Azzalini's web
52657C                 site.
52658C     WRITTEN BY--JAMES J. FILLIBEN
52659C                 STATISTICAL ENGINEERING DIVISION
52660C                 INFORMATION TECHNOLOGY LABORATORY
52661C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
52662C                 GAITHERSBURG, MD 20899-8980
52663C                 PHONE--301-975-2855
52664C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
52665C           OF THE NATION INSTITUTE OF STANDARDS AND TECHNOLOGY.
52666C     LANGUAGE--ANSI FORTRAN (1977)
52667C     VERSION NUMBER--2004.3
52668C     ORIGINAL VERSION--MARCH     2004.
52669C
52670C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
52671C
52672      CHARACTER*4 ISKNDF
52673C
52674C-----COMMON----------------------------------------------------------
52675C
52676      INCLUDE 'DPCOP2.INC'
52677C
52678C-----DATA STATEMENTS-------------------------------------------------
52679C
52680C-----START POINT-----------------------------------------------------
52681C
52682C               ***************************************
52683C               **  STEP 1--                         **
52684C               **  CHECK INPUT ARGUMENTS FOR ERRORS **
52685C               ***************************************
52686C
52687      IF(X.LE.0.0)THEN
52688        CDF=0.0
52689        GOTO9000
52690      ENDIF
52691      IF(SD.LE.0.0)THEN
52692        WRITE(ICOUT,6)
52693        CALL DPWRST('XXX','BUG ')
52694        WRITE(ICOUT,45)SD
52695        CALL DPWRST('XXX','BUG ')
52696        CDF=0.0
52697        GOTO9000
52698      ENDIF
52699    6 FORMAT('**** ERROR: ARGUMENT FOR THE SECOND SHAPE PARAMETER OF ',
52700     1       'THE LOG-SKEW-NORMAL CDF IS NON-POSITIVE.')
52701   45 FORMAT('     VALUE OF THE ARGUMENT IS ',G15.7)
52702C
52703C               ************************************
52704C               **  STEP 2--                      **
52705C               **  COMPUTE THE DENSITY FUNCTION  **
52706C               ************************************
52707C
52708      ISKNDF='DEFA'
52709      CALL SNCDF(LOG(X)/SD,ALMBDA,ISKNDF,CDF)
52710C
52711 9000 CONTINUE
52712      RETURN
52713      END
52714      SUBROUTINE LSNPDF(X,ALMBDA,SD,PDF)
52715C
52716C     PURPOSE--THIS SUBROUTINE COMPUTES THE PROBABILITY DENSITY
52717C              FUNCTION VALUE FOR THE LOG-SKEW-NORMAL DISTRIBUTION
52718C              WITH SHAPE PARAMETERS = LAMBDA AND SD (SD IS THE
52719C              SCALE PARAMETER OF THE CORRESPONDING NORMAL
52720C              DISTRIBUTION).
52721C              THIS DISTRIBUTION IS DEFINED FOR POSITIVE X AND HAS
52722C              THE PROBABILITY DENSITY FUNCTION
52723C                 LSNPDF(X,LAMBDA,SD) = (1/(SD*X))*
52724C                                       SNPDF(LOG(X)/SD,LAMBDA)
52725C              WITH SNPDF DENOTING THE SKEW-NORMAL PROBABILITY
52726C              DENSITY FUNCTION.
52727C     INPUT  ARGUMENTS--X      = THE SINGLE PRECISION VALUE AT
52728C                                WHICH THE PROBABILITY DENSITY
52729C                                FUNCTION IS TO BE EVALUATED.
52730C                                X SHOULD BE NON-NEGATIVE.
52731C                     --ALMBDA = THE FIRST SHAPE PARAMETER
52732C                     --SD     = THE SECOND SHAPE PARAMETER
52733C     OUTPUT ARGUMENTS--PDF    = THE SINGLE PRECISION PROBABILITY
52734C                                DENSITY FUNCTION VALUE.
52735C     OUTPUT--THE SINGLE PRECISION PROBABILITY DENSITY
52736C             FUNCTION VALUE PDF FOR THE LOG-SKEWED-NORMAL DISTRIBUTION
52737C             WITH SHAPE PARAMETER = LAMBDA.
52738C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
52739C     RESTRICTIONS--NONE.
52740C     OTHER DATAPAC   SUBROUTINES NEEDED--NODPDF, NODCDF..
52741C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE.
52742C     MODE OF INTERNAL OPERATIONS--DOUBLE PRECISION.
52743C     LANGUAGE--ANSI FORTRAN (1977)
52744C     REFERENCES--JOHNSON, KOTZ, AND BALAKRISHNAN, "CONTINUOUS
52745C                 UNIVARIATE DISTRIBUTIONS--VOLUME I", SECOND EDITION,
52746C                 JOHN WILEY, 1994, PAGE 454.
52747C               --"Log-Skew-Normal and Log-Skew-t Distributions as
52748C                 Models for Family Income Data", Azzalini, Cappello,
52749C                 and Kotz, paper downloaded from Azzalini's web
52750C                 site.
52751C     WRITTEN BY--JAMES J. FILLIBEN
52752C                 STATISTICAL ENGINEERING DIVISION
52753C                 INFORMATION TECHNOLOGY LABORATORY
52754C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
52755C                 GAITHERSBURG, MD 20899-8980
52756C                 PHONE--301-975-2855
52757C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
52758C           OF THE NATION INSTITUTE OF STANDARDS AND TECHNOLOGY.
52759C     LANGUAGE--ANSI FORTRAN (1977)
52760C     VERSION NUMBER--2004.3
52761C     ORIGINAL VERSION--MARCH     2004.
52762C
52763C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
52764C
52765C---------------------------------------------------------------------
52766C
52767      DOUBLE PRECISION DX
52768      DOUBLE PRECISION DLMBDA
52769      DOUBLE PRECISION DSD
52770      DOUBLE PRECISION DTERM1
52771      DOUBLE PRECISION DTERM2
52772      DOUBLE PRECISION DPDF
52773C
52774C-----COMMON----------------------------------------------------------
52775C
52776      INCLUDE 'DPCOP2.INC'
52777C
52778C-----DATA STATEMENTS-------------------------------------------------
52779C
52780C-----START POINT-----------------------------------------------------
52781C
52782C               ***************************************
52783C               **  STEP 1--                         **
52784C               **  CHECK INPUT ARGUMENTS FOR ERRORS **
52785C               ***************************************
52786C
52787      IF(X.EQ.0.0)THEN
52788        PDF=0.0
52789        GOTO9000
52790      ELSEIF(X.LT.0.0)THEN
52791        WRITE(ICOUT,5)
52792        CALL DPWRST('XXX','BUG ')
52793        WRITE(ICOUT,45)X
52794        CALL DPWRST('XXX','BUG ')
52795        PDF=0.0
52796        GOTO9000
52797      ENDIF
52798      IF(SD.LE.0.0)THEN
52799        WRITE(ICOUT,6)
52800        CALL DPWRST('XXX','BUG ')
52801        WRITE(ICOUT,45)SD
52802        CALL DPWRST('XXX','BUG ')
52803        PDF=0.0
52804        GOTO9000
52805      ENDIF
52806    5 FORMAT('**** ERROR: ARGUMENT FOR LOG-SKEW-NORMAL DISTRIBUTION ',
52807     1       'IS NON-POSITIVE.')
52808    6 FORMAT('**** ERROR: ARGUMENT FOR THE SECOND SHAPE PARAMETER OF ',
52809     1       'THE LOG-SKEW-NORMAL DISTRIBUTION IS NON-POSITIVE.')
52810   45 FORMAT('     VALUE OF THE ARGUMENT IS ',G15.7)
52811C
52812C               ************************************
52813C               **  STEP 2--                      **
52814C               **  COMPUTE THE DENSITY FUNCTION  **
52815C               ************************************
52816C
52817      DX=DBLE(X)
52818      DLMBDA=DBLE(ALMBDA)
52819      DSD=DBLE(SD)
52820C
52821      CALL NODCDF(DLOG(DX)*DLMBDA/DSD,DTERM1)
52822      CALL NODPDF(DLOG(DX)/DSD,DTERM2)
52823      DPDF=2.0D0*DTERM1*DTERM2
52824      DPDF=(1.0D0/(DSD*DX))*DPDF
52825      PDF=REAL(DPDF)
52826      GOTO9000
52827C
52828 9000 CONTINUE
52829      RETURN
52830      END
52831      SUBROUTINE LSNPPF(P,ALMBDA,SD,PPF)
52832C
52833C     PURPOSE--THIS SUBROUTINE COMPUTES THE PERCENT POINT
52834C              FUNCTION VALUE FOR THE LOG-SKEW-NORMAL DISTRIBUTION
52835C              WITH SHAPE PARAMETERS = LAMBDA AND SD.
52836C              THIS DISTRIBUTION IS DEFINED FOR ALL X AND THE
52837C              PERCENT POINT FUNCTION IS COMPUTED BY
52838C              TAKING THE EXPONENT OF THE SKEW-NORMAL PPF FUNCTION.
52839C     INPUT  ARGUMENTS--P      = THE SINGLE PRECISION VALUE AT
52840C                                WHICH THE PERCENT POINT
52841C                                FUNCTION IS TO BE EVALUATED.
52842C                     --ALMBDA = THE FIRST SHAPE PARAMETER
52843C                     --SD     = THE SECOND SHAPE PARAMETER
52844C     OUTPUT ARGUMENTS--PPF    = THE SINGLE PRECISION CUMULATIVE
52845C                                DISTRIBUTION FUNCTION VALUE.
52846C     OUTPUT--THE SINGLE PRECISION PERCENT POINT
52847C             FUNCTION VALUE PPF.
52848C     PRINTING--NONE.
52849C     RESTRICTIONS--NONE.
52850C     OTHER DATAPAC   SUBROUTINES NEEDED--SNPPF.
52851C     FORTRAN LIBRARY SUBROUTINES NEEDED--EXP.
52852C     MODE OF INTERNAL OPERATIONS--DOUBLE PRECISION.
52853C     LANGUAGE--ANSI FORTRAN (1977)
52854C     REFERENCES--JOHNSON, KOTZ, AND BALAKRISHNAN, "CONTINUOUS
52855C                 UNIVARIATE DISTRIBUTIONS--VOLUME I", SECOND EDITION,
52856C                 JOHN WILEY, 1994, PAGE 454.
52857C               --AZZALINI HAS AUTHORED A NUMBER OF PAPERS ON THIS
52858C                 DISTRIBUTION.
52859C     WRITTEN BY--JAMES J. FILLIBEN
52860C                 STATISTICAL ENGINEERING DIVISION
52861C                 INFORMATION TECHNOLOGY LABORATORY
52862C                 NATION INSTITUTE OF STANDARDS AND TECHNOLOGY
52863C                 GAITHERSBURG, MD 20899-8980
52864C                 PHONE--301-975-2855
52865C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
52866C           OF THE NATION INSTITUTE OF STANDARDS AND TECHNOLOGY.
52867C     LANGUAGE--ANSI FORTRAN (1977)
52868C     VERSION NUMBER--2004.3
52869C     ORIGINAL VERSION--MARCH     2004.
52870C
52871C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
52872C
52873C---------------------------------------------------------------------
52874C
52875      CHARACTER*4 ISKNDF
52876C
52877      INCLUDE 'DPCOP2.INC'
52878C
52879C-----START POINT-----------------------------------------------------
52880C
52881C
52882      IF(P.LT.0.0.OR.P.GE.1.0)THEN
52883         WRITE(ICOUT,61)
52884   61    FORMAT('***** ERROR--THE FIRST  INPUT ARGUMENT ',
52885     1          'TO THE LSNPPF SUBROUTINE ')
52886         CALL DPWRST('XXX','BUG ')
52887         WRITE(ICOUT,62)
52888   62    FORMAT('      IS OUTSIDE THE ALLOWABLE [0,1) INTERVAL ***')
52889         CALL DPWRST('XXX','BUG ')
52890         WRITE(ICOUT,63)P
52891   63    FORMAT('      VALUE OF ARGUMENT = ',G15.7)
52892         CALL DPWRST('XXX','BUG ')
52893         PPF=0.0
52894         GOTO9000
52895      ENDIF
52896C
52897      IF(SD.LE.0.0)THEN
52898        WRITE(ICOUT,6)
52899        CALL DPWRST('XXX','BUG ')
52900        WRITE(ICOUT,45)SD
52901        CALL DPWRST('XXX','BUG ')
52902        PPF=0.0
52903        GOTO9000
52904      ENDIF
52905    6 FORMAT('**** ERROR: ARGUMENT FOR THE SECOND SHAPE PARAMETER OF ',
52906     1       'THE LOG-SKEW-NORMAL PPF IS NON-POSITIVE.')
52907   45 FORMAT('     VALUE OF THE ARGUMENT IS ',G15.7)
52908C
52909      ISKNDF='DEFA'
52910      CALL SNPPF(P,ALMBDA,ISKNDF,PPF2)
52911      PPF=EXP(PPF2*SD)
52912C
52913 9000 CONTINUE
52914      RETURN
52915      END
52916      SUBROUTINE LSNRAN(N,ALMBDA,SD,ISEED,X)
52917C
52918C     PURPOSE--THIS SUBROUTINE GENERATES A RANDOM SAMPLE OF SIZE N
52919C              FROM THE LOG-SKEWED-NORMAL DISTRIBUTION
52920C              WITH SHAPE PARAMETERS = ALMBDA AND SD.
52921C              THIS DISTRIBUTION IS DEFINED FOR POSITIVE X.
52922C              LOG-SKEWED-NORMAL RANDOM NUMBERS ARE FOUND BY
52923C              EXPONENTIATING SKEW-NORMAL RANDOM NUMBERS.
52924C     INPUT  ARGUMENTS--N      = THE DESIRED INTEGER NUMBER
52925C                                OF RANDOM NUMBERS TO BE
52926C                                GENERATED.
52927C                     --ALMBDA = THE FIRST SHAPE (PARAMETER) FOR THE
52928C                                LOG-SKEWED-NORMAL DISTRIBUTION.
52929C                     --SD     = THE SECOND SHAPE (PARAMETER) FOR THE
52930C                                LOG-SKEWED-NORMAL DISTRIBUTION.
52931C     OUTPUT ARGUMENTS--X      = A SINGLE PRECISION VECTOR
52932C                                (OF DIMENSION AT LEAST N)
52933C                                INTO WHICH THE GENERATED
52934C                                RANDOM SAMPLE WILL BE PLACED.
52935C     OUTPUT--A RANDOM SAMPLE OF SIZE N
52936C             FROM THE LOG-SKEWED-NORMAL DISTRIBUTION
52937C             WITH SHAPE PARAMETERS = ALMBDA AND SD.
52938C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
52939C     RESTRICTIONS--THERE IS NO RESTRICTION ON THE MAXIMUM VALUE
52940C                   OF N FOR THIS SUBROUTINE.
52941C                 --ALMBDA CAN BE ANY REAL NUMBER.
52942C     OTHER DATAPAC   SUBROUTINES NEEDED--NORRAN.
52943C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE.
52944C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
52945C     LANGUAGE--ANSI FORTRAN (1977)
52946C     REFERENCES--JOHNSON, KOTZ, AND BALAKRISHNAN, "CONTINUOUS
52947C                 UNIVARIATE DISTRIBUTIONS--VOLUME I", SECOND EDITION,
52948C                 JOHN WILEY, 1994, PAGE 454.
52949C               --AZZALINI HAS AUTHORED A NUMBER OF PAPERS ON THIS
52950C                 DISTRIBUTION.  ALGORITHM FOR RANDOM NUMBERS
52951C                 ADAPTED FROM AZZALINI'S R FUNCTIONS FOR SKEW
52952C                 NORMAL.
52953C     WRITTEN BY--JAMES J. FILLIBEN
52954C                 STATISTICAL ENGINEERING DIVISION
52955C                 INFORMATION TECHNOLOGY LABORATORY
52956C                 NATION INSTITUTE OF STANDARDS AND TECHNOLOGY
52957C                 GAITHERSBURG, MD 20899-8980
52958C                 PHONE--301-975-2855
52959C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
52960C           OF THE NATION INSTITUTE OF STANDARDS AND TECHNOLOGY.
52961C     LANGUAGE--ANSI FORTRAN (1977)
52962C     VERSION NUMBER--2004.3
52963C     ORIGINAL VERSION--MARCH     2004.
52964C
52965C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
52966C
52967C---------------------------------------------------------------------
52968C
52969      DIMENSION X(*)
52970      DIMENSION Y(2)
52971C
52972C-----COMMON----------------------------------------------------------
52973C
52974      INCLUDE 'DPCOP2.INC'
52975C
52976C-----DATA STATEMENTS-------------------------------------------------
52977C
52978C-----START POINT-----------------------------------------------------
52979C
52980C     CHECK THE INPUT ARGUMENTS FOR ERRORS
52981C
52982      IF(N.LT.1)THEN
52983        WRITE(ICOUT,5)
52984        CALL DPWRST('XXX','BUG ')
52985        WRITE(ICOUT,6)
52986        CALL DPWRST('XXX','BUG ')
52987        WRITE(ICOUT,47)N
52988        CALL DPWRST('XXX','BUG ')
52989        GOTO9999
52990      ENDIF
52991    5 FORMAT('***** ERROR--FOR THE LOG-SKEWED-NORMAL DISTRIBUTION,')
52992    6 FORMAT('       THE REQUESTED NUMBER OF RANDOM NUMBERS WAS ',
52993     1      'NON-POSITIVE.')
52994   47 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',I8,' *****')
52995C
52996C     ALGORITM ADAPTED FROM AZZALINI'S R FUNCTION LIBRARY.
52997C
52998      DO100I=1,N
52999C
53000        CALL NORRAN(2,ISEED,Y)
53001        U1=Y(1)
53002        U2=Y(2)
53003        ATEMP=ALMBDA*U1
53004        IF(U2.GT.ATEMP)U1=-U1
53005        X(I)=EXP(SD*U1)
53006C
53007  100 CONTINUE
53008C
53009 9999 CONTINUE
53010      RETURN
53011      END
53012      SUBROUTINE LSTCDF(X,NU,ALMBDA,SD,CDF)
53013C
53014C     PURPOSE--THIS SUBROUTINE COMPUTES THE CUMULATIVE DISTRIBUTION
53015C              FUNCTION VALUE FOR THE LOG-SKEW-T DISTRIBUTION
53016C              WITH SHAPE PARAMETERS = NU, LAMBDA AND SD (SD IS THE
53017C              SCALE PARAMETER OF THE CORRESPONDING T DISTRIBUTION).
53018C              THIS DISTRIBUTION IS DEFINED FOR POSITIVE X AND HAS
53019C              THE CUMULATIVE DISTRIBUTION FUNCTION
53020C                 LSTCDF(X,NU,LAMBDA,SD) = STCDF(LOG(X)/SD,NU,LAMBDA)
53021C              WITH SNPDF DENOTING THE SKEW-T PROBABILITY
53022C              DENSITY FUNCTION.
53023C     INPUT  ARGUMENTS--X      = THE SINGLE PRECISION VALUE AT
53024C                                WHICH THE CUMULATIVE DISTRIBUTION
53025C                                FUNCTION IS TO BE EVALUATED.
53026C                                X SHOULD BE NON-NEGATIVE.
53027C                     --NU     = THE FIRST SHAPE PARAMETER
53028C                     --ALMBDA = THE SECOND SHAPE PARAMETER
53029C                     --SD     = THE THIRD SHAPE PARAMETER
53030C     OUTPUT ARGUMENTS--CDF    = THE SINGLE PRECISION CUMULATIVE
53031C                                DISTRIBUTION FUNCTION VALUE.
53032C     OUTPUT--THE SINGLE PRECISION CUMULATIVE DISTRIBUTION
53033C             FUNCTION VALUE CDF FOR THE LOG-SKEWED-T DISTRIBUTION
53034C             WITH SHAPE PARAMETERS = NU, LAMBDA, AND SD.
53035C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
53036C     RESTRICTIONS--NONE.
53037C     OTHER DATAPAC   SUBROUTINES NEEDED--STCDF
53038C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE.
53039C     MODE OF INTERNAL OPERATIONS--DOUBLE PRECISION.
53040C     LANGUAGE--ANSI FORTRAN (1977)
53041C     REFERENCES--JOHNSON, KOTZ, AND BALAKRISHNAN, "CONTINUOUS
53042C                 UNIVARIATE DISTRIBUTIONS--VOLUME I", SECOND EDITION,
53043C                 JOHN WILEY, 1994, PAGE 454.
53044C               --"Log-Skew-Normal and Log-Skew-t Distributions as
53045C                 Models for Family Income Data", Azzalini, Cappello,
53046C                 and Kotz, paper downloaded from Azzalini's web
53047C                 site.
53048C     WRITTEN BY--JAMES J. FILLIBEN
53049C                 STATISTICAL ENGINEERING DIVISION
53050C                 INFORMATION TECHNOLOGY LABORATORY
53051C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
53052C                 GAITHERSBURG, MD 20899-8980
53053C                 PHONE--301-975-2855
53054C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
53055C           OF THE NATION INSTITUTE OF STANDARDS AND TECHNOLOGY.
53056C     LANGUAGE--ANSI FORTRAN (1977)
53057C     VERSION NUMBER--2004.3
53058C     ORIGINAL VERSION--MARCH     2004.
53059C
53060C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
53061C
53062C-----COMMON----------------------------------------------------------
53063C
53064      INCLUDE 'DPCOP2.INC'
53065C
53066C-----DATA STATEMENTS-------------------------------------------------
53067C
53068C-----START POINT-----------------------------------------------------
53069C
53070C               ***************************************
53071C               **  STEP 1--                         **
53072C               **  CHECK INPUT ARGUMENTS FOR ERRORS **
53073C               ***************************************
53074C
53075      IF(X.LE.0.0)THEN
53076        CDF=0.0
53077        GOTO9000
53078      ENDIF
53079      IF(NU.LE.0)THEN
53080        WRITE(ICOUT,7)
53081        CALL DPWRST('XXX','BUG ')
53082        WRITE(ICOUT,8)
53083        CALL DPWRST('XXX','BUG ')
53084        WRITE(ICOUT,46)NU
53085        CALL DPWRST('XXX','BUG ')
53086        CDF=0.0
53087        GOTO9000
53088      ENDIF
53089      IF(SD.LE.0.0)THEN
53090        WRITE(ICOUT,6)
53091        CALL DPWRST('XXX','BUG ')
53092        WRITE(ICOUT,45)SD
53093        CALL DPWRST('XXX','BUG ')
53094        CDF=0.0
53095        GOTO9000
53096      ENDIF
53097    6 FORMAT('**** ERROR: ARGUMENT FOR THE THIRD SHAPE PARAMETER OF ',
53098     1       'THE LOG-SKEW-T CDF IS NON-POSITIVE.')
53099    7 FORMAT('**** ERROR: ARGUMENT FOR THE FIRST (DEGREES OF ',
53100     1       'FREEDOM) SHAPE PARAMETER OF')
53101    8 FORMAT('     THE LOG-SKEW-T CDF IS NON-POSITIVE.')
53102   45 FORMAT('     VALUE OF THE ARGUMENT IS ',G15.7)
53103   46 FORMAT('     VALUE OF THE ARGUMENT IS ',I8)
53104C
53105C               ************************************
53106C               **  STEP 2--                      **
53107C               **  COMPUTE THE DENSITY FUNCTION  **
53108C               ************************************
53109C
53110      CALL STCDF(LOG(X)/SD,NU,ALMBDA,CDF)
53111C
53112 9000 CONTINUE
53113      RETURN
53114      END
53115      SUBROUTINE LSTPDF(X,NU,ALMBDA,SD,PDF)
53116C
53117C     PURPOSE--THIS SUBROUTINE COMPUTES THE PROBABILITY DENSITY
53118C              FUNCTION VALUE FOR THE LOG-SKEW-T DISTRIBUTION
53119C              WITH SHAPE PARAMETERS = NU, LAMBDA AND SD (SD IS THE
53120C              SCALE PARAMETER OF THE CORRESPONDING T DISTRIBUTION).
53121C              THIS DISTRIBUTION IS DEFINED FOR POSITIVE X AND HAS
53122C              THE PROBABILITY DENSITY FUNCTION
53123C                 LSTPDF(X,NU,LAMBDA,SD) = (1/(SD*X))*
53124C                             STPDF(LOG(X)/SD,NU,LAMBDA,SD)
53125C              WITH SNPDF DENOTING THE SKEW-T PROBABILITY
53126C              DENSITY FUNCTION.
53127C     INPUT  ARGUMENTS--X      = THE SINGLE PRECISION VALUE AT
53128C                                WHICH THE PROBABILITY DENSITY
53129C                                FUNCTION IS TO BE EVALUATED.
53130C                                X SHOULD BE NON-NEGATIVE.
53131C                     --NU     = THE FIRST SHAPE PARAMETER
53132C                     --ALMBDA = THE SECOND SHAPE PARAMETER
53133C                     --SD     = THE THIRD SHAPE PARAMETER
53134C     OUTPUT ARGUMENTS--PDF    = THE SINGLE PRECISION PROBABILITY
53135C                                DENSITY FUNCTION VALUE.
53136C     OUTPUT--THE SINGLE PRECISION PROBABILITY DENSITY
53137C             FUNCTION VALUE PDF FOR THE LOG-SKEWED-T DISTRIBUTION
53138C             WITH SHAPE PARAMETERS = NU, LAMBDA, AND SD.
53139C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
53140C     RESTRICTIONS--NONE.
53141C     OTHER DATAPAC   SUBROUTINES NEEDED--STPDF
53142C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE.
53143C     MODE OF INTERNAL OPERATIONS--DOUBLE PRECISION.
53144C     LANGUAGE--ANSI FORTRAN (1977)
53145C     REFERENCES--JOHNSON, KOTZ, AND BALAKRISHNAN, "CONTINUOUS
53146C                 UNIVARIATE DISTRIBUTIONS--VOLUME I", SECOND EDITION,
53147C                 JOHN WILEY, 1994, PAGE 454.
53148C               --"Log-Skew-Normal and Log-Skew-t Distributions as
53149C                 Models for Family Income Data", Azzalini, Cappello,
53150C                 and Kotz, paper downloaded from Azzalini's web
53151C                 site.
53152C     WRITTEN BY--JAMES J. FILLIBEN
53153C                 STATISTICAL ENGINEERING DIVISION
53154C                 INFORMATION TECHNOLOGY LABORATORY
53155C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
53156C                 GAITHERSBURG, MD 20899-8980
53157C                 PHONE--301-975-2855
53158C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
53159C           OF THE NATION INSTITUTE OF STANDARDS AND TECHNOLOGY.
53160C     LANGUAGE--ANSI FORTRAN (1977)
53161C     VERSION NUMBER--2004.3
53162C     ORIGINAL VERSION--MARCH     2004.
53163C
53164C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
53165C
53166C-----COMMON----------------------------------------------------------
53167C
53168      INCLUDE 'DPCOP2.INC'
53169C
53170C-----START POINT-----------------------------------------------------
53171C
53172C               ***************************************
53173C               **  STEP 1--                         **
53174C               **  CHECK INPUT ARGUMENTS FOR ERRORS **
53175C               ***************************************
53176C
53177      IF(X.LE.0.0)THEN
53178        PDF=0.0
53179        GOTO9000
53180      ENDIF
53181      IF(NU.LE.0)THEN
53182        WRITE(ICOUT,7)
53183        CALL DPWRST('XXX','BUG ')
53184        WRITE(ICOUT,8)
53185        CALL DPWRST('XXX','BUG ')
53186        WRITE(ICOUT,46)NU
53187        CALL DPWRST('XXX','BUG ')
53188        PDF=0.0
53189        GOTO9000
53190      ENDIF
53191      IF(SD.LE.0.0)THEN
53192        WRITE(ICOUT,6)
53193        CALL DPWRST('XXX','BUG ')
53194        WRITE(ICOUT,45)SD
53195        CALL DPWRST('XXX','BUG ')
53196        PDF=0.0
53197        GOTO9000
53198      ENDIF
53199    6 FORMAT('**** ERROR: ARGUMENT FOR THE THIRD SHAPE PARAMETER OF ',
53200     1       'THE LOG-SKEW-T PDF IS NON-POSITIVE.')
53201    7 FORMAT('**** ERROR: ARGUMENT FOR THE FIRST (DEGREES OF ',
53202     1       'FREEDOM) SHAPE PARAMETER OF')
53203    8 FORMAT('     THE LOG-SKEW-T PDF IS NON-POSITIVE.')
53204   45 FORMAT('     VALUE OF THE ARGUMENT IS ',G15.7)
53205   46 FORMAT('     VALUE OF THE ARGUMENT IS ',I8)
53206C
53207C               ************************************
53208C               **  STEP 2--                      **
53209C               **  COMPUTE THE DENSITY FUNCTION  **
53210C               ************************************
53211C
53212      CALL STPDF(LOG(X)/SD,NU,ALMBDA,PDF)
53213      PDF=(1.0/(SD*X))*PDF
53214C
53215 9000 CONTINUE
53216      RETURN
53217      END
53218      SUBROUTINE LSTPPF(P,NU,ALMBDA,SD,PPF)
53219C
53220C     PURPOSE--THIS SUBROUTINE COMPUTES THE PERCENT POINT
53221C              FUNCTION VALUE FOR THE LOG-SKEW-T DISTRIBUTION
53222C              WITH SHAPE PARAMETERS = NU, LAMBDA AND SD.
53223C              THIS DISTRIBUTION IS DEFINED FOR ALL X AND THE
53224C              PERCENT POINT FUNCTION IS COMPUTED BY
53225C              TAKING THE EXPONENT OF THE SKEW-T PPF FUNCTION.
53226C     INPUT  ARGUMENTS--P      = THE SINGLE PRECISION VALUE AT
53227C                                WHICH THE PERCENT POINT
53228C                                FUNCTION IS TO BE EVALUATED.
53229C                     --NU     = THE FIRST SHAPE PARAMETER
53230C                     --ALMBDA = THE SECOND SHAPE PARAMETER
53231C                     --SD     = THE THIRD SHAPE PARAMETER
53232C     OUTPUT ARGUMENTS--PPF    = THE SINGLE PRECISION CUMULATIVE
53233C                                DISTRIBUTION FUNCTION VALUE.
53234C     OUTPUT--THE SINGLE PRECISION PERCENT POINT
53235C             FUNCTION VALUE PPF.
53236C     PRINTING--NONE.
53237C     RESTRICTIONS--NONE.
53238C     OTHER DATAPAC   SUBROUTINES NEEDED--STPPF.
53239C     FORTRAN LIBRARY SUBROUTINES NEEDED--EXP.
53240C     MODE OF INTERNAL OPERATIONS--DOUBLE PRECISION.
53241C     LANGUAGE--ANSI FORTRAN (1977)
53242C     REFERENCES--JOHNSON, KOTZ, AND BALAKRISHNAN, "CONTINUOUS
53243C                 UNIVARIATE DISTRIBUTIONS--VOLUME I", SECOND EDITION,
53244C                 JOHN WILEY, 1994, PAGE 454.
53245C               --"Log-Skew-Normal and Log-Skew-t Distributions as
53246C                 Models for Family Income Data", Azzalini, Cappello,
53247C                 and Kotz, paper downloaded from Azzalini's web
53248C                 site.
53249C     WRITTEN BY--JAMES J. FILLIBEN
53250C                 STATISTICAL ENGINEERING DIVISION
53251C                 INFORMATION TECHNOLOGY LABORATORY
53252C                 NATION INSTITUTE OF STANDARDS AND TECHNOLOGY
53253C                 GAITHERSBURG, MD 20899-8980
53254C                 PHONE--301-975-2855
53255C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
53256C           OF THE NATION INSTITUTE OF STANDARDS AND TECHNOLOGY.
53257C     LANGUAGE--ANSI FORTRAN (1977)
53258C     VERSION NUMBER--2004.3
53259C     ORIGINAL VERSION--MARCH     2004.
53260C
53261C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
53262C
53263C-----COMMON----------------------------------------------------------
53264C
53265      INCLUDE 'DPCOP2.INC'
53266C
53267C-----START POINT-----------------------------------------------------
53268C
53269C
53270      IF(P.LT.0.0.OR.P.GE.1.0)THEN
53271         WRITE(ICOUT,61)
53272   61    FORMAT('***** ERROR--THE FIRST  INPUT ARGUMENT ',
53273     1          'TO THE LSTPPF SUBROUTINE ')
53274         CALL DPWRST('XXX','BUG ')
53275         WRITE(ICOUT,62)
53276   62    FORMAT('      IS OUTSIDE THE ALLOWABLE [0,1) INTERVAL ***')
53277         CALL DPWRST('XXX','BUG ')
53278         WRITE(ICOUT,63)P
53279   63    FORMAT('      VALUE OF ARGUMENT = ',G15.7)
53280         CALL DPWRST('XXX','BUG ')
53281         PPF=0.0
53282         GOTO9000
53283      ENDIF
53284C
53285      IF(NU.LE.0)THEN
53286        WRITE(ICOUT,7)
53287        CALL DPWRST('XXX','BUG ')
53288        WRITE(ICOUT,8)
53289        CALL DPWRST('XXX','BUG ')
53290        WRITE(ICOUT,46)NU
53291        CALL DPWRST('XXX','BUG ')
53292        PPF=0.0
53293        GOTO9000
53294      ENDIF
53295      IF(SD.LE.0.0)THEN
53296        WRITE(ICOUT,6)
53297        CALL DPWRST('XXX','BUG ')
53298        WRITE(ICOUT,45)SD
53299        CALL DPWRST('XXX','BUG ')
53300        PPF=0.0
53301        GOTO9000
53302      ENDIF
53303    6 FORMAT('**** ERROR: ARGUMENT FOR THE THIRD SHAPE PARAMETER OF ',
53304     1       'THE LOG-SKEW-T PPF IS NON-POSITIVE.')
53305    7 FORMAT('**** ERROR: ARGUMENT FOR THE FIRST (DEGREES OF ',
53306     1       'FREEDOM) SHAPE PARAMETER OF')
53307    8 FORMAT('     THE LOG-SKEW-T PPF IS NON-POSITIVE.')
53308   45 FORMAT('     VALUE OF THE ARGUMENT IS ',G15.7)
53309   46 FORMAT('     VALUE OF THE ARGUMENT IS ',I8)
53310C
53311      CALL STPPF(P,NU,ALMBDA,PPF2)
53312      PPF=EXP(PPF2*SD)
53313C
53314 9000 CONTINUE
53315      RETURN
53316      END
53317      SUBROUTINE LSTRAN(N,NU,ALMBDA,SD,ISEED,X)
53318C
53319C     PURPOSE--THIS SUBROUTINE GENERATES A RANDOM SAMPLE OF SIZE N
53320C              FROM THE LOG-SKEWED-T DISTRIBUTION
53321C              WITH SHAPE PARAMETERS = NU, ALMBDA AND SD.
53322C              THIS DISTRIBUTION IS DEFINED FOR POSITIVE X.
53323C              LOG-SKEWED-T RANDOM NUMBERS ARE FOUND BY
53324C              EXPONENTIATING SKEW-NORMAL RANDOM NUMBERS.
53325C     INPUT  ARGUMENTS--N      = THE DESIRED INTEGER NUMBER
53326C                                OF RANDOM NUMBERS TO BE
53327C                                GENERATED.
53328C                     --NU     = THE FIRST SHAPE (PARAMETER) FOR THE
53329C                                LOG-SKEWED-T DISTRIBUTION.
53330C                     --ALMBDA = THE SECOND SHAPE (PARAMETER) FOR THE
53331C                                LOG-SKEWED-T DISTRIBUTION.
53332C                     --SD     = THE THIRD SHAPE (PARAMETER) FOR THE
53333C                                LOG-SKEWED-T DISTRIBUTION.
53334C     OUTPUT ARGUMENTS--X      = A SINGLE PRECISION VECTOR
53335C                                (OF DIMENSION AT LEAST N)
53336C                                INTO WHICH THE GENERATED
53337C                                RANDOM SAMPLE WILL BE PLACED.
53338C     OUTPUT--A RANDOM SAMPLE OF SIZE N
53339C             FROM THE LOG-SKEWED-T DISTRIBUTION
53340C             WITH SHAPE PARAMETERS = NU, ALMBDA, AND SD.
53341C     PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS.
53342C     RESTRICTIONS--THERE IS NO RESTRICTION ON THE MAXIMUM VALUE
53343C                   OF N FOR THIS SUBROUTINE.
53344C                 --ALMBDA CAN BE ANY REAL NUMBER.
53345C     OTHER DATAPAC   SUBROUTINES NEEDED--STRAN.
53346C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE.
53347C     MODE OF INTERNAL OPERATIONS--SINGLE PRECISION.
53348C     LANGUAGE--ANSI FORTRAN (1977)
53349C     REFERENCES--JOHNSON, KOTZ, AND BALAKRISHNAN, "CONTINUOUS
53350C                 UNIVARIATE DISTRIBUTIONS--VOLUME I", SECOND EDITION,
53351C                 JOHN WILEY, 1994, PAGE 454.
53352C               --"Log-Skew-Normal and Log-Skew-t Distributions as
53353C                 Models for Family Income Data", Azzalini, Cappello,
53354C                 and Kotz, paper downloaded from Azzalini's web
53355C                 site.
53356C     WRITTEN BY--JAMES J. FILLIBEN
53357C                 STATISTICAL ENGINEERING DIVISION
53358C                 INFORMATION TECHNOLOGY LABORATORY
53359C                 NATION INSTITUTE OF STANDARDS AND TECHNOLOGY
53360C                 GAITHERSBURG, MD 20899-8980
53361C                 PHONE--301-975-2855
53362C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
53363C           OF THE NATION INSTITUTE OF STANDARDS AND TECHNOLOGY.
53364C     LANGUAGE--ANSI FORTRAN (1977)
53365C     VERSION NUMBER--2004.3
53366C     ORIGINAL VERSION--MARCH     2004.
53367C
53368C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
53369C
53370C---------------------------------------------------------------------
53371C
53372      DIMENSION X(*)
53373C
53374C-----COMMON----------------------------------------------------------
53375C
53376      INCLUDE 'DPCOP2.INC'
53377C
53378C-----START POINT-----------------------------------------------------
53379C
53380C     CHECK THE INPUT ARGUMENTS FOR ERRORS
53381C
53382      IF(N.LT.1)THEN
53383        WRITE(ICOUT,5)
53384        CALL DPWRST('XXX','BUG ')
53385        WRITE(ICOUT,6)
53386        CALL DPWRST('XXX','BUG ')
53387        WRITE(ICOUT,47)N
53388        CALL DPWRST('XXX','BUG ')
53389        GOTO9000
53390      ENDIF
53391      IF(NU.LE.0)THEN
53392        WRITE(ICOUT,7)
53393        CALL DPWRST('XXX','BUG ')
53394        WRITE(ICOUT,8)
53395        CALL DPWRST('XXX','BUG ')
53396        WRITE(ICOUT,47)NU
53397        CALL DPWRST('XXX','BUG ')
53398        GOTO9000
53399      ENDIF
53400      IF(SD.LE.0.0)THEN
53401        WRITE(ICOUT,9)
53402        CALL DPWRST('XXX','BUG ')
53403        WRITE(ICOUT,45)SD
53404        CALL DPWRST('XXX','BUG ')
53405        GOTO9000
53406      ENDIF
53407    5 FORMAT('***** ERROR--FOR THE LOG-SKEWED-T DISTRIBUTION,')
53408    6 FORMAT('       THE REQUESTED NUMBER OF RANDOM NUMBERS WAS ',
53409     1      'NON-POSITIVE.')
53410   47 FORMAT('***** THE VALUE OF THE ARGUMENT IS ',I8,' *****')
53411    7 FORMAT('**** ERROR: ARGUMENT FOR THE FIRST (DEGREES OF ',
53412     1       'FREEDOM) SHAPE PARAMETER OF')
53413    8 FORMAT('     THE LOG-SKEW-T CDF IS NON-POSITIVE.')
53414    9 FORMAT('**** ERROR: ARGUMENT FOR THE THIRD SHAPE PARAMETER OF ',
53415     1       'THE LOG-SKEW-T CDF IS NON-POSITIVE.')
53416   45 FORMAT('     VALUE OF THE ARGUMENT IS ',G15.7)
53417C
53418C     TRANSFORM SKEWED T RANDOM NUMBERS
53419C
53420      CALL STRAN(N,NU,ALMBDA,ISEED,X)
53421C
53422      DO100I=1,N
53423        X(I)=EXP(SD*X(I))
53424  100 CONTINUE
53425C
53426 9000 CONTINUE
53427      RETURN
53428      END
53429      subroutine ma(x, n, len, ave)
53430c
53431c  This routine is part of the Bill Cleveland seasonal loess
53432c  program.
53433c
53434      integer n, len, i, j, k, m, newn
53435      real x(n), ave(n), flen, v
53436      newn = n-len+1
53437      flen = real(len)
53438      v = 0.0
53439      do 23083 i = 1,len
53440      v = v+x(i)
5344123083 continue
53442      ave(1) = v/flen
53443      if(.not.(newn .gt. 1))goto 23085
53444      k = len
53445      m = 0
53446      do 23087 j = 2, newn
53447      k = k+1
53448      m = m+1
53449      v = v-x(m)+x(k)
53450      ave(j) = v/flen
5345123087 continue
5345223085 continue
53453      return
53454      end
53455      SUBROUTINE MAD(X,N,IWRITE,XTEMP,XTEMP2,MAXNXT,XMAD,IBUGA3,IERROR)
53456C
53457C     PURPOSE--THIS SUBROUTINE COMPUTES THE
53458C              SAMPLE MEDIAN ABSOLUTE DEVIATION (WITH DENOMINATOR N)
53459C              OF THE DATA IN THE INPUT VECTOR X.
53460C              THE SAMPLE MEDIAN ABSOLUTE DEVIATION = (THE MEDIAN OF
53461C              THE ABSOLUTE DEVIATIONS ABOUT THE SAMPLE MEDIAN) / N).
53462C     INPUT  ARGUMENTS--X      = THE SINGLE PRECISION VECTOR OF
53463C                                (UNSORTED OR SORTED) OBSERVATIONS.
53464C                     --N      = THE INTEGER NUMBER OF OBSERVATIONS
53465C                                IN THE VECTOR X.
53466C     OUTPUT ARGUMENTS--XMAD    = THE SINGLE PRECISION VALUE OF THE
53467C                                COMPUTED SAMPLE MEDIAN ABSOLUTE DEVIATION.
53468C     OUTPUT--THE COMPUTED SINGLE PRECISION VALUE OF THE
53469C             SAMPLE MEDIAN ABSOLUTE DEVIATION (WITH DENOMINATOR N-1).
53470C     OTHER DATAPAC   SUBROUTINES NEEDED--MEDIAN AND SORT.
53471C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE.
53472C     MODE OF INTERNAL OPERATIONS--DOUBLE PRECISION.
53473C     LANGUAGE--ANSI FORTRAN (1977)
53474C     REFERENCES--MOSTELLER AND TUKEY, 'DATA ANALYSIS AND REGRESSION'
53475C     WRITTEN BY--JAMES J. FILLIBEN
53476C                 STATISTICAL ENGINEERING DIVISION
53477C                 INFORMATION TECHNOLOGY LABORATORY
53478C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
53479C                 GAITHERSBURG, MD 20899-8980
53480C                 PHONE--301-975-2899
53481C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
53482C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
53483C     LANGUAGE--ANSI FORTRAN (1977)
53484C     VERSION NUMBER--95/3
53485C     ORIGINAL VERSION--MARCH     1995.
53486C     UPDATED         --JULY      2010. ADD EXTRA DUMMY ARRAY SO
53487C                                       DON'T HAVE TO MODIFY ORIGINAL
53488C                                       X ARRAY
53489C
53490C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
53491C
53492      CHARACTER*4 IWRITE
53493      CHARACTER*4 IBUGA3
53494      CHARACTER*4 IERROR
53495C
53496      CHARACTER*4 IWRIT2
53497C
53498      CHARACTER*4 ISUBN1
53499      CHARACTER*4 ISUBN2
53500C
53501C---------------------------------------------------------------------
53502C
53503      DIMENSION X(*)
53504      DIMENSION XTEMP(*)
53505      DIMENSION XTEMP2(*)
53506C
53507C---------------------------------------------------------------------
53508C
53509      INCLUDE 'DPCOP2.INC'
53510C
53511C-----START POINT-----------------------------------------------------
53512C
53513      ISUBN1='MAD '
53514      ISUBN2='    '
53515      IERROR='NO'
53516C
53517      IF(IBUGA3.EQ.'ON')THEN
53518        WRITE(ICOUT,999)
53519  999   FORMAT(1X)
53520        CALL DPWRST('XXX','BUG ')
53521        WRITE(ICOUT,51)
53522   51   FORMAT('***** AT THE BEGINNING OF MAD--')
53523        CALL DPWRST('XXX','BUG ')
53524        WRITE(ICOUT,52)IBUGA3,N
53525   52   FORMAT('IBUGA3,N = ',A4,2X,I8)
53526        CALL DPWRST('XXX','BUG ')
53527        DO55I=1,N
53528          WRITE(ICOUT,56)I,X(I)
53529   56     FORMAT('I,X(I) = ',I8,G15.7)
53530          CALL DPWRST('XXX','BUG ')
53531   55   CONTINUE
53532      ENDIF
53533C
53534C               ******************************************
53535C               **  COMPUTE MEDIAN ABSOLUTE DEVIATION  **
53536C               ******************************************
53537C
53538C               ********************************************
53539C               **  STEP 1--                              **
53540C               **  CHECK THE INPUT ARGUMENTS FOR ERRORS  **
53541C               ********************************************
53542C
53543      AN=N
53544C
53545      IF(N.LT.1)THEN
53546        WRITE(ICOUT,999)
53547        CALL DPWRST('XXX','BUG ')
53548        WRITE(ICOUT,111)
53549  111   FORMAT('***** ERROR IN MEDIAN ABSOLUTE DEVIATION--')
53550        CALL DPWRST('XXX','BUG ')
53551        WRITE(ICOUT,112)
53552  112   FORMAT('      THE RESPONSE VARIABLE HAS LESS THAN ONE ',
53553     1         'OBSERVATION.')
53554        CALL DPWRST('XXX','BUG ')
53555        WRITE(ICOUT,117)N
53556  117   FORMAT('      THE INPUT NUMBER OF OBSERVATIONS = ',I8,'.')
53557        CALL DPWRST('XXX','BUG ')
53558        XMAD=CPUMIN
53559        IERROR='YES'
53560        GOTO9000
53561      ENDIF
53562C
53563      IF(N.EQ.1)THEN
53564        XMAD=0.0
53565        GOTO9000
53566      ENDIF
53567C
53568      HOLD=X(1)
53569      DO135I=2,N
53570        IF(X(I).NE.HOLD)GOTO139
53571  135 CONTINUE
53572      XMAD=0.0
53573      GOTO9000
53574  139 CONTINUE
53575C
53576C               ***********************************************
53577C               **  STEP 2--                                 **
53578C               **  COMPUTE THE MEDIAN ABSOLUTE DEVIATION.   **
53579C               ***********************************************
53580C
53581      IWRIT2='OFF'
53582      CALL MEDIAN(X,N,IWRIT2,XTEMP,MAXNXT,XMED,IBUGA3,IERROR)
53583C
53584      DO300I=1,N
53585        XTEMP2(I)=ABS(X(I)-XMED)
53586  300 CONTINUE
53587      CALL MEDIAN(XTEMP2,N,IWRIT2,XTEMP,MAXNXT,XMAD,IBUGA3,IERROR)
53588C
53589C               *******************************
53590C               **  STEP 3--                 **
53591C               **  WRITE OUT A LINE         **
53592C               **  OF SUMMARY INFORMATION.  **
53593C               *******************************
53594C
53595      IF(IFEEDB.EQ.'ON' .AND. IWRITE.EQ.'ON')THEN
53596        WRITE(ICOUT,999)
53597        CALL DPWRST('XXX','BUG ')
53598        WRITE(ICOUT,811)N,XMAD
53599  811   FORMAT('THE MEDIAN ABSOLUTE DEVIATION OF THE ',I8,
53600     1         ' OBSERVATIONS = ',E15.7)
53601        CALL DPWRST('XXX','BUG ')
53602      ENDIF
53603C
53604C               *****************
53605C               **  STEP 90--  **
53606C               **  EXIT.      **
53607C               *****************
53608C
53609 9000 CONTINUE
53610      IF(IBUGA3.EQ.'ON')THEN
53611        WRITE(ICOUT,999)
53612        CALL DPWRST('XXX','BUG ')
53613        WRITE(ICOUT,9011)
53614 9011   FORMAT('***** AT THE END       OF MAD--')
53615        CALL DPWRST('XXX','BUG ')
53616        WRITE(ICOUT,9012)IBUGA3,IERROR,N,XMED,XMAD
53617 9012   FORMAT('IBUGA3,IERROR,N,XMED,XMAD = ',A4,2X,A4,2X,I8,2G15.7)
53618        CALL DPWRST('XXX','BUG ')
53619      ENDIF
53620C
53621      RETURN
53622      END
53623      SUBROUTINE MAHDIS(AMAT1,AMAT2,AMAT3,MAXROM,MAXCOM,NR1,NC1,
53624     1Y1,Y2,INDEX,DMEAN,
53625     1ICASE,IWRITE,IBUGA3,IERROR)
53626C
53627C     PURPOSE--THIS SUBROUTINE COMPUTES THE
53628C              MAHALONBIS DISTANCE OF A MATRIX.
53629C     INPUT  ARGUMENTS--AMAT1  = THE SINGLE PRECISION MATRIX
53630C                     --MAXROM = THE INTEGER ROW DIMENSION OF AMAT
53631C                     --MAXCOM = THE INTEGER COUMN DIMENSION OF AMAT
53632C                     --NR1    = THE INTEGER NUMBER OF ROWS OF AMAT
53633C                     --NC1    = THE INTEGER NUMBER OF COLUMNS OF AMAT
53634C     OUTPUT ARGUMENTS--AMAT3    = THE SINGLE PRECISION VALUE OF THE
53635C                                COMPUTED MAHALANOBIS DISTANCE MATRIX.
53636C     OUTPUT--THE COMPUTED SINGLE PRECISION VALUE OF THE
53637C             MAHALANOBIS DISTANCE MATRIX.
53638C     NOTE--THIS ROUTINE ASSUMES THE ERROR CHECKING (FOR EQUAL
53639C           ROWS AND COLUMNS, MATCHING DIMENSIONS FOR X AND AMAT)
53640C           IS DONE BT THE CALLING SUBROUTINE.
53641C     FORTRAN LIBRARY SUBROUTINES NEEDED--NONE.
53642C     LANGUAGE--ANSI FORTRAN (1977)
53643C     WRITTEN BY--JAMES J. FILLIBEN
53644C                 STATISTICAL ENGINEERING DIVISION
53645C                 INFORMATION TECHNOLOGY LABORATORY
53646C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
53647C                 GAITHERSBURG, MD 20899-8980
53648C                 PHONE--301-975-2855
53649C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
53650C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
53651C     LANGUAGE--ANSI FORTRAN (1977)
53652C     VERSION NUMBER--98.7
53653C     ORIGINAL VERSION--JULY      1998.
53654C
53655C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
53656C
53657      CHARACTER*4 ICASE
53658      CHARACTER*4 IWRITE
53659      CHARACTER*4 IBUGA3
53660      CHARACTER*4 IERROR
53661C
53662      CHARACTER*4 ISUBN1
53663      CHARACTER*4 ISUBN2
53664C
53665C---------------------------------------------------------------------
53666C
53667      DIMENSION AMAT1(MAXROM,MAXCOM)
53668      DIMENSION AMAT2(MAXROM,MAXCOM)
53669      DIMENSION AMAT3(MAXROM,MAXCOM)
53670      DIMENSION Y1(*)
53671      DIMENSION Y2(*)
53672      DIMENSION INDEX(*)
53673      DOUBLE PRECISION DMEAN(*)
53674C
53675C-----COMMON----------------------------------------------------------
53676C
53677      INCLUDE 'DPCOP2.INC'
53678C
53679C-----START POINT-----------------------------------------------------
53680C
53681      ISUBN1='MAHD'
53682      ISUBN2='IS  '
53683      IWRITE='NO'
53684      IERROR='NO'
53685C
53686      IF(IBUGA3.EQ.'OFF')GOTO90
53687      WRITE(ICOUT,999)
53688  999 FORMAT(1X)
53689      CALL DPWRST('XXX','BUG ')
53690      WRITE(ICOUT,51)
53691   51 FORMAT('***** AT THE BEGINNING OF MAHDIS--')
53692      CALL DPWRST('XXX','BUG ')
53693      WRITE(ICOUT,52)IBUGA3,ICASE
53694   52 FORMAT('IBUGA3,ICASE = ',2A4)
53695      CALL DPWRST('XXX','BUG ')
53696      WRITE(ICOUT,53)NR1,NC1
53697   53 FORMAT('NR1, NC1 = ',2I8)
53698      CALL DPWRST('XXX','BUG ')
53699   90 CONTINUE
53700C
53701C               **********************************
53702C               **  COMPUTE MAHALNOBIS DISTANCE **
53703C               **********************************
53704C
53705      IF(ICASE.EQ.'COLU')THEN
53706        CALL VARCOV(AMAT1,AMAT2,MAXROM,MAXCOM,NR1,NC1,DMEAN,
53707     1            ICASE,IBUGA3,IERROR)
53708         CALL SGECO(AMAT2,MAXROM,NC1,INDEX,RCOND,Y1)
53709C
53710         IF(1.0+RCOND.EQ.1.0)THEN
53711           WRITE(ICOUT,999)
53712           CALL DPWRST('XXX','BUG ')
53713           WRITE(ICOUT,5171)
53714           CALL DPWRST('XXX','ERRO ')
53715           WRITE(ICOUT,5172)
53716           CALL DPWRST('XXX','ERRO ')
53717           WRITE(ICOUT,5173)
53718           CALL DPWRST('XXX','ERRO ')
53719           IERROR='YES'
53720           GOTO9000
53721         ENDIF
53722 5171 FORMAT('*** ERROR FROM MAHDIS: UNABLE TO COMPUTE THE INVERSE OF ',
53723     1       'THE COVARIANCE MATRIX.')
53724 5172 FORMAT('    PROBLEM: SOME ROWS ARE LINEARLY DEPDENDENT ON OTHER',
53725     1       ' ROWS.')
53726 5173 FORMAT('    SUGGESTED SOLUTION: WORK WITH A SUBSET OF THE ',
53727     1       'ORIGINAL ROWS.')
53728C
53729         IJOB=1
53730         CALL SGEDI(AMAT2,MAXROM,NR1,INDEX,Y1,Y2,IJOB)
53731         DO5111I=1,NC1
53732           DO5113J=1,I
53733             IF(I.EQ.J)THEN
53734               AMAT3(I,I)=0.0
53735             ELSE
53736               DO5117K=1,NR1
53737                 Y1(K)=AMAT1(K,I)-AMAT1(K,J)
53738 5117          CONTINUE
53739               CALL QUAFRM(AMAT2,MAXROM,MAXCOM,NR1,NR1,Y1,IWRITE,
53740     1                     XQUAD,IBUGA3,IERROR)
53741               AMAT3(I,J)=XQUAD
53742               AMAT3(J,I)=XQUAD
53743             ENDIF
53744 5113      CONTINUE
53745 5111    CONTINUE
53746      ELSE
53747        CALL VARCOV(AMAT1,AMAT2,MAXROM,MAXCOM,NR1,NC1,DMEAN,
53748     1            ICASE,IBUGA3,IERROR)
53749         CALL SGECO(AMAT2,MAXROM,NR1,INDEX,RCOND,Y1)
53750C
53751         IF(1.0+RCOND.EQ.1.0)THEN
53752           WRITE(ICOUT,999)
53753           CALL DPWRST('XXX','BUG ')
53754           WRITE(ICOUT,6171)
53755           CALL DPWRST('XXX','ERRO ')
53756           WRITE(ICOUT,6172)
53757           CALL DPWRST('XXX','ERRO ')
53758           WRITE(ICOUT,6173)
53759           CALL DPWRST('XXX','ERRO ')
53760           IERROR='YES'
53761           GOTO9000
53762         ENDIF
53763 6171 FORMAT('*** ERROR FROM MAHDIS: UNABLE TO COMPUTE THE INVERSE OF ',
53764     1       'THE COVARIANCE MATRIX.')
53765 6172 FORMAT('    PROBLEM: SOME ROWS ARE LINEARLY DEPDENDENT ON OTHER',
53766     1       ' ROWS.')
53767 6173 FORMAT('    SUGGESTED SOLUTION: WORK WITH A SUBSET OF THE ',
53768     1       'ORIGINAL ROWS.')
53769C
53770         IJOB=1
53771         CALL SGEDI(AMAT2,MAXROM,NR1,INDEX,Y1,Y2,IJOB)
53772         DO6111I=1,NR1
53773           DO6113J=1,I
53774             IF(I.EQ.J)THEN
53775               AMAT3(I,I)=0.0
53776             ELSE
53777               DO6117K=1,NC1
53778                 Y1(K)=AMAT1(I,K)-AMAT1(J,K)
53779 6117          CONTINUE
53780               CALL QUAFRM(AMAT2,MAXROM,MAXCOM,NC1,NC1,Y1,IWRITE,
53781     1                     XQUAD,IBUGA3,IERROR)
53782               AMAT3(I,J)=XQUAD
53783               AMAT3(J,I)=XQUAD
53784             ENDIF
53785 6113      CONTINUE
53786 6111    CONTINUE
53787      ENDIF
53788C
53789C               *****************
53790C               **  STEP 90--  **
53791C               **  EXIT.      **
53792C               *****************
53793C
53794 9000 CONTINUE
53795      IF(IBUGA3.EQ.'OFF')GOTO9090
53796      WRITE(ICOUT,999)
53797      CALL DPWRST('XXX','BUG ')
53798      WRITE(ICOUT,9011)
53799 9011 FORMAT('***** AT THE END       OF MAHDIS--')
53800      CALL DPWRST('XXX','BUG ')
53801      WRITE(ICOUT,9012)IBUGA3,IERROR
53802 9012 FORMAT('IBUGA3,IERROR = ',A4,2X,A4)
53803      CALL DPWRST('XXX','BUG ')
53804      WRITE(ICOUT,9013)NR1,NC1
53805 9013 FORMAT('NR1,NC1 = ',2I8)
53806      CALL DPWRST('XXX','BUG ')
53807 9090 CONTINUE
53808C
53809      RETURN
53810      END
53811      SUBROUTINE MAINAN(ICASAN,ISEED,ANOPL1,ANOPL2,
53812     1                  TEMP,TEMP2,XTEMP1,XTEMP2,MAXNXT,
53813     1                  IFTEXP,IFTORD,ALOWFR,ALOWDG,IBOOSS,
53814     1                  ICAPSW,IFORSW,
53815     1                  IBUGAN,IBUGA2,IBUGA3,
53816     1                  IBUGCO,IBUGEV,IBUGQ,ISUBRO,IFOUND,IERROR)
53817C
53818C     PURPOSE--THIS IS SUBROUTING MAINAN.
53819C              (THE   AN    AT THE END OF    MAINAN   STANDS FOR   ANALYSIS)
53820C              THIS SUBROUTINE SEARCHES FOR AND EXECUTES ANALYSIS COMMANDS.
53821C              THE ANALYSIS COMMANDS SEARCHED FOR BY MAINAN ARE AS FOLLOWS--
53822C
53823C              CODE AT END: H => HTML OUTPUT IMPLEMENTED
53824C                           L => LATEX OUTPUT IMPLEMENTED
53825C                           R => RICH TEXT FORMAT OUTOUT IMPLEMENTED
53826C
53827C                  TABULATE/CROSS TABULATE                     (HLR)
53828C                  POSITIONAL TABULATION                       (HLR)
53829C
53830C                  ANALYSIS OF VARIANCE                        (HLR)
53831C                  MEDIAN POLISH                               (HLR)
53832C                  KRUSKAL-WALLIS TEST                         (HLR)
53833C                  VAN DER WAERDEN TEST                        (HLR)
53834C                  KENDALL TAU      INDEPENDENCE TEST          (HLR)
53835C                  RANK CORRELATION INDEPENDENCE TEST          (HLR)
53836C                  FRIEDMAN TEST                               (HLR)
53837C                  QUADE TEST                                  (HLR)
53838C                  PAGE TEST                                   (HLR)
53839C                  DURBIN TEST                                 (HLR)
53840C                  COCHRAN TEST                                (HLR)
53841C                  EQUAL SLOPES TEST                           (HLR)
53842C
53843C                  CONSENSUS MEANS                             (HLR)
53844C                  E691 INTERLAB                               (HLR)
53845C                  ONE SAMPLE PROFICIENCY TEST                 (HLR)
53846C                  TWO SAMPLE PROFICIENCY TEST                 (HLR)
53847C                  LIMIT OF DETECTION                          (HLR)
53848C
53849C                  CONFIDENCE LIMITS                           (HLR)
53850C                  PREDICTION LIMITS                           (HLR)
53851C                  PREDICTION BOUNDS                           (HLR)
53852C                  TOLERANCE LIMITS                            (HLR)
53853C                  BIWEIGHT CONFIDENCE LIMITS                  (HLR)
53854C                  TRIMMED MEAN CONFIDENCE LIMITS              (HLR)
53855C                  MEDIAN CONFIDENCE LIMITS                    (HLR)
53856C                  SD CONFIDENCE LIMITS                        (HLR)
53857C                  SD PREDICTION LIMITS                        (HLR)
53858C                  COEF OF VARIATION CONFIDENCE LIMITS         (HLR)
53859C                  COMMON COEF OF VARI CONFIDENCE LIMITS       (HLR)
53860C                  COEF OF DISPERSION CONFIDENCE LIMITS        (HLR)
53861C                  COEF OF QUARTILE DISP CONFIDENCE LIMITS     (HLR)
53862C                  QUANTILE CONFIDENCE LIMITS                  (HLR)
53863C                  DIFFERENCE OF MEANS CONFIDENCE LIMITS       (HLR)
53864C                  CORRELATION CONFIDENCE LIMITS               (HLR)
53865C                  HEDGES G CONFIDENCE LIMITS                  (HLR)
53866C
53867C                  PROPORTION CONFIDENCE LIMITS                (HLR)
53868C                  DIFFERENCE OF PROPORTION CONFIDENCE LIMITS  (HLR)
53869C                  BINOMIAL PROPORTION TEST                    (HLR)
53870C                  CHI-SQUARED INDEPENDENCE TEST Y1 Y2         (HLR)
53871C                  ODDS RATIO INDEPENDENCE TEST Y1 Y2          (HLR)
53872C                  FISHER EXACT TEST Y1 Y2                     (HLR)
53873C                  MCNEMAR TEST Y1 Y2                          (HLR)
53874C                  ODDS RATIO CHI-SQUARE TEST Y1 Y2 X          (HLR)
53875C                  MANTEL-HAENSZEL TEST Y1 Y2 X                (HLR)
53876C
53877C                  EXACT ... RATIONAL FIT                      (HLR)
53878C                  ... FIT                                     (HLR)
53879C                  ... PRE-FIT
53880C                  ... SMOOTH
53881C                  ... SPLINE FIT                              (HLR)
53882C                  YATES ANALYSIS = DEX FIT = 2**K FIT =       (HLR)
53883C                                    2**K DEX FIT
53884C                  (YATES) PHD ANALYSIS                        (HLR)
53885C                  ORTHOGONAL DISTANCE FIT
53886C                  BOOTSTRAP FIT                               (HLR)
53887C                  BEST CP Y X1 TO XK                          (HLR)
53888C                  LOWESS                                      (HLR)
53889C                  SEASONAL LOWESS
53890C                  LINEAR CALIBRATION                          (HLR)
53891C                  QUADRATIC CALIBRATION                       (HLR)
53892C
53893C                  LET
53894C                  LET FUNCTION
53895C
53896C                  RUNS                                        (HLR)
53897C                  LJUNG-BOX TEST                              (HLR)
53898C                      (AUTOCORRELATION TEST FOR RANDOMNESS)
53899C                  MEAN SUCCESSIVE DIFFERENCES TEST            (HLR)
53900C                      (RANDOMNESS TEST - TRENDS)
53901C                  COX STUART TEST Y                           (HLR)
53902C                      (SIGN TEST FOR TREND)
53903C                  FREQUENCY TEST (FOR RANDOMNESS)             (HLR)
53904C                  FREQUENCY WITHIN A BLOCK TEST (RANDOMNESS)  (HLR)
53905C                  CUMULATIVE SUM RANDOMNESS TEST              (HLR)
53906C
53907C                  COMPLETE SPATIAL RANDOMNESS TEST            (HLR)
53908C
53909C                  T TEST Y1 Y2 or Y MU or MU Y                (HLR)
53910C                  SIGN TEST Y1 Y2 or Y MU or MU Y OR Y1 Y2 D0 (HLR)
53911C                  WILCOXON SIGNED RANK TEST Y1 Y2 or Y1 Y2 D0 (HLR)
53912C                                            or Y MU
53913C                  MANN-WHITNEY RANK SUM TEST Y1 Y2            (HLR)
53914C                  FISHER TWO SAMPLE RANDOMIZATION TEST Y1 Y2  (HLR)
53915C
53916C                  CHI-SQUARED TEST Y SIGMA or SIGMA Y         (HLR)
53917C                  COEFFICIENT OF VARIATION TEST Y X GAMMA0    (HLR)
53918C                  COEFFICIENT OF VARIATION TEST Y1 X1 Y2 X2   (HLR)
53919C                  F TEST Y1 Y2                                (HLR)
53920C                  KLOTZ TEST Y1 Y2                            (HLR)
53921C                  SQUARED RANKS TEST Y X                      (HLR)
53922C                  MEDIAN TEST Y X                             (HLR)
53923C                  F LOCATION TEST Y X                         (HLR)
53924C                  BARTLETT'S TEST Y X1 X2 X3 X4 X5            (HLR)
53925C                  LEVENE TEST Y X                             (HLR)
53926C                  COCHRAN VARIANCE OUTLIER TEST Y X           (HLR)
53927C                  ANDERSON DARLING K-SAMPLE TEST Y X          (HLR)
53928C
53929C                  WILKS-SHAPIRO NORMALITY TEST Y              (HLR)
53930C                  JARQUE BERA   NORMALITY TEST Y              (HLR)
53931C                  POISSON DISPERSION      TEST Y              (HLR)
53932C                  <DIST> ANDERSON-DARLING GOOD OF FIT TEST Y  (HLR)
53933C                  <DIST> CHI-SQUARED GOODNESS OF FIT TEST Y   (HLR)
53934C                  <DIST> KOLMOGOROV-SMIRNOV GOODNESS OF FIT   (HLR)
53935C                                            TEST Y
53936C                  <DIST> PPCC GOOD OF FIT TEST Y              (HLR)
53937C                  CHI-SQUARED 2 SAMPLE TEST Y1 Y2             (HLR)
53938C                  KOLMOGOROV-SMIRNOV 2 SAMPLE TEST Y1 Y2      (HLR)
53939C                  DISTRIBUTIONAL LIKELIHOOD RATIO TEST Y      (HLR)
53940C                  BEST DISTRIBUTIONAL FIT Y                   (HLR)
53941C
53942C                  DIXON TEST Y                                (HLR)
53943C                  GRUBB TEST Y                                (HLR)
53944C                  TIETJEN-MOORE TEST Y                        (HLR)
53945C                  EXTREME STUDENTIZED DEVIATE TEST Y          (HLR)
53946C                  DAVID TEST Y                                (HLR)
53947C                  SKEWNESS OUTLIER TEST Y                     (HLR)
53948C                  KURTOSIS OUTLIER TEST Y                     (HLR)
53949C
53950C                  RELIABILITY TREND TESTS Y                   (HLR)
53951C
53952C                  SUMMARY                                     (HLR)
53953C                  CAPABILITY ANALYSIS                         (HLR)
53954C
53955C                  DDS               DDS Y 6 5 DELT   3/94
53956C                  ARMA              ARMA Y 2 1 2 1 1 1 12
53957C
53958C                  RECIPE            RECIPE <FIT/ANOVA> Y <X1 .. XN>
53959C                  SIMCOV            SIMCOV <FIT/ANOVA> Y <X1 .. XN>
53960C                  BBASIS <WEIBULL/NORMAL/LOGNORMAL> Y         (HLR)
53961C                  ABASIS <WEIBULL/NORMAL/LOGNORMAL> Y         (HLR)
53962C
53963C                  MCCOOL WEIBULL LOCATION TEST Y X            (HLR)
53964C                  COMMON WEIBULL SHAPE TEST Y X               (HLR)
53965C
53966C                  <DIST> MAXIMUM LIKELIHOOD Y                 (HLR)
53967C
53968C                  SINGLE SAMPLE ACCEPTANCE PLAN P1 P2 ALPHA BETA
53969C                  DOUBLE SAMPLE ACCEPTANCE PLAN P1 P2 ALPHA BETA (NOT WORKING)
53970C
53971C                  K MEANS CLUSTER Y1 TO YK                    (HLR)
53972C                  NORMAL MIXTURE CLUSTER Y1 TO YK             (HLR)
53973C                  K MEDOIDS CLUSTER Y1 TO YK
53974C                  FUZZY CLUSTER Y1 TO YK
53975C                  AGNES CLUSTER Y1 TO YK
53976C                     (SINGLE LINKAGE, COMPLETE LINKAGE,
53977C                      AVERAGE LINKAGE, CENTROID LINKAGE,
53978C                      WARD'S LINKAGE, WEIGHTED AVERAGE LINKAGE,
53979C                      GOWER'S LINKAGE)
53980C                  DIANA CLUSTER Y1 TO YK
53981C
53982C     WRITTEN BY--JAMES J. FILLIBEN
53983C                 STATISTICAL ENGINEERING DIVISION
53984C                 INFORMATION TECHNOLOGY LABORATORY
53985C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
53986C                 GAITHERSBURG, MD 20899-8980
53987C                 PHONE--301-975-2855
53988C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
53989C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
53990C     LANGUAGE--ANSI FORTRAN (1977)
53991C     VERSION NUMBER--82.6
53992C     ORIGINAL VERSION--JANUARY   1981.
53993C     UPDATED         --MARCH     1981.
53994C     UPDATED         --JULY      1981.
53995C     UPDATED         --AUGUST    1981.
53996C     UPDATED         --SEPTEMBER 1981.
53997C     UPDATED         --OCTOBER   1981.
53998C     UPDATED         --NOVEMBER  1981.
53999C     UPDATED         --MARCH     1982.
54000C     UPDATED         --MAY       1982.
54001C     UPDATED         --JULY      1987. YATES ANALYSIS
54002C     UPDATED         --FEBRUARY  1988. LOWESS FIT
54003C     UPDATED         --DECEMBER  1988. LOWESS FRACTION
54004C     UPDATED         --MAY       1989. EXPERIMENTAL SIMULATION
54005C     UPDATED         --JUNE      1989. (2**K) DEX FIT = YATES ANALYSIS
54006C     UPDATED         --NOVEMBER  1989. YATES ... CUTOFF BRANCH
54007C     UPDATED         --NOVEMBER  1989. YATES OUTPUT BRANCH
54008C     UPDATED         --NOVEMBER  1989. CROSS-TABULATION
54009C     UPDATED         --SEPTEMBER 1990. CAPABILITY ANALYSIS
54010C     UPDATED         --SEPTEMBER 1993. (YATES) PHD ANALYSIS
54011C     UPDATED         --FEBRUARY  1994. REWRITE T TEST SECTION
54012C     UPDATED         --FEBRUARY  1994. CHI-SQUARED TEST
54013C     UPDATED         --FEBRUARY  1994. F TEST
54014C     UPDATED         --FEBRUARY  1994. BARTLETT'S TEST
54015C     UPDATED         --FEBRUARY  1994. ADD ARGUMENT TO DPLET
54016C     UPDATED         --MARCH     1994. DDS
54017C     UPDATED         --JUNE      1994. ADD ARGUMENT TO DPLET
54018C     UPDATED         --FEBRUARY  1995. RENAME PHD TO DEX PHD (A MORE
54019C                                       GENERAL PHD COMMAND MAY BE
54020C                                       ADDED LATER)
54021C     UPDATED         --JULY      1995. RECIPE ANALYSIS (MARK VANGEL)
54022C     UPDATED         --JULY      1995. MANDEL (2-WAY) ANALYSIS
54023C     UPDATED         --OCTOBER   1995. IFTORD
54024C     UPDATED         --APRIL     1996. FLAG FOR PRESERVING THE CASE
54025C                                       ON STRINGS
54026C     UPDATED         --SEPTEMBER 1997. RECIPE AND SIMCOV
54027C     UPDATED         --SEPTEMBER 1997. GRUBB TEST
54028C     UPDATED         --SEPTEMBER 1997. LEVENE TEST
54029C     UPDATED         --SEPTEMBER 1997. F LOCATION TEST
54030C     UPDATED         --SEPTEMBER 1997. ANDERSON DARLING 1-SAMPLE TEST
54031C     UPDATED         --JANUARY   1998. NAME CONFLICT WITH RECIPE AND
54032C                                       RECIPROCAL PROB PLOT AND PPCC PLOT
54033C     UPDATED         --MARCH     1998. WEIBULL MAXIMUM LIKELIHOOD Y
54034C     UPDATED         --MARCH     1998. BBASIS WEIBULL/NORMAL/LOGNORMAL Y
54035C     UPDATED         --MARCH     1998. ABASIS WEIBULL/NORMAL/LOGNORMAL Y
54036C     UPDATED         --MARCH     1998. K-SAMPLE ANDERSON DARLING
54037C     UPDATED         --APRIL     1998. OTHER DISTRIBUTIONS FOR MLE
54038C     UPDATED         --MAY       1998. DEHAAN AND CME
54039C     UPDATED         --MAY       1998. RELIABILITY TREND TESTS
54040C     UPDATED         --JUNE      1998. GAMMA, POWER, DOUBLE
54041C                                       EXPONENTIAL MLE
54042C     UPDATED         --NOVEMBER  1998. TOLERANCE LIMITS
54043C     UPDATED         --NOVEMBER  1998. CHI-SQUARE GOODNESS OF FIT
54044C     UPDATED         --NOVEMBER  1998. KOLMOGOROV-SMIRNOV GOODNESS OF FIT
54045C     UPDATED         --DECEMBER  1998. CHI-SQUARE 2 SAMPLE TEST
54046C     UPDATED         --FEBRUARY  1999. UPDATE LOWESS TO SUPPORT
54047C                                       SEASONAL LOESS
54048C     UPDATED         --FEBRUARY  1999. UPDATE SMOOTH TO SUPPORT
54049C                                       LOW PASS AND HIGH PASS FILTER
54050C     UPDATED         --MARCH     1999. WILKS-SHAPIRO NORMALITY TEST
54051C     UPDATED         --MARCH     1999. SINGLE SAMPLE ACCEPTANCE PLAN
54052C     UPDATED         --MARCH     1999. DOUBLE SAMPLE ACCEPTANCE PLAN
54053C     UPDATED         --MARCH     1999. BETA BINOMIAL MAXIMUM LIKELIHOOD Y
54054C     UPDATED         --MARCH     1999. GENERALIZED EXTREME VALUE MAXIMUM LIKELIHOOD Y
54055C     UPDATED         --MARCH     1999. WILKS-SHAPIRO NORMALITY TEST
54056C     UPDATED         --MARCH     1999. PROPORTIONS CONFIDENCE LIMITS
54057C     UPDATED         --MARCH     1999. DIFFERENCE OF PROPORTIONS
54058C     UPDATED         --MARCH     1999. DIFFERENCE OF MEANS
54059C                                       CONFIDENCE LIMITS
54060C     UPDATED         --MAY       1999. ARMA FIT
54061C     UPDATED         --JUNE      1999. SIGN TEST
54062C     UPDATED         --JUNE      1999. KRUSKAL-WALLIS TEST
54063C     UPDATED         --JUNE      1999. WILCOXON SIGNED RANK TEST
54064C     UPDATED         --JULY      1999. MANN-WHITNEY TEST
54065C     UPDATED         --AUGUST    1999. FIX TO LEVENE TEST
54066C     UPDATED         --AUGUST    1999. FIX TO BARTLETT TEST
54067C     UPDATED         --OCTOBER   2000. CONSENSUS MEANS
54068C                                       (MANDEL-PAULE)
54069C     UPDATED         --OCTOBER   2000. BOB (BAYESIAN IMPLEMENTATION
54070C                                       OF CONCENSUS MEANS)
54071C     UPDATED         --APRIL     2001. ORTHOGONAL DISTANCE FIT
54072C     UPDATED         --JULY      2001. EV1 SYNONYMS FOR ANDERSON
54073C                                       DARLING TEST
54074C     UPDATED         --NOVEMBER  2001. BIWEIGHT CONFIDENCE INTEVAL
54075C     UPDATED         --MAY       2002. TWO-SIDED POWER MAXI LIKE
54076C     UPDATED         --JUNE      2002. BEST CP
54077C     UPDATED         --JULY      2002. BOOTSTRAP FIT
54078C     UPDATED         --AUGUST    2002. CALL LIST TO CROSS TABULAE,
54079C                                       TABULATE
54080C     UPDATED         --OCTOBER   2002. CALL LIST TO SUMMARY
54081C     UPDATED         --OCTOBER   2002. CALL LIST TO CONSENSUS MEAN
54082C     UPDATED         --FEBRUARY  2003. TRIMMED MEAN CONFIDENCE INTERVAL
54083C     UPDATED         --FEBRUARY  2003. MEDIAN CONFIDENCE INTERVAL
54084C     UPDATED         --FEBRUARY  2003. QUANTILE CONFIDENCE INTERVAL
54085C     UPDATED         --FEBRUARY  2003. LUJAN-BOX TEST FOR RANDOMNESS
54086C     UPDATED         --JULY      2003. JOHNSON SB MOMEMTS
54087C     UPDATED         --JULY      2003. JOHNSON SU MOMEMTS
54088C     UPDATED         --JULY      2003. LINEAR CALIBRATION
54089C     UPDATED         --JULY      2003. QUADRATIC CALIBRATION
54090C     UPDATED         --OCTOBER   2003. FRIEDMAN TEST
54091C     UPDATED         --OCTOBER   2003. LOGISTIC MAXIMUM LIKELIHOOD
54092C     UPDATED         --OCTOBER   2003. CAUCHY MAXIMUM LIKELIHOOD
54093C     UPDATED         --OCTOBER   2003. BETA MAXIMUM LIKELIHOOD
54094C     UPDATED         --OCTOBER   2003. UNIFORM MAXIMUM LIKELIHOOD
54095C     UPDATED         --OCTOBER   2003. ANDERSON-DARLING LOGISTIC
54096C     UPDATED         --NOVEMBER  2003. ANDERSON-DARLING UNIFORM
54097C     UPDATED         --NOVEMBER  2003. ANDERSON-DARLING DOUBLE
54098C                                       EXPONENTIAL
54099C     UPDATED         --NOVEMBER  2003. FREQUENCY TEST
54100C     UPDATED         --NOVEMBER  2003. FREQUENCY WITHIN A BLOCK TEST
54101C     UPDATED         --DECEMBER  2003. CUSUM BLOCK TEST
54102C     UPDATED         --MARCH     2004. LOGARITHMIC SERIES MAXIMUM
54103C                                       LIKELIHOOD
54104C     UPDATED         --MARCH     2004. NEGATIVE BINOMIAL MAXIMUM
54105C                                       LIKELIHOOD
54106C     UPDATED         --MARCH     2004. GEOMETRIC MAXIMUM LIKELIHOOD
54107C     UPDATED         --MARCH     2004. HYPERGEOMETRIC MAXIMUM
54108C                                       LIKELIHOOD
54109C     UPDATED         --MARCH     2004. POLYA MAXIMUM LIKELIHOOD
54110C     UPDATED         --APRIL     2004. JOHNSON PERCENTILE
54111C     UPDATED         --OCTOBER   2004. COCHRAN TEST
54112C     UPDATED         --OCTOBER   2004. VAN DER WAERDEN TEST
54113C     UPDATED         --DECEMBER  2004. ANDERSON-DARLING GAMMA
54114C     UPDATED         --FEBRUARY  2005. E691 INTERLAB
54115C     UPDATED         --MAY       2005. FRECHET MAXIMUM LIKELIHOOD
54116C     UPDATED         --MAY       2005. ANDERSON DARLING FRECHET
54117C     UPDATED         --MAY       2005. ANDERSON DARLING CAUCHY
54118C     UPDATED         --AUGUST    2005. INVERTED WEIBULL MAXI LIKE
54119C     UPDATED         --DECEMBER  2005. ALLOW "NORMAL" AND
54120C                                       "NONPARAMETRIC" FOR TOLERANCE
54121C                                       LIMITS COMMAND
54122C     UPDATED         --JANUARY   2006. DURBIN TEST
54123C     UPDATED         --FEBRUARY  2006. ALLOW "GRUBB MINIMUM" AND
54124C                                       "GRUB MAXIMUM"
54125C     UPDATED         --MAY       2006. BOREL-TANNER MAXIMUM LIKELIHOOD
54126C     UPDATED         --MAY       2006. ZETA MAXIMUM LIKELIHOOD
54127C     UPDATED         --MAY       2006. BETA-GEOMETRIC MAXIMUM LIKELIHOOD
54128C     UPDATED         --JUNE      2006. LAGRANGE-POISSON MAXIMUM
54129C                                       LIKELIHOOD
54130C     UPDATED         --JUNE      2006. LOG-BETA MAXIMUM LIKELIHOOD
54131C     UPDATED         --JUNE      2006. POLYA-AEPPLI MAXIMUM LIKELIHOOD
54132C     UPDATED         --JULY      2006. GENERALIZED LOGARITHMIC SERIES
54133C                                       MAXIMUM LIKELIHOOD
54134C     UPDATED         --JULY      2006. GEETA MLE
54135C     UPDATED         --JULY      2006. QUASI BINOMIAL TYPE I MLE
54136C     UPDATED         --AUGUST    2006. CONSUL MLE
54137C     UPDATED         --AUGUST    2006. LAGRANGE KATZ MLE
54138C     UPDATED         --OCTOBER   2006. POWER LAW MLE
54139C     UPDATED         --DECEMBER  2006. GENERALIZED LOST GAMES MLE
54140C     UPDATED         --JANUARY   2007. GOMPERTZ MLE
54141C     UPDATED         --JANUARY   2007. GENERALIZED GAMMA MLE
54142C     UPDATED         --FEBRUARY  2007. TOPP AND LEONE MLE
54143C     UPDATED         --FEBRUARY  2007. EXPONENTIAL LAW MLE
54144C     UPDATED         --FEBRUARY  2007. ODDS RATIO INDEPENDENCE TEST
54145C     UPDATED         --MARCH     2007. CHI-SQUARE INDEPENDENCE TEST
54146C     UPDATED         --MARCH     2007. FISHER EXACT TEST
54147C     UPDATED         --MARCH     2007. MCNEMAR TEST
54148C     UPDATED         --MARCH     2007. MANTEL-HAENSZEL TEST
54149C     UPDATED         --MARCH     2007. KATZ MAXIMUM LIKELIHOOD
54150C     UPDATED         --APRIL     2007. CHECK FOR FATAL ERROR
54151C     UPDATED         --JUNE      2007. FOUR PARAMETER BETA
54152C                                       MAXIMUM LIKELIHOOD
54153C     UPDATED         --JUNE      2007. LOG BETA MAXIMUM LIKELIHOOD
54154C     UPDATED         --JUNE      2007. SLASH MAXIMUM LIKELIHOOD
54155C     UPDATED         --JUNE      2007. BETA NORMAL MAXIMUM LIKELIHOOD
54156C     UPDATED         --JULY      2007. REFLECTED GENERALIZED TOPP
54157C                                       AND LEONE MAXIMUM LIKELIHOOD
54158C     UPDATED         --SEPTEMBER 2007. IERRST
54159C     UPDATED         --OCTOBER   2007. BURR TYPE 10 MAXIMUM LIKELIHOOD
54160C     UPDATED         --OCTOBER   2007. BURR TYPE 12 MAXIMUM LIKELIHOOD
54161C     UPDATED         --OCTOBER   2007. WAKEBY MLE
54162C     UPDATED         --FEBRUARY  2008. LOGISTIC-EXPONENTIAL MLE
54163C     UPDATED         --FEBRUARY  2008. MAXIMUM LIKELIHOOD MIXTURE
54164C                                       CLUSTERING
54165C                                       (UNDER DEVELOPMENT)
54166C     UPDATED         --FEBRUARY  2008. MULTIVARIATE NORMAL MIXTURE
54167C                                       CLUSTERING
54168C                                       (UNDER DEVELOPMENT)
54169C     UPDATED         --MARCH     2008. TRUNCATED PARETO MLE
54170C     UPDATED         --MARCH     2008. REFLECTED POWER MLE
54171C     UPDATED         --MARCH     2008. BRITTLE FRACTURE MLE
54172C     UPDATED         --JUNE      2008. PEARSON TYPE 3 MLE
54173C     UPDATED         --JUNE      2008. KAPPA MLE
54174C     UPDATED         --JULY      2008. INVERTED GAMMA MLE
54175C     UPDATED         --JULY      2008. VON MISES MLE
54176C     UPDATED         --AUGUST    2008. BINOMIAL PROPORTION TEST
54177C     UPDATED         --AUGUST    2008. CALL LIST TO DPPRCL
54178C     UPDATED         --JANUARY   2009. ONE SAMPLE PROFICIENCY TEST
54179C     UPDATED         --JANUARY   2009. TWO SAMPLE PROFICIENCY TEST
54180C     UPDATED         --JANUARY   2009. LIMIT OF DETECTION
54181C     UPDATED         --NOVEMBER  2009. TIETJEN-MOORE TEST
54182C     UPDATED         --NOVEMBER  2009. EXTREME STUDENTIZED DEVIATE TEST
54183C     UPDATED         --NOVEMBER  2009. DIXON TEST
54184C     UPDATED         --FEBRUARY  2010. MAKE TABULATE A SYNONYM FOR
54185C                                       CROSS TABULATE
54186C     UPDATED         --MARCH     2010. SUPPORT "MULTIPLE" AND "REPLICATED"
54187C                                       OPTIONS FOR CONFIDENCE LIMITS/
54188C                                       DIFFERENCE OF MEANS CONFIDENCE LIMITS,
54189C                                       BIWEIGHT CONFIDENCE LIMITS, TRIMMED
54190C                                       MEAN CONFIDENCE LIMITS,
54191C                                       MEDIAN CONFIDENCE LIMITS,
54192C                                       QUANTILE CONFIDENCE LIMITS,
54193C     UPDATED         --APRIL     2010. 3-PARAMETER WEIBULL
54194C     UPDATED         --NOVEMBER  2010. 2-PARAMETER BRITTLE FIBER WEIBULL
54195C     UPDATED         --MARCH     2011. BEST DISTRIBUTIONAL FIT
54196C     UPDATED         --MAY       2011. KLOTZ TEST
54197C     UPDATED         --JUNE      2011. SQUARED RANKS TEST
54198C     UPDATED         --JUNE      2011. COX STUART TEST
54199C     UPDATED         --JUNE      2011. MEDIAN TEST
54200C     UPDATED         --JUNE      2011. FISHER TWO SAMPLE RANDOMIZATION
54201C                                       TEST
54202C     UPDATED         --JULY      2011. QUADE TEST
54203C     UPDATED         --JUNE      2012. JARQUE BERA NORMALITY TEST
54204C     UPDATED         --JUNE      2012. CORRELATION CONFIDENCE LIMITS
54205C     UPDATED         --SEPTEMBER 2012. FOLD PHD DEX FIT INTO YATES
54206C                                       FIT
54207C     UPDATED         --JANUARY   2013. MEAN SUCCESSIVE DIFFERENCES TEST
54208C     UPDATED         --FEBRUARY  2013. PAGE TEST
54209C     UPDATED         --MARCH     2013. KENDALL TAU INDEPENDENCE TEST
54210C     UPDATED         --MARCH     2013. RANK CORRELATION INDEPENDENCE
54211C                                       TEST
54212C     UPDATED         --APRIL     2013. PREDICTION LIMITS/BOUNDS
54213C     UPDATED         --APRIL     2013. SD CONFIDENCE LIMITS
54214C     UPDATED         --APRIL     2013. SD PREDICTION LIMITS
54215C     UPDATED         --AUGUST    2013. MCCOOL WEIBULL LOCATION TEST
54216C     UPDATED         --NOVEMBER  2013. POISSON DISPERSION TEST
54217C     UPDATED         --JANUARY   2014. COMPLETE SPATIAL RANDOMNESS
54218C     UPDATED         --FEBRUARY  2014. ERROR PROCESSING TO DPERRO
54219C     UPDATED         --APRIL     2014. 3-PARAMETER LOGNORMAL
54220C     UPDATED         --APRIL     2014. 3-PARAMETER GAMMA
54221C     UPDATED         --APRIL     2014. COMMON WEIBULL SHAPE TEST
54222C     UPDATED         --APRIL     2014. 3-PARAMETER INVERSE GAUSSIAN
54223C     UPDATED         --MAY       2014. SINGLE CALL FOR MAXIMUM
54224C                                       LIKELIHOOD
54225C     UPDATED         --MAY       2014. DISTRIBUTIONAL LIKELIHOOD RATIO
54226C                                       TEST
54227C     UPDATED         --FEBRUARY  2015. ADJACENCY RANDOMNESS TEST AS
54228C                                       SYNONYM FOR MEAN SUCCESSIVE
54229C                                       DIFFERENCES TEST
54230C     UPDATED         --APRIL     2015. COCHRAN VARIANCE OUTLIER TEST
54231C     UPDATED         --JUNE      2015. ARGUMENT LIST TO DPLET
54232C     UPDATED         --OCTOBER   2015. EQUAL SLOPES TEST
54233C     UPDATED         --JANUARY   2017. COEFFICIENT OF VARIATION
54234C                                       CONFIDENCE LIMITS
54235C     UPDATED         --JANUARY   2017. COMMON COEFFICIENT OF VARIATION
54236C                                       CONFIDENCE LIMITS
54237C     UPDATED         --MARCH     2017. K MEANS CLUSTERING
54238C     UPDATED         --APRIL     2017. NORMAL MIXTURE CLUSTERING
54239C     UPDATED         --APRIL     2017. SINGLE LINKAGE CLUSTERING
54240C     UPDATED         --JUNE      2017. COEFFICIENT OF VARIATION TEST
54241C     UPDATED         --AUGUST    2017. K MEDOIDS CLUSTERING
54242C     UPDATED         --AUGUST    2017. LOGNORMAL CONFIDENCE LIMITS
54243C     UPDATED         --NOVEMBER  2017. COEFFICIENT OF DISPERSION
54244C                                       CONFIDENCE LIMITS
54245C     UPDATED         --DECEMBER  2017. COEFFICIENT OF QUARTILE DISPERSION
54246C                                       CONFIDENCE LIMITS
54247C     UPDATED         --AUGUST    2018. HEDGES G CONFIDENCE LIMIT
54248C     UPDATED         --OCTOBER   2019. RATIO OF MEANS CONFIDENCE LIMIT
54249C     UPDATED         --OCTOBER   2019. DAVID TEST
54250C     UPDATED         --OCTOBER   2019. SKEWNESS OUTLIER TEST
54251C     UPDATED         --OCTOBER   2019. KURTOSIS OUTLIER TEST
54252C
54253C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
54254C
54255      CHARACTER*4 ICASAN
54256      CHARACTER*4 IFORSW
54257      CHARACTER*4 IBUGAN
54258      CHARACTER*4 IBUGA2
54259      CHARACTER*4 IBUGA3
54260      CHARACTER*4 IBUGCO
54261      CHARACTER*4 IBUGEV
54262      CHARACTER*4 IBUGQ
54263      CHARACTER*4 ISUBRO
54264      CHARACTER*4 IFOUND
54265      CHARACTER*4 IERROR
54266C
54267      CHARACTER*4 IFTEXP
54268CCCCC AUGUST 1995.  ADD FOLLOWING LINE
54269      CHARACTER*4 IFTORD
54270CCCCC APRIL 1996.  ADD FOLLOWING LINE
54271      CHARACTER*10 ISFLAG
54272CCCCC SEPTEMBER 1997.  ADD FOLLOWING LINE
54273      CHARACTER*4 ICASDI
54274      CHARACTER*4 ICAPSW
54275      CHARACTER*4 IMULT
54276      CHARACTER*4 IREPL
54277C
54278      CHARACTER*4 ISUBN1
54279      CHARACTER*4 ISUBN2
54280C
54281      DIMENSION TEMP(*)
54282      DIMENSION TEMP2(*)
54283      DIMENSION XTEMP1(*)
54284      DIMENSION XTEMP2(*)
54285C
54286C-----COMMON----------------------------------------------------------
54287C
54288      INCLUDE 'DPCOPA.INC'
54289      INCLUDE 'DPCOMC.INC'
54290      INCLUDE 'DPCOHK.INC'
54291      INCLUDE 'DPCOSU.INC'
54292      INCLUDE 'DPCOS2.INC'
54293      INCLUDE 'DPCODA.INC'
54294      INCLUDE 'DPCOST.INC'
54295      INCLUDE 'DPCOP2.INC'
54296C
54297C-----START POINT-----------------------------------------------------
54298C
54299      ISUBN1='MAIN'
54300      ISUBN2='AN  '
54301      IFOUND='NO'
54302      IERROR='NO'
54303      ICASAN='UNKN'
54304C
54305      IF(IBUGAN.EQ.'ON' .OR. ISUBRO.EQ.'INAN')THEN
54306        WRITE(ICOUT,999)
54307  999   FORMAT(1X)
54308        CALL DPWRST('XXX','BUG ')
54309        WRITE(ICOUT,51)
54310   51   FORMAT('***** AT THE BEGINNING OF MAINAN--')
54311        CALL DPWRST('XXX','BUG ')
54312        WRITE(ICOUT,53)IBUGAN,IBUGA2,IBUGA3
54313   53   FORMAT('IBUGAN,IBUGA2,IBUGA3 = ',A4,2X,A4,2X,A4)
54314        CALL DPWRST('XXX','BUG ')
54315        WRITE(ICOUT,55)IBUGCO,IBUGEV,IBUGQ
54316   55   FORMAT('IBUGCO,IBUGEV,IBUGQ = ',A4,2X,A4,2X,A4)
54317        CALL DPWRST('XXX','BUG ')
54318        WRITE(ICOUT,56)IFTEXP,IANGLU,ALOWFR
54319   56   FORMAT('IFTEXP,IANGLU,ALOWFR = ',A4,2X,A4,2X,G15.7)
54320        CALL DPWRST('XXX','BUG ')
54321        WRITE(ICOUT,58)ICASAN,ISEED,ANOPL1,ANOPL2
54322   58   FORMAT('ICASAN,ISEED,ANOPL1,ANOPL2 = ',A4,I8,2G15.7)
54323        CALL DPWRST('XXX','BUG ')
54324        WRITE(ICOUT,60)IFOUND,IERROR,MAXNXT,NUMARG
54325   60   FORMAT('IFOUND,IERROR,MAXNXT,NUMARG = ',2(A4,2X),2I8)
54326        CALL DPWRST('XXX','BUG ')
54327        WRITE(ICOUT,67)ICOM,ICOM2
54328   67   FORMAT('ICOM,ICOM2 = ',A4,2X,A4)
54329        CALL DPWRST('XXX','BUG ')
54330        DO70I=1,NUMARG
54331          WRITE(ICOUT,71)I,IHARG(I),IHARG2(I),IARGT(I),IARG(I),ARG(I)
54332   71     FORMAT('I,IHARG(I),IHARG2(I),IARGT(I),IARG(I),ARG(I) = ',
54333     1           I8,2X,A4,2X,A4,2X,A4,2X,I8,E15.7)
54334          CALL DPWRST('XXX','BUG ')
54335   70   CONTINUE
54336      ENDIF
54337C
54338C               *************************
54339C               **  SEARCH FOR         **
54340C               **  ANALYSIS COMMANDS  **
54341C               *************************
54342C
54343CCCCC THE FOLLOWING SECTION WAS MOVED HERE TO BE FIRST   MAY 1992 (JJF)
54344CCCCC TO AVOID MISPROCESSING OF   LET FUNCTION A = FIT   MAY 1992 (JJF)
54345C               ***********************************
54346C               **  TREAT THE LET FUNCTION CASE  **
54347C               ***********************************
54348C
54349CCCCC APRIL 1996.  IF ENTERED AS LET STRING, PRESERVE CASE.  IF
54350CCCCC ENTERED AS LET FUNCTION, CONVERT TO UPPER CASE
54351      IF(NUMARG.GE.1.AND.ICOM.EQ.'LET'.AND.
54352     1IHARG(1).EQ.'FUNC'.AND.IHARG2(1).EQ.'TION')THEN
54353        ISFLAG='FUNCTION'
54354        GOTO1800
54355      ELSEIF(NUMARG.GE.1.AND.ICOM.EQ.'LET'.AND.
54356     1IHARG(1).EQ.'STRI'.AND.IHARG2(1).EQ.'NG')THEN
54357        ISFLAG='STRING'
54358        GOTO1800
54359      ELSE
54360        GOTO1899
54361      ENDIF
54362C
54363 1800 CONTINUE
54364      ICASAN='LETF'
54365      CALL DPLETF(IANGLU,IBUGA2,IBUGA3,IBUGCO,IBUGEV,IBUGQ,ISUBRO,
54366CCCCC APRIL 1996.  ADD FOLLOWING LINE.
54367     1ISFLAG,
54368     1IFOUND,IERROR)
54369      IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
54370C
54371 1899 CONTINUE
54372C
54373C               **********************************************
54374C               **  TREAT THE ANALYSIS OF PROPORTIONS CASE  **
54375C               **********************************************
54376C
54377CCCCC IF(ICOM.EQ.'ANOP'.AND.IHARG(1).NE.'LIMI'.AND.
54378CCCCC1IHARG2(1).NE.'TS  '.AND.IHARG(1).NE.'PLOT'.AND.
54379CCCCC1IHARG2(1).NE.'    ')GOTO100
54380CCCCC GOTO199
54381C
54382CC100 CONTINUE
54383CCCCC ICASAN='ANOP'
54384CCCCC CALL DPANOP(ANOPL1,ANOPL2,IBUGA2,IBUGA3,IBUGQ,
54385CCCCC1IFOUND,IERROR)
54386CCCCC IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
54387C
54388CC199 CONTINUE
54389C
54390C               *******************************************
54391C               **  TREAT THE ANALYSIS OF VARIANCE CASE  **
54392C               *******************************************
54393C
54394      IF(ICOM.EQ.'ANAL' .OR. ICOM.EQ.'ANOV')THEN
54395        ICASAN='ANOV'
54396        CALL DPANOV(ICAPSW,IFORSW,
54397     1              IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
54398        IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
54399        GOTO9000
54400      ENDIF
54401C
54402C               *********************************************
54403C               **  TREAT THE EXACT ... RATIONAL FIT CASE  **
54404C               *********************************************
54405C
54406      IF(ICOM.EQ.'EXAC')THEN
54407        ICASAN='EXAC'
54408        CALL DPEXAC(ICAPSW,IFORSW,
54409     1              IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
54410        IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
54411      ENDIF
54412C
54413C               *************************************
54414C               **  TREAT THE LOWESS FIT     CASE  **
54415C               *************************************
54416C
54417      IF(ICOM.EQ.'LOWE')THEN
54418        IF(IHARG(1).EQ.'TAIL')GOTO1199
54419        IF(IHARG(1).EQ.'PRED')GOTO1199
54420        IF(IHARG(1).EQ.'COEF' .AND. IHARG(2).EQ.'OF  '.AND.
54421     1     IHARG(3).EQ.'VARI')GOTO1199
54422        IF(IHARG(1).EQ.'COEF' .AND. IHARG(2).EQ.'OF  '.AND.
54423     1     IHARG(3).EQ.'DISP')GOTO1199
54424        IF(IHARG(1).EQ.'ONE ' .AND. IHARG(2).EQ.'SIDE')GOTO1199
54425        GOTO1100
54426      ENDIF
54427      IF(ICOM.EQ.'LOES')GOTO1100
54428      IF(ICOM.EQ.'SEAS')GOTO1100
54429      GOTO1199
54430C
54431 1100 CONTINUE
54432      ICASAN='LOWF'
54433CCCCC MARCH 1994.  ADD ARGUMENT.
54434CCCCC CALL DPLOW(ALOWFR,
54435      CALL DPLOW(ALOWFR,ALOWDG,ICAPSW,IFORSW,
54436     1           TEMP,TEMP2,XTEMP1,XTEMP2,MAXNXT,
54437     1           IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
54438      IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
54439      GOTO9000
54440C
54441 1199 CONTINUE
54442C
54443C               ************************************************
54444C               **  TREAT THE ORTHOGONAL DISTANCE FIT   CASE  **
54445C               ************************************************
54446C
54447      IF(ICOM.EQ.'ORTH'.AND.NUMARG.GE.2.AND.IHARG(1).EQ.'DIST')THEN
54448        IF(IHARG(2).EQ.'FIT' .OR. IHARG(2).EQ.'REGR')THEN
54449          ICASAN='ORTF'
54450          CALL DPORTH(IBUGA2,IBUGA3,IBUGCO,IBUGEV,IBUGQ,ISUBRO,
54451     1                IFOUND,IERROR)
54452          IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
54453        ENDIF
54454      ENDIF
54455C
54456C               ******************************
54457C               **  TREAT THE ... FIT CASE  **
54458C               ******************************
54459C
54460CCCCC THE FOLLOWING 8 LINES WERE ADDED JUNE 1989
54461      IF(ICOM.EQ.'BOOT')GOTO1799
54462      IF(ICOM.EQ.'2**K'.AND.NUMARG.GE.1.AND.
54463     1IHARG(1).EQ.'FIT')GOTO1799
54464      IF(ICOM.EQ.'2**K'.AND.NUMARG.GE.2.AND.
54465     1IHARG(2).EQ.'FIT')GOTO1799
54466      IF(ICOM.EQ.'DEX'.AND.NUMARG.GE.1.AND.
54467     1IHARG(1).EQ.'FIT')GOTO1799
54468      IF(ICOM.EQ.'DEX'.AND.NUMARG.GE.2.AND.
54469     1IHARG(2).EQ.'FIT')GOTO1799
54470      IF(ICOM.EQ.'BEST'.AND.NUMARG.GE.2.AND.
54471     1IHARG(1).EQ.'DIST'.AND.IHARG(2).EQ.'FIT')GOTO1799
54472      IF(IHARG(1).EQ.'BEST'.AND.
54473     1IHARG(2).EQ.'DIST'.AND.IHARG(3).EQ.'FIT')GOTO1799
54474C
54475      IF(ICOM.EQ.'FIT ')GOTO1700
54476CCCCC CHECK FOR "RECIPE FIT" AND "SIMCOV FIT" CASES.  SEPTEMBER 1997
54477      IF(NUMARG.GE.1.AND.ICOM.NE.'SPLI'.AND.ICOM.NE.'PRE '.AND.
54478CCCCC1ICOM.NE.'LOWE'.AND.
54479     1ICOM.NE.'LOWE'.AND.ICOM.NE.'RECI'.AND.ICOM.NE.'SIMC'.AND.
54480     1IHARG(1).EQ.'FIT ')GOTO1700
54481      DO1710I=2,5
54482      IM1=I-1
54483      IF(NUMARG.GE.I.AND.IHARG(IM1).NE.'SPLI'.AND.IHARG(1).NE.'PRE '
54484     1.AND.IHARG(IM1).NE.'OF'
54485     1.AND.IHARG(I).EQ.'FIT ')GOTO1700
54486 1710 CONTINUE
54487      GOTO1799
54488C
54489 1700 CONTINUE
54490      ICASAN='FIT'
54491      CALL DPFIT(ICAPSW,IFORSW,
54492     1           IBUGA2,IBUGA3,IBUGCO,IBUGEV,IBUGQ,ISUBRO,
54493     1           IFOUND,IERROR)
54494      IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
54495      GOTO9000
54496C
54497 1799 CONTINUE
54498C
54499C               ******************************
54500C               **  TREAT THE BEST CP CASE  **
54501C               ******************************
54502C
54503      IF(ICOM.EQ.'BEST'.AND.NUMARG.GE.1.AND.
54504     1IHARG(1).EQ.'CP  ')THEN
54505        ICASAN='CP'
54506        CALL DPBECP(ICAPSW,IFORSW,
54507     1              IBUGA2,IBUGA3,IBUGCO,IBUGEV,IBUGQ,ISUBRO,
54508     1              IFOUND,IERROR)
54509        IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
54510      ENDIF
54511C
54512C               ******************************
54513C               **  TREAT THE BOOTSTRAP FIT **
54514C               ******************************
54515C
54516      IF(ICOM.EQ.'BOOT'.AND.NUMARG.GE.1.AND.
54517     1IHARG(1).EQ.'FIT ')THEN
54518        ICASAN='BFIT'
54519        CALL DPBOFI(ICAPSW,IFORSW,
54520     1              ISEED,IBOOSS,
54521     1              IBUGA2,IBUGA3,IBUGCO,IBUGEV,IBUGQ,ISUBRO,
54522     1              IFOUND,IERROR)
54523        IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
54524      ELSEIF(ICOM.EQ.'BOOT'.AND.NUMARG.GE.2.AND.
54525     1       IHARG(1).EQ.'REPL'.AND.IHARG(2).EQ.'FIT ')THEN
54526        ICASAN='BFIT'
54527        CALL DPBOFI(ICAPSW,IFORSW,
54528     1              ISEED,IBOOSS,
54529     1              IBUGA2,IBUGA3,IBUGCO,IBUGEV,IBUGQ,ISUBRO,
54530     1              IFOUND,IERROR)
54531        IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
54532      ENDIF
54533C
54534C
54535CCCCC THE FOLLOWING SECTION WAS COMMENTED OUT HERE    MAY 1992 (JJF)
54536CCCCC AND MOVED UP TO THE TOP OF THIS SUBROUTINE      MAY 1992 (JJF)
54537CCCCC TO FIX MISPROCESSING OF    LET STRING A = FIT   MAY 1992 (JJF)
54538CCCCC           ***********************************
54539CCCCC           **  TREAT THE LET FUNCTION CASE  **
54540CCCCC           ***********************************
54541CCCCC
54542CCCCC IF(NUMARG.GE.1.AND.ICOM.EQ.'LET'.AND.
54543CCCCC1IHARG(1).EQ.'FUNC'.AND.IHARG2(1).EQ.'TION')GOTO1800
54544CCCCC IF(NUMARG.GE.1.AND.ICOM.EQ.'LET'.AND.
54545CCCCC1IHARG(1).EQ.'STRI'.AND.IHARG2(1).EQ.'NG')GOTO1800
54546CCCCC GOTO1899
54547CCCCC
54548C1800 CONTINUE
54549CCCCC ICASAN='LETF'
54550CCCCC CALL DPLETF(IANGLU,IBUGA2,IBUGA3,IBUGCO,IBUGEV,IBUGQ,ISUBRO,
54551CCCCC1IFOUND,IERROR)
54552CCCCC IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
54553CCCCC
54554C1899 CONTINUE
54555C
54556C               **************************
54557C               **  TREAT THE LET CASE  **
54558C               **************************
54559C
54560      IF(NUMARG.GE.1.AND.ICOM.EQ.'LET')THEN
54561        ICASAN='LET'
54562        CALL DPLET(IANGLU,ISEED,IBUGA2,IBUGA3,IBUGCO,IBUGEV,IBUGQ,
54563     1             TEMP,TEMP2,XTEMP1,XTEMP2,MAXNXT,
54564CCCCC              AUGUST 1995.  ADD IFTORD
54565CCCCC              JUNE   2015.  ADD IFORSW
54566CCCCC1             IFTEXP,
54567     1             IFTEXP,IFTORD,IFORSW,
54568CCCCC              ADD FOLLOWING LINE.  FEBRUARY 1994.
54569CCCCC              ADD OPTACC ARGUMENT JUNE 1994
54570CCCCC              ADD IOTME, IOPTHE ARGUMENTS FEBRUARY 1995
54571     1             ROOTAC,OPTACC,IOPTME,IOPTHE,
54572     1             ISUBRO,IFOUND,IERROR)
54573        IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
54574      ENDIF
54575C
54576CCCCC THE FOLLOWING SECTION WAS REWRITTEN      JULY 1995
54577C               ************************************
54578C               **  TREAT THE MEDIAN POLISH CASE  **
54579C               ************************************
54580C
54581      IF(ICOM.EQ.'MEDI'.AND.
54582     1   NUMARG.GE.1.AND.IHARG(1).EQ.'POLI'.AND.
54583     1   IHARG2(1).EQ.'SH  ')THEN
54584         ICASAN='MEPO'
54585         CALL DPMEPO(ICAPSW,IFORSW,
54586     1               IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
54587         IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
54588      ENDIF
54589C
54590CCCCC THE FOLLOWING SECTION WAS ADDED      JULY 1995
54591C               **********************************************
54592C               **  TREAT THE MANDEL (2-WAY) ANALYSIS CASE  **
54593C               **********************************************
54594C
54595CCCCC APRIL 1996.  FOLLOWING CODE IS NOT WORKING YET
54596CCCCC OCTOBER 2000.  UPDATE (CALL IT CONCENSUS MEANS OR
54597CCCCC MANDEL-PAULE, IT IMPLEMENTS BOTH MANDEL-PAULE AND
54598CCCCC MARK VANGEL'S MAXIMUM LIKELIHOOD APPROACH).
54599C
54600      IF(ICOM.EQ.'MAND'.AND.NUMARG.GE.1.AND.IHARG(1).EQ.'PAUL')THEN
54601         ICASAN='MAND'
54602         CALL DPMAND(ICAPSW,IFORSW,ISEED,IBOOSS,
54603     1               ISUBRO,IBUGA2,IBUGA3,IBUGQ,IFOUND,IERROR)
54604         IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
54605      ENDIF
54606      IF(ICOM.EQ.'CONS'.AND.NUMARG.GE.1.AND.IHARG(1).EQ.'MEAN')THEN
54607         ICASAN='MAND'
54608         CALL DPMAND(ICAPSW,IFORSW,ISEED,IBOOSS,
54609     1               ISUBRO,IBUGA2,IBUGA3,IBUGQ,IFOUND,IERROR)
54610         IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
54611      ENDIF
54612C
54613CCCCC THE FOLLOWING SECTION WAS ADDED      FEBRUARY 2005
54614C               **********************************************
54615C               **  TREAT THE E691 INTERLAB           CASE  **
54616C               **********************************************
54617C
54618      IF(ICOM.EQ.'E691'.AND.NUMARG.GE.2.AND.IHARG(1).EQ.'INTE'.AND.
54619     1   IHARG(2).EQ.'ANAL')THEN
54620         ICASAN='E691'
54621         CALL DPEINL(ICAPSW,IFORSW,ISUBRO,
54622     1               IBUGA2,IBUGA3,IBUGQ,IFOUND,IERROR)
54623         IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
54624      ELSEIF(ICOM.EQ.'E691'.AND.NUMARG.GE.1.AND.IHARG(1).EQ.'INTE')THEN
54625         ICASAN='E691'
54626         CALL DPEINL(ICAPSW,IFORSW,ISUBRO,
54627     1               IBUGA2,IBUGA3,IBUGQ,IFOUND,IERROR)
54628         IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
54629      ENDIF
54630C
54631CCCCC THE FOLLOWING SECTION WAS ADDED      OCTOBER 2008
54632C               **************************************************
54633C               **  TREAT THE ONE SAMPLE PROFICIENCY TEST CASE  **
54634C               **************************************************
54635C
54636      IF(ICOM.EQ.'ONE '.AND.NUMARG.GE.3.AND.IHARG(1).EQ.'SAMP'.AND.
54637     1   IHARG(2).EQ.'PROF'.AND.IHARG(3).EQ.'TEST')THEN
54638         ICASAN='1SPT'
54639         ISHIFT=3
54640         CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
54641     1                 IBUGA2,IERROR)
54642         CALL DP1IPT(ICAPSW,IFORSW,ISUBRO,
54643     1               IBUGA2,IBUGA3,IBUGQ,IFOUND,IERROR)
54644         IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
54645      ELSEIF(ICOM.EQ.'ONE '.AND.NUMARG.GE.2.AND.IHARG(1).EQ.'SAMP'.AND.
54646     1       IHARG(2).EQ.'PROF')THEN
54647         ICASAN='1SPT'
54648         ISHIFT=2
54649         CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
54650     1                 IBUGA2,IERROR)
54651         CALL DP1IPT(ICAPSW,IFORSW,ISUBRO,
54652     1               IBUGA2,IBUGA3,IBUGQ,IFOUND,IERROR)
54653         IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
54654      ENDIF
54655C
54656CCCCC THE FOLLOWING SECTION WAS ADDED      OCTOBER 2008
54657C               **************************************************
54658C               **  TREAT THE TWO SAMPLE PROFICIENCY TEST CASE  **
54659C               **************************************************
54660C
54661      IF(ICOM.EQ.'TWO '.AND.NUMARG.GE.3.AND.IHARG(1).EQ.'SAMP'.AND.
54662     1   IHARG(2).EQ.'PROF'.AND.IHARG(3).EQ.'TEST')THEN
54663         ICASAN='2SPT'
54664         ISHIFT=3
54665         CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
54666     1                 IBUGA2,IERROR)
54667         CALL DP2IPT(ICAPSW,IFORSW,ISUBRO,
54668     1               IBUGA2,IBUGA3,IBUGQ,IFOUND,IERROR)
54669         IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
54670      ELSEIF(ICOM.EQ.'TWO '.AND.NUMARG.GE.2.AND.IHARG(1).EQ.'SAMP'.AND.
54671     1       IHARG(2).EQ.'PROF')THEN
54672         ICASAN='2SPT'
54673         ISHIFT=2
54674         CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
54675     1                 IBUGA2,IERROR)
54676         CALL DP2IPT(ICAPSW,IFORSW,ISUBRO,
54677     1               IBUGA2,IBUGA3,IBUGQ,IFOUND,IERROR)
54678         IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
54679      ENDIF
54680C
54681CCCCC THE FOLLOWING SECTION WAS ADDED      JANUARY 2009
54682C               **************************************************
54683C               **  TREAT THE LIMIT OF DETECTION          CASE  **
54684C               **************************************************
54685C
54686      IMULT='OFF'
54687      IREPL='OFF'
54688      IF(ICOM.EQ.'DIRT'.AND.NUMARG.GE.3.AND.IHARG(1).EQ.'LIMI'.AND.
54689     1   IHARG(2).EQ.'OF  '.AND.IHARG(3).EQ.'DETE')THEN
54690         ICASAN='LODD'
54691         ISHIFT=3
54692         CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
54693     1                 IBUGA2,IERROR)
54694         CALL DPLODE(ICASAN,ICAPSW,IFORSW,IMULT,IREPL,
54695     1               ISUBRO,IBUGA2,IBUGA3,IBUGQ,IFOUND,IERROR)
54696         IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
54697      ELSEIF(ICOM.EQ.'CLEA'.AND.NUMARG.GE.3.AND.IHARG(1).EQ.'LIMI'.AND.
54698     1   IHARG(2).EQ.'OF  '.AND.IHARG(3).EQ.'DETE')THEN
54699         ICASAN='LODC'
54700         ISHIFT=3
54701         CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
54702     1                 IBUGA2,IERROR)
54703         CALL DPLODE(ICASAN,ICAPSW,IFORSW,IMULT,IREPL,
54704     1               ISUBRO,IBUGA2,IBUGA3,IBUGQ,IFOUND,IERROR)
54705         IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
54706      ELSEIF(ICOM.EQ.'REPL'.AND.NUMARG.GE.3.AND.IHARG(1).EQ.'LIMI'.AND.
54707     1   IHARG(2).EQ.'OF  '.AND.IHARG(3).EQ.'DETE')THEN
54708         IREPL='ON'
54709         ICASAN='LODD'
54710         ISHIFT=3
54711         CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
54712     1                 IBUGA2,IERROR)
54713         CALL DPLODE(ICASAN,ICAPSW,IFORSW,IMULT,IREPL,
54714     1               ISUBRO,IBUGA2,IBUGA3,IBUGQ,IFOUND,IERROR)
54715         IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
54716      ELSEIF(ICOM.EQ.'MULT'.AND.NUMARG.GE.3.AND.IHARG(1).EQ.'LIMI'.AND.
54717     1   IHARG(2).EQ.'OF  '.AND.IHARG(3).EQ.'DETE')THEN
54718         IMULT='ON'
54719         ICASAN='LODD'
54720         ISHIFT=3
54721         CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
54722     1                 IBUGA2,IERROR)
54723         CALL DPLODE(ICASAN,ICAPSW,IFORSW,IMULT,IREPL,
54724     1               ISUBRO,IBUGA2,IBUGA3,IBUGQ,IFOUND,IERROR)
54725      ELSEIF(ICOM.EQ.'LIMI'.AND.NUMARG.GE.2.AND.IHARG(1).EQ.'OF  '.AND.
54726     1       IHARG(2).EQ.'DETE')THEN
54727         ICASAN='LODD'
54728         ISHIFT=2
54729         CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
54730     1                 IBUGA2,IERROR)
54731         CALL DPLODE(ICASAN,ICAPSW,IFORSW,IMULT,IREPL,
54732     1               ISUBRO,IBUGA2,IBUGA3,IBUGQ,IFOUND,IERROR)
54733         IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
54734      ENDIF
54735C
54736CCCCC THE FOLLOWING SECTION WAS ADDED      JULY 2003
54737C               **********************************************
54738C               **  TREAT THE LINEAR CALIBRATION      CASE  **
54739C               **********************************************
54740C
54741      IF(ICOM.EQ.'LINE'.AND.NUMARG.GE.1.AND.IHARG(1).EQ.'CALI')THEN
54742         ICASAN='LICA'
54743         CALL DPLICA(ICAPSW,IFORSW,ISEED,ISUBRO,IBUGA2,IBUGA3,IBUGQ,
54744     1               IFOUND,IERROR)
54745         IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
54746      ENDIF
54747C
54748CCCCC THE FOLLOWING SECTION WAS ADDED      JULY 2003
54749C               **********************************************
54750C               **  TREAT THE QUADRATIC CALIBRATION   CASE  **
54751C               **********************************************
54752C
54753      IF(ICOM.EQ.'QUAD'.AND.NUMARG.GE.1.AND.IHARG(1).EQ.'CALI')THEN
54754         ICASAN='QUCA'
54755         CALL DPLICA(ICAPSW,IFORSW,ISEED,ISUBRO,IBUGA2,IBUGA3,IBUGQ,
54756     1               IFOUND,IERROR)
54757         IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
54758      ENDIF
54759C
54760CCCCC THE FOLLOWING SECTION WAS ADDED      MARCH 2017
54761C               *****************************************************
54762C               **  TREAT THE K-MEANS        CLUSTER         CASE  **
54763C               **  TREAT THE NORMAL MIXTURE CLUSTER         CASE  **
54764C               *****************************************************
54765C
54766      IF(ICOM.EQ.'K   '.AND.NUMARG.GE.1.AND.IHARG(1).EQ.'MEAN')THEN
54767         ICASAN='KMEA'
54768         CALL DPKMEA(ICAPSW,IFORSW,ISEED,
54769     1               IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
54770         IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
54771      ELSEIF(ICOM.EQ.'NORM'.AND.NUMARG.GE.1.AND.IHARG(1).EQ.'MIXT')THEN
54772         ICASAN='NMIX'
54773         CALL DPKMEA(ICAPSW,IFORSW,ISEED,
54774     1               IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
54775         IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
54776      ELSEIF(ICOM.EQ.'K   '.AND.NUMARG.GE.1.AND.IHARG(1).EQ.'MEDO')THEN
54777         ICASAN='KMED'
54778         CALL DPKMEA(ICAPSW,IFORSW,ISEED,
54779     1               IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
54780         IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
54781      ELSEIF(ICOM.EQ.'K   '.AND.NUMARG.GE.1.AND.IHARG(1).EQ.'MEDI')THEN
54782         ICASAN='KMED'
54783         CALL DPKMEA(ICAPSW,IFORSW,ISEED,
54784     1               IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
54785         IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
54786      ELSEIF(ICOM.EQ.'SING'.AND.NUMARG.GE.1.AND.IHARG(1).EQ.'LINK')THEN
54787         ICASAN='SLIN'
54788         CALL DPKMEA(ICAPSW,IFORSW,ISEED,
54789     1               IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
54790         IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
54791      ELSEIF(ICOM.EQ.'AGNE')THEN
54792         ICASAN='AGNE'
54793         CALL DPKMEA(ICAPSW,IFORSW,ISEED,
54794     1               IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
54795         IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
54796      ELSEIF(ICOM.EQ.'DIAN')THEN
54797         ICASAN='DIAN'
54798         CALL DPKMEA(ICAPSW,IFORSW,ISEED,
54799     1               IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
54800         IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
54801      ELSEIF(ICOM.EQ.'FANN' .OR. ICOM.EQ.'FUZZ')THEN
54802         ICASAN='FANN'
54803         CALL DPKMEA(ICAPSW,IFORSW,ISEED,
54804     1               IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
54805         IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
54806      ENDIF
54807C
54808C
54809C               **********************************
54810C               **  TREAT THE ... PRE-FIT CASE  **
54811C               **********************************
54812C
54813      IF(NUMARG.GE.1.AND.ICOM.EQ.'PRE '.AND.IHARG(1).EQ.'FIT ')
54814     1GOTO2200
54815      DO2210I=2,5
54816      IM1=I-1
54817      IF(NUMARG.GE.I.AND.IHARG(IM1).EQ.'PRE '.AND.IHARG(I).EQ.'FIT ')
54818     1GOTO2200
54819 2210 CONTINUE
54820      IF(ICOM.EQ.'PREF')GOTO2200
54821      DO2220I=1,4
54822      IF(NUMARG.GE.I.AND.IHARG(I).EQ.'PREF'.AND.
54823     1IHARG2(I).EQ.'IT  ')GOTO2200
54824 2220 CONTINUE
54825      GOTO2299
54826C
54827 2200 CONTINUE
54828      ICASAN='PREF'
54829      CALL DPPREF(IBUGA2,IBUGA3,IBUGCO,IBUGEV,IBUGQ,ISUBRO,
54830     1            IFOUND,IERROR)
54831      IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
54832C
54833 2299 CONTINUE
54834C
54835C               *********************************
54836C               **  TREAT THE ... SMOOTH CASE  **
54837C               *********************************
54838C
54839      IF(ICOM.EQ.'SMOO')GOTO2300
54840      IF(ICOM.EQ.'LOW'.AND.NUMARG.GE.1.AND.IHARG(1).EQ.'PASS')GOTO2300
54841      IF(ICOM.EQ.'HIGH'.AND.NUMARG.GE.1.AND.IHARG(1).EQ.'PASS')GOTO2300
54842      DO2310I=1,3
54843      IF(NUMARG.GE.I.AND.IHARG(I).EQ.'SMOO'.AND.
54844     1IHARG2(I).EQ.'TH  ')GOTO2300
54845      IF(NUMARG.GE.I.AND.IHARG(I).EQ.'SMOO'.AND.
54846     1IHARG2(I).EQ.'THIN')GOTO2300
54847 2310 CONTINUE
54848      GOTO2399
54849C
54850 2300 CONTINUE
54851      ICASAN='SMOO'
54852      CALL DPSMOO(IBUGA2,IBUGA3,IBUGQ,IFOUND,IERROR)
54853      IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
54854C
54855 2399 CONTINUE
54856C
54857C               *************************************
54858C               **  TREAT THE ... SPLINE FIT CASE  **
54859C               *************************************
54860C
54861      IF(NUMARG.GE.1.AND.ICOM.EQ.'SPLI'.AND.IHARG(1).EQ.'FIT ')
54862     1GOTO2400
54863      DO2410I=2,5
54864      IM1=I-1
54865      IF(NUMARG.GE.I.AND.IHARG(IM1).EQ.'SPLI'.AND.IHARG(I).EQ.'FIT ')
54866     1GOTO2400
54867 2410 CONTINUE
54868      GOTO2499
54869C
54870 2400 CONTINUE
54871      ICASAN='SPLI'
54872      CALL DPSPL(IBUGA2,IBUGA3,IBUGQ,ISUBRO,
54873     1           ICASAN,ICAPSW,IFORSW,
54874     1           IFOUND,IERROR)
54875      IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
54876      GOTO9000
54877C
54878 2499 CONTINUE
54879C
54880C               ******************************
54881C               **  TREAT THE SUMMARY CASE  **
54882C               ******************************
54883C
54884      IF(ICOM.EQ.'SUMM' .OR. IHARG(1).EQ.'SUMM')THEN
54885        IF(IHARG(1).EQ.'HOMO'.AND.IHARG(2).EQ.'PLOT')GOTO2599
54886        IF(IHARG(1).EQ.'SUBS'.AND.IHARG(2).EQ.'HOMO'.AND.
54887     1     IHARG(3).EQ.'PLOT')GOTO2599
54888        IF(IHARG(1).EQ.'HIGH'.AND.IHARG(2).EQ.'HOMO'.AND.
54889     1     IHARG(3).EQ.'PLOT')GOTO2599
54890        ICASAN='SUMM'
54891        CALL DPSUMM(XTEMP1,XTEMP2,MAXNXT,
54892     1              ICASAN,ICAPSW,IFORSW,
54893     1              IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
54894        IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
54895      ENDIF
54896C
54897 2599 CONTINUE
54898C
54899C               ****************************************
54900C               **  TREAT THE FOLLOWING CASES:        **
54901C               **    1) PREDICTION LIMITS            **
54902C               **    2) PREDICTION BOUNDS            **
54903C               **    3) SD PREDICTION LIMITS         **
54904C               ****************************************
54905C
54906      IMULT='OFF'
54907      IREPL='OFF'
54908      IF(ICOM.EQ.'PRED' .OR. IHARG(1).EQ.'PRED' .OR.
54909     1   IHARG(2).EQ.'PRED' .OR. IHARG(3).EQ.'PRED' .OR.
54910     1   IHARG(4).EQ.'PRED' .OR. IHARG(5).EQ.'PRED' .OR.
54911     1   IHARG(6).EQ.'PRED' .OR. IHARG(7).EQ.'PRED')THEN
54912        CALL DPPRLI(XTEMP1,XTEMP2,MAXNXT,ICASAN,
54913     1              ICAPSW,IFORSW,IMULT,IREPL,
54914     1              ISUBRO,IBUGA2,IBUGA3,IBUGQ,IFOUND,IERROR)
54915        IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
54916      ENDIF
54917C
54918C               *****************************************
54919C               **  TREAT THE SD CONFIDENCE LIMIT CASE **
54920C               *****************************************
54921C
54922      IMULT='OFF'
54923      IREPL='OFF'
54924      IF(ICOM.EQ.'CONF' .OR. IHARG(1).EQ.'CONF' .OR.
54925     1   IHARG(2).EQ.'CONF' .OR. IHARG(3).EQ.'CONF' .OR.
54926     1   IHARG(4).EQ.'CONF' .OR. IHARG(5).EQ.'CONF')THEN
54927        CALL DPSDCI(XTEMP1,XTEMP2,MAXNXT,ICASAN,
54928     1              ICAPSW,IFORSW,IMULT,IREPL,
54929     1              ISUBRO,IBUGA2,IBUGA3,IBUGQ,IFOUND,IERROR)
54930        IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
54931      ENDIF
54932C
54933C               ***************************************************
54934C               **  TREAT THE COEF OF VARI CONFIDENCE LIMIT CASE **
54935C               **  TREAT THE COEF OF DISP CONFIDENCE LIMIT CASE **
54936C               ***************************************************
54937C
54938      IMULT='OFF'
54939      IREPL='OFF'
54940      IF(ICOM.EQ.'CONF' .OR. IHARG(1).EQ.'CONF' .OR.
54941     1   IHARG(2).EQ.'CONF' .OR. IHARG(3).EQ.'CONF' .OR.
54942     1   IHARG(4).EQ.'CONF' .OR. IHARG(5).EQ.'CONF' .OR.
54943     1   IHARG(6).EQ.'CONF' .OR. IHARG(7).EQ.'CONF')THEN
54944        CALL DPCVCI(XTEMP1,XTEMP2,MAXNXT,ICASAN,
54945     1              ICAPSW,IFORSW,IMULT,IREPL,ISEED,
54946     1              ISUBRO,IBUGA2,IBUGA3,IBUGQ,IFOUND,IERROR)
54947        IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
54948      ENDIF
54949C
54950C               *************************************************
54951C               **  TREAT THE BIWEIGHT CONFIDENCE LIMITS CASE  **
54952C               *************************************************
54953C
54954C     MARCH 2010: SUPPORT FOR "MULTIPLE" AND "REPLICATED" OPTIONS
54955C
54956      IMULT='OFF'
54957      IREPL='OFF'
54958      ISHIFT=0
54959      IF(ICOM.EQ.'BIWE')THEN
54960        IF(NUMARG.GE.2.AND.IHARG(1).EQ.'CONF' .AND.
54961     1    (IHARG(2).EQ.'LIMI'.OR.IHARG(2).EQ.'INTE'))THEN
54962          ISHIFT=2
54963        ENDIF
54964      ELSEIF(ICOM.EQ.'MULT' .AND. IHARG(1).EQ.'BIWE' .AND.
54965     1       IHARG(2).EQ.'CONF')THEN
54966        IMULT='ON'
54967        IF(NUMARG.GE.3.AND.
54968     1    (IHARG(3).EQ.'LIMI'.OR.IHARG(3).EQ.'INTE'))THEN
54969          ISHIFT=3
54970        ENDIF
54971      ELSEIF(ICOM.EQ.'REPL' .AND. IHARG(1).EQ.'BIWE' .AND.
54972     1       IHARG(2).EQ.'CONF')THEN
54973        IREPL='ON'
54974        IF(NUMARG.GE.3.AND.
54975     1    (IHARG(3).EQ.'LIMI'.OR.IHARG(3).EQ.'INTE'))THEN
54976          ISHIFT=3
54977        ENDIF
54978      ENDIF
54979C
54980      IF(ISHIFT.GT.0)THEN
54981        CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
54982     1              IBUGA2,IERROR)
54983        ICASAN='ONEV'
54984        CALL DPBWCO(XTEMP1,XTEMP2,MAXNXT,ICASAN,
54985     1              ICAPSW,IFORSW,IMULT,IREPL,
54986     1              ISUBRO,IBUGA2,IBUGA3,IBUGQ,IFOUND,IERROR)
54987        IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
54988      ENDIF
54989C
54990C               *****************************************************
54991C               **  TREAT THE TRIMMED MEAN CONFIDENCE LIMITS CASE  **
54992C               *****************************************************
54993C
54994C     MARCH 2010: SUPPORT FOR "MULTIPLE" AND "REPLICATED" OPTIONS
54995C
54996      IMULT='OFF'
54997      IREPL='OFF'
54998      ISHIFT=0
54999      IF(ICOM.EQ.'TRIM' .AND. IHARG(1).EQ.'MEAN')THEN
55000        IF(NUMARG.GE.3.AND.IHARG(2).EQ.'CONF' .AND.
55001     1    (IHARG(3).EQ.'LIMI'.OR.IHARG(3).EQ.'INTE'))THEN
55002          ISHIFT=3
55003        ENDIF
55004      ELSEIF(ICOM.EQ.'MULT' .AND. IHARG(1).EQ.'TRIM' .AND.
55005     1       IHARG(2).EQ.'MEAN' .AND. IHARG(3).EQ.'CONF')THEN
55006        IMULT='ON'
55007        IF(NUMARG.GE.4.AND.
55008     1    (IHARG(4).EQ.'LIMI'.OR.IHARG(4).EQ.'INTE'))THEN
55009          ISHIFT=4
55010        ENDIF
55011      ELSEIF(ICOM.EQ.'REPL' .AND. IHARG(1).EQ.'TRIM' .AND.
55012     1       IHARG(2).EQ.'MEAN' .AND. IHARG(3).EQ.'CONF')THEN
55013        IREPL='ON'
55014        IF(NUMARG.GE.4.AND.
55015     1    (IHARG(4).EQ.'LIMI'.OR.IHARG(4).EQ.'INTE'))THEN
55016          ISHIFT=4
55017        ENDIF
55018      ENDIF
55019C
55020      IF(ISHIFT.GT.0)THEN
55021        CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
55022     1              IBUGA2,IERROR)
55023        ICASAN='TMCI'
55024        CALL DPTMCO(XTEMP1,XTEMP2,MAXNXT,ICASAN,
55025     1              ICAPSW,IFORSW,IMULT,IREPL,
55026     1              ISUBRO,IBUGA2,IBUGA3,IBUGQ,IFOUND,IERROR)
55027        IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
55028      ENDIF
55029C
55030C               *****************************************************
55031C               **  TREAT THE MEDIAN       CONFIDENCE LIMITS CASE  **
55032C               **  TREAT THE QUANTILE     CONFIDENCE LIMITS CASE  **
55033C               *****************************************************
55034C
55035C     MARCH 2010: SUPPORT FOR "MULTIPLE" AND "REPLICATED" OPTIONS
55036C
55037      IMULT='OFF'
55038      IREPL='OFF'
55039      ISHIFT=0
55040C
55041      IF(ICOM.EQ.'MEDI')THEN
55042        IF(NUMARG.GE.2.AND.IHARG(1).EQ.'CONF' .AND.
55043     1    (IHARG(2).EQ.'LIMI'.OR.IHARG(2).EQ.'INTE'))THEN
55044          ISHIFT=2
55045        ENDIF
55046      ELSEIF(ICOM.EQ.'MULT' .AND. IHARG(1).EQ.'MEDI' .AND.
55047     1       IHARG(2).EQ.'CONF')THEN
55048        IMULT='ON'
55049        IF(NUMARG.GE.3.AND.
55050     1    (IHARG(3).EQ.'LIMI'.OR.IHARG(3).EQ.'INTE'))THEN
55051          ISHIFT=3
55052        ENDIF
55053      ELSEIF(ICOM.EQ.'REPL' .AND. IHARG(1).EQ.'MEDI' .AND.
55054     1       IHARG(2).EQ.'CONF')THEN
55055        IREPL='ON'
55056        IF(NUMARG.GE.3.AND.
55057     1    (IHARG(3).EQ.'LIMI'.OR.IHARG(3).EQ.'INTE'))THEN
55058          ISHIFT=3
55059        ENDIF
55060      ENDIF
55061C
55062      IF(ISHIFT.GT.0)THEN
55063        CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
55064     1              IBUGA2,IERROR)
55065        ICASAN='MECI'
55066        CALL DPQUCO(XTEMP1,XTEMP2,MAXNXT,ICASAN,
55067     1              ICAPSW,IFORSW,IMULT,IREPL,
55068     1              ISUBRO,IBUGA2,IBUGA3,IBUGQ,IFOUND,IERROR)
55069        IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
55070      ENDIF
55071C
55072      IF(ICOM.EQ.'QUAN')THEN
55073        IF(NUMARG.GE.2.AND.IHARG(1).EQ.'CONF' .AND.
55074     1    (IHARG(2).EQ.'LIMI'.OR.IHARG(2).EQ.'INTE'))THEN
55075          ISHIFT=2
55076        ENDIF
55077      ELSEIF(ICOM.EQ.'MULT' .AND. IHARG(1).EQ.'QUAN' .AND.
55078     1       IHARG(2).EQ.'CONF')THEN
55079        IMULT='ON'
55080        IF(NUMARG.GE.3.AND.
55081     1    (IHARG(3).EQ.'LIMI'.OR.IHARG(3).EQ.'INTE'))THEN
55082          ISHIFT=3
55083        ENDIF
55084      ELSEIF(ICOM.EQ.'REPL' .AND. IHARG(1).EQ.'QUAN' .AND.
55085     1       IHARG(2).EQ.'CONF')THEN
55086        IREPL='ON'
55087        IF(NUMARG.GE.3.AND.
55088     1    (IHARG(3).EQ.'LIMI'.OR.IHARG(3).EQ.'INTE'))THEN
55089          ISHIFT=3
55090        ENDIF
55091      ENDIF
55092C
55093      IF(ISHIFT.GT.0)THEN
55094        CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
55095     1              IBUGA2,IERROR)
55096        ICASAN='QUCI'
55097        CALL DPQUCO(XTEMP1,XTEMP2,MAXNXT,ICASAN,
55098     1              ICAPSW,IFORSW,IMULT,IREPL,
55099     1              ISUBRO,IBUGA2,IBUGA3,IBUGQ,IFOUND,IERROR)
55100        IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
55101      ENDIF
55102C
55103C               ***************************************************
55104C               **  TREAT THE PROPORTION CONFIDENCE LIMITS CASE  **
55105C               **  AND DIFFERENCE OF PROPORTION CONFIDENCE      **
55106C               **  LIMITS CASE                                  **
55107C               ***************************************************
55108C
55109      IF(ICOM.EQ.'PROP')THEN
55110        IF(NUMARG.GE.2.AND.IHARG(1).EQ.'CONF'.AND.
55111     1    (IHARG(2).EQ.'LIMI'.OR.IHARG(2).EQ.'INTE'))THEN
55112          ISHIFT=2
55113          CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
55114     1                IBUGA2,IERROR)
55115          ICASAN='PROP'
55116          CALL DPPRCL(MAXNXT,ICASAN,ANOPL1,ANOPL2,ICAPSW,IFORSW,
55117     1                ISUBRO,IBUGA2,IBUGA3,IBUGQ,IFOUND,IERROR)
55118          IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
55119        ENDIF
55120      ENDIF
55121C
55122      IF(ICOM.EQ.'DIFF')THEN
55123        IF(NUMARG.GE.4.AND.IHARG(1).EQ.'OF  '.AND.
55124     1    IHARG(2).EQ.'PROP'.AND.IHARG(3).EQ.'CONF'.AND.
55125     1    (IHARG(4).EQ.'LIMI'.OR.IHARG(4).EQ.'INTE'))THEN
55126          ISHIFT=4
55127          CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
55128     1                IBUGA2,IERROR)
55129          ICASAN='DPRO'
55130          CALL DPPRCL(MAXNXT,ICASAN,ANOPL1,ANOPL2,ICAPSW,IFORSW,
55131     1                ISUBRO,IBUGA2,IBUGA3,IBUGQ,IFOUND,IERROR)
55132          IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
55133        ENDIF
55134        IF(NUMARG.GE.3.AND.IHARG(1).EQ.'PROP'.AND.
55135     1     IHARG(2).EQ.'CONF'.AND.
55136     1     (IHARG(3).EQ.'LIMI'.OR.IHARG(3).EQ.'INTE'))THEN
55137          ISHIFT=3
55138          CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
55139     1                IBUGA2,IERROR)
55140          ICASAN='DPRO'
55141          CALL DPPRCL(MAXNXT,ICASAN,ANOPL1,ANOPL2,ICAPSW,IFORSW,
55142     1                ISUBRO,IBUGA2,IBUGA3,IBUGQ,IFOUND,IERROR)
55143          IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
55144        ENDIF
55145      ENDIF
55146C
55147C               ****************************************
55148C               **  TREAT THE TOLERANCE  LIMITS CASE  **
55149C               ****************************************
55150C
55151      IF(ICOM.EQ.'TOLE' .OR. IHARG(1).EQ.'TOLE' .OR.
55152     1   IHARG(2).EQ.'TOLE' .OR. IHARG(3).EQ.'TOLE')THEN
55153         CALL DPTOLI(XTEMP1,XTEMP2,TEMP2,MAXNXT,
55154     1              ICASAN,ICAPSW,IFORSW,
55155     1              IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
55156        IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
55157C
55158      ENDIF
55159C
55160C               ******************************
55161C               **  TREAT THE RUNS    CASE  **
55162C               ******************************
55163C
55164      IF(ICOM.EQ.'RUNS' .OR. IHARG(1).EQ.'RUNS' .OR.
55165     1   IHARG(2).EQ.'RUNS')THEN
55166        ICASAN='RUNS'
55167        CALL DPRUN(XTEMP1,MAXNXT,ICASAN,ICAPSW,IFORSW,
55168     1             IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
55169        IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
55170      ENDIF
55171C
55172C               *********************************************
55173C               **  TREAT THE RELIABILTY TREND TESTS CASE  **
55174C               *********************************************
55175C
55176      IF(ICOM.EQ.'RELI')THEN
55177        IF(NUMARG.GE.2.AND.IHARG(1).EQ.'TREN'.AND.
55178     1     IHARG(2).EQ.'TEST')THEN
55179             ICASAN='TREN'
55180             ISHIFT=2
55181             CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
55182     1                   IBUGA2,IERROR)
55183             CALL DPTREN(XTEMP2,MAXNXT,ICAPSW,IFORSW,
55184     1                   IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
55185             IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
55186        ENDIF
55187      ENDIF
55188C
55189CCCCC THE FOLLOWING SECTION WAS REWRITTEN     FEBRUARY 1994
55190C               ******************************
55191C               **  TREAT THE T TEST  CASE  **
55192C               ******************************
55193C
55194      IF((ICOM.EQ.'T   ' .AND. IHARG(1).EQ.'TEST') .OR.
55195     1    (IHARG(1).EQ.'T   ' .AND. IHARG(2).EQ.'TEST') .OR.
55196     1    (IHARG(2).EQ.'T   ' .AND. IHARG(3).EQ.'TEST') .OR.
55197     1    (IHARG(3).EQ.'T   ' .AND. IHARG(4).EQ.'TEST') .OR.
55198     1    (IHARG(4).EQ.'T   ' .AND. IHARG(5).EQ.'TEST') .OR.
55199     1    (IHARG(5).EQ.'T   ' .AND. IHARG(6).EQ.'TEST')
55200     1   )THEN
55201        CALL DPTTES(XTEMP1,MAXNXT,ICAPSW,IFORSW,
55202     1              IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
55203            IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
55204      ENDIF
55205C
55206CCCCC THE FOLLOWING SECTION WAS ADDED         JUNE 2017
55207C               *****************************************************
55208C               **  TREAT THE COEFFICIENT OF VARIATION TEST  CASE  **
55209C               *****************************************************
55210C
55211      IF((ICOM.EQ.'ONE ' .AND. IHARG(1).EQ.'SAMP') .OR.
55212     1   (ICOM.EQ.'1   ' .AND. IHARG(1).EQ.'SAMP') .OR.
55213     1   (ICOM.EQ.'TWO ' .AND. IHARG(1).EQ.'SAMP') .OR.
55214     1   (ICOM.EQ.'2   ' .AND. IHARG(1).EQ.'SAMP'))THEN
55215        CALL DPCVTE(XTEMP1,XTEMP2,MAXNXT,
55216     1              ICAPSW,IFORSW,
55217     1              IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
55218            IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
55219      ENDIF
55220C
55221CCCCC THE FOLLOWING SECTION WAS ADDED     JUNE 1999
55222C               *********************************
55223C               **  TREAT THE SIGN TEST  CASE  **
55224C               *********************************
55225C
55226      IF(ICOM.EQ.'SIGN' .OR. IHARG(1).EQ.'SIGN' .OR.
55227     1   IHARG(2).EQ.'SIGN')THEN
55228         CALL DPSIGN(XTEMP1,XTEMP2,MAXNXT,
55229     1              ICAPSW,IFORSW,
55230     1              IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
55231         IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
55232      ENDIF
55233C
55234CCCCC THE FOLLOWING SECTION WAS ADDED     JUNE 1999
55235CCCCC THE FOLLOWING SECTION WAS REWRITTEN     MAY      2011
55236C               *************************************************
55237C               **  TREAT THE WILCOXON SIGNED RANK TEST  CASE  **
55238C               *************************************************
55239C
55240      IF((ICOM.EQ.'SIGN' .AND. IHARG(1).EQ.'RANK') .OR.
55241     1    (IHARG(1).EQ.'SIGN' .AND. IHARG(2).EQ.'RANK') .OR.
55242     1    (IHARG(2).EQ.'SIGN' .AND. IHARG(3).EQ.'RANK') .OR.
55243     1    (IHARG(3).EQ.'SIGN' .AND. IHARG(4).EQ.'RANK') .OR.
55244     1    (IHARG(4).EQ.'SIGN' .AND. IHARG(5).EQ.'RANK') .OR.
55245     1    (IHARG(5).EQ.'SIGN' .AND. IHARG(6).EQ.'RANK')
55246     1   )THEN
55247        CALL DPWILC(XTEMP1,XTEMP2,MAXNXT,
55248     1              ICAPSW,IFORSW,
55249     1              IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
55250            IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
55251      ENDIF
55252C
55253CCCCC THE FOLLOWING SECTION WAS ADDED     JULY 1999
55254C               *************************************************
55255C               **  TREAT THE MANN-WHITNEY RANK SUM TEST  CASE **
55256C               *************************************************
55257C
55258      IF( (ICOM.EQ.'MANN'     .AND. IHARG(1).EQ.'WHIT') .OR.
55259     1    (IHARG(1).EQ.'MANN' .AND. IHARG(2).EQ.'WHIT') .OR.
55260     1    (IHARG(2).EQ.'MANN' .AND. IHARG(3).EQ.'WHIT') .OR.
55261     1    (IHARG(3).EQ.'MANN' .AND. IHARG(4).EQ.'WHIT') .OR.
55262     1    (ICOM.EQ.'RANK'     .AND. IHARG(1).EQ.'SUM ') .OR.
55263     1    (IHARG(1).EQ.'RANK' .AND. IHARG(2).EQ.'SUM ') .OR.
55264     1    (IHARG(2).EQ.'SIGN' .AND. IHARG(3).EQ.'RANK') .OR.
55265     1    (IHARG(3).EQ.'SIGN' .AND. IHARG(4).EQ.'RANK')
55266     1   )THEN
55267         CALL DPMANN(MAXNXT,ICAPSW,IFORSW,
55268     1               IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
55269         IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
55270      ENDIF
55271C
55272CCCCC THE FOLLOWING SECTION WAS ADDED     JUNE 2011
55273C               **************************************************
55274C               **  TREAT THE FISHER TWO SAMPLE RAND TEST  CASE **
55275C               **************************************************
55276C
55277      IF( (ICOM.EQ.'FISH'     .AND. IHARG(1).EQ.'TWO ') .OR.
55278     1    (IHARG(1).EQ.'FISH' .AND. IHARG(2).EQ.'TWO ') .OR.
55279     1    (IHARG(2).EQ.'FISH' .AND. IHARG(3).EQ.'TWO ') .OR.
55280     1    (IHARG(3).EQ.'FISH' .AND. IHARG(4).EQ.'TWO ')
55281     1   )THEN
55282         CALL DPFIRT(MAXNXT,ICAPSW,IFORSW,
55283     1               IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
55284         IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
55285      ENDIF
55286C
55287CCCCC THE FOLLOWING SECTION WAS ADDED     MAY 2011
55288C               ************************************
55289C               **  TREAT THE KLOTZ TEST     CASE **
55290C               ************************************
55291C
55292      IF(ICOM.EQ.'KLOT' .OR. IHARG(1).EQ.'KLOT' .OR.
55293     1   IHARG(2).EQ.'KLOT')THEN
55294         CALL DPKLOT(MAXNXT,ICAPSW,IFORSW,
55295     1               IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
55296         IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
55297      ENDIF
55298C
55299CCCCC THE FOLLOWING SECTION WAS ADDED     JUNE 2011
55300C               ********************************************
55301C               **  TREAT THE SQUARED RANKS TEST     CASE **
55302C               ********************************************
55303C
55304      IF((ICOM.EQ.'SQUA' .AND. IHARG(1).EQ.'RANK') .OR.
55305     1   (IHARG(1).EQ.'SQUA' .AND. IHARG(2).EQ.'RANK') .OR.
55306     1   (IHARG(2).EQ.'SQUA' .AND. IHARG(3).EQ.'RANK'))THEN
55307         CALL DPSQRA(MAXNXT,ICAPSW,IFORSW,
55308     1               IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
55309         IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
55310      ENDIF
55311C
55312CCCCC THE FOLLOWING SECTION WAS ADDED     JUNE 2011
55313C               ********************************************
55314C               **  TREAT THE MEDIAN        TEST     CASE **
55315C               ********************************************
55316C
55317      IF((ICOM.EQ.'MEDI' .AND. IHARG(1).EQ.'TEST') .OR.
55318     1   (IHARG(1).EQ.'MEDI' .AND. IHARG(2).EQ.'TEST') .OR.
55319     1   (IHARG(2).EQ.'MEDI' .AND. IHARG(3).EQ.'TEST'))THEN
55320         CALL DPMETE(MAXNXT,ICAPSW,IFORSW,
55321     1               IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
55322         IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
55323      ENDIF
55324C
55325CCCCC THE FOLLOWING SECTION WAS ADDED     JUNE 2011
55326C               ********************************************
55327C               **  TREAT THE COX STUART    TEST     CASE **
55328C               ********************************************
55329C
55330      IF((ICOM.EQ.'COX ' .AND. IHARG(1).EQ.'STUA') .OR.
55331     1   (IHARG(1).EQ.'COX ' .AND. IHARG(2).EQ.'STUA') .OR.
55332     1   (IHARG(2).EQ.'COX ' .AND. IHARG(3).EQ.'STUA'))THEN
55333         CALL DPCXTE(XTEMP1,XTEMP2,MAXNXT,
55334     1               ICAPSW,IFORSW,
55335     1               IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
55336         IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
55337      ENDIF
55338C
55339CCCCC THE FOLLOWING SECTION WAS ADDED     FEBRUARY 1994
55340C               ***********************************************
55341C               **  TREAT THE CHI-SQUARED TEST  CASE  OR THE **
55342C               **  TREAT THE CHI-SQUARED INDEPENDENCE TEST  **
55343C               ***********************************************
55344C
55345      IF(ICOM.EQ.'CHI ')THEN
55346         IF(NUMARG.GE.1.AND.IHARG(1).EQ.'SQUA')THEN
55347            IF(NUMARG.GE.3.AND.IHARG(2).EQ.'INDE'.AND.
55348     1         IHARG(3).EQ.'TEST')THEN
55349               ISHIFT=3
55350               CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
55351     1         IBUGA2,IERROR)
55352               ICASAN='CHIS'
55353               CALL DPCHIS(MAXNXT,ICASAN,ICAPSW,IFORSW,
55354     1                     IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
55355               IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
55356            ELSEIF(NUMARG.GE.2.AND.IHARG(2).EQ.'INDE')THEN
55357               ISHIFT=2
55358               CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
55359     1         IBUGA2,IERROR)
55360               ICASAN='CHIS'
55361               CALL DPCHIS(MAXNXT,ICASAN,ICAPSW,IFORSW,
55362     1                     IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
55363               IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
55364            ELSEIF(NUMARG.GE.2.AND.IHARG(2).EQ.'TEST')THEN
55365               ISHIFT=2
55366               CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
55367     1         IBUGA2,IERROR)
55368               ICASAN='CSTE'
55369               CALL DPCSTE(MAXNXT,ICAPSW,IFORSW,ICASAN,
55370     1                     IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
55371               IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
55372            ELSEIF(NUMARG.GE.4.AND.IHARG(2).EQ.'LOWE' .AND.
55373     1             IHARG(3).EQ.'TAIL' .AND. IHARG(4).EQ.'TEST')THEN
55374               ISHIFT=4
55375               CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
55376     1         IBUGA2,IERROR)
55377               ICASAN='CSLT'
55378               CALL DPCSTE(MAXNXT,ICAPSW,IFORSW,ICASAN,
55379     1                     IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
55380               IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
55381            ELSEIF(NUMARG.GE.4.AND.IHARG(2).EQ.'UPPE' .AND.
55382     1             IHARG(3).EQ.'TAIL' .AND. IHARG(4).EQ.'TEST')THEN
55383               ISHIFT=4
55384               CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
55385     1         IBUGA2,IERROR)
55386               ICASAN='CSUT'
55387               CALL DPCSTE(MAXNXT,ICAPSW,IFORSW,ICASAN,
55388     1                     IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
55389               IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
55390            ELSEIF(NUMARG.GE.4.AND.IHARG(2).EQ.'TWO ' .AND.
55391     1             IHARG(3).EQ.'TAIL' .AND. IHARG(4).EQ.'TEST')THEN
55392               ISHIFT=4
55393               CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
55394     1         IBUGA2,IERROR)
55395               ICASAN='CS2T'
55396               CALL DPCSTE(MAXNXT,ICAPSW,IFORSW,ICASAN,
55397     1                     IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
55398               IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
55399            ENDIF
55400         ENDIF
55401      ENDIF
55402C
55403CCCCC THE FOLLOWING SECTION WAS ADDED     MARCH 2007
55404C               ***********************************************
55405C               **  TREAT THE FISHER EXACT             TEST  **
55406C               ***********************************************
55407C
55408      IF(ICOM.EQ.'FISH')THEN
55409        IF(NUMARG.GE.2.AND.IHARG(1).EQ.'EXAC'.AND.
55410     1    IHARG(2).EQ.'TEST')THEN
55411          ISHIFT=2
55412          CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
55413     1    IBUGA2,IERROR)
55414          ICASAN='FISH'
55415          CALL DPFISH(MAXNXT,ICASAN,ICAPSW,IFORSW,
55416     1                IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
55417        ELSEIF(NUMARG.GE.1.AND.IHARG(1).EQ.'EXAC')THEN
55418          ISHIFT=1
55419          CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
55420     1    IBUGA2,IERROR)
55421          ICASAN='FISH'
55422          CALL DPFISH(MAXNXT,ICASAN,ICAPSW,IFORSW,
55423     1                IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
55424        ELSEIF(NUMARG.GE.1.AND.IHARG(1).EQ.'TEST')THEN
55425          ISHIFT=1
55426          CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
55427     1    IBUGA2,IERROR)
55428          ICASAN='FISH'
55429          CALL DPFISH(MAXNXT,ICASAN,ICAPSW,IFORSW,
55430     1                IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
55431         ENDIF
55432      ENDIF
55433C
55434CCCCC THE FOLLOWING SECTION WAS ADDED     DECEMBER 1998
55435C               *************************************************
55436C               **  TREAT THE CHI-SQUARED 2 SAMPLE TEST  CASE  **
55437C               *************************************************
55438C
55439CCCCC 2011/3: SUPPORT "GROUPED" KEYWORD
55440C
55441      IF(ICOM.EQ.'CHI '.OR.ICOM.EQ.'CHIS'.OR.ICOM.EQ.'2'.OR.
55442     1   ICOM.EQ.'TWO')THEN
55443         CALL DP2CHS(TEMP,TEMP2,XTEMP1,MAXNXT,
55444     1               ICAPSW,IFORSW,
55445     1               IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
55446               IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
55447      ELSEIF(ICOM.EQ.'GROU' .OR. IHARG(1).EQ.'CHI '.OR.
55448     1       IHARG(1).EQ.'CHIS'.OR.IHARG(1).EQ.'2'.OR.
55449     1       IHARG(1).EQ.'TWO')THEN
55450         CALL DP2CHS(TEMP,TEMP2,XTEMP1,MAXNXT,
55451     1               ICAPSW,IFORSW,
55452     1               IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
55453               IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
55454      ENDIF
55455C
55456CCCCC THE FOLLOWING SECTION WAS ADDED     DECEMBER 1998
55457C               *******************************************************
55458C               **  TREAT THE KOLMOGOROV-SMIRNOV 2 SAMPLE TEST  CASE **
55459C               *******************************************************
55460C
55461      IF(ICOM.EQ.'KOLM'.OR.ICOM.EQ.'2'.OR.
55462     1   ICOM.EQ.'TWO' .OR. ICOM.EQ.'KS')THEN
55463         CALL DP2KST(TEMP,TEMP2,MAXNXT,
55464     1               ICAPSW,IFORSW,
55465     1               IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
55466         IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
55467      ENDIF
55468C
55469CCCCC THE FOLLOWING SECTION WAS ADDED     MAY  2014
55470C               *******************************************************
55471C               **  TREAT THE DISTRIBUTIONAL LIKELIHOOD RATIO   CASE **
55472C               *******************************************************
55473C
55474      IF(NUMARG.GE.4)THEN
55475        DO7390I=1,NUMARG-1
55476          IF(IHARG(I).EQ.'DIST'.AND.IHARG(I+1).EQ.'LIKE'.AND.
55477     1       IHARG(I+2).EQ.'RATI')THEN
55478               CALL DPLRDI(MAXNXT,ICAPSW,IFORSW,ISEED,
55479     1                    IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
55480               IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
55481          ENDIF
55482 7390   CONTINUE
55483      ENDIF
55484C
55485CCCCC THE FOLLOWING SECTION WAS ADDED     MARCH  2011
55486C               *******************************************************
55487C               **  TREAT THE BEST DISTRIBUTIONAL FIT           CASE **
55488C               *******************************************************
55489C
55490      IF(ICOM.EQ.'BEST' .AND. IHARG(1).EQ.'DIST' .AND.
55491     1   IHARG(2).EQ.'FIT')THEN
55492         CALL DPBEFI(MAXNXT,ICAPSW,IFORSW,ISEED,
55493     1               IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
55494         IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
55495      ELSEIF(IHARG(1).EQ.'BEST' .AND. IHARG(2).EQ.'DIST' .AND.
55496     1       IHARG(3).EQ.'FIT')THEN
55497         CALL DPBEFI(MAXNXT,ICAPSW,IFORSW,ISEED,
55498     1               IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
55499         IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
55500      ENDIF
55501C
55502CCCCC THE FOLLOWING SECTION WAS ADDED     NOVEMBER 1998
55503C               ***************************************************
55504C               **  TREAT THE CHI-SQUARED GOODNESS OF FIT  CASE  **
55505C               ***************************************************
55506C
55507CCCCC NOTE 12/2009: FOLDED INTO THE "GOODNESS OF FIT" COMMAND (DPGOFI)
55508      IF(ICOM.EQ.'ODDS')GOTO7039
55509C
55510CCCCC IF(NUMARG.GE.3)THEN
55511CCCCC   DO7010I=1,NUMARG-2
55512CCCCC     IF(IHARG(I).EQ.'GOOD'.AND.IHARG(I+1).EQ.'OF'.AND.
55513CCCCC1       IHARG(I+2).EQ.'FIT')THEN
55514CCCCC          CALL DPCHSQ(XTEMP1,XTEMP2,TEMP,MAXNXT,
55515CCCCC1         ICAPSW,
55516CCCCC1         IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
55517CCCCC          IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
55518CCCCC     ENDIF
55519C7010   CONTINUE
55520CCCCC ENDIF
55521CCCCC IF(NUMARG.GE.2)THEN
55522CCCCC   DO7020I=1,NUMARG-1
55523CCCCC     IF(IHARG(I).EQ.'CHI '.AND.IHARG(I+1).EQ.'SQUA')THEN
55524CCCCC          CALL DPCHSQ(XTEMP1,XTEMP2,TEMP,MAXNXT,
55525CCCCC1         ICAPSW,
55526CCCCC1         IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
55527CCCCC          IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
55528CCCCC     ENDIF
55529C7020   CONTINUE
55530CCCCC ENDIF
55531CCCCC IF(NUMARG.GE.1)THEN
55532CCCCC   DO7030I=1,NUMARG
55533CCCCC     IF(IHARG(I).EQ.'CHIS')THEN
55534CCCCC          CALL DPCHSQ(XTEMP1,XTEMP2,TEMP,MAXNXT,
55535CCCCC1         ICAPSW,
55536CCCCC1         IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
55537CCCCC          IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
55538CCCCC     ENDIF
55539C7030   CONTINUE
55540CCCCC ENDIF
55541C
55542 7039 CONTINUE
55543C
55544CCCCC THE FOLLOWING SECTION WAS ADDED     NOVEMBER 1998
55545C               ***************************************************
55546C               **  TREAT THE KOLMOGOROV-SMIRNOV GOODNESS OF FIT  CASE
55547C               ***************************************************
55548C
55549CCCCC SEPTEMBER 2009: USE DPGOFI ROUTINE INSTEAD OF DP1KST
55550C
55551      IF(NUMARG.GE.2)THEN
55552        DO7070I=1,NUMARG-1
55553          IF(IHARG(I).EQ.'KOLM'.AND.IHARG(I+1).EQ.'SMIR')THEN
55554               CALL DPGOFI(MAXNXT,ICAPSW,IFORSW,ISEED,
55555     1         IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
55556               IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
55557          ELSEIF(IHARG(I).EQ.'K   '.AND.IHARG(I+1).EQ.'S   ')THEN
55558               CALL DPGOFI(MAXNXT,ICAPSW,IFORSW,ISEED,
55559     1         IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
55560               IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
55561          ELSEIF(IHARG(I).EQ.'KS  ')THEN
55562               CALL DPGOFI(MAXNXT,ICAPSW,IFORSW,ISEED,
55563     1         IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
55564               IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
55565          ELSEIF(IHARG(I).EQ.'ANDE'.AND.IHARG(I+1).EQ.'DARL'.AND.
55566     1          (IHARG(I+2).NE.'K' .OR. IHARG(I+2).NE.'KSAM'))THEN
55567               CALL DPGOFI(MAXNXT,ICAPSW,IFORSW,ISEED,
55568     1         IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
55569               IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
55570          ELSEIF(IHARG(I).EQ.'A   '.AND.IHARG(I+1).EQ.'D   ')THEN
55571               CALL DPGOFI(MAXNXT,ICAPSW,IFORSW,ISEED,
55572     1         IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
55573               IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
55574          ELSEIF(IHARG(I).EQ.'AD  ')THEN
55575               CALL DPGOFI(MAXNXT,ICAPSW,IFORSW,ISEED,
55576     1         IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
55577               IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
55578          ELSEIF(IHARG(I).EQ.'PPCC')THEN
55579               CALL DPGOFI(MAXNXT,ICAPSW,IFORSW,ISEED,
55580     1         IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
55581               IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
55582          ELSEIF(IHARG(I).EQ.'CHI '.AND.IHARG(I+1).EQ.'SQUA')THEN
55583               CALL DPGOFI(MAXNXT,ICAPSW,IFORSW,ISEED,
55584     1         IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
55585               IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
55586          ELSEIF(IHARG(I).EQ.'C   '.AND.IHARG(I+1).EQ.'S   ')THEN
55587               CALL DPGOFI(MAXNXT,ICAPSW,IFORSW,ISEED,
55588     1         IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
55589               IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
55590          ELSEIF(IHARG(I).EQ.'CHIS')THEN
55591               CALL DPGOFI(MAXNXT,ICAPSW,IFORSW,ISEED,
55592     1         IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
55593               IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
55594          ELSEIF(IHARG(I).EQ.'CS  ')THEN
55595               CALL DPGOFI(MAXNXT,ICAPSW,IFORSW,ISEED,
55596     1         IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
55597               IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
55598          ENDIF
55599 7070   CONTINUE
55600      ENDIF
55601C
55602CCCCC THE FOLLOWING SECTION WAS ADDED     SEPTEMBER 1997
55603C               ***************************************
55604C               **  TREAT THE F LOCATION TEST  CASE  **
55605C               ***************************************
55606C
55607      IF(ICOM.EQ.'F   '.AND.NUMARG.GE.1.AND.IHARG(1).EQ.'LOCA')THEN
55608         ISHIFT=1
55609         CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
55610     1               IBUGA2,IERROR)
55611         ICASAN='FLTE'
55612         IF(IERROR.EQ.'YES')GOTO9000
55613         IF(NUMARG.GE.1.AND.IHARG(1).EQ.'TEST')THEN
55614            ISHIFT=1
55615            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
55616     1      IBUGA2,IERROR)
55617            IF(IERROR.EQ.'YES')GOTO9000
55618         ENDIF
55619         IMULT='OFF'
55620         CALL DPFLTE(XTEMP1,MAXNXT,
55621     1               ICAPSW,IFORSW,IMULT,
55622     1               IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
55623         IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
55624      ELSEIF(ICOM.EQ.'MULT'.AND.NUMARG.GE.2.AND.IHARG(1).EQ.'F   '.AND.
55625     1       IHARG(2).EQ.'LOCA')THEN
55626         ISHIFT=1
55627         CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
55628     1               IBUGA2,IERROR)
55629         ICASAN='FLTE'
55630         IF(IERROR.EQ.'YES')GOTO9000
55631         IF(NUMARG.GE.1.AND.IHARG(1).EQ.'TEST')THEN
55632            ISHIFT=1
55633            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
55634     1      IBUGA2,IERROR)
55635         ENDIF
55636         IF(IERROR.EQ.'YES')GOTO9000
55637         IMULT='ON'
55638         CALL DPFLTE(XTEMP1,MAXNXT,
55639     1               ICAPSW,IFORSW,IMULT,
55640     1               IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
55641         IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
55642      ENDIF
55643C
55644CCCCC THE FOLLOWING SECTION WAS ADDED     FEBRUARY 1994
55645C               ******************************
55646C               **  TREAT THE F TEST  CASE  **
55647C               ******************************
55648C
55649      IF(ICOM.EQ.'F   ')THEN
55650         IF(NUMARG.GE.1.AND.IHARG(1).EQ.'TEST')THEN
55651            ISHIFT=1
55652            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
55653     1      IBUGA2,IERROR)
55654            ICASAN='FTES'
55655            CALL DPFTES(MAXNXT,ICAPSW,IFORSW,
55656     1                  IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
55657            IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
55658         ENDIF
55659      ENDIF
55660C
55661CCCCC THE FOLLOWING SECTION WAS ADDED     JANUARY 2014
55662C               ********************************************************
55663C               **  TREAT THE COMPLETE SPATIAL RANDOMNESS TEST  CASE  **
55664C               ********************************************************
55665C
55666      IF(ICOM.EQ.'COMP' .AND. IHARG(1).EQ.'SPAT' .AND.
55667     1   IHARG(2).EQ.'RAND')THEN
55668         ISHIFT=2
55669         IF(NUMARG.GE.3.AND.IHARG(3).EQ.'TEST')ISHIFT=3
55670         CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
55671     1               IBUGA2,IERROR)
55672         ICASAN='CSRA'
55673         CALL DPCSRA(XTEMP1,XTEMP2,MAXNXT,
55674     1               ICAPSW,IFORSW,
55675     1               IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
55676         IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
55677      ENDIF
55678C
55679CCCCC THE FOLLOWING SECTION WAS ADDED     JUNE 2012
55680C               ***************************************************
55681C               **  TREAT THE CORRELATION CONFIDENCE LIMITS CASE **
55682C               ***************************************************
55683C
55684      IF(ICOM.EQ.'CORR')THEN
55685         IF(NUMARG.GE.2.AND.IHARG(1).EQ.'CONF'.AND.
55686     1     (IHARG(2).EQ.'LIMI'.OR.IHARG(2).EQ.'INTE'))THEN
55687            ISHIFT=2
55688            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
55689     1      IBUGA2,IERROR)
55690            ICASAN='CRCI'
55691            CALL DPCRCI(MAXNXT,ICAPSW,IFORSW,
55692     1                  IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
55693            IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
55694         ENDIF
55695      ENDIF
55696C
55697CCCCC THE FOLLOWING SECTION WAS ADDED     AUGUST 2018
55698C               ***************************************************
55699C               **  TREAT THE HEDGES G    CONFIDENCE LIMITS CASE **
55700C               ***************************************************
55701C
55702      IF(ICOM.EQ.'HEDG' .AND. IHARG(1).EQ.'G   ')THEN
55703         IF(NUMARG.GE.3.AND.IHARG(2).EQ.'CONF'.AND.
55704     1     (IHARG(3).EQ.'LIMI'.OR.IHARG(3).EQ.'INTE'))THEN
55705            ISHIFT=3
55706            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
55707     1      IBUGA2,IERROR)
55708            ICASAN='HGCI'
55709            CALL DPHGCI(MAXNXT,ICAPSW,IFORSW,
55710     1                  IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
55711            IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
55712         ENDIF
55713      ENDIF
55714C
55715CCCCC THE FOLLOWING SECTION WAS ADDED     OCTOBER 2019
55716C               *******************************************************
55717C               **  TREAT THE RATIO OF MEANS CONNFIDENCE LIMITS CASE **
55718C               *******************************************************
55719C
55720      IF(ICOM.EQ.'RATI' .AND. IHARG(1).EQ.'OF  ' .AND.
55721     1   IHARG(2).EQ.'MEAN')THEN
55722        CALL DPMRCL(ICASAN,ICAPSW,IFORSW,
55723     1              IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
55724        IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
55725      ENDIF
55726C
55727C               ****************************************
55728C               **  TREAT THE FOLLOWING CASES:        **
55729C               **    1) CONFIDENCE LIMITS            **
55730C               **    2) DIFFERENCE OF MEANS          **
55731C               **       CONFIDENCE LIMITS            **
55732C               ****************************************
55733C
55734      IMULT='OFF'
55735      IREPL='OFF'
55736      IF(ICOM.EQ.'CONF' .OR. IHARG(1).EQ.'CONF' .OR.
55737     1   IHARG(2).EQ.'CONF' .OR. IHARG(3).EQ.'CONF' .OR.
55738     1   IHARG(4).EQ.'CONF' .OR. IHARG(5).EQ.'CONF' .OR.
55739     1   IHARG(6).EQ.'CONF' .OR. IHARG(7).EQ.'CONF')THEN
55740        CALL DPCONF(XTEMP1,XTEMP2,MAXNXT,ICASAN,
55741     1              ICAPSW,IFORSW,IMULT,IREPL,
55742     1              ISUBRO,IBUGA2,IBUGA3,IBUGQ,IFOUND,IERROR)
55743        IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
55744      ENDIF
55745C
55746CCCCC THE FOLLOWING SECTION WAS ADDED     FEBRUARY 1994
55747C               ***************************************
55748C               **  TREAT THE BARTLETT'S TEST  CASE  **
55749C               ***************************************
55750C
55751CCCCC ADD: DIXON BARTLETT TEST       AUGUST 1999
55752CCCCC ADD: DIXON MASSEY BARTLETT TEST       AUGUST 1999
55753CCCCC ADD: DM BARTLETT TEST       AUGUST 1999
55754C
55755      IF(ICOM.EQ.'BART')THEN
55756         IF(NUMARG.GE.1.AND.IHARG(1).EQ.'TEST')THEN
55757            ISHIFT=1
55758            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
55759     1                  IBUGA2,IERROR)
55760            ICASAN='BTES'
55761            IMULT='OFF'
55762            CALL DPBTES(XTEMP1,MAXNXT,
55763     1                  ICASAN,ICAPSW,IFORSW,IMULT,
55764     1                  IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
55765            IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
55766         ENDIF
55767      ELSEIF(ICOM.EQ.'MULT' .AND. IHARG(1).EQ.'BART')THEN
55768         IF(NUMARG.GE.2.AND.IHARG(2).EQ.'TEST')THEN
55769            ISHIFT=2
55770            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
55771     1                  IBUGA2,IERROR)
55772            ICASAN='BTES'
55773            IMULT='ON'
55774            CALL DPBTES(XTEMP1,MAXNXT,
55775     1                  ICASAN,ICAPSW,IFORSW,IMULT,
55776     1                  IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
55777            IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
55778         ENDIF
55779      ELSEIF(ICOM.EQ.'DIXO')THEN
55780         IF(NUMARG.GE.3.AND.IHARG(1).EQ.'MASS'.AND.
55781     1      IHARG(2).EQ.'BART'.AND.IHARG(3).EQ.'TEST')THEN
55782            ISHIFT=3
55783            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
55784     1                  IBUGA2,IERROR)
55785            IF(IERROR.EQ.'YES')GOTO9000
55786            ICASAN='DMBT'
55787            IMULT='OFF'
55788            CALL DPBTES(XTEMP1,MAXNXT,
55789     1                  ICASAN,ICAPSW,IFORSW,IMULT,
55790     1                  IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
55791            IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
55792         ELSEIF(NUMARG.GE.2.AND.IHARG(1).EQ.'BART'.AND.
55793     1      IHARG(2).EQ.'TEST')THEN
55794            ISHIFT=2
55795            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
55796     1                  IBUGA2,IERROR)
55797            IF(IERROR.EQ.'YES')GOTO9000
55798            ICASAN='DMBT'
55799            IMULT='OFF'
55800            CALL DPBTES(XTEMP1,MAXNXT,
55801     1                  ICASAN,ICAPSW,IFORSW,IMULT,
55802     1                  IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
55803            IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
55804         ENDIF
55805      ELSEIF(ICOM.EQ.'MULT')THEN
55806         IF(NUMARG.GE.4.AND.IHARG(1).EQ.'DIXO'.AND.
55807     1      IHARG(2).EQ.'MASS'.AND.
55808     1      IHARG(3).EQ.'BART'.AND.IHARG(4).EQ.'TEST')THEN
55809            ISHIFT=4
55810            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
55811     1                  IBUGA2,IERROR)
55812            IF(IERROR.EQ.'YES')GOTO9000
55813            ICASAN='DMBT'
55814            IMULT='ON'
55815            CALL DPBTES(XTEMP1,MAXNXT,
55816     1                  ICASAN,ICAPSW,IFORSW,IMULT,
55817     1                  IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
55818            IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
55819         ELSEIF(NUMARG.GE.3.AND.IHARG(1).EQ.'BART'.AND.
55820     1      IHARG(2).EQ.'BART'.AND.IHARG(3).EQ.'TEST')THEN
55821            ISHIFT=3
55822            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
55823     1                  IBUGA2,IERROR)
55824            IF(IERROR.EQ.'YES')GOTO9000
55825            ICASAN='DMBT'
55826            IMULT='ON'
55827            CALL DPBTES(XTEMP1,MAXNXT,
55828     1                  ICASAN,ICAPSW,IFORSW,IMULT,
55829     1                  IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
55830            IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
55831         ENDIF
55832      ELSEIF(ICOM.EQ.'DM  ')THEN
55833         IF(NUMARG.GE.2.AND.IHARG(1).EQ.'BART'.AND.
55834     1      IHARG(2).EQ.'TEST')THEN
55835            ISHIFT=2
55836            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
55837     1                  IBUGA2,IERROR)
55838            ICASAN='DMBT'
55839            IMULT='OFF'
55840            CALL DPBTES(XTEMP1,MAXNXT,
55841     1                  ICASAN,ICAPSW,IFORSW,IMULT,
55842     1                  IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
55843            IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
55844         ENDIF
55845      ELSEIF(ICOM.EQ.'MULT')THEN
55846         IF(NUMARG.GE.3.AND.IHARG(1).EQ.'DM  '.AND.
55847     1      IHARG(2).EQ.'BART'.AND.IHARG(3).EQ.'TEST')THEN
55848            ISHIFT=3
55849            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
55850     1                  IBUGA2,IERROR)
55851            ICASAN='DMBT'
55852            IMULT='ON'
55853            CALL DPBTES(XTEMP1,MAXNXT,
55854     1                  ICASAN,ICAPSW,IFORSW,IMULT,
55855     1                  IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
55856            IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
55857         ENDIF
55858      ENDIF
55859C
55860CCCCC THE FOLLOWING SECTION WAS ADDED     APRIL 2015
55861C               *****************************************************
55862C               **  TREAT THE COCHRAN VARIANCE OUTLIER TEST  CASE  **
55863C               *****************************************************
55864C
55865      IF(ICOM.EQ.'COCH' .OR. IHARG(1).EQ.'COCH' .OR.
55866     1   IHARG(2).EQ.'COCH' .OR. IHARG(3).EQ.'COCH')THEN
55867        CALL DPCVOT(XTEMP1,XTEMP2,MAXNXT,ICASAN,
55868     1              ICAPSW,IFORSW,
55869     1              IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
55870         IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
55871      ENDIF
55872C
55873CCCCC THE FOLLOWING SECTION WAS ADDED     SEPTEMBER 1997
55874C               ********************************************
55875C               **  TREAT THE KRUSKALL-WALLIS TEST  CASE  **
55876C               ********************************************
55877C
55878CCCCC ADD: FEBRUARY 20111 - MULTIPLE OPTION
55879C
55880      IMULT='OFF'
55881      IF(ICOM.EQ.'MULT' .AND. IHARG(1).EQ.'KRUS' .AND.
55882     1   IHARG(2).EQ.'WALL')THEN
55883        IMULT='ON'
55884        ISHIFT=1
55885        CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
55886     1              IBUGA2,IERROR)
55887        ICOM='KRUS'
55888      ENDIF
55889C
55890      IF(ICOM.EQ.'KRUS')THEN
55891         IF(NUMARG.GE.2.AND.IHARG(1).EQ.'WALL'.AND.
55892     1          IHARG(2).EQ.'TEST')THEN
55893            ISHIFT=2
55894            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
55895     1      IBUGA2,IERROR)
55896         ELSEIF(NUMARG.GE.1.AND.IHARG(1).EQ.'TEST')THEN
55897            ISHIFT=1
55898            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
55899     1      IBUGA2,IERROR)
55900         ELSEIF(NUMARG.GE.1.AND.IHARG(1).EQ.'WALL')THEN
55901            ISHIFT=1
55902            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
55903     1      IBUGA2,IERROR)
55904         ENDIF
55905         IF(NUMARG.GE.1.AND.IHARG(1).EQ.'MULT')THEN
55906            ISHIFT=1
55907            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
55908     1      IBUGA2,IERROR)
55909            IMULT='ON'
55910         ENDIF
55911         ICASAN='KTES'
55912         CALL DPKRUS(XTEMP1,XTEMP2,MAXNXT,
55913     1               ICAPSW,IFORSW,IMULT,
55914     1               ISUBRO,IBUGA2,IBUGA3,IBUGQ,IFOUND,IERROR)
55915         IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
55916      ENDIF
55917C
55918CCCCC THE FOLLOWING SECTION WAS ADDED     SEPTEMBER 1997
55919C               ***************************************************
55920C               **  TREAT THE VAN DER WAERDEN TEST         CASE  **
55921C               **            ONE WAY NORMAL SCORES TEST   CASE  **
55922C               ***************************************************
55923C
55924CCCCC ADD: FEBRUARY 20111 - MULTIPLE OPTION
55925C
55926      IMULT='OFF'
55927      IF(ICOM.EQ.'MULT' .AND. IHARG(1).EQ.'VAN ' .AND.
55928     1   IHARG(2).EQ.'DER ' .AND. IHARG(3).EQ.'WAER')THEN
55929        IMULT='ON'
55930        ISHIFT=1
55931        CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
55932     1              IBUGA2,IERROR)
55933        ICOM='VAN '
55934      ENDIF
55935C
55936      IF(ICOM.EQ.'VAN ')THEN
55937         IF(NUMARG.GE.3.AND.IHARG(1).EQ.'DER '.AND.
55938     1          IHARG(2).EQ.'WAER'.AND.IHARG(3).EQ.'TEST')THEN
55939            ISHIFT=3
55940            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
55941     1      IBUGA2,IERROR)
55942         ELSEIF(NUMARG.GE.2.AND.IHARG(1).EQ.'DER '.AND.
55943     1          IHARG(2).EQ.'WAER')THEN
55944            ISHIFT=2
55945            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
55946     1      IBUGA2,IERROR)
55947         ENDIF
55948         ICASAN='VDWA'
55949         CALL DPVWAE(XTEMP1,XTEMP2,MAXNXT,
55950     1               ICAPSW,IFORSW,IMULT,
55951     1               IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
55952         IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
55953      ENDIF
55954C
55955      IMULT='OFF'
55956      IF(ICOM.EQ.'MULT' .AND. IHARG(1).EQ.'ONE ' .AND.
55957     1   IHARG(2).NE.'PARA')THEN
55958        IMULT='ON'
55959        ISHIFT=1
55960        CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
55961     1              IBUGA2,IERROR)
55962        ICOM='ONE '
55963      ENDIF
55964C
55965      IF(ICOM.EQ.'ONE ' .AND. IHARG(1).NE.'PARA')THEN
55966         IF(NUMARG.GE.4.AND.IHARG(1).EQ.'WAY '.AND.
55967     1          IHARG(2).EQ.'NORM'.AND.IHARG(3).EQ.'SCOR'.AND.
55968     1          IHARG(4).EQ.'TEST')THEN
55969            ISHIFT=4
55970            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
55971     1      IBUGA2,IERROR)
55972         ELSEIF(NUMARG.GE.3.AND.IHARG(1).EQ.'WAY '.AND.
55973     1          IHARG(2).EQ.'NORM'.AND.IHARG(3).EQ.'SCOR')THEN
55974            ISHIFT=4
55975            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
55976     1      IBUGA2,IERROR)
55977         ENDIF
55978         ICASAN='VDWA'
55979         CALL DPVWAE(XTEMP1,XTEMP2,MAXNXT,
55980     1               ICAPSW,IFORSW,IMULT,
55981     1               IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
55982         IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
55983      ENDIF
55984C
55985CCCCC THE FOLLOWING SECTION WAS ADDED     OCTOBER 2003
55986C               ********************************************
55987C               **  TREAT THE FRIEDMAN              CASE  **
55988C               ********************************************
55989C
55990      IF(ICOM.EQ.'FRIE')THEN
55991         IF(NUMARG.GE.2.AND.IHARG(1).EQ.'RANK'.AND.
55992     1      IHARG(2).EQ.'TEST')THEN
55993            ISHIFT=2
55994            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
55995     1      IBUGA2,IERROR)
55996         ELSEIF(NUMARG.GE.1.AND.IHARG(1).EQ.'TEST')THEN
55997            ISHIFT=1
55998            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
55999     1      IBUGA2,IERROR)
56000         ENDIF
56001         ICASAN='FRIE'
56002         IMULT='OFF'
56003         CALL DPFRIE(XTEMP1,XTEMP2,MAXNXT,
56004     1               ICAPSW,IFORSW,IMULT,
56005     1               IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
56006         IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
56007      ENDIF
56008C
56009CCCCC THE FOLLOWING SECTION WAS ADDED     JULY 2011
56010C               ********************************************
56011C               **  TREAT THE QUADE                 CASE  **
56012C               ********************************************
56013C
56014      IF(ICOM.EQ.'QUAD')THEN
56015         IF(NUMARG.GE.1.AND.IHARG(1).EQ.'TEST')THEN
56016            ISHIFT=1
56017            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
56018     1      IBUGA2,IERROR)
56019         ENDIF
56020         ICASAN='QUAD'
56021         IMULT='OFF'
56022         CALL DPQUTE(XTEMP1,XTEMP2,MAXNXT,
56023     1               ICAPSW,IFORSW,IMULT,
56024     1               IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
56025         IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
56026      ENDIF
56027C
56028CCCCC THE FOLLOWING SECTION WAS ADDED     FEBRUARY 2013
56029C               ********************************************
56030C               **  TREAT THE PAGE                  CASE  **
56031C               ********************************************
56032C
56033      IF(ICOM.EQ.'PAGE')THEN
56034         IF(NUMARG.GE.2.AND.IHARG(1).EQ.'RANK'.AND.
56035     1      IHARG(2).EQ.'TEST')THEN
56036            ISHIFT=2
56037            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
56038     1      IBUGA2,IERROR)
56039         ELSEIF(NUMARG.GE.1.AND.IHARG(1).EQ.'TEST')THEN
56040            ISHIFT=1
56041            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
56042     1      IBUGA2,IERROR)
56043         ENDIF
56044         ICASAN='PAGE'
56045         IMULT='OFF'
56046         CALL DPPAGE(XTEMP1,XTEMP2,MAXNXT,
56047     1               ICAPSW,IFORSW,IMULT,
56048     1               IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
56049         IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
56050      ENDIF
56051C
56052CCCCC THE FOLLOWING SECTION WAS ADDED     FEBRUARY 2013
56053C               ***************************************************
56054C               **  TREAT THE KENDALL TAU INDEPENDENCE TEST CASE **
56055C               ***************************************************
56056C
56057      IF(
56058     1  (ICOM.EQ.'KEND' .AND. IHARG(1).EQ.'TAU ') .OR.
56059     1  (IHARG(2).EQ.'KEND' .AND. IHARG(3).EQ.'TAU '))THEN
56060         CALL DP2SIN(MAXNXT,ICAPSW,IFORSW,
56061     1               IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
56062         IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
56063      ENDIF
56064C
56065CCCCC THE FOLLOWING SECTION WAS ADDED     MARCH 2013
56066C               ********************************************************
56067C               **  TREAT THE RANK CORRELATION INDEPENDENCE TEST CASE **
56068C               ********************************************************
56069C
56070      IF(
56071     1  (ICOM.EQ.'RANK' .AND. IHARG(1).EQ.'CORR') .OR.
56072     1  (IHARG(2).EQ.'RANK' .AND. IHARG(3).EQ.'CORR'))THEN
56073         CALL DP2SIN(MAXNXT,ICAPSW,IFORSW,
56074     1               IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
56075         IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
56076      ENDIF
56077      IF(
56078     1  (ICOM.EQ.'SPEA' .AND. IHARG(1).EQ.'RHO ') .OR.
56079     1  (IHARG(2).EQ.'SPEA' .AND. IHARG(3).EQ.'RHO '))THEN
56080         CALL DP2SIN(MAXNXT,ICAPSW,IFORSW,
56081     1               IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
56082         IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
56083      ENDIF
56084C
56085CCCCC THE FOLLOWING SECTION WAS ADDED     OCTOBER 2015
56086C               ***************************************************
56087C               **  TREAT THE EQUAL SLOPES TEST             CASE **
56088C               ***************************************************
56089C
56090      IF(ICOM.EQ.'EQUA' .AND. IHARG(1).EQ.'SLOP' .AND.
56091     1   IHARG(2).EQ.'TEST')THEN
56092        CALL DPEQSL(XTEMP1,XTEMP2,MAXNXT,
56093     1              ICAPSW,IFORSW,
56094     1              IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
56095        IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
56096      ENDIF
56097C
56098CCCCC THE FOLLOWING SECTION WAS ADDED     JANUARY 2006
56099C               ********************************************
56100C               **  TREAT THE DURBIN                CASE  **
56101C               ********************************************
56102C
56103      IF(ICOM.EQ.'DURB' .AND. IHARG(1).NE.'WATS')THEN
56104         IF(NUMARG.GE.2.AND.IHARG(1).EQ.'RANK'.AND.
56105     1      IHARG(2).EQ.'TEST')THEN
56106            ISHIFT=2
56107            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
56108     1      IBUGA2,IERROR)
56109         ELSEIF(NUMARG.GE.1.AND.IHARG(1).EQ.'TEST')THEN
56110            ISHIFT=1
56111            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
56112     1      IBUGA2,IERROR)
56113         ENDIF
56114         ICASAN='DURB'
56115         CALL DPDURB(XTEMP1,XTEMP2,MAXNXT,
56116     1               ICAPSW,IFORSW,
56117     1               IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
56118         IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
56119      ENDIF
56120C
56121CCCCC THE FOLLOWING SECTION WAS ADDED     FEBRUARY 2007
56122C               ****************************************************
56123C               **  TREAT THE ODDS RATIO INDEPENDENCE TEST  CASE  **
56124C               ****************************************************
56125C
56126      IF(ICOM.EQ.'ODDS' .AND. IHARG(2).NE.'CHIS' .AND.
56127     1   IHARG(2).NE.'CHI ')THEN
56128         IF(NUMARG.GE.3.AND.IHARG(1).EQ.'RATI'.AND.
56129     1      IHARG(2).EQ.'INDE'.AND.IHARG(3).EQ.'TEST')THEN
56130            ISHIFT=3
56131            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
56132     1      IBUGA2,IERROR)
56133         ELSEIF(NUMARG.GE.2.AND.IHARG(1).EQ.'RATI'.AND.
56134     1      IHARG(2).EQ.'INDE')THEN
56135            ISHIFT=2
56136            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
56137     1      IBUGA2,IERROR)
56138         ELSEIF(NUMARG.GE.2.AND.IHARG(1).EQ.'RATI'.AND.
56139     1      IHARG(2).EQ.'TEST')THEN
56140            ISHIFT=2
56141            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
56142     1      IBUGA2,IERROR)
56143         ELSEIF(NUMARG.GE.1.AND.IHARG(1).EQ.'RATI')THEN
56144            ISHIFT=1
56145            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
56146     1      IBUGA2,IERROR)
56147         ENDIF
56148         ICASAN='ODRA'
56149         CALL DPODRA(XTEMP1,XTEMP2,MAXNXT,
56150     1               ICASAN,ICAPSW,IFORSW,
56151     1               IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
56152         IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
56153      ENDIF
56154C
56155CCCCC THE FOLLOWING SECTION WAS ADDED     MAY 2007
56156C               ****************************************************
56157C               **  TREAT THE ODDS RATIO CHI-SQUARE   TEST  CASE  **
56158C               ****************************************************
56159C
56160      IF(ICOM.EQ.'ODDS')THEN
56161         IF(NUMARG.GE.4.AND.IHARG(1).EQ.'RATI'.AND.
56162     1      IHARG(2).EQ.'CHI '.AND.IHARG(3).EQ.'SQUA'.AND.
56163     1      IHARG(4).EQ.'TEST')THEN
56164            ISHIFT=4
56165            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
56166     1      IBUGA2,IERROR)
56167         ELSEIF(NUMARG.GE.3.AND.IHARG(1).EQ.'RATI'.AND.
56168     1      IHARG(2).EQ.'CHI '.AND.IHARG(3).EQ.'SQUA')THEN
56169            ISHIFT=3
56170            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
56171     1      IBUGA2,IERROR)
56172         ELSEIF(NUMARG.GE.3.AND.IHARG(1).EQ.'RATI'.AND.
56173     1      IHARG(2).EQ.'CHIS'.AND.IHARG(3).EQ.'TEST')THEN
56174            ISHIFT=3
56175            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
56176     1      IBUGA2,IERROR)
56177         ELSEIF(NUMARG.GE.2.AND.IHARG(1).EQ.'RATI'.AND.
56178     1      IHARG(2).EQ.'CHIS')THEN
56179            ISHIFT=2
56180            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
56181     1      IBUGA2,IERROR)
56182         ENDIF
56183         ICASAN='ODCH'
56184         CALL DPODCH(XTEMP1,XTEMP2,MAXNXT,
56185     1               ICASAN,ICAPSW,IFORSW,
56186     1               IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
56187         IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
56188      ENDIF
56189C
56190CCCCC THE FOLLOWING SECTION WAS ADDED     MARCH 2007
56191C               ****************************************************
56192C               **  TREAT THE MCNEMAR                 TEST  CASE  **
56193C               ****************************************************
56194C
56195      IF(ICOM.EQ.'MCNE')THEN
56196         IF(NUMARG.GE.1.AND.IHARG(1).EQ.'TEST')THEN
56197            ISHIFT=1
56198            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
56199     1      IBUGA2,IERROR)
56200         ENDIF
56201         ICASAN='MCNE'
56202         CALL DPMCNE(MAXNXT,ICASAN,ICAPSW,IFORSW,
56203     1               IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
56204         IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
56205      ENDIF
56206C
56207CCCCC THE FOLLOWING SECTION WAS ADDED     MARCH 2007
56208C               ****************************************************
56209C               **  TREAT THE MANTEL-HAENSZEL         TEST  CASE  **
56210C               ****************************************************
56211C
56212C
56213C
56214      IF(ICOM.EQ.'MANT')THEN
56215         ICASAN='MAHA'
56216         IF(NUMARG.GE.2.AND.IHARG(1).EQ.'HAEN'.AND.
56217     1      IHARG(2).EQ.'TEST')THEN
56218            ISHIFT=2
56219            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
56220     1      IBUGA2,IERROR)
56221         ELSEIF(NUMARG.GE.1.AND.IHARG(1).EQ.'HAEN')THEN
56222            ISHIFT=1
56223            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
56224     1      IBUGA2,IERROR)
56225         ENDIF
56226         ICASAN='MANT'
56227         CALL DPMAHA(MAXNXT,ICASAN,ICAPSW,IFORSW,
56228     1               IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
56229         IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
56230      ENDIF
56231C
56232CCCCC THE FOLLOWING SECTION WAS ADDED     OCTOBER 2004
56233C               ********************************************
56234C               **  TREAT THE COCHRAN               CASE  **
56235C               ********************************************
56236C
56237      IF(ICOM.EQ.'COCH')THEN
56238         IF(NUMARG.GE.1.AND.IHARG(1).EQ.'TEST')THEN
56239            ISHIFT=1
56240            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
56241     1      IBUGA2,IERROR)
56242         ENDIF
56243         ICASAN='COCH'
56244         CALL DPCOCH(MAXNXT,ICAPSW,IFORSW,
56245     1               IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
56246         IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
56247      ENDIF
56248C
56249CCCCC THE FOLLOWING SECTION WAS ADDED     AUGUST   2008
56250C               ****************************************************
56251C               **  TREAT THE BINOMIAL PROPORTION TEST      CASE  **
56252C               ****************************************************
56253C
56254      IF(ICOM.EQ.'BINO')THEN
56255         ICASAN='NULL'
56256         IF(NUMARG.GE.2.AND.IHARG(1).EQ.'PROP'.AND.
56257     1      IHARG(2).EQ.'TEST')THEN
56258            ISHIFT=2
56259            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
56260     1      IBUGA2,IERROR)
56261            ICASAN='BP2T'
56262         ELSEIF(NUMARG.GE.4.AND.IHARG(1).EQ.'PROP'.AND.
56263     1      IHARG(2).EQ.'LOWE'.AND.IHARG(3).EQ.'TAIL'.AND.
56264     1      IHARG(4).EQ.'TEST')THEN
56265            ISHIFT=4
56266            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
56267     1      IBUGA2,IERROR)
56268            ICASAN='BPLT'
56269         ELSEIF(NUMARG.GE.4.AND.IHARG(1).EQ.'PROP'.AND.
56270     1      IHARG(2).EQ.'UPPE'.AND.IHARG(3).EQ.'TAIL'.AND.
56271     1      IHARG(4).EQ.'TEST')THEN
56272            ISHIFT=4
56273            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
56274     1      IBUGA2,IERROR)
56275            ICASAN='BPUT'
56276         ENDIF
56277         IF(ICASAN.NE.'NULL')THEN
56278           CALL DPBNTE(MAXNXT,ICASAN,ICAPSW,IFORSW,
56279     1                 IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
56280           IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
56281         ENDIF
56282      ENDIF
56283C
56284CCCCC THE FOLLOWING SECTION WAS ADDED     FEBRUARY  2008
56285C               ****************************************************
56286C               **  TREAT THE K-MEANS CLUSTER               CASE  **
56287C               ****************************************************
56288C
56289C
56290C
56291      IF(ICOM.EQ.'K   ')THEN
56292         ICASAN='KMEA'
56293         IF(NUMARG.GE.3.AND.IHARG(1).EQ.'MEAN'.AND.
56294     1      IHARG(2).EQ.'CLUS' .AND. IHARG(3).EQ.'ANAL')THEN
56295            ISHIFT=3
56296            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
56297     1      IBUGA2,IERROR)
56298         ELSEIF(NUMARG.GE.2.AND.IHARG(1).EQ.'MEAN'.AND.
56299     1      IHARG(2).EQ.'CLUS')THEN
56300            ISHIFT=2
56301            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
56302     1      IBUGA2,IERROR)
56303         ELSEIF(NUMARG.GE.2.AND.IHARG(1).EQ.'MEAN'.AND.
56304     1      IHARG(2).EQ.'ANAL')THEN
56305            ISHIFT=2
56306            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
56307     1      IBUGA2,IERROR)
56308         ELSEIF(NUMARG.GE.1.AND.IHARG(1).EQ.'MEAN')THEN
56309            ISHIFT=1
56310            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
56311     1      IBUGA2,IERROR)
56312         ENDIF
56313CCCCC    CALL DPKMEA(XTEMP1,XTEMP2,MAXNXT,
56314CCCCC1               ICASAN,ICAPSW,
56315CCCCC1               IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
56316         IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
56317      ENDIF
56318C
56319CCCCC THE FOLLOWING SECTION WAS ADDED     FEBRUARY  2008
56320C               ****************************************************
56321C               **  TREAT THE MAXIMUM LIKELIHOOD MIXTURE          **
56322C               **            <CLUSTER/MODEL>    CASE             **
56323C               ****************************************************
56324C
56325C
56326C
56327      IF(ICOM.EQ.'MAXI')THEN
56328         ICASAN='MIX '
56329         IF(NUMARG.GE.3.AND.IHARG(1).EQ.'LIKE'.AND.
56330     1      IHARG(2).EQ.'MIXT' .AND.
56331     1      (IHARG(3).EQ.'CLUS' .OR. IHARG(3).EQ.'MODE'))THEN
56332            ISHIFT=3
56333            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
56334     1      IBUGA2,IERROR)
56335CCCCC       CALL DPMIXT(XTEMP1,XTEMP2,MAXNXT,
56336CCCCC1                  ICASAN,ICAPSW,
56337CCCCC1                  IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
56338            IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
56339         ELSEIF(NUMARG.GE.2.AND.IHARG(1).EQ.'LIKE'.AND.
56340     1      IHARG(2).EQ.'MIXT')THEN
56341            ISHIFT=2
56342            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
56343     1      IBUGA2,IERROR)
56344CCCCC       CALL DPMIXT(XTEMP1,XTEMP2,MAXNXT,
56345CCCCC1                  ICASAN,ICAPSW,
56346CCCCC1                  IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
56347            IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
56348         ENDIF
56349      ENDIF
56350C
56351      IF(ICOM.EQ.'MULT')THEN
56352         ICASAN='MIXT'
56353         IF(NUMARG.GE.3.AND.IHARG(1).EQ.'NORM'.AND.
56354     1      IHARG(2).EQ.'MIXT' .AND.
56355     1      (IHARG(3).EQ.'CLUS' .OR. IHARG(3).EQ.'MODE'))THEN
56356            ISHIFT=3
56357            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
56358     1      IBUGA2,IERROR)
56359CCCCC       CALL DPMIXT(XTEMP1,XTEMP2,MAXNXT,
56360CCCCC1                  ICASAN,ICAPSW,
56361CCCCC1                  IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
56362            IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
56363         ELSEIF(NUMARG.GE.2.AND.IHARG(1).EQ.'NORM'.AND.
56364     1      (IHARG(2).EQ.'CLUS' .OR. IHARG(2).EQ.'MODE'))THEN
56365            ISHIFT=2
56366            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
56367     1      IBUGA2,IERROR)
56368CCCCC       CALL DPMIXT(XTEMP1,XTEMP2,MAXNXT,
56369CCCCC1                  ICASAN,ICAPSW,
56370CCCCC1                  IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
56371            IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
56372         ENDIF
56373      ENDIF
56374C
56375      IF(ICOM.EQ.'MVN ')THEN
56376         ICASAN='MIXT'
56377         IF(NUMARG.GE.2.AND.IHARG(1).EQ.'MIXT'.AND.
56378     1      (IHARG(2).EQ.'CLUS' .OR. IHARG(2).EQ.'MODE'))THEN
56379            ISHIFT=2
56380            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
56381     1      IBUGA2,IERROR)
56382CCCCC       CALL DPMIXT(XTEMP1,XTEMP2,MAXNXT,
56383CCCCC1                  ICASAN,ICAPSW,
56384CCCCC1                  IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
56385            IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
56386         ELSEIF(NUMARG.GE.1.AND.
56387     1      (IHARG(1).EQ.'CLUS' .OR. IHARG(1).EQ.'MODE'))THEN
56388            ISHIFT=1
56389            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
56390     1      IBUGA2,IERROR)
56391CCCCC       CALL DPMIXT(XTEMP1,XTEMP2,MAXNXT,
56392CCCCC1                  ICASAN,ICAPSW,
56393CCCCC1                  IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
56394            IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
56395         ENDIF
56396      ENDIF
56397C
56398CCCCC THE FOLLOWING SECTION WAS ADDED     JUNE 1999
56399C               ***************************************
56400C               **  TREAT THE LEVENE'S   TEST  CASE  **
56401C               ***************************************
56402C
56403CCCCC ADD: MEAN LEVENE TEST AND TRIMMED MEAN LEVENE TEST.
56404CCCCC      APRIL 1999
56405CCCCC ADD: FEBRUARY 20111 - MULTIPLE OPTION
56406C
56407      IMULT='OFF'
56408      IF(ICOM.EQ.'MULT' .AND. IHARG(1).EQ.'LEVE')THEN
56409        IMULT='ON'
56410        ISHIFT=1
56411        CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
56412     1              IBUGA2,IERROR)
56413        ICOM='LEVE'
56414      ENDIF
56415C
56416      IF(ICOM.EQ.'LEVE')THEN
56417         IF(NUMARG.GE.1.AND.IHARG(1).EQ.'TEST')THEN
56418            ISHIFT=1
56419            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
56420     1                  IBUGA2,IERROR)
56421            ICASAN='LMED'
56422            CALL DPLTES(XTEMP1,XTEMP2,MAXNXT,ICASAN,
56423     1                  ICAPSW,IFORSW,IMULT,
56424     1                  IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
56425            IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
56426         ENDIF
56427      ENDIF
56428C
56429      IMULT='OFF'
56430      IF(ICOM.EQ.'MULT' .AND. IHARG(1).EQ.'MEAN' .AND.
56431     1   IHARG(2).EQ.'LEVE')THEN
56432        IMULT='ON'
56433        ISHIFT=2
56434        CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
56435     1              IBUGA2,IERROR)
56436        ICOM='MEAN'
56437      ENDIF
56438C
56439      IF(ICOM.EQ.'MEAN')THEN
56440         IF(NUMARG.GE.2.AND.IHARG(1).EQ.'LEVE'.AND.
56441     1      IHARG(2).EQ.'TEST')THEN
56442            ISHIFT=2
56443            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
56444     1                  IBUGA2,IERROR)
56445            ICASAN='LMEA'
56446            CALL DPLTES(XTEMP1,XTEMP2,MAXNXT,ICASAN,
56447     1                  ICAPSW,IFORSW,IMULT,
56448     1                  IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
56449            IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
56450         ELSE IF(NUMARG.GE.1.AND.IHARG(1).EQ.'LEVE')THEN
56451            ISHIFT=1
56452            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
56453     1                  IBUGA2,IERROR)
56454            ICASAN='LMEA'
56455            CALL DPLTES(XTEMP1,XTEMP2,MAXNXT,ICASAN,
56456     1                  ICAPSW,IFORSW,IMULT,
56457     1                  IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
56458            IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
56459         ENDIF
56460      ENDIF
56461C
56462      IMULT='OFF'
56463      IF(ICOM.EQ.'MULT' .AND. IHARG(1).EQ.'MEDI' .AND.
56464     1   IHARG(2).EQ.'LEVE')THEN
56465        IMULT='ON'
56466        ISHIFT=1
56467        CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
56468     1              IBUGA2,IERROR)
56469        ICOM='MEDI'
56470      ENDIF
56471C
56472      IF(ICOM.EQ.'MEDI')THEN
56473         IF(NUMARG.GE.2.AND.IHARG(1).EQ.'LEVE'.AND.
56474     1      IHARG(2).EQ.'TEST')THEN
56475            ISHIFT=2
56476            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
56477     1                  IBUGA2,IERROR)
56478            ICASAN='LMED'
56479            CALL DPLTES(XTEMP1,XTEMP2,MAXNXT,ICASAN,
56480     1                  ICAPSW,IFORSW,IMULT,
56481     1                  IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
56482            IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
56483         ELSE IF(NUMARG.GE.1.AND.IHARG(1).EQ.'LEVE')THEN
56484            ISHIFT=1
56485            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
56486     1                  IBUGA2,IERROR)
56487            ICASAN='LMED'
56488            CALL DPLTES(XTEMP1,XTEMP2,MAXNXT,ICASAN,
56489     1                  ICAPSW,IFORSW,IMULT,
56490     1                  IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
56491            IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
56492         ENDIF
56493      ENDIF
56494C
56495      IMULT='OFF'
56496      IF(ICOM.EQ.'MULT' .AND. IHARG(1).EQ.'TRIM' .AND.
56497     1   IHARG(2).EQ.'MEAN' .AND. IHARG(3).EQ.'LEVE')THEN
56498        IMULT='ON'
56499        ISHIFT=1
56500        CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
56501     1              IBUGA2,IERROR)
56502        ICOM='TRIM'
56503      ENDIF
56504      IF(ICOM.EQ.'TRIM')THEN
56505         IF(NUMARG.GE.3.AND.IHARG(1).EQ.'MEAN'.AND.
56506     1      IHARG(2).EQ.'LEVE'.AND.IHARG(3).EQ.'TEST')THEN
56507            ISHIFT=3
56508            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
56509     1                  IBUGA2,IERROR)
56510            ICASAN='LTRI'
56511            CALL DPLTES(XTEMP1,XTEMP2,MAXNXT,ICASAN,
56512     1                  ICAPSW,IFORSW,IMULT,
56513     1                  IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
56514            IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
56515         ELSE IF(NUMARG.GE.2.AND.IHARG(2).EQ.'MEAN'.AND.
56516     1      IHARG(2).EQ.'LEVE')THEN
56517            ISHIFT=2
56518            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
56519     1                  IBUGA2,IERROR)
56520            ICASAN='LTRI'
56521            CALL DPLTES(XTEMP1,XTEMP2,MAXNXT,ICASAN,
56522     1                  ICAPSW,IFORSW,IMULT,
56523     1                  IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
56524            IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
56525         ENDIF
56526      ENDIF
56527C
56528CCCCC THE FOLLOWING SECTION WAS ADDED     APRIL  2014
56529C               *************************************************
56530C               **  TREAT THE COMMON WEIBULL SHAPE TEST  CASE  **
56531C               *************************************************
56532C
56533      IMULT='OFF'
56534      IF(ICOM.EQ.'MULT'     .AND. IHARG(1).EQ.'COMM' .AND.
56535     1   IHARG(2).EQ.'WEIB' .AND. IHARG(3).EQ.'SHAP')THEN
56536        IMULT='ON'
56537        ISHIFT=1
56538        CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
56539     1              IBUGA2,IERROR)
56540        ICOM='COMM'
56541      ENDIF
56542C
56543      IF(ICOM.EQ.'COMM' .AND. IHARG(1).EQ.'WEIB' .AND.
56544     1   IHARG(2).EQ.'SHAP')THEN
56545         IF(NUMARG.GE.3.AND.IHARG(3).EQ.'TEST')THEN
56546            ISHIFT=3
56547            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
56548     1                  IBUGA2,IERROR)
56549            ICASAN='CWSH'
56550            CALL DPCWSH(XTEMP1,XTEMP2,MAXNXT,ICASAN,
56551     1                  ICAPSW,IFORSW,IMULT,
56552     1                  IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
56553            IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
56554         ENDIF
56555      ENDIF
56556C
56557CCCCC THE FOLLOWING SECTION WAS ADDED     SEPTEMBER 1997
56558CCCCC ADD THE ANDERSON-DARLING K-SAMPLE TEST APRIL 1998.
56559CCCCC ADD THE ANDERSON-DARLING LOGISTIC TEST OCTOBER 2003.
56560CCCCC ADD THE ANDERSON-DARLING UNIFORM TEST NOVEMBER 2003.
56561CCCCC ADD THE ANDERSON-DARLING DOUBLE EXPONENTIAL TEST NOVEMBER 2003.
56562CCCCC 02/2010: ANDERSON-DARLING GOODNESS OF FIT INCORPORATED INTO
56563CCCCC          THE GENERIC GOODNESS OF FIT (DPGOFI).
56564CCCCC 02/2011: SUPPORT MULTIPLE OPTION FOR ANDERSON-DARLING K-SAMPLE TEST
56565C
56566C               *********************************************
56567C               **  TREAT THE ANDERSON DARLING TEST  CASE  **
56568C               *********************************************
56569C
56570      IMULT='OFF'
56571      IF(ICOM.EQ.'MULT' .AND. IHARG(1).EQ.'ANDE' .AND.
56572     1   IHARG(2).EQ.'DARL')THEN
56573        IMULT='ON'
56574        ISHIFT=1
56575        CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
56576     1              IBUGA2,IERROR)
56577        ICOM='ANDE'
56578      ENDIF
56579C
56580      IF(ICOM.EQ.'ANDE')THEN
56581         IF(NUMARG.GE.1.AND.IHARG(1).EQ.'DARL')THEN
56582            ISHIFT=1
56583            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
56584     1      IBUGA2,IERROR)
56585         ENDIF
56586C
56587         IF(NUMARG.GE.1.AND.IHARG(1).EQ.'TEST')THEN
56588            ISHIFT=1
56589            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
56590     1      IBUGA2,IERROR)
56591         ENDIF
56592C
56593         IF(NUMARG.GE.1.AND.(IHARG(1).EQ.'KSAM'))THEN
56594            ICASDI='K-SA'
56595            ISHIFT=1
56596            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
56597     1      IBUGA2,IERROR)
56598         ELSEIF(NUMARG.GE.2.AND.(IHARG(1).EQ.'K   '.AND.IHARG(2).EQ.
56599     1      'SAMP'))THEN
56600            ICASDI='K-SA'
56601            ISHIFT=2
56602            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
56603     1      IBUGA2,IERROR)
56604C
56605         ENDIF
56606C
56607         IF(NUMARG.GE.1.AND.IHARG(1).EQ.'TEST')THEN
56608            ISHIFT=1
56609            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
56610     1      IBUGA2,IERROR)
56611         ENDIF
56612C
56613         IF(ICASDI.EQ.'K-SA')THEN
56614           ICASAN='ADKS'
56615           CALL DPADKS(XTEMP1,XTEMP2,MAXNXT,
56616     1                 ICAPSW,IFORSW,IMULT,
56617     1                 IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
56618           IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
56619         ENDIF
56620      ENDIF
56621C
56622CCCCC THE FOLLOWING SECTION WAS ADDED     MARCH 1999
56623C               *********************************************
56624C               **  TREAT THE WILKS-SHAPIRO    TEST  CASE  **
56625C               *********************************************
56626C
56627      IF((ICOM.EQ.'WILK' .AND. IHARG(1).EQ.'SHAP') .OR.
56628     1   (ICOM.EQ.'SHAP' .AND. IHARG(1).EQ.'WILK'))THEN
56629         ICASAN='WSTE'
56630         CALL DPWSHA(XTEMP1,MAXNXT,ICASDI,
56631     1               ICAPSW,ICASAN,IFORSW,ISEED,
56632     1               IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
56633      ELSE
56634        DO17120I=1,NUMARG-1
56635          IF(IHARG(I).EQ.'WILK' .AND. IHARG(I+1).EQ.'SHAP')THEN
56636            ICASAN='WSTE'
56637            CALL DPWSHA(XTEMP1,MAXNXT,ICASDI,
56638     1                  ICAPSW,ICASAN,IFORSW,ISEED,
56639     1                  IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
56640            GOTO17129
56641          ELSEIF(IHARG(I).EQ.'SHAP' .AND. IHARG(I+1).EQ.'WILK')THEN
56642            ICASAN='WSTE'
56643            CALL DPWSHA(XTEMP1,MAXNXT,ICASDI,
56644     1                  ICAPSW,ICASAN,IFORSW,ISEED,
56645     1                  IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
56646            GOTO17129
56647          ENDIF
5664817120   CONTINUE
5664917129   CONTINUE
56650      ENDIF
56651      IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
56652C
56653CCCCC THE FOLLOWING SECTION WAS ADDED     JUNE 2012
56654C               *********************************************
56655C               **  TREAT THE JARQUE BERA      TEST  CASE  **
56656C               *********************************************
56657C
56658      IF(ICOM.EQ.'JARQ' .AND. IHARG(1).EQ.'BERA')THEN
56659         ICASAN='JABE'
56660         CALL DPWSHA(XTEMP1,MAXNXT,ICASDI,
56661     1               ICAPSW,ICASAN,IFORSW,ISEED,
56662     1               IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
56663      ELSE
56664        DO17130I=1,NUMARG-1
56665          IF(IHARG(I).EQ.'JARQ' .AND. IHARG(I+1).EQ.'BERA')THEN
56666            ICASAN='JABE'
56667            CALL DPWSHA(XTEMP1,MAXNXT,ICASDI,
56668     1                  ICAPSW,ICASAN,IFORSW,ISEED,
56669     1                  IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
56670            GOTO17139
56671          ENDIF
5667217130   CONTINUE
5667317139   CONTINUE
56674      ENDIF
56675      IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
56676C
56677CCCCC THE FOLLOWING SECTION WAS ADDED     NOVEMBER 2013
56678C               ***********************************************
56679C               **  TREAT THE POISSON DISPERSION TEST  CASE  **
56680C               ***********************************************
56681C
56682      IF(ICOM.EQ.'POIS' .AND. IHARG(1).EQ.'DISP')THEN
56683         ICASAN='PDIS'
56684         CALL DPPDTE(XTEMP1,XTEMP2,MAXNXT,
56685     1               ICAPSW,ICASAN,IFORSW,
56686     1               IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
56687      ELSE
56688        DO17140I=1,NUMARG-1
56689          IF(IHARG(I).EQ.'POIS' .AND. IHARG(I+1).EQ.'DISP')THEN
56690            ICASAN='PDIS'
56691            CALL DPPDTE(XTEMP1,XTEMP2,MAXNXT,
56692     1                  ICAPSW,ICASAN,IFORSW,
56693     1                  IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
56694            GOTO17149
56695          ENDIF
5669617140   CONTINUE
5669717149   CONTINUE
56698      ENDIF
56699      IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
56700C
56701C               ****************************************************
56702C               **  TREAT THE MCCOOL WEIBULL LOCATION TEST  CASE  **
56703C               ****************************************************
56704C
56705      IF(ICOM.EQ.'MCCO' .AND. IHARG(1).EQ.'WEIB' .AND.
56706     1   IHARG(2).EQ.'LOCA' .AND. IHARG(3).EQ.'TEST')THEN
56707        ISHIFT=3
56708        CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
56709     1              IBUGA2,IERROR)
56710        ICASAN='MCCO'
56711        CALL DPMCWE(MAXNXT,ICAPSW,IFORSW,
56712     1              IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
56713        GOTO9000
56714      ENDIF
56715C
56716CCCCC THE FOLLOWING SECTION WAS ADDED     SEPTEMBER 1997
56717C               *********************************************
56718C               **  TREAT THE GRUBB            TEST  CASE  **
56719C               *********************************************
56720C
56721      IF(ICOM.EQ.'GRUB')THEN
56722        CALL DPGRUB(XTEMP1,MAXNXT,
56723     1              ICAPSW,ICASAN,IFORSW,
56724     1              IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
56725      ELSE
56726        DO7110I=1,NUMARG
56727          IF(IHARG(I).EQ.'GRUB')THEN
56728            CALL DPGRUB(XTEMP1,MAXNXT,
56729     1                  ICAPSW,ICASAN,IFORSW,
56730     1                  IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
56731            GOTO7119
56732          ENDIF
56733 7110   CONTINUE
56734 7119   CONTINUE
56735      ENDIF
56736      IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
56737C
56738CCCCC THE FOLLOWING SECTION WAS ADDED     NOVEMBER 2009
56739C               *********************************************
56740C               **  TREAT THE TIETJEN-MOORE    TEST  CASE  **
56741C               *********************************************
56742C
56743      IF(ICOM.EQ.'TIET')THEN
56744        CALL DPTIET(XTEMP1,MAXNXT,
56745     1              ICAPSW,ICASAN,IFORSW,ISEED,
56746     1              IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
56747      ELSE
56748        DO7120I=1,NUMARG
56749          IF(IHARG(I).EQ.'TIET')THEN
56750            CALL DPTIET(XTEMP1,MAXNXT,
56751     1                  ICAPSW,ICASAN,IFORSW,ISEED,
56752     1                  IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
56753            GOTO7129
56754          ENDIF
56755 7120   CONTINUE
56756 7129   CONTINUE
56757      ENDIF
56758      IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
56759C
56760CCCCC THE FOLLOWING SECTION WAS ADDED     NOVEMBER 2009
56761C               ******************************************************
56762C               **  TREAT THE EXTREME STUDENTIZED DEVIATE TEST CASE **
56763C               ******************************************************
56764C
56765      IF(ICOM.EQ.'ESD ' .OR.
56766     1   (ICOM.EQ.'EXTR' .AND. IHARG(1).EQ.'STUD' .AND.
56767     1    IHARG(2).EQ.'DEVI'))THEN
56768        CALL DPGESD(XTEMP1,MAXNXT,
56769     1              ICAPSW,ICASAN,IFORSW,ISEED,
56770     1              IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
56771      ELSE
56772        DO7130I=1,NUMARG
56773          IF(IHARG(I).EQ.'ESD ')THEN
56774            CALL DPGESD(XTEMP1,MAXNXT,
56775     1                  ICAPSW,ICASAN,IFORSW,ISEED,
56776     1                  IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
56777            GOTO7139
56778          ENDIF
56779 7130   CONTINUE
56780 7139   CONTINUE
56781        DO7140I=1,NUMARG-2
56782          IF(IHARG(I).EQ.'EXTR' .AND. IHARG(I+1).EQ.'STUD' .AND.
56783     1       IHARG(I+2).EQ.'DEVI')THEN
56784            CALL DPGESD(XTEMP1,MAXNXT,
56785     1                  ICAPSW,ICASAN,IFORSW,ISEED,
56786     1                  IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
56787            GOTO7149
56788          ENDIF
56789 7140   CONTINUE
56790 7149   CONTINUE
56791      ENDIF
56792      IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
56793C
56794CCCCC THE FOLLOWING SECTION WAS ADDED     NOVEMBER 2009
56795C               *********************************************
56796C               **  TREAT THE DIXON            TEST  CASE  **
56797C               *********************************************
56798C
56799      IF(ICOM.EQ.'DIXO')THEN
56800        CALL DPDIXO(XTEMP1,MAXNXT,
56801     1              ICAPSW,ICASAN,IFORSW,ISEED,
56802     1              IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
56803      ELSE
56804        DO7150I=1,NUMARG
56805          IF(IHARG(I).EQ.'DIXO')THEN
56806            CALL DPDIXO(XTEMP1,MAXNXT,
56807     1                  ICAPSW,ICASAN,IFORSW,ISEED,
56808     1                  IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
56809            GOTO7159
56810          ENDIF
56811 7150   CONTINUE
56812 7159   CONTINUE
56813      ENDIF
56814      IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
56815C
56816CCCCC THE FOLLOWING SECTION WAS ADDED     OCTOBER 2019
56817C               *********************************************
56818C               **  TREAT THE DAVID            TEST  CASE  **
56819C               *********************************************
56820C
56821      IF(ICOM.EQ.'DAVI')THEN
56822        CALL DPDAVI(XTEMP1,MAXNXT,
56823     1              ICAPSW,ICASAN,IFORSW,
56824     1              IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
56825      ELSE
56826        DO7160I=1,NUMARG
56827          IF(IHARG(I).EQ.'DAVI')THEN
56828            CALL DPDAVI(XTEMP1,MAXNXT,
56829     1                  ICAPSW,ICASAN,IFORSW,
56830     1                  IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
56831            GOTO7169
56832          ENDIF
56833 7160   CONTINUE
56834 7169   CONTINUE
56835      ENDIF
56836      IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
56837C
56838CCCCC THE FOLLOWING SECTION WAS ADDED     OCTOBER 2019
56839C               *********************************************
56840C               **  TREAT THE SKEWNESS OUTLIER TEST  CASE  **
56841C               **  TREAT THE KURTOSIS OUTLIER TEST  CASE  **
56842C               *********************************************
56843C
56844      IF(ICOM.EQ.'SKEW' .OR. ICOM.EQ.'KURT')THEN
56845        CALL DPSKOU(XTEMP1,MAXNXT,
56846     1              ICAPSW,ICASAN,IFORSW,
56847     1              IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
56848      ELSE
56849        DO7170I=1,NUMARG
56850          IF(IHARG(I).EQ.'SKEW' .OR. IHARG(I).EQ.'KURT')THEN
56851            CALL DPSKOU(XTEMP1,MAXNXT,
56852     1                  ICAPSW,ICASAN,IFORSW,
56853     1                  IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
56854            GOTO7179
56855          ENDIF
56856 7170   CONTINUE
56857 7179   CONTINUE
56858      ENDIF
56859      IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
56860C
56861CCCCC THE FOLLOWING SECTION WAS ADDED     FEBRUARY 2003
56862C               *********************************************
56863C               **  TREAT THE LJUNG-BOX        TEST  CASE  **
56864C               *********************************************
56865C
56866      IF(ICOM.EQ.'LJUN' .OR. IHARG(1).EQ.'LJUN' .OR.
56867     1   IHARG(2).EQ.'LJUN')THEN
56868         CALL DPLUJA(XTEMP1,MAXNXT,
56869     1               ICASAN,ICAPSW,IFORSW,
56870     1               IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
56871         IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
56872      ENDIF
56873C
56874CCCCC THE FOLLOWING SECTION WAS ADDED     JANUARY 2013
56875C               ********************************************************
56876C               **  TREAT THE MEAN SUCCESSIVE DIFFERENCES TEST  CASE  **
56877C               ********************************************************
56878C
56879C     THIS TEST ALSO KNOWN AS DURBIN-WATSON TEST OR ADJACENCY TEST
56880C
56881      IF(ICOM.EQ.'MEAN' .OR. IHARG(1).EQ.'MEAN' .OR.
56882     1   IHARG(2).EQ.'MEAN')THEN
56883         CALL DPMSDT(XTEMP1,MAXNXT,
56884     1               ICASAN,ICAPSW,IFORSW,
56885     1               IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
56886         IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
56887      ENDIF
56888      IF(ICOM.EQ.'DURB' .OR. IHARG(1).EQ.'DURB' .OR.
56889     1   IHARG(2).EQ.'DURB')THEN
56890         CALL DPMSDT(XTEMP1,MAXNXT,
56891     1               ICASAN,ICAPSW,IFORSW,
56892     1               IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
56893         IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
56894      ENDIF
56895      IF(ICOM.EQ.'ADJA' .OR. IHARG(1).EQ.'ADJA' .OR.
56896     1   IHARG(2).EQ.'ADJA')THEN
56897         CALL DPMSDT(XTEMP1,MAXNXT,
56898     1               ICASAN,ICAPSW,IFORSW,
56899     1               IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
56900         IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
56901      ENDIF
56902C
56903CCCCC THE FOLLOWING SECTION WAS ADDED     NOVEMBER 2003
56904C               ******************************************************
56905C               **  TREAT THE FREQUENCY        TEST  CASE           **
56906C               **  TREAT THE FREQUENCY WITHIN A BLOCK  TEST  CASE  **
56907C               ******************************************************
56908C
56909      IF(ICOM.EQ.'FREQ' .OR. IHARG(1).EQ.'FREQ' .OR.
56910     1   IHARG(2).EQ.'FREQ' .OR. IHARG(3).EQ.'FREQ')THEN
56911         CALL DPFRTE(XTEMP1,MAXNXT,
56912     1               ICASAN,ICAPSW,IFORSW,
56913     1               IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
56914           IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
56915      ENDIF
56916C
56917CCCCC THE FOLLOWING SECTION WAS ADDED     DECEMBER 2003
56918C               ******************************************************
56919C               **  TREAT THE CUMULATIVE SUM   TEST  CASE           **
56920C               ******************************************************
56921C
56922      IF((ICOM.EQ.'CUMU' .AND. IHARG(1).EQ.'SUM ') .OR.
56923     1   (IHARG(1).EQ.'CUMU' .OR. IHARG(2).EQ.'SUM') .OR.
56924     1   (IHARG(2).EQ.'CUMU' .OR. IHARG(3).EQ.'SUM'))THEN
56925         CALL DPCUSU(XTEMP1,MAXNXT,
56926     1               ICASAN,ICAPSW,IFORSW,
56927     1               IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
56928         IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
56929      ENDIF
56930C
56931C               ************************************************
56932C               **  TREAT THE <DIST>  MAXIMUM LIKELIHOOD CASE **
56933C               ************************************************
56934C
56935      IMAX=NUMARG-1
56936      IF(IMAX.GE.1)THEN
56937        DO1410I=1,IMAX
56938          IF(IHARG(I).EQ.'MLE ' .OR.
56939     1      (IHARG(I).EQ.'MAXI' .AND. IHARG(I+1).EQ.'LIKE'))THEN
56940            CALL DPMLWE(XTEMP1,MAXNXT,
56941     1                  ICAPSW,IFORSW,
56942     1                  MINMAX,ISEED,
56943     1                  ICASAN,IBUGA2,IBUGA3,IBUGQ,ISUBRO,
56944     1                  IFOUND,IERROR)
56945            IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
56946          ENDIF
56947 1410   CONTINUE
56948      ENDIF
56949C
56950CCCCC THE FOLLOWING SECTION WAS ADDED     APRIL 1998
56951C               ********************************************************
56952C               **  TREAT THE A BASIS/B BASIS TOLERANCE LIMIT    CASE **
56953C               ********************************************************
56954C
56955      IF(
56956     1   (ICOM.EQ.'A   ' .AND. IHARG(1).EQ.'BASI').OR.
56957     1   (IHARG(1).EQ.'A   ' .AND. IHARG(2).EQ.'BASI').OR.
56958     1   (IHARG(2).EQ.'A   ' .AND. IHARG(3).EQ.'BASI').OR.
56959     1   (IHARG(3).EQ.'A   ' .AND. IHARG(4).EQ.'BASI').OR.
56960     1   ICOM.EQ.'ABAS' .OR.
56961     1   IHARG(1).EQ.'ABAS' .OR. IHARG(2).EQ.'ABAS' .OR.
56962     1   IHARG(3).EQ.'ABAS' .OR. IHARG(4).EQ.'ABAS'
56963     1   )THEN
56964         ICASAN='ABAS'
56965         CALL DPABAS(XTEMP1,XTEMP2,MAXNXT,
56966     1               ICASAN,ICASDI,ICAPSW,IFORSW,
56967     1               IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
56968         IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
56969      ELSEIF(
56970     1   (ICOM.EQ.'B   ' .AND. IHARG(1).EQ.'BASI').OR.
56971     1   (IHARG(1).EQ.'B   ' .AND. IHARG(2).EQ.'BASI').OR.
56972     1   (IHARG(2).EQ.'B   ' .AND. IHARG(3).EQ.'BASI').OR.
56973     1   (IHARG(3).EQ.'B   ' .AND. IHARG(4).EQ.'BASI').OR.
56974     1   ICOM.EQ.'BBAS' .OR.
56975     1   IHARG(1).EQ.'BBAS' .OR. IHARG(2).EQ.'BBAS' .OR.
56976     1   IHARG(3).EQ.'BBAS' .OR. IHARG(4).EQ.'BBAS'
56977     1   )THEN
56978         ICASAN='BBAS'
56979         CALL DPABAS(XTEMP1,XTEMP2,MAXNXT,
56980     1               ICASAN,ICASDI,ICAPSW,IFORSW,
56981     1               IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
56982         IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
56983      ENDIF
56984C
56985C               *******************************************
56986C               **  TREAT THE (2**K) DEX FIT CASE        **
56987C               **  TREAT THE    YATES ANALYSIS    CASE  **
56988C               *******************************************
56989C
56990      IF(ICOM.EQ.'2**K' .OR. ICOM.EQ.'YATE' .OR.
56991     1   ICOM.EQ.'PHD ' .OR.
56992     1  (ICOM.EQ.'DEX'.AND.NUMARG.GE.1.AND.
56993     1   IHARG(1).EQ.'PHD ') .OR.
56994     1  (ICOM.EQ.'DEX'.AND.NUMARG.GE.1.AND.
56995     1   IHARG(1).EQ.'FIT'))THEN
56996CCCCC   THE FOLLOWING 4 LINES WERE INSERTED NOVEMBER 1989
56997        IF(NUMARG.GE.2.AND.IHARG(2).EQ.'CUTO'.AND.
56998     1     IHARG2(2).EQ.'FF')GOTO3499
56999        IF(NUMARG.GE.1.AND.IHARG(1).EQ.'OUTP'.AND.
57000     1     IHARG2(1).EQ.'UT')GOTO3499
57001        ICASAN='DEXF'
57002        CALL DPYATE(ICASAN,
57003     1              ICAPSW,IFORSW,
57004     1              IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
57005        IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
57006      ENDIF
57007C
57008 3499 CONTINUE
57009C
57010C               *******************************
57011C               **  TREAT THE TABULATE CASE  **
57012C               *******************************
57013C
57014      IF(ICOM.EQ.'TABU' .OR. ICOM.EQ.'TAB')THEN
57015        ICASAN='TABU'
57016        CALL DPCRTA(TEMP,ISEED,ICAPSW,IFORSW,
57017     1              IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
57018        IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
57019      ENDIF
57020C
57021CCCCC THE FOLLOWING SECTION WAS ADDED NOVEMBER 1989
57022C               *************************************
57023C               **  TREAT THE CROSS-TABULATE CASE  **
57024C               *************************************
57025C
57026      IF(ICOM.EQ.'CROS' .AND. NUMARG.GE.1 .AND.
57027     1  (IHARG(1).EQ.'TABU' .OR. IHARG(1).EQ.'TAB'))THEN
57028        ICASAN='CRTA'
57029        CALL DPCRTA(TEMP,ISEED,ICAPSW,IFORSW,
57030     1              IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
57031        IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
57032      ENDIF
57033C
57034C               ********************************************
57035C               **  TREAT THE POSITIONAL TABULATION CASE  **
57036C               ********************************************
57037C
57038      IF(ICOM.EQ.'POSI' .AND. IHARG(1).EQ.'TABU')THEN
57039        ICASAN='POTA'
57040        CALL DPPOTA(TEMP,XTEMP1,XTEMP2,MAXNXT,
57041     1              ISEED,
57042     1              ICAPSW,IFORSW,
57043     1              IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
57044        IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
57045      ENDIF
57046C
57047CCCCC THE FOLLOWING SECTION WAS ADDED MAY 1988
57048C               **********************************************
57049C               **  TREAT THE EXPERIMENTAL SIMULATION CASE  **
57050C               **  (SYNONYM = RUN)                         **
57051C               **********************************************
57052C
57053      IF(ICOM.EQ.'EXPE' .OR. ICOM.EQ.'RUN')THEN
57054        ICASAN='EXSI'
57055        CALL DPEXSI(ISEED,MAXNXT,ICASAN,
57056     1              IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
57057        IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
57058      ENDIF
57059C
57060CCCCC THE FOLLOWING SECTION WAS ADDED SEPTEMBER 1990
57061C               ******************************************
57062C               **  TREAT THE CAPABILITY ANALYSIS CASE  **
57063C               ******************************************
57064C
57065      IF(ICOM.EQ.'CAPA' .OR. IHARG(1).EQ.'CAPA')GOTO4500
57066      IF(ICOM.EQ.'CP  ' .OR. IHARG(1).EQ.'CP  ')GOTO4500
57067      IF(ICOM.EQ.'CPK ' .OR. IHARG(1).EQ.'CPK ')GOTO4500
57068      GOTO4599
57069C
57070 4500 CONTINUE
57071      ICASAN='CAPA'
57072      CALL DPCAAN(XTEMP1,MAXNXT,
57073     1            ICASAN,ICAPSW,IFORSW,
57074     1            IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
57075      IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
57076C
57077 4599 CONTINUE
57078C
57079C               *******************************************
57080C               **  TREAT THE (YATES) PHD ANALYSIS CASE  **
57081C               *******************************************
57082C
57083CCCCC FEBRUARY 1995.  RENAME PHD TO DEX PHD IN ORDER TO ALLOW
57084CCCCC FUTURE ADDITION OF A MORE GENERAL PHD COMMAND.
57085CCCCC IF(ICOM.EQ.'PHD ')GOTO4600
57086CCCCC SEPTEMBER 2012.  FOLD DEX PHD INTO STANDARD YATES ANALYSIS
57087CCCCC COMMAND.
57088C
57089CCCCC IF(ICOM.EQ.'DEX ')THEN
57090CCCCC   IF(NUMARG.GE.1.AND.IHARG(1).EQ.'PHD ')GOTO4600
57091CCCCC   GOTO4699
57092CCCCC ENDIF
57093CCCCC IF(ICOM.EQ.'PHD ')THEN
57094CCCCC   IF(NUMARG.GE.1.AND.IHARG(1).EQ.'DEX ')GOTO4600
57095CCCCC   GOTO4699
57096CCCCC ENDIF
57097CCCCC GOTO4699
57098C
57099C4600 CONTINUE
57100CCCCC ICASAN='PHD '
57101CCCCC CALL DPPHD(ICASAN,
57102CCCCC1IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
57103CCCCC IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
57104C
57105C4699 CONTINUE
57106C
57107CCCCC THE FOLLOWING SECTION WAS ADDED     MARCH 1994
57108C               ******************************
57109C               **  TREAT THE DDS     CASE  **
57110C               ******************************
57111C
57112      IF(ICOM.EQ.'DDS ')THEN
57113         ICASAN='DDS '
57114         CALL DPDDS(XTEMP1,MAXNXT,
57115     1              ICAPSW,IFORSW,
57116     1              IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
57117         IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
57118      ENDIF
57119C
57120CCCCC THE FOLLOWING SECTION WAS ADDED     MAY 1999
57121C               ******************************
57122C               **  TREAT THE ARMA    CASE  **
57123C               ******************************
57124C
57125      IF(ICOM.EQ.'ARMA'.OR.ICOM.EQ.'ARIM')THEN
57126         ICASAN='ARMA'
57127         IF(NUMARG.GE.1.AND.IHARG(1).EQ.'FIT ')THEN
57128           ISHIFT=1
57129           CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
57130     1                 IBUGA2,IERROR)
57131         ENDIF
57132         IF(NUMARG.GE.1.AND.IHARG(1).EQ.'MODE')THEN
57133           ISHIFT=1
57134           CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
57135     1                 IBUGA2,IERROR)
57136         ENDIF
57137         IF(NUMARG.GE.1.AND.IHARG(1).EQ.'FORE')THEN
57138           ISHIFT=1
57139           CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
57140     1                 IBUGA2,IERROR)
57141           ICASAN='ARFC'
57142         ENDIF
57143         CALL DPARMA(MAXNXT,
57144     1               ISUBRO,IBUGA2,IBUGA3,IBUGQ,IFOUND,IERROR)
57145         IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
57146      ENDIF
57147C
57148CCCCC THE FOLLOWING SECTION WAS ADDED     JULY 1995
57149CCCCC THE FOLLOWING SECTION WAS ACTIVATED SEPTEMBER 1997
57150C               ************************************************
57151C               **  TREAT THE ... RECIPE ANALYSIS CASE        **
57152C               **  RECIPE = REGRESSION CONFIDENCE INTERVALS  **
57153C               **           ON PERCENTILES                   **
57154C               ************************************************
57155C
57156CCCCC ACTIVATE COMMAND   AUGUST 1997
57157      IF(NUMARG.GE.1.AND.ICOM.EQ.'RECI'.AND.IHARG(1).NE.'SIMC')THEN
57158         IF(NUMARG.GE.2.AND.IHARG(1).EQ.'PROB'.AND.IHARG(2).EQ.'PLOT')
57159     1     GOTO4799
57160         IF(NUMARG.GE.2.AND.IHARG(1).EQ.'PPCC'.AND.IHARG(2).EQ.'PLOT')
57161     1     GOTO4799
57162         IF(NUMARG.GE.2.AND.IHARG(1).EQ.'KOLM'.AND.IHARG(2).EQ.'SMIR')
57163     1     GOTO4799
57164         IF(NUMARG.GE.2.AND.IHARG(1).EQ.'CHI '.AND.IHARG(2).EQ.'SQUA')
57165     1     GOTO4799
57166         IF(NUMARG.GE.1.AND.IHARG(1).EQ.'CHI ')
57167     1     GOTO4799
57168         ICASAN='RECI'
57169         CALL DPRECI(ISEED,IBUGA2,IBUGA3,IBUGCO,IBUGEV,IBUGQ,ISUBRO,
57170     1               IFOUND,IERROR)
57171         IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
57172      ENDIF
57173C
57174 4799 CONTINUE
57175C
57176CCCCC THE FOLLOWING SECTION WAS ADDED     SEPTEMBER 1997
57177C               ************************************************
57178C               **  TREAT THE ... SIMCOV ANALYSIS CASE        **
57179C               **  USED PRIOR TO A RECIPE ANALYIS TO         **
57180C               **  DETERMINE IF SATTERTHWAITE APPROXIMATION  **
57181C               **  WILL BE ADEQUATE                          **
57182C               ************************************************
57183C
57184      IF(NUMARG.GE.1.AND.ICOM.EQ.'RECI'.AND.IHARG(1).EQ.'SIMC')THEN
57185        ICOM='SIMC'
57186        ISHIFT=1
57187        CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
57188     1  IBUGA2,IERROR)
57189        ICASAN='SIMC'
57190        CALL SIMCOV(ISEED,IBUGA2,IBUGA3,IBUGCO,IBUGEV,IBUGQ,ISUBRO,
57191     1              IFOUND,IERROR)
57192        IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
57193      ELSEIF(NUMARG.GE.1.AND.ICOM.EQ.'SIMC')THEN
57194         ICASAN='SIMC'
57195         CALL SIMCOV(ISEED,IBUGA2,IBUGA3,IBUGCO,IBUGEV,IBUGQ,ISUBRO,
57196     1               IFOUND,IERROR)
57197         IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
57198      ENDIF
57199C
57200CCCCC THE FOLLOWING SECTION WAS ADDED     MARCH 1999
57201C               ***************************************************
57202C               **  TREAT THE SINGLE SAMPLE ACCEPTANCE PLAN CASE **
57203C               ***************************************************
57204C
57205      IF(ICOM.EQ.'SING')THEN
57206         IF(NUMARG.GE.3.AND.IHARG(1).EQ.'SAMP'.AND.
57207     1      IHARG(2).EQ.'ACCE'.AND.IHARG(3).EQ.'PLAN')THEN
57208            ISHIFT=3
57209            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
57210     1      IBUGA2,IERROR)
57211            IFOUND='YES'
57212         ENDIF
57213         IF(NUMARG.GE.2.AND.IHARG(1).EQ.'SAMP'.AND.
57214     1      IHARG(2).EQ.'ACCE')THEN
57215            ISHIFT=2
57216            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
57217     1      IBUGA2,IERROR)
57218            IFOUND='YES'
57219         ENDIF
57220         IF(NUMARG.GE.2.AND.IHARG(1).EQ.'SAMP'.AND.
57221     1      IHARG(2).EQ.'PLAN')THEN
57222            ISHIFT=2
57223            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
57224     1      IBUGA2,IERROR)
57225            IFOUND='YES'
57226         ENDIF
57227         IF(NUMARG.GE.1.AND.IHARG(1).EQ.'SAMP')THEN
57228            ISHIFT=1
57229            CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
57230     1      IBUGA2,IERROR)
57231            IFOUND='YES'
57232         ENDIF
57233C
57234         ICASAN='SSNC'
57235         IF(IFOUND.EQ.'YES')THEN
57236           CALL DPACSA(MAXNXT,ICASAN,
57237     1                 IBUGA2,IBUGA3,IBUGQ,ISUBRO,IFOUND,IERROR)
57238           IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
57239         ENDIF
57240      ENDIF
57241C
57242C
57243C
57244C               *****************
57245C               **  STEP 90--  **
57246C               **  EXIT       **
57247C               *****************
57248C
57249 9000 CONTINUE
57250C
57251      IERRST=IERROR
57252C
57253C     APRIL 2007.  CHECK FOR FATAL ERROR
57254C
57255      IF(IERROR.EQ.'YES' .OR. IERROR.EQ.'WARN')THEN
57256        CALL DPERRO(IERRFA,IANSLC,IWIDTH,IGUIFL,
57257     1              ISUBN1,ISUBN2,ICASAN,
57258     1              IBUGA2,ISUBRO,IERROR)
57259      ENDIF
57260C
57261      IF(IBUGAN.EQ.'ON' .OR. ISUBRO.EQ.'INAN')THEN
57262        WRITE(ICOUT,999)
57263        CALL DPWRST('XXX','BUG ')
57264        WRITE(ICOUT,9011)
57265 9011   FORMAT('***** AT THE END       OF MAINAN--')
57266        CALL DPWRST('XXX','BUG ')
57267        WRITE(ICOUT,9013)IBUGAN,IBUGA2,IBUGA3
57268 9013   FORMAT('IBUGAN,IBUGA2,IBUGA3 = ',A4,2X,A4,2X,A4)
57269        CALL DPWRST('XXX','BUG ')
57270        WRITE(ICOUT,9015)IBUGCO,IBUGEV,IBUGQ
57271 9015   FORMAT('IBUGCO,IBUGEV,IBUGQ = ',A4,2X,A4,2X,A4)
57272        CALL DPWRST('XXX','BUG ')
57273        WRITE(ICOUT,9016)IFTEXP,IANGLU,ALOWFR
57274 9016   FORMAT('IFTEXP,IANGLU,ALOWFR = ',A4,2X,A4,2X,G15.7)
57275        CALL DPWRST('XXX','BUG ')
57276        WRITE(ICOUT,9018)ICASAN,ISEED,ANOPL1,ANOPL2
57277 9018   FORMAT('ICASAN,ISEED,ANOPL1,ANOPL2 = ',A4,I8,E15.7,E15.7)
57278        CALL DPWRST('XXX','BUG ')
57279        WRITE(ICOUT,9020)IFOUND,IERROR
57280 9020   FORMAT('IFOUND,IERROR = ',A4,2X,A4)
57281        CALL DPWRST('XXX','BUG ')
57282        WRITE(ICOUT,9027)ICOM,ICOM2,NUMARG
57283 9027   FORMAT('ICOM,ICOM2,NUMARG = ',A4,2X,A4,2X,I8)
57284        CALL DPWRST('XXX','BUG ')
57285        DO9030I=1,NUMARG
57286          WRITE(ICOUT,9031)I,IHARG(I),IHARG2(I),IARGT(I),IARG(I),ARG(I)
57287 9031     FORMAT('I,IHARG(I),IHARG2(I),IARGT(I),IARG(I),ARG(I) = ',
57288     1           I8,2X,A4,2X,A4,2X,A4,2X,I8,E15.7)
57289            CALL DPWRST('XXX','BUG ')
57290 9030   CONTINUE
57291      ENDIF
57292C
57293      RETURN
57294      END
57295      SUBROUTINE MAINDG(IBUGDG,IBUGD2,IBUGU2,ISUBRO,
57296     1                  DEFANG,ANGLE,IDEANU,IANGLU,IREPCH,
57297CCCCC                   ADD IMPSW SEPTEMBER 1998.
57298     1                  IMPSW,ICAPSW,
57299     1                  IFOUND,IERROR)
57300C
57301C     PURPOSE--THIS IS SUBROUTING MAINDG.
57302C              (THE   TD    AT THE END OF    MAINDG   STANDS FOR DIAGRAMMATIC
57303C              THIS SUBROUTINE SEARCHES FOR AND EXECUTES DIAGRAMMATIC GRAPHICS C
57304C              THE DIAGRAMMATIC GRAPHICS COMMANDS SEARCHED FOR BY MAINDG ARE AS
57305C
57306C                      COPY                              A NUMBER
57307C                      ERASE                             NO ENTRY
57308C                      RING BELL                         A NUMBER
57309C
57310C                      TEXT                              A STRING OF TEXT
57311C                      FONT                              A FONT NAME
57312C                      CASE                              UPPER OR LOWER
57313C                      HEIGHT                            A NUMBER
57314C                      WIDTH                             A NUMBER
57315C                      HW                                2 NUMBERS
57316C                      JUSTIFICATION                     LEFT, CENTER, OR RIGHT
57317C                      ANGLE                             A NUMBER
57318C                      ANGLE UNITS                       RADIANS, DEGREES, OR GR
57319C                      CRLF (CARRIAGE RETURN/LINE FEED)  ON OR OFF
57320C                      ... MARGIN                        A NUMBER
57321C                      CROSS-HAIR                        0 OR 2 PARAMTER NAMES
57322C
57323C                      MOVE                              2, 4, 6, 8, ... NUMBERS
57324C                      MOVEDATA                          2, 4, 6, 8, ... NUMBERS
57325C                      DRAW                              2, 4, 6, 8, ... NUMBERS
57326C                      DRAWDATA                          2, 4, 6, 8, ... NUMBERS
57327C
57328C                      POINT                             0, 2, 4, 6, ... NUMBERS
57329C                      ARROW                             2, 4, 6, 8, ... NUMBERS
57330C                      BOX                               2, 4, 6, 8, ... NUMBERS
57331C                      TRIANGLE                          4, 6, 8, ...    NUMBERS
57332C                      HEXAGON                           2, 4, 6, 8, ... NUMBERS
57333C                      CIRCLE                            2, 4, 6, 8, ... NUMBERS
57334C                      SEMI-CIRCLE                       2, 4, 6, 8, ... NUMBERS
57335C                      ELLIPSE                           4, 6, 8, ... NUMBERS
57336C                      AMPLIFIER                           2, 4, 6, 8, ... NUMBE
57337C                      DIAMOND                           4, 6, 8, ... NUMBERS
57338C                      OVAL                              4, 6, 8, ... NUMBERS
57339C                      ARC                               4, 6, 8, ... NUMBERS
57340C
57341C                      RESISTOR                       2, 4, ... NUMBERS
57342C                      CAPACITOR                         2, 4, 6, 8, ... NUMBERS
57343C                      GROUND                            2, 4, 6, 8, ... NUMBERS
57344C                      INDUCTOR                          2, 4, 6, 8, ... NUMBERS
57345C
57346C                      AND                               2, 4, 6, 8, ... NUMBERS
57347C                      OR                                2, 4, 6, 8, ... NUMBERS
57348C                      NAND                              2, 4, 6, 8, ... NUMBERS
57349C                      NOR                               2, 4, 6, 8, ... NUMBERS
57350C
57351C     WRITTEN BY--JAMES J. FILLIBEN
57352C                 STATISTICAL ENGINEERING DIVISION
57353C                 INFORMATION TECHNOLOGY LABORATORY
57354C                 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY
57355C                 GAITHERSBURG, MD 20899-8980
57356C                 PHONE--301-975-2855
57357C     NOTE--DATAPLOT IS A REGISTERED TRADEMARK
57358C           OF THE NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY.
57359C     LANGUAGE--ANSI FORTRAN (1977)
57360C     VERSION NUMBER--82.6
57361C     ORIGINAL VERSION--APRIL     1981.
57362C     UPDATED         --MAY       1981.
57363C     UPDATED         --AUGUST    1981.
57364C     UPDATED         --SEPTEMBER 1981.
57365C     UPDATED         --MAY       1982.
57366C     UPDATED         --NOVEMBER  1982.
57367C     UPDATED         --DECEMBER  1988. AVOID POINT & POINCARE PLOT CONFLICT
57368C     UPDATED         --AUGUST    1992. AVOID SYMBOL & SYMBOL PLOT CONFLICT
57369C     UPDATED         --AUGUST    1992. AVOID NAME CONFLICTS WITH BOX
57370C     UPDATED         --OCTOBER   1992. BOX BORDER SETTINGS
57371C     UPDATED         --NOVEMBER  1992. MOVEDATA COMMAND
57372C     UPDATED         --MARCH     1993. ARGUMENTS TO DPBX
57373C     UPDATED         --SEPTEMBER 1993. ALLOW LOWER CASE TEXT
57374C     UPDATED         --FEBRUARY  1994. FIX CAPABILITY CONFLICT
57375C     UPDATED         --MAY       1994. DISCONNECT (TEKT. HARD-) COPY
57376C                                       COMMAND
57377C     UPDATED         --SEPTEMBER 1994. DRAWDATA COMMAND
57378C     UPDATED         --OCTOBER   1995. NAME CONFLICT WITH ANGLIT PROB
57379C                                       PLOT AND ANGLE COMMANDS
57380C     UPDATED         --MARCH     1997. SUPPORT FOR DEVICE FONT (ALAN)
57381C                                       AUGMENT ARGUMENT LIST FOR
57382C                                       MOST COMMANDS
57383C     UPDATED         --JULY      1997. ELLIPSE DATA COMMAND (ALAN)
57384C     UPDATED         --JULY      1997. <COMM> DATA COMMAND (ALAN)
57385C                                       FOR DIAGRAMMATIC GRAPHICS
57386C                                       COMMANDS THAT DRAW FIGURES
57387C     UPDATED         --JULY      1997. POLGON COMMAND (ALAN)
57388C     UPDATED         --JANUARY   1998. NAME CONFLICT WITH SEMI-
57389C                                       CIRCLE AND SEMICIRCULAR
57390C                                       PROB PLOT AND PPCC PLOT
57391C     UPDATED         --AUGUST    1998. DRAW<D/S><D/S><D/S><D/S>
57392C     UPDATED         --AUGUST    1998. MOVE<D/S><D/S>
57393C     UPDATED         --SEPTEMBER 1998. ADD IMPSW TO ARGUMENT LIST
57394C                                       (USED TO SET IMPSW2)
57395C     UPDATED         --SEPTEMBER 1999. ARGUMENT LIST TO DPTEXT
57396C     UPDATED         --SEPTEMBER 2002. ICAPSW
57397C     UPDATED         --APRIL     2007. CHECK "CENSORED" FOR
57398C                                       TRIANGLE COMMAND
57399C     UPDATED         --SEPTEMBER 2007. IERRST
57400C     UPDATED         --JULY      2010. CHECK FOR FATAL ERROR
57401C     UPDATED         --DECEMBER  2018. CALL LIST TO DPTEXT
57402C     UPDATED         --DECEMBER  2018. CALL LIST TO DPTRIA
57403C     UPDATED         --DECEMBER  2018. CALL LIST TO DPAMPL
57404C     UPDATED         --DECEMBER  2018. CALL LIST TO DPAND
57405C     UPDATED         --DECEMBER  2018. CALL LIST TO DPARC
57406C     UPDATED         --DECEMBER  2018. CALL LIST TO DPARRO
57407C     UPDATED         --DECEMBER  2018. CALL LIST TO DPBX
57408C     UPDATED         --DECEMBER  2018. CALL LIST TO DPSCIR
57409C     UPDATED         --DECEMBER  2018. CALL LIST TO DPRESI
57410C     UPDATED         --DECEMBER  2018. CALL LIST TO DPPYRA
57411C     UPDATED         --DECEMBER  2018. CALL LIST TO DPPOIN
57412C     UPDATED         --DECEMBER  2018. CALL LIST TO DPPOLY
57413C     UPDATED         --DECEMBER  2018. CALL LIST TO DPMOVE
57414C     UPDATED         --DECEMBER  2018. CALL LIST TO DPNAND
57415C     UPDATED         --DECEMBER  2018. CALL LIST TO DPNOR
57416C     UPDATED         --DECEMBER  2018. CALL LIST TO DPOR
57417C     UPDATED         --DECEMBER  2018. CALL LIST TO DPOVAL
57418C     UPDATED         --DECEMBER  2018. CALL LIST TO DPCAPA
57419C     UPDATED         --DECEMBER  2018. CALL LIST TO DPCIRC
57420C     UPDATED         --DECEMBER  2018. CALL LIST TO DPCUBE
57421C     UPDATED         --DECEMBER  2018. CALL LIST TO DPDIAM
57422C     UPDATED         --DECEMBER  2018. CALL LIST TO DPELLI
57423C     UPDATED         --DECEMBER  2018. CALL LIST TO DPERAS
57424C     UPDATED         --DECEMBER  2018. CALL LIST TO DPEXIT
57425C     UPDATED         --DECEMBER  2018. CALL LIST TO DPGROU
57426C     UPDATED         --DECEMBER  2018. CALL LIST TO DPHEXA
57427C     UPDATED         --DECEMBER  2018. CALL LIST TO DPINDU
57428C     UPDATED         --DECEMBER  2018. CALL LIST TO DPLATT
57429C
57430C-----CHARACTER STATEMENTS FOR NON-COMMON VARIABLES-------------------
57431C
57432      CHARACTER*4 IMPSW
57433      CHARACTER*4 ICAPSW
57434      CHARACTER*4 IDEANU
57435      CHARACTER*4 IANGLU
57436C
57437      CHARACTER*1 IREPCH
57438C
57439      CHARACTER*4 IBUGDG
57440      CHARACTER*4 IBUGD2
57441      CHARACTER*4 IBUGU2
57442      CHARACTER*4 ISUBRO
57443      CHARACTER*4 IFOUND
57444      CHARACTER*4 IERROR
57445C
57446      CHARACTER*4 IHOLD
57447      CHARACTER*4 ITEXCV
57448      CHARACTER*4 ICASE
57449      CHARACTER*4 ISUBN1
57450      CHARACTER*4 ISUBN2
57451C
57452CCCCC THE FOLLOWING LINE WAS ADDED NOVEMBER 1992
57453CCCCC AND THEN MODIFIED AUGUST 1998.
57454      CHARACTER*4 UNITSW
57455      CHARACTER*4 X1UNIT
57456      CHARACTER*4 X2UNIT
57457      CHARACTER*4 Y1UNIT
57458      CHARACTER*4 Y2UNIT
57459C
57460      DIMENSION PRV(6)
57461      DIMENSION PDIARV(4)
57462      DIMENSION ITEXCV(10)
57463      DIMENSION PTEXRV(5)
57464C
57465C-----COMMON----------------------------------------------------------
57466C
57467      INCLUDE 'DPCOPA.INC'
57468      INCLUDE 'DPCOHK.INC'
57469      INCLUDE 'DPCOPC.INC'
57470      INCLUDE 'DPCODA.INC'
57471      INCLUDE 'DPCOBE.INC'
57472      INCLUDE 'DPCOST.INC'
57473      INCLUDE 'DPCOP2.INC'
57474C
57475C-----START POINT-----------------------------------------------------
57476C
57477      IBUGG4=IBUGU2
57478      ISUBG4=ISUBRO
57479C
57480      PXSTAR=PXEND
57481      PYSTAR=PYEND
57482C
57483CCCCC ADD FOLLOWING LINE SEPTEMBER 1998.
57484      IMPSW2=IMPSW
57485C
57486      IF(IBUGDG.EQ.'ON' .OR. ISUBRO.EQ.'INDG')THEN
57487        WRITE(ICOUT,999)
57488  999   FORMAT(1X)
57489        CALL DPWRST('XXX','BUG ')
57490        WRITE(ICOUT,51)
57491   51   FORMAT('AT THE BEGINNING OF MAINDG--')
57492        CALL DPWRST('XXX','BUG ')
57493        WRITE(ICOUT,53)IBUGDG,IBUGD2,ISUBRO,IDEFAU,ITEXAU
57494   53   FORMAT('IBUGDG,IBUGD2,ISUBRO,IDEFAU,ITEXAU = ',4(A4,2X),A4)
57495        CALL DPWRST('XXX','BUG ')
57496        WRITE(ICOUT,59)PXSTAR,PYSTAR,PXEND,PYEND
57497   59   FORMAT('PXSTAR,PYSTAR,PXEND,PYEND = ',4G15.7)
57498        CALL DPWRST('XXX','BUG ')
57499        WRITE(ICOUT,60)DEFANG,ANGLE,IDEANU,IANGLU,IDMANU(1)
57500   60   FORMAT('DEFANG,ANGLE,IDEANU,IANGLU,IDMANU(1) = ',
57501     1         2G15.7,2(2X,A4),2X,A4)
57502        CALL DPWRST('XXX','BUG ')
57503        WRITE(ICOUT,65)IREPCH,IFOUND,IERROR,ICOM,ICOM2,NUMARG
57504   65   FORMAT('IREPCH,IFOUND,IERROR,ICOM,ICOM2,NUMARG = ',5(A4,2X),I8)
57505        CALL DPWRST('XXX','BUG ')
57506        DO70I=1,NUMARG
57507          WRITE(ICOUT,71)I,IHARG(I),IHARG2(I),IARGT(I),IARG(I),ARG(I)
57508   71     FORMAT('I,IHARG(I),IHARG2(I),IARGT(I),IARG(I),ARG(I) = ',
57509     1           I8,3(2X,A4),2X,I8,G15.7)
57510          CALL DPWRST('XXX','BUG ')
57511   70   CONTINUE
57512      ENDIF
57513C
57514      IFOUND='NO'
57515      IERROR='NO'
57516C
57517C               ***************************
57518C               **  TREAT THE COPY CASE  **
57519C               ***************************
57520C
57521CCCCC THE FOLLOWING SECTION WAS COMMENTED OUT      MAY 1994.
57522CCCCC IN DEFERENCE TO THE COPY FILE COMMAND        MAY 1994
57523CCCCC IF(ICOM.EQ.'COPY')GOTO100
57524CCCCC IF(ICOM.EQ.'MAKE')GOTO100
57525CCCCC GOTO199
57526C
57527CC100 CONTINUE
57528CCCCC CALL DPCOPY(IHARG,IARGT,IARG,NUMARG,
57529CCCCC1NUMDEV,
57530CCCCC1IDMANU,IDMODE,IDMOD2,IDMOD3,
57531CCCCC1IDPOWE,IDCONT,IDCOLO,IDNVPP,IDNHPP,IDUNIT,
57532CCCCC ADD FOLLOWING LINE MARCH 1997.
57533CCCCC1IDFONT,
57534CCCCC1IBUGD2,ISUBRO,IFOUND,IERROR)
57535CCCCC IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
57536C
57537CC199 CONTINUE
57538C
57539C               *******************************
57540C               **  TREAT THE ERASE CASE     **
57541C               **  TREAT THE PAGE CASE      **
57542C               **  TREAT THE NEW PAGE CASE  **
57543C               *******************************
57544C
57545      IF(ICOM.EQ.'ERAS')GOTO200
57546      IF(ICOM.EQ.'PAGE' .AND. IHARG(1).NE.'TEST')GOTO200
57547      IF(ICOM.EQ.'NEW')GOTO200
57548      GOTO299
57549C
57550  200 CONTINUE
57551      ICASE='ERAS'
57552      CALL DPERAS(IHARG,IARGT,IARG,NUMARG,
57553     1            IBACCO,IGRASW,IDIASW,
57554     1            PGRAXF,PGRAYF,PDIAXC,PDIAYC,PDIAX2,PDIAY2,
57555     1            PDIAHE,PDIAWI,PDIAVG,PDIAHG,
57556     1            NUMDEV,IDMANU,IDMODE,IDMOD2,IDMOD3,
57557     1            IDPOWE,IDCONT,IDCOLO,IDNVPP,IDNHPP,IDUNIT,
57558     1            IDNVOF,IDNHOF,IDFONT,PDSCAL,
57559     1            ICAPSW,IBUGD2,ISUBRO,IFOUND,IERROR)
57560      IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
57561C
57562  299 CONTINUE
57563C
57564C               ********************************
57565C               **  TREAT THE RING BELL CASE  **
57566C               ********************************
57567C
57568      IF(ICOM.EQ.'RING')THEN
57569        ICASE='BELL'
57570        CALL DPRING(IHARG,IARGT,IARG,NUMARG,
57571     1              NUMDEV,
57572     1              IDMANU,IDMODE,IDMOD2,IDMOD3,
57573     1              IDPOWE,IDCONT,IDCOLO,IDNVPP,IDNHPP,IDUNIT,
57574     1              IDFONT,
57575     1              IBUGD2,ISUBRO,IFOUND,IERROR)
57576        IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
57577      ENDIF
57578C
57579C               ***************************
57580C               **  TREAT THE TEXT CASE  **
57581C               ***************************
57582C
57583CCCCC MODIFIED TO SUPPORT "ELLIPSE DATA" OPTION.  JULY 1997.
57584      IF(ICOM.EQ.'TEXT')GOTO1100
57585      GOTO1199
57586C
57587 1100 CONTINUE
57588      ICASE='TEXT'
57589      PRV(1)=PGRAXF
57590      PRV(2)=PGRAYF
57591      PRV(3)=PDIAXC
57592      PRV(4)=PDIAYC
57593      PRV(5)=PDIAX2
57594      PRV(6)=PDIAY2
57595C
57596      PDIARV(1)=PDIAHE
57597      PDIARV(2)=PDIAWI
57598      PDIARV(3)=PDIAVG
57599      PDIARV(4)=PDIAHG
57600C
57601      ITEXCV(1)=ITEXFO
57602      ITEXCV(2)=ITEXCA
57603      ITEXCV(3)=ITEXJU
57604      ITEXCV(4)=ITEXDI
57605      ITEXCV(5)=ITEXCR
57606      ITEXCV(6)=ITEXLF
57607      ITEXCV(7)=ITEXSY
57608      ITEXCV(8)=ITEXSP
57609      ITEXCV(9)=ITEXFI
57610      ITEXCV(10)=ITEXCO
57611C
57612      PTEXRV(1)=PTEXHE
57613      PTEXRV(2)=PTEXWI
57614      PTEXRV(3)=PTEXVG
57615      PTEXRV(4)=PTEXHG
57616      PTEXRV(5)=PTEXTH
57617C
57618      CALL DPTEXT(IANS,IANSLC,IWIDTH,
57619     1            ITEXTE,NCTEX,
57620     1            PXSTAR,PYSTAR,PXEND,PYEND,
57621     1            IGRASW,IDIASW,PRV,PDIARV,
57622     1            ILINPA,ILINCO,PLINTH,
57623     1            ATEXBA,ITEBLI,ITEBCO,PTEBTH,
57624     1            ITEFSW,ITEFCO,
57625     1            ITEPTY,ITEPLI,ITEPCO,PTEPTH,PTEPSP,
57626     1            PTEXMR,ITEXCV,ATEXAN,PTEXRV,
57627     1            IHNAME,IHNAM2,IUSE,IVALUE,VALUE,NUMNAM,
57628     1            IVSTAR,IVSTOP,IFUNC,NUMCHF,IREPCH,
57629     1            NUMDEV,IDMANU,IDMODE,IDMOD2,IDMOD3,
57630     1            IDPOWE,IDCONT,IDCOLO,IDNVPP,IDNHPP,IDUNIT,
57631     1            IDNVOF,IDNHOF,IDFONT,PDSCAL,
57632     1            IMPSW2,AMPSCH,AMPSCW,
57633     1            IBUGD2,IFOUND,IERROR)
57634      IF(ITEXCR.EQ.'ON')PXSTOP=PTEXMR
57635      IF(ITEXLF.EQ.'ON')PYSTOP=PYSTAR-PTEXHE-PTEXVG
57636      IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
57637C
57638 1199 CONTINUE
57639C
57640C               ***************************
57641C               **  TREAT THE FONT CASE  **
57642C               ***************************
57643C
57644      IF(ICOM.EQ.'FONT')GOTO1200
57645      GOTO1299
57646C
57647 1200 CONTINUE
57648      ICASE='FONT'
57649      CALL DPFONT(IHARG,NUMARG,
57650     1IDEFFO,
57651     1ITEXFO,
57652     1IBUGD2,ISUBRO,IFOUND,IERROR)
57653      IF(IFOUND.EQ.'YES'.AND.IERROR.EQ.'NO')GOTO1250
57654      GOTO1259
57655 1250 CONTINUE
57656      IX1ZFO=ITEXFO
57657      IX2ZFO=ITEXFO
57658      IY1ZFO=ITEXFO
57659      IY2ZFO=ITEXFO
57660      ITITFO=ITEXFO
57661      IX1LFO=ITEXFO
57662      IX2LFO=ITEXFO
57663      IX3LFO=ITEXFO
57664      IY1LFO=ITEXFO
57665      IY2LFO=ITEXFO
57666      DO1251I=1,MAXLEG
57667      ILEGFO(I)=ITEXFO
57668 1251 CONTINUE
57669      DO1252I=1,MAXCHA
57670      ICHAFO(I)=ITEXFO
57671 1252 CONTINUE
57672 1259 CONTINUE
57673      IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
57674C
57675 1299 CONTINUE
57676C
57677C               ************************************************
57678C               **  TREAT THE CASE (UPPER VERSUS LOWER) CASE  **
57679C               ************************************************
57680C
57681      IF(ICOM.EQ.'CASE')THEN
57682        ICASE='CASE'
57683        CALL DPCASE(ICOM,IHARG,NUMARG,
57684     1              IDEFCA,
57685     1              ITEXCA,
57686     1              IBUGD2,ISUBRO,IFOUND,IERROR)
57687        IF(IFOUND.EQ.'YES'.AND.IERROR.EQ.'NO')GOTO1350
57688        GOTO1359
57689 1350   CONTINUE
57690        DO1351I=1,MAXLEG
57691          ILEGCA(I)=ITEXCA
57692 1351   CONTINUE
57693        DO1352I=1,MAXCHA
57694          ICHACA(I)=ITEXCA
57695 1352   CONTINUE
57696 1359   CONTINUE
57697        IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
57698      ENDIF
57699C
57700C               ***************************************************
57701C               **  TREAT THE DIRECTION (HORIZONTAL OR VERTICAL  **
57702C               ***************************************************
57703C
57704      IF(ICOM.EQ.'DIRE' .OR. ICOM.EQ.'HORI' .OR.
57705     1   (ICOM.EQ.'VERT' .AND. IHARG(1).NE.'SPAC'))THEN
57706        ICASE='DIRE'
57707        CALL DPDIRE(ICOM,IHARG,NUMARG,
57708     1              IDEFDI,
57709     1              ITEXDI,
57710     1              IBUGD2,ISUBRO,IFOUND,IERROR)
57711        IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
57712      ENDIF
57713C
57714C               *****************************
57715C               **  TREAT THE HEIGHT CASE  **
57716C               *****************************
57717C
57718      IF(ICOM.EQ.'HEIG')THEN
57719        ICASE='HEIG'
57720        CALL DPHEIG(IHARG,IARGT,ARG,NUMARG,
57721     1              PDEFHE,
57722     1              PTEXHE,
57723     1              IBUGD2,ISUBRO,IFOUND,IERROR)
57724        IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
57725      ENDIF
57726C
57727C               ****************************
57728C               **  TREAT THE WIDTH CASE  **
57729C               ****************************
57730C
57731      IF(ICOM.EQ.'WIDT')THEN
57732        ICASE='WIDT'
57733        CALL DPWIDT(IHARG,IARGT,ARG,NUMARG,
57734     1              PDEFWI,
57735     1              PTEXWI,
57736     1              IBUGD2,ISUBRO,IFOUND,IERROR)
57737        IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
57738      ENDIF
57739C
57740C               *****************************************************
57741C               **  TREAT THE HW (THAT IS, HEIGHT AND WIDTH) CASE  **
57742C               *****************************************************
57743C
57744      IF(ICOM.EQ.'HW' .OR. ICOM.EQ.'WH')THEN
57745        ICASE='HW'
57746        CALL DPHW(ICOM,IHARG,IARGT,ARG,NUMARG,
57747     1            PDEFHE,PDEFWI,
57748     1            PTEXHE,PTEXWI,
57749     1            IBUGD2,ISUBRO,IFOUND,IERROR)
57750        IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
57751      ENDIF
57752C
57753C               ************************************
57754C               **  TREAT THE JUSTIFICATION CASE  **
57755C               ************************************
57756C
57757      IF(ICOM.EQ.'JUST')THEN
57758        ICASE='JUST'
57759        CALL DPJUST(ICOM,IHARG,NUMARG,
57760     1              IDEFJU,
57761     1              ITEXJU,
57762     1              IBUGD2,ISUBRO,IFOUND,IERROR)
57763        IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
57764      ENDIF
57765C
57766C               *****************************
57767C               **  TREAT THE MARGIN CASE  **
57768C               *****************************
57769C
57770      IF(ICOM.EQ.'MARG'.AND.IHARG(1).EQ.'COLO')GOTO9000
57771      IF(ICOM.EQ.'MARG'.AND.IHARG(1).EQ.'COOR')GOTO1800
57772      IF(ICOM.EQ.'MARG')GOTO1800
57773      GOTO1899
57774C
57775 1800 CONTINUE
57776      ICASE='MARG'
57777      CALL DPMARG(IHARG,IARGT,ARG,NUMARG,
57778     1PDEFMR,
57779     1PTEXMR,
57780     1IBUGD2,ISUBRO,IFOUND,IERROR)
57781      IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
57782C
57783 1899 CONTINUE
57784C
57785C               ************************************************
57786C               **  TREAT THE CARRIAGE RETURN/LINE FEED CASE  **
57787C               ************************************************
57788C
57789      IF(ICOM.EQ.'CRLF' .OR. ICOM.EQ.'LFCR')THEN
57790        ICASE='MOVE'
57791        CALL DPCRLF(IHARG,NUMARG,
57792     1              IDEFCR,IDEFLF,
57793     1              ITEXCR,ITEXLF,
57794     1              IBUGD2,ISUBRO,IFOUND,IERROR)
57795        IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
57796      ENDIF
57797C
57798C               ***************************
57799C               **  TREAT THE MOVE CASE  **
57800C               ***************************
57801C
57802CCCCC MODIFIED TO SUPPORT "MOVE DATA" OPTION.  JULY 1997.
57803      IF(ICOM.EQ.'MOVE')THEN
57804        ICASE='MOVE'
57805        X1UNIT='SCRE'
57806        Y1UNIT='SCRE'
57807        IF(ICOM2(1:1).EQ.'D')X1UNIT='DATA'
57808        IF(ICOM2(2:2).EQ.'D')Y1UNIT='DATA'
57809        IF(ICOM2.EQ.'DATA')THEN
57810          X1UNIT='DATA'
57811          Y1UNIT='DATA'
57812        ENDIF
57813        IF(IHARG(1).EQ.'DATA')THEN
57814          X1UNIT='DATA'
57815          Y1UNIT='DATA'
57816          ISHIFT=1
57817          CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
57818     1                IBUGD2,IERROR)
57819        ENDIF
57820        CALL DPMOVE(IHARG,IARGT,ARG,NUMARG,
57821     1              PXSTAR,PYSTAR,PXEND,PYEND,
57822     1              ILINPA,ILINCO,PLINTH,
57823     1              AREGBA,IREBLI,IREBCO,PREBTH,
57824     1              IREFSW,IREFCO,
57825     1              IREPTY,IREPLI,IREPCO,PREPTH,PREPSP,
57826     1              PTEXHE,PTEXWI,PTEXVG,PTEXHG,
57827     1              IGRASW,IDIASW,
57828     1              PGRAXF,PGRAYF,PDIAXC,PDIAYC,PDIAX2,PDIAY2,
57829     1              PDIAHE,PDIAWI,PDIAVG,PDIAHG,
57830     1              NUMDEV,IDMANU,IDMODE,IDMOD2,IDMOD3,
57831     1              IDPOWE,IDCONT,IDCOLO,IDNVPP,IDNHPP,IDUNIT,
57832     1              IDNVOF,IDNHOF,IDFONT,PDSCAL,
57833     1              X1UNIT,Y1UNIT,
57834     1              IBUGD2,IFOUND,IERROR)
57835        IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
57836      ENDIF
57837C
57838C               ***************************
57839C               **  TREAT THE DRAW CASE  **
57840C               ***************************
57841C
57842CCCCC MODIFIED TO SUPPORT "DRAW  DATA" OPTION.  JULY 1997.
57843CCCCC MODIFIED TO SUPPORT "DRAWDDDD, DRAWDDDS, ETC. OPTIONS.  JULY 1998
57844      IF(ICOM.EQ.'DRAW')THEN
57845        X1UNIT='SCRE'
57846        X2UNIT='SCRE'
57847        Y1UNIT='SCRE'
57848        Y2UNIT='SCRE'
57849        IF(ICOM2(1:1).EQ.'D')X1UNIT='DATA'
57850        IF(ICOM2(2:2).EQ.'D')Y1UNIT='DATA'
57851        IF(ICOM2(3:3).EQ.'D')X2UNIT='DATA'
57852        IF(ICOM2(4:4).EQ.'D')Y2UNIT='DATA'
57853        IF(ICOM2.EQ.'DATA')THEN
57854          X1UNIT='DATA'
57855          X2UNIT='DATA'
57856          Y1UNIT='DATA'
57857          Y2UNIT='DATA'
57858        ENDIF
57859        IF(IHARG(1).EQ.'DATA')THEN
57860          X1UNIT='DATA'
57861          X2UNIT='DATA'
57862          Y1UNIT='DATA'
57863          Y2UNIT='DATA'
57864          ISHIFT=1
57865          CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
57866     1                IBUGD2,IERROR)
57867        ENDIF
57868        ICASE='DRAW'
57869        CALL DPDRAW(PXSTAR,PYSTAR,PXEND,PYEND,
57870     1              ILINPA,ILINCO,PLINTH,
57871     1              AREGBA,IREBLI,IREBCO,PREBTH,
57872     1              IREFSW,IREFCO,
57873     1              IREPTY,IREPLI,IREPCO,PREPTH,PREPSP,
57874     1              PTEXHE,PTEXWI,PTEXVG,PTEXHG,
57875     1              ICHAPA,ICHAFO,ICHACA,ICHAJU,ICHADI,ICHAFI,
57876     1              ICHACO,
57877     1              PCHAHE,PCHAWI,PCHAVG,PCHAHG,PCHATH,ACHAAN,
57878     1              IGRASW,
57879     1              PGRAXF,PGRAYF,PDIAXC,PDIAYC,PDIAX2,PDIAY2,
57880     1              PDIAHE,PDIAWI,PDIAVG,PDIAHG,
57881     1              NUMDEV,IDMANU,IDMODE,IDMOD2,IDMOD3,
57882     1              IDPOWE,IDCONT,IDCOLO,IDNVPP,IDNHPP,IDUNIT,
57883     1              IDNVOF,IDNHOF,IDFONT,PDSCAL,
57884     1              X1UNIT,Y1UNIT,X2UNIT,Y2UNIT,
57885     1              IMPSW2,AMPSCH,AMPSCW,ITEXSP,ITEXSY,
57886     1              IBUGD2,IFOUND,IERROR)
57887        IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
57888      ENDIF
57889C
57890C               ****************************
57891C               **  TREAT THE POINT CASE  **
57892C               ****************************
57893C
57894CCCCC THE FOLLOWING LINE WAS COMMENTED OUT     (DECEMBER 1988)
57895CCCCC AND REPLACED BY THE SUCCEEDING 2 LINES   (DECEMBER 1988)
57896CCCCC TO AVOID CONFLICT BETWEEN POINT COMMAND  (DECEMBER 1988)
57897CCCCC AND POINCARE PLOT COMMAND                (DECEMBER 1988)
57898CCCCC MODIFIED TO SUPPORT "POINT DATA" OPTION.  JULY 1997.
57899CCCCC IF(ICOM.EQ.'POIN')GOTO2200         DECEMBER 1988
57900      IF(ICOM.EQ.'POIN'.AND.NUMARG.GE.1.AND.
57901     1   IHARG(1).NE.'PLOT')THEN
57902        ICASE='POIN'
57903        UNITSW='SCRE'
57904        IF(IHARG(1).EQ.'DATA')THEN
57905          UNITSW='DATA'
57906          ISHIFT=1
57907          CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
57908     1                IBUGD2,IERROR)
57909        ENDIF
57910      CALL DPPOIN(IHARG,IARGT,ARG,NUMARG,
57911     1            PXSTAR,PYSTAR,PXEND,PYEND,
57912     1            ILINPA,ILINCO,PLINTH,
57913     1            AREGBA,IREBLI,IREBCO,PREBTH,
57914     1            IREFSW,IREFCO,
57915     1            IREPTY,IREPLI,IREPCO,PREPTH,PREPSP,
57916     1            PTEXHE,PTEXWI,PTEXVG,PTEXHG,
57917     1            IGRASW,IDIASW,
57918     1            PGRAXF,PGRAYF,PDIAXC,PDIAYC,PDIAX2,PDIAY2,
57919     1            PDIAHE,PDIAWI,PDIAVG,PDIAHG,
57920     1            NUMDEV,IDMANU,IDMODE,IDMOD2,IDMOD3,
57921     1            IDPOWE,IDCONT,IDCOLO,IDNVPP,IDNHPP,IDUNIT,
57922     1            IDNVOF,IDNHOF,IDFONT,UNITSW,PDSCAL,
57923     1            IBUGD2,IFOUND,IERROR)
57924        IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
57925      ENDIF
57926C
57927C               ****************************
57928C               **  TREAT THE ARROW CASE  **
57929C               ****************************
57930C
57931CCCCC MODIFIED TO SUPPORT "ARROW DATA" OPTION.  JULY 1997.
57932      IF(ICOM.EQ.'ARRO')THEN
57933        ICASE='ARRO'
57934        UNITSW='SCRE'
57935        IF(IHARG(1).EQ.'DATA')THEN
57936          UNITSW='DATA'
57937          ISHIFT=1
57938          CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
57939     1                IBUGD2,IERROR)
57940        ENDIF
57941        CALL DPARRO(IHARG,IARGT,ARG,NUMARG,
57942     1              PXSTAR,PYSTAR,PXEND,PYEND,
57943     1              IARRPA,IARRCO,PARRTH,
57944     1              AREGBA,IREBLI,IREBCO,PREBTH,
57945     1              IREFSW,IREFCO,
57946     1              IREPTY,IREPLI,IREPCO,PREPTH,PREPSP,
57947     1              PTEXHE,PTEXWI,PTEXVG,PTEXHG,
57948     1              IGRASW,IDIASW,
57949     1              PGRAXF,PGRAYF,PDIAXC,PDIAYC,PDIAX2,PDIAY2,
57950     1              PDIAHE,PDIAWI,PDIAVG,PDIAHG,
57951     1              NUMDEV,IDMANU,IDMODE,IDMOD2,IDMOD3,
57952     1              IDPOWE,IDCONT,IDCOLO,IDNVPP,IDNHPP,IDUNIT,
57953     1              IDNVOF,IDNHOF,IDFONT,UNITSW,PDSCAL,
57954     1              IBUGD2,IFOUND,IERROR)
57955        IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
57956      ENDIF
57957C
57958C               **************************
57959C               **  TREAT THE BOX CASE  **
57960C               **************************
57961C
57962CCCCC AUGUST 1992.  CHECK FOR NAME CONFLICTS
57963CCCCC MODIFIED TO SUPPORT "BOX DATA" OPTION.  JULY 1997.
57964CCCCC IF(ICOM.EQ.'BOX'.AND.NUMARG.GE.1.AND.
57965CCCCC1IHARG(1).NE.'PLOT'.AND.IHARG(1).NE.'COX')GOTO2500
57966      IF(NUMARG.GE.1.AND.
57967     1IHARG(1).EQ.'PLOT'.OR.IHARG(1).EQ.'COX'.OR.
57968     1IHARG(1).EQ.'PATT'.OR.IHARG(1).EQ.'THIC'.OR.
57969     1IHARG(1).EQ.'SHAD'.OR.
57970     1IHARG(1).EQ.'COLO'.OR.IHARG(1).EQ.'FILL')
57971     1GOTO2599
57972      IF(NUMARG.GE.2.AND.
57973     1IHARG(2).EQ.'PATT'.OR.IHARG(2).EQ.'THIC'.OR.
57974     1IHARG(2).EQ.'SHAD'.OR.
57975     1IHARG(2).EQ.'COLO'.OR.IHARG(2).EQ.'FILL')
57976     1GOTO2599
57977      IF(ICOM.EQ.'BOX')GOTO2500
57978      GOTO2599
57979C
57980 2500 CONTINUE
57981      UNITSW='SCRE'
57982      IF(IHARG(1).EQ.'DATA')THEN
57983        UNITSW='DATA'
57984        ISHIFT=1
57985        CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
57986     1              IBUGD2,IERROR)
57987      ENDIF
57988      ICASE='BOX'
57989      CALL DPBX(IHARG,IARGT,ARG,NUMARG,
57990     1          PXSTAR,PYSTAR,PXEND,PYEND,
57991     1          IBOBPA,IBOBCO,PBOPTH,
57992     1          AREGBA,IREBLI,IREBCO,PREBTH,
57993     1          IBOFPA,IBOFCO,
57994     1          IBOFPA,IBOPPA,IBOFCO,PBOFTH,PBOPGA,
57995     1          PBOSHE,PBOSWI,
57996     1          PTEXHE,PTEXWI,PTEXVG,PTEXHG,
57997     1          IGRASW,IDIASW,
57998     1          PGRAXF,PGRAYF,PDIAXC,PDIAYC,PDIAX2,PDIAY2,
57999     1          PDIAHE,PDIAWI,PDIAVG,PDIAHG,
58000     1          NUMDEV,IDMANU,IDMODE,IDMOD2,IDMOD3,
58001     1          IDPOWE,IDCONT,IDCOLO,IDNVPP,IDNHPP,IDUNIT,
58002     1          IDNVOF,IDNHOF,IDFONT,UNITSW,PDSCAL,
58003     1          IBUGD2,IFOUND,IERROR)
58004 2599 CONTINUE
58005C
58006C
58007C               ******************************
58008C               **  TREAT THE HEXAGON CASE  **
58009C               ******************************
58010C
58011CCCCC MODIFIED TO SUPPORT "HEXAGON DATA" OPTION.  JULY 1997.
58012      IF(ICOM.EQ.'HEXA')THEN
58013        ICASE='HEXA'
58014        UNITSW='SCRE'
58015        IF(IHARG(1).EQ.'DATA')THEN
58016          UNITSW='DATA'
58017          ISHIFT=1
58018          CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
58019     1                IBUGD2,IERROR)
58020        ENDIF
58021      CALL DPHEXA(IHARG,IARGT,ARG,NUMARG,
58022     1            PXSTAR,PYSTAR,PXEND,PYEND,
58023     1            ILINPA,ILINCO,PLINTH,
58024     1            AREGBA,IREBLI,IREBCO,PREBTH,
58025     1            IREFSW,IREFCO,
58026     1            IREPTY,IREPLI,IREPCO,PREPTH,PREPSP,
58027     1            PTEXHE,PTEXWI,PTEXVG,PTEXHG,
58028     1            IGRASW,IDIASW,
58029     1            PGRAXF,PGRAYF,PDIAXC,PDIAYC,PDIAX2,PDIAY2,
58030     1            PDIAHE,PDIAWI,PDIAVG,PDIAHG,
58031     1            NUMDEV,IDMANU,IDMODE,IDMOD2,IDMOD3,
58032     1            IDPOWE,IDCONT,IDCOLO,IDNVPP,IDNHPP,IDUNIT,
58033     1            IDNVOF,IDNHOF,IDFONT,UNITSW,PDSCAL,
58034     1            IBUGD2,IFOUND,IERROR)
58035        IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
58036      ENDIF
58037C
58038C               *****************************
58039C               **  TREAT THE CIRCLE CASE  **
58040C               *****************************
58041C
58042CCCCC MODIFIED TO SUPPORT "DATA" OPTION.  JULY 1997.
58043      IF(ICOM.EQ.'CIRC')THEN
58044        ICASE='CIRC'
58045        UNITSW='SCRE'
58046        IF(IHARG(1).EQ.'DATA')THEN
58047          UNITSW='DATA'
58048          ISHIFT=1
58049          CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
58050     1                IBUGD2,IERROR)
58051        ENDIF
58052        CALL DPCIRC(IHARG,IARGT,ARG,NUMARG,
58053     1              PXSTAR,PYSTAR,PXEND,PYEND,
58054     1              ILINPA,ILINCO,PLINTH,
58055     1              AREGBA,IREBLI,IREBCO,PREBTH,
58056     1              IREFSW,IREFCO,
58057     1              IREPTY,IREPLI,IREPCO,PREPTH,PREPSP,
58058     1              PTEXHE,PTEXWI,PTEXVG,PTEXHG,
58059     1              IGRASW,IDIASW,
58060     1              PGRAXF,PGRAYF,PDIAXC,PDIAYC,PDIAX2,PDIAY2,
58061     1              PDIAHE,PDIAWI,PDIAVG,PDIAHG,
58062     1              NUMDEV,IDMANU,IDMODE,IDMOD2,IDMOD3,
58063     1              IDPOWE,IDCONT,IDCOLO,IDNVPP,IDNHPP,IDUNIT,
58064     1              IDNVOF,IDNHOF,IDFONT,UNITSW,PDSCAL,
58065     1              IBUGD2,IFOUND,IERROR)
58066        IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
58067      ENDIF
58068C
58069C               **********************************
58070C               **  TREAT THE SEMI-CIRCLE CASE  **
58071C               **********************************
58072C
58073CCCCC MODIFIED TO SUPPORT "SEMI-CIRCLE DATA" OPTION.  JULY 1997.
58074      IF(ICOM.EQ.'SEMI')GOTO2800
58075      GOTO2899
58076C
58077 2800 CONTINUE
58078      IF(NUMARG.GE.1.AND.IHARG(1).EQ.'PROB')GOTO2899
58079      IF(NUMARG.GE.1.AND.IHARG(1).EQ.'PPCC')GOTO2899
58080      IF(NUMARG.GE.2.AND.IHARG(2).EQ.'PROB')GOTO2899
58081      IF(NUMARG.GE.2.AND.IHARG(2).EQ.'PPCC')GOTO2899
58082      IF(NUMARG.GE.1.AND.IHARG(1).EQ.'KOLM')GOTO2899
58083      IF(NUMARG.GE.2.AND.IHARG(2).EQ.'KOLM')GOTO2899
58084      IF(NUMARG.GE.1.AND.IHARG(1).EQ.'CHI ')GOTO2899
58085      IF(NUMARG.GE.2.AND.IHARG(2).EQ.'CHI ')GOTO2899
58086      IF(NUMARG.GE.1.AND.IHARG(1).EQ.'CHIS')GOTO2899
58087      IF(NUMARG.GE.2.AND.IHARG(2).EQ.'CHIS')GOTO2899
58088      IF(NUMARG.GE.1.AND.IHARG(1).EQ.'TIQ ')GOTO2899
58089      IF(NUMARG.GE.2.AND.IHARG(2).EQ.'TIQ ')GOTO2899
58090      IF(NUMARG.GE.3.AND.IHARG(1).EQ.'TRUN'.AND.
58091     1   IHARG(2).EQ.'INFO'.AND.IHARG(3).EQ.'QUAN')GOTO2899
58092      IF(NUMARG.GE.4.AND.IHARG(2).EQ.'TRUN'.AND.
58093     1   IHARG(3).EQ.'INFO'.AND.IHARG(4).EQ.'QUAN')GOTO2899
58094      UNITSW='SCRE'
58095      IF(IHARG(1).EQ.'DATA')THEN
58096        UNITSW='DATA'
58097        ISHIFT=1
58098        CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
58099     1              IBUGD2,IERROR)
58100      ENDIF
58101      ICASE='SEMC'
58102      CALL DPSCIR(IHARG,IARGT,ARG,NUMARG,
58103     1            PXSTAR,PYSTAR,PXEND,PYEND,
58104     1            ILINPA,ILINCO,PLINTH,
58105     1            AREGBA,IREBLI,IREBCO,PREBTH,
58106     1            IREFSW,IREFCO,
58107     1            IREPTY,IREPLI,IREPCO,PREPTH,PREPSP,
58108     1            PTEXHE,PTEXWI,PTEXVG,PTEXHG,
58109     1            IGRASW,IDIASW,
58110     1            PGRAXF,PGRAYF,PDIAXC,PDIAYC,PDIAX2,PDIAY2,
58111     1            PDIAHE,PDIAWI,PDIAVG,PDIAHG,
58112     1            NUMDEV,IDMANU,IDMODE,IDMOD2,IDMOD3,
58113     1            IDPOWE,IDCONT,IDCOLO,IDNVPP,IDNHPP,IDUNIT,
58114     1            IDNVOF,IDNHOF,IDFONT,UNITSW,PDSCAL,
58115     1            IBUGD2,IFOUND,IERROR)
58116      IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
58117C
58118 2899 CONTINUE
58119C
58120C               ******************************
58121C               **  TREAT THE ELLIPSE CASE  **
58122C               ******************************
58123C
58124CCCCC MODIFIED TO SUPPORT "ELLIPSE DATA" OPTION.  JULY 1997.
58125C
58126      IF(ICOM.EQ.'ELLI')THEN
58127        ICASE='ELLI'
58128        UNITSW='SCRE'
58129        IF(IHARG(1).EQ.'DATA')THEN
58130          UNITSW='DATA'
58131          ISHIFT=1
58132          CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
58133     1                IBUGD2,IERROR)
58134        ENDIF
58135        CALL DPELLI(IHARG,IARGT,ARG,NUMARG,
58136     1              PXSTAR,PYSTAR,PXEND,PYEND,
58137     1              ILINPA,ILINCO,PLINTH,
58138     1              AREGBA,IREBLI,IREBCO,PREBTH,
58139     1              IREFSW,IREFCO,
58140     1              IREPTY,IREPLI,IREPCO,PREPTH,PREPSP,
58141     1              PTEXHE,PTEXWI,PTEXVG,PTEXHG,
58142     1              IGRASW,IDIASW,
58143     1              PGRAXF,PGRAYF,PDIAXC,PDIAYC,PDIAX2,PDIAY2,
58144     1              PDIAHE,PDIAWI,PDIAVG,PDIAHG,
58145     1              NUMDEV,IDMANU,IDMODE,IDMOD2,IDMOD3,
58146     1              IDPOWE,IDCONT,IDCOLO,IDNVPP,IDNHPP,IDUNIT,
58147     1              IDNVOF,IDNHOF,IDFONT,UNITSW,PDSCAL,
58148     1              IBUGD2,IFOUND,IERROR)
58149        IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
58150      ENDIF
58151C
58152C               *******************************
58153C               **  TREAT THE RESISTOR CASE  **
58154C               *******************************
58155C
58156CCCCC MODIFIED TO SUPPORT "RESISTOR DATA" OPTION.  JULY 1997.
58157      IF(ICOM.EQ.'RESI')THEN
58158        ICASE='RESI'
58159        UNITSW='SCRE'
58160        IF(IHARG(1).EQ.'DATA')THEN
58161          UNITSW='DATA'
58162          ISHIFT=1
58163          CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
58164     1                IBUGD2,IERROR)
58165        ENDIF
58166        CALL DPRESI(IHARG,IARGT,ARG,NUMARG,
58167     1              PXSTAR,PYSTAR,PXEND,PYEND,
58168     1              ILINPA,ILINCO,PLINTH,
58169     1              AREGBA,IREBLI,IREBCO,PREBTH,
58170     1              IREFSW,IREFCO,
58171     1              IREPTY,IREPLI,IREPCO,PREPTH,PREPSP,
58172     1              PTEXHE,PTEXWI,PTEXVG,PTEXHG,
58173     1              IGRASW,IDIASW,
58174     1              PGRAXF,PGRAYF,PDIAXC,PDIAYC,PDIAX2,PDIAY2,
58175     1              PDIAHE,PDIAWI,PDIAVG,PDIAHG,
58176     1              NUMDEV,IDMANU,IDMODE,IDMOD2,IDMOD3,
58177     1              IDPOWE,IDCONT,IDCOLO,IDNVPP,IDNHPP,IDUNIT,
58178     1              IDNVOF,IDNHOF,IDFONT,UNITSW,PDSCAL,
58179     1              IBUGD2,IFOUND,IERROR)
58180        IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
58181      ENDIF
58182C
58183C               *******************************
58184C               **  TREAT THE INDUCTOR CASE  **
58185C               *******************************
58186C
58187CCCCC MODIFIED TO SUPPORT "INDUCTOR DATA" OPTION.  JULY 1997.
58188      IF(ICOM.EQ.'INDU')THEN
58189        ICASE='INDU'
58190        UNITSW='SCRE'
58191        IF(IHARG(1).EQ.'DATA')THEN
58192          UNITSW='DATA'
58193          ISHIFT=1
58194          CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
58195     1                IBUGD2,IERROR)
58196        ENDIF
58197        CALL DPINDU(IHARG,IARGT,ARG,NUMARG,
58198     1              PXSTAR,PYSTAR,PXEND,PYEND,
58199     1              ILINPA,ILINCO,PLINTH,
58200     1              AREGBA,IREBLI,IREBCO,PREBTH,
58201     1              IREFSW,IREFCO,
58202     1              IREPTY,IREPLI,IREPCO,PREPTH,PREPSP,
58203     1              PTEXHE,PTEXWI,PTEXVG,PTEXHG,
58204     1              IGRASW,IDIASW,
58205     1              PGRAXF,PGRAYF,PDIAXC,PDIAYC,PDIAX2,PDIAY2,
58206     1              PDIAHE,PDIAWI,PDIAVG,PDIAHG,
58207     1              NUMDEV,IDMANU,IDMODE,IDMOD2,IDMOD3,
58208     1              IDPOWE,IDCONT,IDCOLO,IDNVPP,IDNHPP,IDUNIT,
58209     1              IDNVOF,IDNHOF,IDFONT,UNITSW,PDSCAL,
58210     1              IBUGD2,IFOUND,IERROR)
58211        IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
58212      ENDIF
58213C               ********************************
58214C               **  TREAT THE CAPACITOR CASE  **
58215C               ********************************
58216C
58217CCCCC THE FOLLOWING LINE WAS FIXED                   FEBRUARY 1994
58218CCCCC TO AVOID CONFLICT WITH    CAPABILITY   COMMAND FEBRUARY 1994
58219CCCCC MODIFIED TO SUPPORT "CAPACITOR DATA" OPTION.  JULY 1997.
58220CCCCC IF(ICOM.EQ.'CAPA')GOTO3200
58221      IF(ICOM.EQ.'CAPA' .AND. ICOM2.EQ.'CITO' .AND.
58222     1   IHARG(1).NE.'ANAL')THEN
58223        ICASE='CAPA'
58224        UNITSW='SCRE'
58225        IF(IHARG(1).EQ.'DATA')THEN
58226          UNITSW='DATA'
58227          ISHIFT=1
58228          CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
58229     1                IBUGD2,IERROR)
58230        ENDIF
58231        CALL DPCAPA(IHARG,IARGT,ARG,NUMARG,
58232     1              PXSTAR,PYSTAR,PXEND,PYEND,
58233     1              ILINPA,ILINCO,PLINTH,
58234     1              AREGBA,IREBLI,IREBCO,PREBTH,
58235     1              IREFSW,IREFCO,
58236     1              IREPTY,IREPLI,IREPCO,PREPTH,PREPSP,
58237     1              PTEXHE,PTEXWI,PTEXVG,PTEXHG,
58238     1              IGRASW,IDIASW,
58239     1              PGRAXF,PGRAYF,PDIAXC,PDIAYC,PDIAX2,PDIAY2,
58240     1              PDIAHE,PDIAWI,PDIAVG,PDIAHG,
58241     1              NUMDEV,
58242     1              IDMANU,IDMODE,IDMOD2,IDMOD3,
58243     1              IDPOWE,IDCONT,IDCOLO,IDNVPP,IDNHPP,IDUNIT,
58244     1              IDNVOF,IDNHOF,IDFONT,UNITSW,PDSCAL,
58245     1              IBUGD2,IFOUND,IERROR)
58246        IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
58247      ENDIF
58248C
58249C               *****************************
58250C               **  TREAT THE GROUND CASE  **
58251C               *****************************
58252C
58253CCCCC MODIFIED TO SUPPORT "ELLIPSE DATA" OPTION.  JULY 1997.
58254      IF(ICOM.EQ.'GROU')THEN
58255        IF(IHARG(1).EQ.'PARA'.AND. IHARG(2).EQ.'COOR')GOTO3399
58256        IF(IHARG(1).EQ.'CHI '.AND. IHARG(2).EQ.'SQUA')GOTO3399
58257        IF(IHARG(1).EQ.'CHIS'.AND. IHARG2(1).EQ.'SQUA')GOTO3399
58258        IF(IHARG(1).EQ.'TWO '.AND. IHARG(2).EQ.'SAMP'.AND.
58259     1     IHARG(3)(1:3).EQ.'CHI')GOTO3399
58260        IF(IHARG(1).EQ.'2   '.AND. IHARG(2).EQ.'SAMP'.AND.
58261     1     IHARG(3)(1:3).EQ.'CHI')GOTO3399
58262      ELSE
58263        GOTO3399
58264      ENDIF
58265C
58266      ICASE='GROU'
58267      UNITSW='SCRE'
58268      IF(IHARG(1).EQ.'DATA')THEN
58269        UNITSW='DATA'
58270        ISHIFT=1
58271        CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
58272     1              IBUGD2,IERROR)
58273      ENDIF
58274      CALL DPGROU(IHARG,IARGT,ARG,NUMARG,
58275     1            PXSTAR,PYSTAR,PXEND,PYEND,
58276     1            ILINPA,ILINCO,PLINTH,
58277     1            AREGBA,IREBLI,IREBCO,PREBTH,
58278     1            IREFSW,IREFCO,
58279     1            IREPTY,IREPLI,IREPCO,PREPTH,PREPSP,
58280     1            PTEXHE,PTEXWI,PTEXVG,PTEXHG,
58281     1            IGRASW,IDIASW,
58282     1            PGRAXF,PGRAYF,PDIAXC,PDIAYC,PDIAX2,PDIAY2,
58283     1            PDIAHE,PDIAWI,PDIAVG,PDIAHG,
58284     1            NUMDEV,IDMANU,IDMODE,IDMOD2,IDMOD3,
58285     1            IDPOWE,IDCONT,IDCOLO,IDNVPP,IDNHPP,IDUNIT,
58286     1            IDNVOF,IDNHOF,IDFONT,UNITSW,PDSCAL,
58287     1            IBUGD2,IFOUND,IERROR)
58288      IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
58289C
58290 3399 CONTINUE
58291C               **************************
58292C               **  TREAT THE AND CASE  **
58293C               **************************
58294C
58295CCCCC MODIFIED TO SUPPORT "AND DATA" OPTION.  JULY 1997.
58296      IF(ICOM.EQ.'AND')THEN
58297        ICASE='AND'
58298        UNITSW='SCRE'
58299        IF(IHARG(1).EQ.'DATA')THEN
58300          UNITSW='DATA'
58301          ISHIFT=1
58302          CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
58303     1                IBUGD2,IERROR)
58304        ENDIF
58305        CALL DPAND(IHARG,IARGT,ARG,NUMARG,
58306     1             PXSTAR,PYSTAR,PXEND,PYEND,
58307     1             ILINPA,ILINCO,PLINTH,
58308     1             AREGBA,IREBLI,IREBCO,PREBTH,
58309     1             IREFSW,IREFCO,
58310     1             IREPTY,IREPLI,IREPCO,PREPTH,PREPSP,
58311     1             PTEXHE,PTEXWI,PTEXVG,PTEXHG,
58312     1             IGRASW,IDIASW,
58313     1             PGRAXF,PGRAYF,PDIAXC,PDIAYC,PDIAX2,PDIAY2,
58314     1             PDIAHE,PDIAWI,PDIAVG,PDIAHG,
58315     1             NUMDEV,IDMANU,IDMODE,IDMOD2,IDMOD3,
58316     1             IDPOWE,IDCONT,IDCOLO,IDNVPP,IDNHPP,IDUNIT,
58317     1             IDNVOF,IDNHOF,IDFONT,UNITSW,PDSCAL,
58318     1             IBUGD2,IFOUND,IERROR)
58319        IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
58320      ENDIF
58321C
58322C               *************************
58323C               **  TREAT THE OR CASE  **
58324C               *************************
58325C
58326CCCCC MODIFIED TO SUPPORT "ELLIPSE DATA" OPTION.  JULY 1997.
58327      IF(ICOM.EQ.'OR')THEN
58328        ICASE='OR'
58329        UNITSW='SCRE'
58330        IF(IHARG(1).EQ.'DATA')THEN
58331          UNITSW='DATA'
58332          ISHIFT=1
58333          CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
58334     1                IBUGD2,IERROR)
58335        ENDIF
58336        CALL DPOR(IHARG,IARGT,ARG,NUMARG,
58337     1            PXSTAR,PYSTAR,PXEND,PYEND,
58338     1            ILINPA,ILINCO,PLINTH,
58339     1            AREGBA,IREBLI,IREBCO,PREBTH,
58340     1            IREFSW,IREFCO,
58341     1            IREPTY,IREPLI,IREPCO,PREPTH,PREPSP,
58342     1            PTEXHE,PTEXWI,PTEXVG,PTEXHG,
58343     1            IGRASW,IDIASW,
58344     1            PGRAXF,PGRAYF,PDIAXC,PDIAYC,PDIAX2,PDIAY2,
58345     1            PDIAHE,PDIAWI,PDIAVG,PDIAHG,
58346     1            NUMDEV,IDMANU,IDMODE,IDMOD2,IDMOD3,
58347     1            IDPOWE,IDCONT,IDCOLO,IDNVPP,IDNHPP,IDUNIT,
58348     1            IDNVOF,IDNHOF,IDFONT,UNITSW,PDSCAL,
58349     1            IBUGD2,IFOUND,IERROR)
58350        IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
58351      ENDIF
58352C
58353C               ***************************
58354C               **  TREAT THE NAND CASE  **
58355C               ***************************
58356C
58357CCCCC MODIFIED TO SUPPORT "ELLIPSE DATA" OPTION.  JULY 1997.
58358      IF(ICOM.EQ.'NAND')THEN
58359        ICASE='NAND'
58360        UNITSW='SCRE'
58361        IF(IHARG(1).EQ.'DATA')THEN
58362          UNITSW='DATA'
58363          ISHIFT=1
58364          CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
58365     1                IBUGD2,IERROR)
58366        ENDIF
58367      CALL DPNAND(IHARG,IARGT,ARG,NUMARG,
58368     1            PXSTAR,PYSTAR,PXEND,PYEND,
58369     1            ILINPA,ILINCO,PLINTH,
58370     1            AREGBA,IREBLI,IREBCO,PREBTH,
58371     1            IREFSW,IREFCO,
58372     1            IREPTY,IREPLI,IREPCO,PREPTH,PREPSP,
58373     1            PTEXHE,PTEXWI,PTEXVG,PTEXHG,
58374     1            IGRASW,IDIASW,
58375     1            PGRAXF,PGRAYF,PDIAXC,PDIAYC,PDIAX2,PDIAY2,
58376     1            PDIAHE,PDIAWI,PDIAVG,PDIAHG,
58377     1            NUMDEV,IDMANU,IDMODE,IDMOD2,IDMOD3,
58378     1            IDPOWE,IDCONT,IDCOLO,IDNVPP,IDNHPP,IDUNIT,
58379     1            IDNVOF,IDNHOF,IDFONT,UNITSW,PDSCAL,
58380     1            IBUGD2,IFOUND,IERROR)
58381        IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
58382      ENDIF
58383C
58384C               **************************
58385C               **  TREAT THE NOR CASE  **
58386C               **************************
58387C
58388CCCCC MODIFIED TO SUPPORT "ELLIPSE DATA" OPTION.  JULY 1997.
58389      IF(ICOM.EQ.'NOR')THEN
58390        ICASE='NOR'
58391        UNITSW='SCRE'
58392        IF(IHARG(1).EQ.'DATA')THEN
58393          UNITSW='DATA'
58394          ISHIFT=1
58395          CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
58396     1                IBUGD2,IERROR)
58397        ENDIF
58398      CALL DPNOR(IHARG,IARGT,ARG,NUMARG,
58399     1           PXSTAR,PYSTAR,PXEND,PYEND,
58400     1           ILINPA,ILINCO,PLINTH,
58401     1           AREGBA,IREBLI,IREBCO,PREBTH,
58402     1           IREFSW,IREFCO,
58403     1           IREPTY,IREPLI,IREPCO,PREPTH,PREPSP,
58404     1           PTEXHE,PTEXWI,PTEXVG,PTEXHG,
58405     1           IGRASW,IDIASW,
58406     1           PGRAXF,PGRAYF,PDIAXC,PDIAYC,PDIAX2,PDIAY2,
58407     1           PDIAHE,PDIAWI,PDIAVG,PDIAHG,
58408     1           NUMDEV,IDMANU,IDMODE,IDMOD2,IDMOD3,
58409     1           IDPOWE,IDCONT,IDCOLO,IDNVPP,IDNHPP,IDUNIT,
58410     1           IDNVOF,IDNHOF,IDFONT,UNITSW,PDSCAL,
58411     1           IBUGD2,IFOUND,IERROR)
58412        IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
58413      ENDIF
58414C
58415C               **************************************
58416C               **  TREAT THE CROSS-HAIR CASE       **
58417C               **  TREAT THE READ CROSS-HAIR CASE  **
58418C               **************************************
58419C
58420      IF(ICOM.EQ.'CROS' .OR. ICOM.EQ.'CH' .OR.
58421     1  (ICOM.EQ.'READ'.AND.IHARG(1).EQ.'CROS') .OR.
58422     1  (ICOM.EQ.'READ'.AND.IHARG(1).EQ.'CH'))THEN
58423        ICASE='CROS'
58424        CALL DPCROS(ICOM,IHARG,IHARG2,IARGT,ARG,NUMARG,
58425     1              IANS,IWIDTH,
58426     1              IHNAME,IHNAM2,IUSE,IN,IVALUE,VALUE,NUMNAM,MAXNAM,
58427     1              IGRASW,IDIASW,
58428     1              PGRAXF,PGRAYF,PDIAXC,PDIAYC,PDIAX2,PDIAY2,
58429     1              PDIAHE,PDIAWI,PDIAVG,PDIAHG,
58430     1              NUMDEV,IDMANU,IDMODE,IDMOD2,IDMOD3,
58431     1              IDPOWE,IDCONT,IDCOLO,IDNVPP,IDNHPP,IDUNIT,
58432     1              IDNVOF,IDNHOF,IDFONT,PDSCAL,
58433     1              PXMIN,PXMAX,PYMIN,PYMAX,
58434     1              FX1MIN,FX1MAX,FY1MIN,FY1MAX,
58435     1              IBUGD2,ISUBRO,IFOUND,IERROR)
58436        IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
58437      ENDIF
58438C
58439C               ******************************
58440C               **  TREAT THE TRIANGLE CASE **
58441C               ******************************
58442C
58443CCCCC MODIFIED TO SUPPORT "TRIANGLE DATA" OPTION.  JULY 1997.
58444      IF(ICOM.EQ.'TRIA')GOTO3900
58445      GOTO3999
58446C
58447 3900 CONTINUE
58448CCCCC ADD FOLLOWING CHECK SEPTEMBER 1994.
58449      IF(IHARG(1).EQ.'PROB')GOTO3999
58450CCCCC ADD FOLLOWING CHECK SEPTEMBER 2001.
58451      IF(IHARG(1).EQ.'PPCC')GOTO3999
58452      IF(IHARG(1).EQ.'KS  ')GOTO3999
58453CCCCC ADD FOLLOWING CHECK MAY 2007 (FOR TRIANGULAR MAXI LIKE)
58454      IF(IHARG(1).EQ.'MAXI'.AND.IHARG(2).EQ.'LIKE')GOTO3999
58455      IF(IHARG(1).EQ.'MLE ')GOTO3999
58456      IF(NUMARG.GE.1.AND.IHARG(1).EQ.'KOLM')GOTO3999
58457      IF(NUMARG.GE.1.AND.IHARG(1).EQ.'CHI ')GOTO3999
58458      IF(NUMARG.GE.1.AND.IHARG(1).EQ.'CHIS')GOTO3999
58459      IF(IHARG(1).EQ.'CENS')GOTO3999
58460C
58461      ICASE='TRIA'
58462      UNITSW='SCRE'
58463      IF(IHARG(1).EQ.'DATA')THEN
58464        UNITSW='DATA'
58465        ISHIFT=1
58466        CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
58467     1              IBUGD2,IERROR)
58468      ENDIF
58469      CALL DPTRIA(IHARG,IARGT,ARG,NUMARG,
58470     1            PXSTAR,PYSTAR,PXEND,PYEND,
58471     1            ILINPA,ILINCO,PLINTH,
58472     1            AREGBA,IREBLI,IREBCO,PREBTH,
58473     1            IREFSW,IREFCO,
58474     1            IREPTY,IREPLI,IREPCO,PREPTH,PREPSP,
58475     1            PTEXHE,PTEXWI,PTEXVG,PTEXHG,
58476     1            IGRASW,IDIASW,
58477     1            PGRAXF,PGRAYF,PDIAXC,PDIAYC,PDIAX2,PDIAY2,
58478     1            PDIAHE,PDIAWI,PDIAVG,PDIAHG,
58479     1            NUMDEV,IDMANU,IDMODE,IDMOD2,IDMOD3,
58480     1            IDPOWE,IDCONT,IDCOLO,IDNVPP,IDNHPP,IDUNIT,
58481     1            IDNVOF,IDNHOF,IDFONT,UNITSW,PDSCAL,
58482     1            IBUGD2,IFOUND,IERROR)
58483      IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
58484C
58485 3999 CONTINUE
58486C
58487C               ******************************
58488C               **  TREAT THE AMPLIFIER CASE**
58489C               ******************************
58490C
58491CCCCC MODIFIED TO SUPPORT "AMPLIFIER DATA" OPTION.  JULY 1997.
58492      IF(ICOM.EQ.'AMPL'.AND.ICOM2.EQ.'IFIE')GOTO4000
58493      IF(ICOM.EQ.'AMP ')GOTO4000
58494      GOTO4099
58495C
58496 4000 CONTINUE
58497      ICASE='AMPL'
58498      UNITSW='SCRE'
58499      IF(IHARG(1).EQ.'DATA')THEN
58500        UNITSW='DATA'
58501        ISHIFT=1
58502        CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
58503     1              IBUGD2,IERROR)
58504      ENDIF
58505      CALL DPAMPL(IHARG,IARGT,ARG,NUMARG,
58506     1            PXSTAR,PYSTAR,PXEND,PYEND,
58507     1            ILINPA,ILINCO,PLINTH,
58508     1            AREGBA,IREBLI,IREBCO,PREBTH,
58509     1            IREFSW,IREFCO,
58510     1            IREPTY,IREPLI,IREPCO,PREPTH,PREPSP,
58511     1            PTEXHE,PTEXWI,PTEXVG,PTEXHG,
58512     1            IGRASW,IDIASW,
58513     1            PGRAXF,PGRAYF,PDIAXC,PDIAYC,PDIAX2,PDIAY2,
58514     1            PDIAHE,PDIAWI,PDIAVG,PDIAHG,
58515     1            NUMDEV,IDMANU,IDMODE,IDMOD2,IDMOD3,
58516     1            IDPOWE,IDCONT,IDCOLO,IDNVPP,IDNHPP,IDUNIT,
58517     1            IDNVOF,IDNHOF,IDFONT,UNITSW,PDSCAL,
58518     1            IBUGD2,IFOUND,IERROR)
58519      IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
58520C
58521 4099 CONTINUE
58522C
58523C               ******************************
58524C               **  TREAT THE DIAMOND CASE  **
58525C               ******************************
58526C
58527CCCCC MODIFIED TO SUPPORT "DIAMOND DATA" OPTION.  JULY 1997.
58528      IF(ICOM.EQ.'DIAM')THEN
58529        ICASE='DIAM'
58530        UNITSW='SCRE'
58531        IF(IHARG(1).EQ.'DATA')THEN
58532          UNITSW='DATA'
58533          ISHIFT=1
58534          CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
58535     1                IBUGD2,IERROR)
58536        ENDIF
58537        CALL DPDIAM(IHARG,IARGT,ARG,NUMARG,
58538     1              PXSTAR,PYSTAR,PXEND,PYEND,
58539     1              ILINPA,ILINCO,PLINTH,
58540     1              AREGBA,IREBLI,IREBCO,PREBTH,
58541     1              IREFSW,IREFCO,
58542     1              IREPTY,IREPLI,IREPCO,PREPTH,PREPSP,
58543     1              PTEXHE,PTEXWI,PTEXVG,PTEXHG,
58544     1              IGRASW,
58545     1              PGRAXF,PGRAYF,PDIAXC,PDIAYC,PDIAX2,PDIAY2,
58546     1              PDIAHE,PDIAWI,PDIAVG,PDIAHG,
58547     1              NUMDEV,IDMANU,IDMODE,IDMOD2,IDMOD3,
58548     1              IDPOWE,IDCONT,IDCOLO,IDNVPP,IDNHPP,IDUNIT,
58549     1              IDNVOF,IDNHOF,IDFONT,UNITSW,PDSCAL,
58550     1              IBUGD2,IFOUND,IERROR)
58551        IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
58552      ENDIF
58553C
58554C               ******************************
58555C               **  TREAT THE OVAL     CASE **
58556C               ******************************
58557C
58558CCCCC MODIFIED TO SUPPORT "OVAL DATA" OPTION.  JULY 1997.
58559      IF(ICOM.EQ.'OVAL')THEN
58560        ICASE='OVAL'
58561        UNITSW='SCRE'
58562        IF(IHARG(1).EQ.'DATA')THEN
58563          UNITSW='DATA'
58564          ISHIFT=1
58565          CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
58566     1                IBUGD2,IERROR)
58567        ENDIF
58568      CALL DPOVAL(IHARG,IARGT,ARG,NUMARG,
58569     1            PXSTAR,PYSTAR,PXEND,PYEND,
58570     1            ILINPA,ILINCO,PLINTH,
58571     1            AREGBA,IREBLI,IREBCO,PREBTH,
58572     1            IREFSW,IREFCO,
58573     1            IREPTY,IREPLI,IREPCO,PREPTH,PREPSP,
58574     1            PTEXHE,PTEXWI,PTEXVG,PTEXHG,
58575     1            IGRASW,IDIASW,
58576     1            PGRAXF,PGRAYF,PDIAXC,PDIAYC,PDIAX2,PDIAY2,
58577     1            PDIAHE,PDIAWI,PDIAVG,PDIAHG,
58578     1            NUMDEV,IDMANU,IDMODE,IDMOD2,IDMOD3,
58579     1            IDPOWE,IDCONT,IDCOLO,IDNVPP,IDNHPP,IDUNIT,
58580     1            IDNVOF,IDNHOF,IDFONT,UNITSW,PDSCAL,
58581     1            IBUGD2,IFOUND,IERROR)
58582        IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
58583      ENDIF
58584C
58585C               ******************************
58586C               **  TREAT THE ARC      CASE **
58587C               ******************************
58588C
58589CCCCC MODIFIED TO SUPPORT "ARC DATA" OPTION.  JULY 1997.
58590      IF(ICOM.EQ.'ARC ')THEN
58591        ICASE='ARC'
58592        UNITSW='SCRE'
58593        IF(IHARG(1).EQ.'DATA')THEN
58594          UNITSW='DATA'
58595          ISHIFT=1
58596          CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
58597     1                IBUGD2,IERROR)
58598        ENDIF
58599        CALL DPARC(IHARG,IARGT,ARG,NUMARG,
58600     1             PXSTAR,PYSTAR,
58601     1             PXEND,PYEND,
58602     1             ILINPA,ILINCO,PLINTH,
58603     1             AREGBA,
58604     1             IREBLI,IREBCO,PREBTH,
58605     1             IREFSW,IREFCO,
58606     1             IREPTY,IREPLI,IREPCO,PREPTH,PREPSP,
58607     1             PTEXHE,PTEXWI,PTEXVG,PTEXHG,
58608     1             IGRASW,IDIASW,
58609     1             PGRAXF,PGRAYF,PDIAXC,PDIAYC,PDIAX2,PDIAY2,
58610     1             PDIAHE,PDIAWI,PDIAVG,PDIAHG,
58611     1             NUMDEV,
58612     1             IDMANU,IDMODE,IDMOD2,IDMOD3,
58613     1             IDPOWE,IDCONT,IDCOLO,IDNVPP,IDNHPP,IDUNIT,
58614     1             IDNVOF,IDNHOF,IDFONT,UNITSW,PDSCAL,
58615     1             IBUGD2,IFOUND,IERROR)
58616        IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
58617      ENDIF
58618C
58619C               ************************************
58620C               **  TREAT THE FILL CASE  **
58621C               ************************************
58622C
58623      IF(ICOM.EQ.'FILL')THEN
58624        ICASE='FILL'
58625        CALL DPFILL(IHARG,NUMARG,
58626     1              IDEFFI,
58627     1              ITEXFI,
58628     1              IBUGD2,ISUBRO,IFOUND,IERROR)
58629        IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
58630      ENDIF
58631C
58632C               ****************************
58633C               **  TREAT THE ANGLE CASE  **
58634C               ****************************
58635C
58636CCCCC OCTOBER 1995.  NAME CONFLICT WITH ANGLIT PROBABILITY PLOT
58637C
58638      IF(ICOM.EQ.'ANGL' .AND. ICOM2.NE.'IT  ')THEN
58639        IF(IHARG(1).NE.'PROB' .OR. IHARG(2).NE.'PLOT')THEN
58640          ICASE='ANGL'
58641          CALL DPANGL(IHARG,IARGT,ARG,NUMARG,
58642     1                ITEXAU,ADEFAN,IDEFDI,ATEXAN,ITEXDI,
58643     1                IBUGD2,ISUBRO,IFOUND,IERROR)
58644          ANGLE=ATEXAN
58645          DEFANG=ADEFAN
58646          IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
58647        ENDIF
58648      ENDIF
58649C
58650C               ************************************
58651C               **  TREAT THE ANGLE UNITS CASE    **
58652C               **  TREAT THE RADIANS     CASE    **
58653C               **  TREAT THE DEGREES     CASE    **
58654C               **  TREAT THE GRADS       CASE    **
58655C               ************************************
58656C
58657      IF(ICOM.EQ.'ANGL' .OR. ICOM.EQ.'RADI' .OR.
58658     1   ICOM.EQ.'DEGR' .OR. ICOM.EQ.'GRAD')THEN
58659        IF(IHARG(1).NE.'FIT ' .AND. IHARG(2).NE.'FIT' .AND.
58660     1     IHARG(3).NE.'FIT ')THEN
58661          ICASE='ANGU'
58662          IF(ICOM.NE.'ANGL')THEN
58663            ISHIFT=2
58664            CALL SHIFTR(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
58665     1                  IBUGD2,IERROR)
58666            IHARG(1)='UNIT'
58667            IHOLD=ICOM
58668            IF(NUMARG.GE.3.AND.IHARG(3).EQ.'OFF')IHOLD=IDEFAU
58669            IF(NUMARG.GE.3.AND.IHARG(3).EQ.'OFF'.AND.ICOM.EQ.IDEFAU)
58670     1         IHOLD='DEGR'
58671            IHARG(2)=IHOLD
58672            NUMARG=2
58673          ENDIF
58674          CALL DPANGU(IHARG,NUMARG,IDEFAU,ITEXAU,
58675     1                IBUGD2,ISUBRO,IFOUND,IERROR)
58676          IANGLU=ITEXAU
58677          IDEANU=IDEFAU
58678          IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
58679        ENDIF
58680      ENDIF
58681C
58682C               ************************************
58683C               **  TREAT THE PATTERN CASE        **
58684C               ************************************
58685C
58686      IF(ICOM.EQ.'PATT')THEN
58687        ICASE='PATT'
58688        CALL DPPATT(IHARG,NUMARG,
58689     1              IDEFPA,
58690     1              ITEXPA,
58691     1              IBUGD2,ISUBRO,IFOUND,IERROR)
58692        IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
58693      ENDIF
58694C
58695C               ************************************
58696C               **  TREAT THE COLOR CASE  **
58697C               ************************************
58698C
58699      IF(ICOM.EQ.'COLO' .OR. ICOM.EQ.'PEN')THEN
58700        ICASE='COLO'
58701        CALL DPCOLO(IHARG,NUMARG,
58702     1              IDEFCO,
58703     1              ITEXCO,
58704     1              IBUGD2,ISUBRO,IFOUND,IERROR)
58705        IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
58706      ENDIF
58707C
58708C               ***************************************
58709C               **  TREAT THE VERTICAL SPACING CASE  **
58710C               ***************************************
58711C
58712      IF(ICOM.EQ.'VERT')THEN
58713        ICASE='VESP'
58714        CALL DPVERT(IHARG,IARGT,ARG,NUMARG,
58715     1              PDEFVG,
58716     1              PTEXVG,
58717     1              IBUGD2,ISUBRO,IFOUND,IERROR)
58718        IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
58719      ENDIF
58720C
58721C               *****************************************
58722C               **  TREAT THE HORIZONTAL SPACING CASE  **
58723C               *****************************************
58724C
58725      IF(ICOM.EQ.'HORI'.AND.IHARG(1).NE.'SWIT')GOTO7700
58726      GOTO7799
58727C
58728 7700 CONTINUE
58729      ICASE='HOSP'
58730      CALL DPHORI(IHARG,IARGT,ARG,NUMARG,
58731     1PDEFHG,
58732     1PTEXHG,
58733     1IBUGD2,ISUBRO,IFOUND,IERROR)
58734      IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
58735C
58736 7799 CONTINUE
58737C
58738C               ***************************************
58739C               **  TREAT THE CARRAIAGE RETURN CASE  **
58740C               ***************************************
58741C
58742      IF(ICOM.EQ.'CARR' .OR. ICOM.EQ.'CR')THEN
58743        ICASE='CR'
58744        CALL DPCR(IHARG,NUMARG,
58745     1            IDEFCR,
58746     1            ITEXCR,
58747     1            IBUGD2,ISUBRO,IFOUND,IERROR)
58748        IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
58749      ENDIF
58750C
58751C               ********************************
58752C               **  TREAT THE LINE FEED CASE  **
58753C               ********************************
58754C
58755      IF(ICOM.EQ.'LINE'.AND.NUMARG.GE.1.AND.IHARG(1).EQ.'FEED')GOTO7900
58756      IF(ICOM.EQ.'LF')GOTO7900
58757      GOTO7999
58758C
58759 7900 CONTINUE
58760      ICASE='LIFE'
58761      CALL DPLF(IHARG,NUMARG,
58762     1IDEFLF,
58763     1ITEXLF,
58764     1IBUGD2,ISUBRO,IFOUND,IERROR)
58765      IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
58766C
58767 7999 CONTINUE
58768C
58769C               ***************************************
58770C               **  TREAT THE SYMBOL CHARACTER CASE  **
58771C               ***************************************
58772C
58773CCCCC AUGUST 1992.  CHECK FOR CONFLICT WITH "SYMBOL PLOT" COMMAND.
58774CCCCC IF(ICOM.EQ.'SYMB')GOTO8000
58775      IF(ICOM.EQ.'SYMB'.AND.IHARG(1).NE.'PLOT')THEN
58776        ICASE='SYMB'
58777        CALL DPSYMB(IHARG,NUMARG,
58778     1              IDEFSY,
58779     1              ITEXSY,
58780     1              IBUGD2,ISUBRO,IFOUND,IERROR)
58781        IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
58782      ENDIF
58783C
58784C               *******************************************************
58785C               **  TREAT THE SPACING (EQUAL VS. PROPORTIONAL) CASE  **
58786C               *******************************************************
58787C
58788      IF(ICOM.EQ.'SPAC')THEN
58789        ICASE='SPAC'
58790        CALL DPSPAC(IHARG,NUMARG,
58791     1              IDEFSP,
58792     1              ITEXSP,
58793     1              IBUGD2,ISUBRO,IFOUND,IERROR)
58794        IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
58795      ENDIF
58796C
58797C               *****************************
58798C               **  TREAT THE THICKNESS CASE  **
58799C               *****************************
58800C
58801      IF(ICOM.EQ.'THIC')THEN
58802        ICASE='THIC'
58803        CALL DPTHIC(IHARG,IARGT,ARG,NUMARG,
58804     1              PDEFTH,
58805     1              PTEXTH,
58806C            DECEMBER 1987: SET ALL THICKNESS (CAN THEN
58807C            OVERRIDE ANY INDIVIDUALLY)
58808     1              PFRATH,PTICTH,PTIZTH,PVGRTH,PHGRTH,PTITTH,PX1LTH,
58809     1              PX2LTH,PY1LTH,
58810     1              PY2LTH,PLEGTH,MAXLG,PBOPTH,PBOFTH,MAXBX,PARRTH,
58811     1              MAXAR,
58812     1              PSEGTH,MAXSG,PLINTH,MAXLN,PCHATH,MAXCH2,PFILTH,
58813     1              MAXFL,
58814     1              PPATTH,MAXPT,PSPITH,MAXSP,PBABTH,PBAPTH,MAXBA,
58815     1              PREPTH,MAXRG,
58816     1              PMABTH,PMAPTH,MAXMR,PTEBTH,PTEPTH,MAXTX,
58817C            END CHANGE
58818     1              IBUGD2,ISUBRO,IFOUND,IERROR)
58819        IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
58820      ENDIF
58821C
58822C               *******************************
58823C               **  TREAT THE DIALOGUE CASE  **
58824C               *******************************
58825C
58826CCCCC IF(ICOM.EQ.'DIAL')GOTO8300
58827CCCCC IF(ICOM.EQ.'D')GOTO8300
58828CCCCC GOTO8399
58829CCCCC
58830C8300 CONTINUE
58831CCCCC CALL DPDIAL(IHARG,IARGT,IARG,NUMARG,
58832CCCCC1IGRASW,PDIAXC,PDIAYC,
58833CCCCC1NUMDEV,
58834CCCCC1IDMANU,IDMODE,IDMOD2,IDMOD3,
58835CCCCC1IDPOWE,IDCONT,IDCOLO,IDNVPP,IDNHPP,IDUNIT,
58836CCCCC1IDNVOF,IDNHOF,
58837CCCCC ADD FOLLOWING LINE MARCH 1997.
58838CCCCC1IDFONT,
58839CCCCC1IBUGD2,ISUBRO,IFOUND,IERROR)
58840CCCCC IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
58841CCCCC
58842C8399 CONTINUE
58843C
58844C               **************************
58845C               **  TREAT THE CUBE CASE **
58846C               **************************
58847C
58848CCCCC MODIFIED TO SUPPORT "CUBE DATA" OPTION.  JULY 1997.
58849      IF(ICOM.EQ.'CUBE')THEN
58850        ICASE='CUBE'
58851        UNITSW='SCRE'
58852        IF(IHARG(1).EQ.'DATA')THEN
58853          UNITSW='DATA'
58854          ISHIFT=1
58855          CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
58856     1                IBUGD2,IERROR)
58857        ENDIF
58858        CALL DPCUBE(IHARG,IARGT,ARG,NUMARG,
58859     1              PXSTAR,PYSTAR,PXEND,PYEND,
58860     1              ILINPA,ILINCO,PLINTH,
58861     1              AREGBA,IREBLI,IREBCO,PREBTH,
58862     1              IREFSW,IREFCO,
58863     1              IREPTY,IREPLI,IREPCO,PREPTH,PREPSP,
58864     1              PTEXHE,PTEXWI,PTEXVG,PTEXHG,
58865     1              IGRASW,IDIASW,
58866     1              PGRAXF,PGRAYF,PDIAXC,PDIAYC,PDIAX2,PDIAY2,
58867     1              PDIAHE,PDIAWI,PDIAVG,PDIAHG,
58868     1              NUMDEV,IDMANU,IDMODE,IDMOD2,IDMOD3,
58869     1              IDPOWE,IDCONT,IDCOLO,IDNVPP,IDNHPP,IDUNIT,
58870     1              IDNVOF,IDNHOF,IDFONT,UNITSW,PDSCAL,
58871     1              IBUGD2,IFOUND,IERROR)
58872        IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
58873      ENDIF
58874C
58875C               ******************************
58876C               **  TREAT THE PYRAMID CASE  **
58877C               ******************************
58878C
58879CCCCC MODIFIED TO SUPPORT "PYRAMID DATA" OPTION.  JULY 1997.
58880      IF(ICOM.EQ.'PYRA')THEN
58881        ICASE='PYRA'
58882        UNITSW='SCRE'
58883        IF(IHARG(1).EQ.'DATA')THEN
58884          UNITSW='DATA'
58885          ISHIFT=1
58886          CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
58887     1                IBUGD2,IERROR)
58888        ENDIF
58889      CALL DPPYRA(IHARG,IARGT,ARG,NUMARG,
58890     1            PXSTAR,PYSTAR,PXEND,PYEND,
58891     1            ILINPA,ILINCO,PLINTH,
58892     1            AREGBA,IREBLI,IREBCO,PREBTH,
58893     1            IREFSW,IREFCO,
58894     1            IREPTY,IREPLI,IREPCO,PREPTH,PREPSP,
58895     1            PTEXHE,PTEXWI,PTEXVG,PTEXHG,
58896     1            IGRASW,IDIASW,
58897     1            PGRAXF,PGRAYF,PDIAXC,PDIAYC,PDIAX2,PDIAY2,
58898     1            PDIAHE,PDIAWI,PDIAVG,PDIAHG,
58899     1            NUMDEV,IDMANU,IDMODE,IDMOD2,IDMOD3,
58900     1            IDPOWE,IDCONT,IDCOLO,IDNVPP,IDNHPP,IDUNIT,
58901     1            IDNVOF,IDNHOF,IDFONT,UNITSW,PDSCAL,
58902     1            IBUGD2,IFOUND,IERROR)
58903        IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
58904      ENDIF
58905C
58906C               ******************************
58907C               **  TREAT THE LATTICE  CASE **
58908C               ******************************
58909C
58910CCCCC MODIFIED TO SUPPORT "LATTICE DATA" OPTION.  JULY 1997.
58911      IF(ICOM.EQ.'LATT')THEN
58912        ICASE='LATT'
58913        UNITSW='SCRE'
58914        IF(IHARG(1).EQ.'DATA')THEN
58915          UNITSW='DATA'
58916          ISHIFT=1
58917          CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
58918     1                IBUGD2,IERROR)
58919        ENDIF
58920        CALL DPLATT(IHARG,IARGT,ARG,NUMARG,
58921     1              PXSTAR,PYSTAR,
58922     1              PXEND,PYEND,
58923     1              ILINPA,ILINCO,PLINTH,
58924     1              AREGBA,
58925     1              IREBLI,IREBCO,PREBTH,
58926     1              IREFSW,IREFCO,
58927     1              IREPTY,IREPLI,IREPCO,PREPTH,PREPSP,
58928     1              PTEXHE,PTEXWI,PTEXVG,PTEXHG,
58929     1              IGRASW,IDIASW,
58930     1              PGRAXF,PGRAYF,PDIAXC,PDIAYC,PDIAX2,PDIAY2,
58931     1              PDIAHE,PDIAWI,PDIAVG,PDIAHG,
58932     1              NUMDEV,
58933     1              IDMANU,IDMODE,IDMOD2,IDMOD3,
58934     1              IDPOWE,IDCONT,IDCOLO,IDNVPP,IDNHPP,IDUNIT,
58935     1              IDNVOF,IDNHOF,IDFONT,UNITSW,PDSCAL,
58936     1              IBUGD2,IFOUND,IERROR)
58937        IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
58938      ENDIF
58939C
58940C               ******************************
58941C               **  TREAT THE POLYGON CASE  **
58942C               ******************************
58943C
58944      IF(ICOM.EQ.'POLY'.AND.ICOM2.EQ.'GON ')THEN
58945        ICASE='POLY'
58946        UNITSW='SCRE'
58947        IF(IHARG(1).EQ.'DATA')THEN
58948          UNITSW='DATA'
58949          ISHIFT=1
58950          CALL SHIFTL(ISHIFT,IHARG,IHARG2,IARG,ARG,IARGT,NUMARG,
58951     1                IBUGD2,IERROR)
58952        ENDIF
58953        CALL DPPOLY(PXSTAR,PYSTAR,PXEND,PYEND,
58954     1              ILINPA,ILINCO,PLINTH,
58955     1              AREGBA,IREBLI,IREBCO,PREBTH,
58956     1              IREFSW,IREFCO,
58957     1              IREPTY,IREPLI,IREPCO,PREPTH,PREPSP,
58958     1              PTEXHE,PTEXWI,PTEXVG,PTEXHG,
58959     1              IGRASW,IDIASW,
58960     1              PGRAXF,PGRAYF,PDIAXC,PDIAYC,PDIAX2,PDIAY2,
58961     1              PDIAHE,PDIAWI,PDIAVG,PDIAHG,
58962     1              NUMDEV,IDMANU,IDMODE,IDMOD2,IDMOD3,
58963     1              IDPOWE,IDCONT,IDCOLO,IDNVPP,IDNHPP,IDUNIT,
58964     1              IDNVOF,IDNHOF,IDFONT,UNITSW,PDSCAL,
58965     1              IBUGD2,IFOUND,IERROR)
58966        IF(IFOUND.EQ.'YES'.OR.IERROR.EQ.'YES')GOTO9000
58967      ENDIF
58968C
58969C               *****************
58970C               **  STEP 90--  **
58971C               **  EXIT       **
58972C               *****************
58973C
58974 9000 CONTINUE
58975C
58976      IERRST=IERROR
58977C
58978C     APRIL 2007.  CHECK FOR FATAL ERROR
58979C
58980      IF(IERROR.EQ.'YES')THEN
58981        ISUBN1='MAIN'
58982        ISUBN2='DG  '
58983        ICASE='INDG'
58984        CALL DPERRO(IERRFA,IANSLC,IWIDTH,IGUIFL,
58985     1              ISUBN1,ISUBN2,ICASE,
58986     1              IBUGD2,ISUBRO,IERROR)
58987      ENDIF
58988C
58989      IF(IBUGDG.EQ.'ON' .OR. ISUBRO.EQ.'INDG')THEN
58990        WRITE(ICOUT,999)
58991        CALL DPWRST('XXX','BUG ')
58992        WRITE(ICOUT,9011)
58993 9011   FORMAT('AT THE END       OF MAINDG--')
58994        CALL DPWRST('XXX','BUG ')
58995        WRITE(ICOUT,9014)IFOUND,IERROR
58996 9014   FORMAT('IFOUND,IERROR = ',A4,2X,A4)
58997        CALL DPWRST('XXX','BUG ')
58998        WRITE(ICOUT,9019)PXSTAR,PYSTAR,PXEND,PYEND
58999 9019   FORMAT('PXSTAR,PYSTAR,PXEND,PYEND = ',4G15.7)
59000        CALL DPWRST('XXX','BUG ')
59001      ENDIF
59002C
59003      RETURN
59004      END
59005