C***********************************************************************
C     THIS SUBROUTINE TRANSFORMS THE PARAMETER ESTIMATES TO WITHIN
C     THE FEASIBLE REGION FOR A VARIETY OF ESTIMATORS FOR PERP-
C     ENDICULAR DISTANCES.  THE REVERSE TRANSFORMATION IS ALSO
C     PERFORMED.
C***********************************************************************
      SUBROUTINE DOMAIN (INDEX,PAR,TPAR,NPAR,TRAN)
      INCLUDE 'PARMTR.INC'
      LOGICAL TRAN
      DOUBLE PRECISION PAR(*), TPAR(*)
      DOUBLE PRECISION BNDU,BNDL
      COMMON /BOUNDY/ BNDL(MAXPAR), BNDU(MAXPAR)
      COMMON /ERROR/ IER(4)
C          EPSI IS A RELATIVE ERROR OF 5 DIGITS FOR TESTING
C          TWO NUMBERS TO BE EQUAL
      REAL EPSI
      DATA EPSI/0.5E-5/
      TRANFM(I)=(BNDU(I)-BNDL(I))*(0.5D0*SIN(TPAR(I))+0.5D0)+BNDL(I)
      REVER(I)=ASIN(((PAR(I)-BNDL(I))/(BNDU(I)-BNDL(I))-0.5D0)*2.D0)
C***********************************************************************
C     FOURIER SERIES
C***********************************************************************
      IF (INDEX.EQ.1) THEN
         DO 10 I=1,NPAR
            IF (TRAN) THEN
               PAR(I)=TPAR(I)
            ELSE
               TPAR(I)=PAR(I)
            ENDIF
   10       CONTINUE
C***********************************************************************
C     EXPONENTIAL POWER SERIES
C     [0.1*PAR(1) - 10*PAR(1)] FOR PAR(1)
C     [0.75 - 10*PAR(2)] FOR PAR(2)
C***********************************************************************
      ELSE IF (INDEX.EQ.2) THEN
         IF (TRAN) THEN
            DO 15 I=1,NPAR
            PAR(I)=TRANFM(I)
            IF (ABS(SNGL(PAR(I)-BNDL(I))).LT.
     1       EPSI*MAX(ABS(SNGL(PAR(I))),ABS(SNGL(BNDL(I))))) IER(2)=-1
            IF (ABS(SNGL(PAR(I)-BNDU(I))).LT.
     1       EPSI*MAX(ABS(SNGL(PAR(I))),ABS(SNGL(BNDU(I))))) IER(2)=-1
 15         CONTINUE
         ELSE
            BNDL(1)=PAR(1)*0.1
            BNDU(1)=10.D0*PAR(1)
            TPAR(1)=REVER(1)
            BNDL(2)=MAX(0.75D0,PAR(2)*0.1)
            BNDU(2)=10.D0*PAR(2)
            TPAR(2)=REVER(2)
         ENDIF
C***********************************************************************
C     EXPONENTIAL POLYNOMIAL, NEGATIVE EXPONENTIAL, HALF NORMAL
C***********************************************************************
      ELSE
         DO 20 I=1,NPAR
            IF (TRAN) THEN
               PAR(I)=TRANFM(I)
               IF (ABS(SNGL(PAR(I)-BNDL(I))).LT.
     1         EPSI*MAX(ABS(SNGL(PAR(I))),ABS(SNGL(BNDL(I))))) IER(2)=-1
               IF (ABS(SNGL(PAR(I)-BNDU(I))).LT.
     1         EPSI*MAX(ABS(SNGL(PAR(I))),ABS(SNGL(BNDU(I))))) IER(2)=-1
            ELSE
               BNDU(I)=MAX(PAR(I)*10.D0,0.1D0)
               BNDL(I)=1.D-20
               TPAR(I)=REVER(I)
            ENDIF
   20       CONTINUE
      ENDIF
      RETURN
      END
