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