SUBROUTINE POLY(X,PF,CONS,FA,MPPF,NCONS,NX,MP) IMPLICIT REAL*8 (A-H,O-Z) PARAMETER (IT=63) DIMENSION MPNUM(IT+1),MPDEN(IT+1),MPPF(IT+1,*),MPFA(IT+1), 2 MPFASD(IT+1) DIMENSION X(NX),PF(*),CONS(*),PNUM(24),PDEN(24) DATA ALP5/-0.6931471805599453D0/ Z=X(1) NNUM=NCONS/2+1 NDEN=NNUM-2 ZT=Z ANUM=ALP5 DO I=1,NNUM PNUM(I)=ZT ANUM=ANUM+CONS(I)*PNUM(I) ZT=ZT*Z ENDDO ZT=Z DEN=1 DO I=1,NDEN K=NNUM+I PDEN(I)=ZT DEN=DEN+CONS(K)*PDEN(I) ZT=ZT*Z ENDDO IF(ABS(DEN).LT.1D-130)DEN=.6D-130 IF(ABS(ANUM).GT.1D130.OR.ABS(DEN).LT.1D-130)THEN PRINT*,' ANUM DEN ',ANUM,DEN ANUM=0 ADEN=1 C READ(*,*)ITEST ENDIF FA=ANUM/DEN IF(MP.GE.3)THEN CALL MPINIT(MPNUM) CALL DPLMP(CONS(NNUM),MPNUM) DO I=NNUM-1,1,-1 CALL DXMP(Z,MPNUM,MPNUM) CALL DPLMP(CONS(I),MPNUM) ENDDO CALL DXMP(Z,MPNUM,MPNUM) CALL DPLMP(ALP5,MPNUM) CALL MPINIT(MPDEN) CALL DPLMP(CONS(NDEN+NNUM),MPDEN) DO I=NDEN-1,1,-1 CALL DXMP(Z,MPDEN,MPDEN) CALL DPLMP(CONS(I+NNUM),MPDEN) ENDDO CALL DXMP(Z,MPDEN,MPDEN) CALL MPPLI(MPDEN,MPDEN,1) CALL MPINV(MPDEN,MPDEN) CALL MPXMP(MPDEN,MPNUM,MPFA) CALL MPXMP(MPFA,MPDEN,MPFASD) ENDIF DO I=1,NNUM PF(I)=PNUM(I)/DEN IF(MP.GE.3)CALL DXMP(PNUM(I),MPDEN,MPPF(1,I)) ENDDO DO I=1,NDEN K=NNUM+I PF(K)=-FA*PDEN(I)/DEN IF(MP.GE.3)CALL DXMP(-PDEN(I),MPFASD,MPPF(1,K)) ENDDO IF(MP.GE.3)FA=DPMP(MPFA) RETURN END