home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / fortran / library / ssp / polyops / pgcd.for < prev    next >
Text File  |  1985-11-29  |  2KB  |  65 lines

  1. C
  2. C     ..................................................................
  3. C
  4. C        SUBROUTINE PGCD
  5. C
  6. C        PURPOSE
  7. C           DETERMINE GREATEST COMMON DIVISOR OF TWO POLYNOMIALS
  8. C
  9. C        USAGE
  10. C           CALL PGCD(X,IDIMX,Y,IDIMY,WORK,EPS,IER)
  11. C
  12. C        DESCRIPTION OF PARAMETERS
  13. C           X     -  VECTOR OF COEFFICIENTS FOR FIRST POLYNOMIAL,
  14. C                    ORDERED FROM SMALLEST TO LARGEST POWER
  15. C           IDIMX -  DIMENSION OF X
  16. C           Y     -  VECTOR OF COEFFICIENTS FOR SECOND POLYNOMIAL,
  17. C                    ORDERED FROM SMALLEST TO LARGEST POWER.
  18. C                    THIS IS REPLACED BY GREATEST COMMON DIVISOR
  19. C           IDIMY -  DIMENSION OF Y
  20. C           WORK  -  WORKING STORAGE ARRAY
  21. C           EPS   -  TOLERANCE VALUE BELOW WHICH COEFFICIENT IS
  22. C                    ELIMINATED DURING NORMALIZATION
  23. C           IER   -  RESULTANT ERROR CODE WHERE
  24. C                    IER=0  NO ERROR
  25. C                    IER=1  X OR Y IS ZERO POLYNOMIAL
  26. C
  27. C        REMARKS
  28. C           IDIMX MUST BE GREATER THAN IDIMY
  29. C           IDIMY=1 ON RETURN MEANS X AND Y ARE PRIME, THE GCD IS A
  30. C           CONSTANT. IDIMX IS DESTROYED DURING COMPUTATION.
  31. C
  32. C        SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED
  33. C           PDIV
  34. C           PNORM
  35. C
  36. C        METHOD
  37. C           GREATEST COMMON DIVISOR OF TWO POLYNOMIALS X AND Y IS
  38. C           DETERMINED BY MEANS OF EUCLIDEAN ALGORITHM. COEFFICIENT
  39. C           VECTORS X AND Y ARE DESTROYED AND GREATEST COMMON
  40. C           DIVISOR IS GENERATED IN Y.
  41. C
  42. C     ..................................................................
  43. C
  44.       SUBROUTINE PGCD(X,IDIMX,Y,IDIMY,WORK,EPS,IER)
  45.       DIMENSION X(1),Y(1),WORK(1)
  46. C
  47. C     DIMENSION REQUIRED FOR VECTOR NAMED  WORK  IS   IDIMX-IDIMY+1
  48. C
  49.     1 CALL PDIV(WORK,NDIM,X,IDIMX,Y,IDIMY,EPS,IER)
  50.       IF(IER) 5,2,5
  51.     2 IF(IDIMX) 5,5,3
  52. C
  53. C     INTERCHANGE X AND Y
  54. C
  55.     3 DO 4 J=1,IDIMY
  56.       WORK(1)=X(J)
  57.       X(J)=Y(J)
  58.     4 Y(J)=WORK(1)
  59.       NDIM=IDIMX
  60.       IDIMX=IDIMY
  61.       IDIMY=NDIM
  62.       GO TO 1
  63.     5 RETURN
  64.       END
  65.