File: PDIV.FT of Tape: Various/ETH/eth11-1
(Source file text)
C .................................................................. C C SUBROUTINE PDIV C C PURPOSE C DIVIDE ONE POLYNOMIAL BY ANOTHER C C USAGE C CALL PDIV(P,IDIMP,X,IDIMX,Y,IDIMY,TOL,IER) C C DESCRIPTION OF PARAMETERS C P - RESULTANT VECTOR OF INTEGRAL PART C IDIMP - DIMENSION OF P C X - VECTOR OF COEFFICIENTS FOR DIVIDEND POLYNOMIAL, C ORDERED FROM SMALLEST TO LARGEST POWER. IT IS C REPLACED BY REMAINDER AFTER DIVISION. C IDIMX - DIMENSION OF X C Y - VECTOR OF COEFFICIENTS FOR DIVISOR POLYNOMIAL, C ORDERED FROM SMALLEST TO LARGEST POWER C IDIMY - DIMENSION OF Y C TOL - TOLERANCE VALUE BELOW WHICH COEFFICIENTS ARE C ELIMINATED DURING NORMALIZATION C IER - ERROR CODE. 0 IS NORMAL, 1 IS FOR ZERO DIVISOR C C REMARKS C THE REMAINDER R REPLACES X. C THE DIVISOR Y REMAINS UNCHANGED. C IF DIMENSION OF Y EXCEEDS DIMENSION OF X, IDIMP IS SET TO C ZERO AND CALCULATION IS BYPASSED C C SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED C PNORM C C METHOD C POLYNOMIAL X IS DIVIDED BY POLYNOMIAL Y GIVING INTEGER PART C P AND REMAINDER R SUCH THAT X = P*Y + R. C DIVISOR Y AND REMAINDER VECTOR GET NORMALIZED. C C .................................................................. C SUBROUTINE PDIV(P,IDIMP,X,IDIMX,Y,IDIMY,TOL,IER) DIMENSION P(1),X(1),Y(1) C CALL PNORM (Y,IDIMY,TOL) IF(IDIMY) 50,50,10 10 IDIMP=IDIMX-IDIMY+1 IF(IDIMP) 20,30,60 C C DEGREE OF DIVISOR WAS GREATER THAN DEGREE OF DIVIDEND C 20 IDIMP=0 30 IER=0 40 RETURN C C Y IS ZERO POLYNOMIAL C 50 IER=1 GO TO 40 C C START REDUCTION C 60 IDIMX=IDIMY-1 I=IDIMP 70 II=I+IDIMX P(I)=X(II)/Y(IDIMY) C C SUBTRACT MULTIPLE OF DIVISOR C DO 80 K=1,IDIMX J=K-1+I X(J)=X(J)-P(I)*Y(K) 80 CONTINUE I=I-1 IF(I) 90,90,70 C C NORMALIZE REMAINDER POLYNOMIAL C 90 CALL PNORM(X,IDIMX,TOL) GO TO 30 END C