******************************************************************************** File ERRCOD.TXT Corrections and changes in the code (August, 2001). Please, send reports of errors to A. Marazzi (e-mail Alfio.Marazzi@inst.hospvd.ch) Errors are corrected as soon as possible. Compare the creation dates of your FORTRAN source files and the dates indicated below ! ******************************************************************************** -------------------------------------------------------------------------------- Corrections and changes in the FORTRAN sources -------------------------------------------------------------------------------- Abbreviation: fb = from bottom Date Subroutine Line Errors (Module) Corrections ../../93 RANDOM (COMUTL) ISEED value returned on exit 10/../93 GAUSS/GAUSSD KODE=1 & 2 inverted (COMUTL) Corrected according to the book. 10/01/93 ADDC Symbol already used in SPLUS (COMUTL) subroutine ADDCOL (a copy of ADDC) added. SUBROUTINE ADDC(X,N,NP,MDX,L,J,SH,IP,SX) REAL X(MDX,NP),SH(NP),SX(N) INTEGER IP(NP) LOGICAL NPRCHK NPRCHK=MDX.GE.N.AND.NP.LE.N.AND.J.LE.NP.AND.J.GT.L.AND.L.GE.0 IF (.NOT.NPRCHK) CALL MESSGE(500,'ADDC ',1) CALL ADDCOL(X,N,NP,MDX,L,J,SH,IP,SX) RETURN END C SUBROUTINE ADDCOL(X,N,NP,MDX,L,J,SH,IP,SX) REAL X(MDX,NP),SH(NP),SX(N) INTEGER IP(NP) LOGICAL NPRCHK C C PARAMETER CHECK C NPRCHK=MDX.GE.N.AND.NP.LE.N.AND.J.LE.NP.AND.J.GT.L.AND.L.GE.0 IF (.NOT.NPRCHK) CALL MESSGE(500,'ADDCOL',1) C C EXCHANGE COLUMN J WITH COLUMN L+1 C LP1=L+1 IF (J.EQ.LP1) GOTO 20 CALL SWAP(X(1,J),X(1,L+1),N,1,1,MDX,MDX) TMP=SH(J) SH(J)=SH(L+1) SH(L+1)=TMP ITMP=IP(J) IP(J)=IP(L+1) IP(L+1)=ITMP 20 CONTINUE C C APPLY H.T. DEFINED BY COLS 1...L TO COLUMN L+1 C IF (L.EQ.0) GOTO 40 DO 30 II=1,L I=II 30 CALL H12(2,I,I+1,N,X(1,I),1,SH(I),X(1,L+1),1,N,1,N) 40 CONTINUE C C COMPUTE H.T. FOR COLUMNN L+1 C CALL H12(1,L+1,L+2,N,X(1,L+1),1,SH(L+1),SX,1,N,0,N) L=L+1 RETURN END 11/15/93 MHBHE2 31fb FACT=SIGM1**2*FACT/FLOAT(N) (MXMAIN) FACT=SIGM0**2/FLOAT(N) 02/25/94 LTSADJ 8fb CSTETA=CSTETA+ZM (HBAUXI) CSTETA=T+ZM 06/24/94 GITAC2 42fb IF (SIG0.LE.TOLARS) SIG0=1. (Inserted) (GLMAIN) CPSI=C 07/12/94 INS1 26fb LIMIT=40 (AEAUXI) LIMIT=20 07/12/94 INS2 26fb LIMIT=40 (AEAUXI) LIMIT=20 08/02/94 HLMSE2 66fb IF (SUMAR.LE.TAU) GOTO 400 (Inserted) (HBMAIN) DO 330 I=1,NQ 11/01/94 MMVLM2 8fb HN=FLOAT(H)/FLOAT(N) (Inserted) (MXMAIN) CALL CQUANT(HN,NP,0.5E-5,20,XCHI) (corrected) 01/17/95 MMVLM2 6fb FACT=CNP2*EM2/XCHI (corrected) (MXMAIN) 02/10/95 MHBHE2 26-30 MXREP=ICNREP(...) until IF (NREP.GE.MXREP)... (MXMAIN) Computation of C(n,q) may cause integer overflow; Replace the lines 26 to 30 by: CALL NLGM(2*(N+1),GN) CALL NLGM(2*(N-NQ+1),GNMQ) CALL NLGM(2*(NQ+1),GQ) NREP=MAX0(INT(4.6*(2.**NP)),1000) AREP=ALOG(4.6*(2.**NP)+1000.) IF (AREP.GE.GN-GNMQ-GQ) IOPT=3 02/10/95 RYWALG 46fb IF (K.EQ.0) CALL MESSGE(461,'RYWALG',0) (inserted) (RGMAIN) IF (K.EQ.0) RETURN (inserted) 02/10/95 RYNALG 83fb IF (K.EQ.0) CALL MESSGE(112,'RYNALG',0) (inserted) (RGMAIN) IF (K.EQ.0) RETURN (inserted) 06/12/96 LYHALG 3fb VAR=TMP2*SIGMA*SIGMA/(TMP1*TMP1*FLOAT(N-1)) (LCMAIN) VAR=TMP2*SIGMA*SIGMA*FLOAT(N)/(TMP1*TMP1*FLOAT(N-1)) 03/10/97 All subroutines of GLMAIN except GYCSTP, have an additional real vector argument OI(N), which must contain the offset on input. The offset is an optional value to be added to the linear predictor. The modified subroutine specifications are the following: SUBROUTINE GINTAC(X,Y,NI,OI,MDX,MDT,N,NP,NCOV,ICASE, + MAXTT,MAXTA,TOLT,TOLA,B,C,NITT,NITA,SIGMA,A,THETA, + CI,DIST,RW1,RW2,IW1,DW1) SUBROUTINE GYTSTP(X,Y,CI,THETA,WA,COV,NI,OI,N,NP,MDX, + NCOV,GAM,TOL,TAU,IOPT,ICASE,ICNV,MAXIT,NITMON,NIT, + Q0,DELTA,F0,F1,F2,VTHETA,GRAD,HESSNV,RW1,RW2,IW1) SUBROUTINE GYASTP(X,Y,NI,VTHETA,CI,A,OI,B,IUGL,ICASE, + NOBS,NVAR,NCOV,MDX,TAU,MAXIT,NITMON,ICNV,TOL,NIT, + DIST,SU,SA,ST,SD) SUBROUTINE GYMAIN(X,Y,NI,COV,A,THETA,OI,MDX,M,NP, + NCOV,B,GAM,TAU,ICASE,IUGL,IOPT,IALG,ICNVT,ICNVA, + MAXIT,MAXTT,MAXTA,MAXTC,NITMNT,MITMNA,TOL,TOLT, + TOLA,TOLC,NIT,CI,WA,VTHETA,DELTA,GRAD,HESSNV, + RW1,RW2,IW1,DW1) SUBROUTINE GFEDCA(VTHETA,CI,WA,NI,OI,N,ICASE,D,E) SUBROUTINE DPOISS(Y,CI,VTHETA,WA,F0,OI,N,KAP,D) SUBROUTINE DBINOM(Y,CI,VTHETA,WA,NI,F0,OI,N,KAP,D) 03/10/97 All the subroutines of GLAUXI have been modified and 5 new subroutines have been added : BIGGBI, PROBIN, PRPOIS, GLMDEV and FLINK. 03/10/97 UGL The computations in UGL are optimized due to the (WGTFUN) new subroutines PROBIN and PRPOIS. 06/06/97 SPLUS already uses a FORTRAN routine called PSI. This causes an SPLUS crash on DEC OSF1 and Silicon Graphics Iris (dyn.load.shared). PSI is now renamed PSY in wgtfun.f, aeauxi.f, glmain.f, intrex.f, mxmain.f, rgauxi.f, tsmain.f, tsauxi.f and in the test programs. 06/06/97 SPLUS already uses a FORTRAN routine called QSORT. This causes a warning message with SPLUS on DEC OSF1 and Silicon Graphics Iris (dyn.load.shared). QSORT is now renamed QDSRT in qdauxi.f. 06/06/97 SPLUS already uses a C routine called RANDOM. To avoid conflict, RANDOM is now renamed RANDOW in comutl.f and hbmain.f. 06/06/97 RANDOW 14 DATA INIT/0/ (COMUTL) DATA INIT,T/0,128*0./ (corrected) 02/20/98 Subroutine ADDC is cleared (commented out) from comutl.f to avoid conflict with SPLUS (ADDC was a simple call to ADDCOL). 02/20/98 SPLUS already uses a FORTRAN routine called WXY. To avoid conflict, WXY is now renamed WYX in lcauxi.f and lcmain.f. 12/02/98 SPLUS Version 5.0 under UNIX (tested on a SUN running SunOS 5.5.1) uses a FORTRAN routine called QUANT. To avoid conflict, QUANT is now renamed NQUANT in comutl.f, lcmain.f and rgmain.f. 06/15/99 EXPU 14fb P2=0. (CVAUXI) P4=0. (corrected) 10/12/99 GLMDEV 4fb CALL LRFNCT(ICASE,Y,CI,THETAS,...) (Replaced by) (GLAUXI) QS=0. DO 800 I=1,N ENI=FLOAT(NI(I)) YI=Y(I) IF (ICASE.LE.2) THEN TMP=ENI*ALOG(ENI) IF (YI.GT.0.) TMP=TMP-YI*ALOG(YI) ENYI=ENI-YI IF (ENYI.GT.0.) TMP=TMP-ENYI*ALOG(ENYI) ELSE TMP=YI IF (YI.GT.0.) TMP=TMP-YI*ALOG(YI) ENDIF QS=QS+TMP SC(I)=TMP 800 CONTINUE 10/12/99 FLINK 9fb 10 TT=YMIN (Replaced by) (GLAUXI) 10 FLINK=-999. IF (EM.LE.0.) RETURN TT=YMIN 10/12/99 FLINK 5fb TT=YMIN (Replaced by) (GLAUXI) IF (1.-EM.LE.0.) RETURN TT=YMIN 08/16/01 TS12PO 13 T1=DXLOG(YI-AI,XMIN,YMIN)-OI (Replaced by) T1=DXLOG(DBLE(YI-AI),XMIN,YMIN)-OI (GLAUXI) 15 T2=DXLOG(YI+AI,XMIN,YMIN)-OI (Replaced by) T2=DXLOG(DBLE(YI+AI),XMIN,YMIN)-OI 08/16/01 DBINOM 11 DOUBLE PRECISION GG,DMIN,XMIN,... (Replaced by) (GLMAIN) DOUBLE PRECISION GG,DMIN,DMAX,XMIN,... 08/16/01 INT46 13 integer nit,ip (INTREX) 14 real x,y,theta,wgt,cov,psp0,exrho,sigmai,... (Replaced by) integer nit,ip,exrho real x,y,theta,wgt,cov,psp0,sigmai,... 08/17/01 WYGALG 16 SU(NOBS),SUP(NOBS),SY1(NVAR),SY2(NVAR),EXU,EXUP,XN (WGMAIN) 19 DATA TL/1.E-10/ (Replaced by) 16 SU(NOBS),SUP(NOBS),SY1(NVAR),SY2(NVAR),EXU,EXUP,XN,TL 19 DATA TL/1.D-10/ ------------------------------------------------------------------------------------ Corrections and changes in the S-interface sources ------------------------------------------------------------------------------------ Date File name Line Errors (S function) Corrections 03/07/94 INTRFC.S gintac 6 mdt_n must be n_length(y) 7 n_length(y) " " mdt_n 09/12/96 The function dfvals described at page 404 of the book has been modified. The new version of dfvals generates a list, called .dFv , containing the "suggested default values" indicated in Table 14.1, page 405. Default values must now be extracted from this list: for example, the default value of aa2 is obtained by means of the expression .dFv$aa2 . All S functions contained in the files INTRFC.S, DEFLTS.S and the example files have been adapted to this rule. 03/10/97 The insertion of the offset argument in the subroutines of GLMAIN has modified the source of gintac, gytstp, gyastp, gymain, gfedca, dbinom and dpoiss in the file INTRFC.S. 11/11/97 INTRFC.S rybifr after: if (missing(x)) x_matrix(single(1),n,nthet) add: p_ncol(x); if (nthet=p+1) x <- cbind(x,1) 03/02/98 INTRFC.S Random .Fortran("random" modified to .Fortran("randow". 12/02/98 INTRFC.S quant .Fortran("quant" modified to .Fortran("nquant". [END ERRCOD.TXT]