home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / octave-1.1.1p1-src.tgz / tar.out / fsf / octave / libcruft / villad / dif.f < prev    next >
Text File  |  1996-09-28  |  2KB  |  75 lines

  1.       SUBROUTINE DIF ( NT, ROOT, DIF1, DIF2, DIF3 )
  2. C
  3.       INTEGER           NT
  4.       DOUBLE PRECISION  ROOT(NT), DIF1(NT), DIF2(NT), DIF3(NT)
  5.  
  6. C
  7. C***********************************************************************
  8. C
  9. C     SUBROUTINE DIF
  10. C
  11. C     THIS ROUTINE IS NOT GIVEN SEPARATELY BY VILLADSEN AND MICHELSEN
  12. C     BUT AS PART OF JCOBI
  13. C
  14. C     DIF COMPUTES THE FIRST THREE DERIVATIVES OF THE NODE POLYNOMIAL
  15. C
  16. C                     N0     (ALPHA,BETA)           N1
  17. C       P  (X)  =  (X)   *  P (X)         *  (1 - X)
  18. C        NT                   N
  19. C
  20. C     AT THE INTERPOLATION POINTS.  EACH OF THE PARAMETERS N0 AND N1
  21. C     MAY BE GIVEN THE VALUE 0 OR 1.  NT = N + N0 + N1
  22. C
  23. C     THE VALUES OF ROOT MUST BE KNOWN BEFORE A CALL TO DIF IS POSSIBLE.
  24. C     THEY MAY BE COMPUTED USING JCOBI.
  25. C
  26. C     PARAMETER LIST:     SEE THE SUBROUTINE JCOBI
  27. C
  28. C     COMMON BLOCKS:      NONE
  29. C
  30. C     REQUIRED ROUTINES:  VILERR
  31. C
  32. C***********************************************************************
  33. C
  34.       INTEGER           I,J,IER
  35.       DOUBLE PRECISION  X,Y
  36.       DOUBLE PRECISION  ZERO,ONE,TWO,THREE
  37.       LOGICAL           LSTOP
  38. C
  39.       PARAMETER ( ZERO = 0.0D+00, ONE   = 1.0D+00,
  40.      +            TWO  = 2.0D+00, THREE = 3.0D+00 )
  41. C
  42. C -- ERROR CHECKING
  43. C
  44.       IF (NT .LT. 1) THEN
  45.         IER   = 7
  46.         LSTOP = .TRUE.
  47.         CALL VILERR(IER,LSTOP)
  48.       ELSE
  49.       END IF
  50. C
  51. C -- EVALUATE DERIVATIVES OF NODE POLYNOMIAL USING RECURSION FORMULAS
  52. C
  53.       DO 40 I = 1,NT
  54. C
  55.         X       = ROOT(I)
  56.         DIF1(I) = ONE
  57.         DIF2(I) = ZERO
  58.         DIF3(I) = ZERO
  59. C
  60.         DO 30 J = 1,NT
  61. C
  62.           IF (J .NE. I) THEN
  63.             Y       = X - ROOT(J)
  64.             DIF3(I) = Y*DIF3(I) + THREE*DIF2(I)
  65.             DIF2(I) = Y*DIF2(I) + TWO  *DIF1(I)
  66.             DIF1(I) = Y*DIF1(I)
  67.           ELSE
  68.           END IF
  69. C
  70.    30   CONTINUE
  71.    40 CONTINUE
  72. C
  73.       RETURN
  74.       END
  75.