1
-
!! Polynomial approximation utilities for mathematical computations
3
-
!! Polynomial approximation and evaluation routines for numerical analysis
5
-
! Polynomial approximant of order N at X0
6
-
! mbp 7/2015 incorporating subroutines from decades past
11
-
INTEGER, PRIVATE :: i, j
14
-
MODULE PROCEDURE PolyR, PolyC, PolyZ
19
#####
FUNCTION PolyR( X0, X, F, N )
21
-
INTEGER, INTENT( IN ) :: N ! order of the polynomial
22
-
REAL, INTENT( IN ) :: x0, x( N ), f( N ) ! x, y values of the polynomial
23
#####
REAL :: ft( N ), h( N ), PolyR
30
-
! Recursion for solution
31
#####
IF ( N >= 2) THEN
34
#####
ft( j ) = ( h( j + i ) * ft( i ) - h( i ) * ft( i + 1 ) ) / &
35
#####
& ( h( j + i ) - h( j ) )
42
#####
END FUNCTION PolyR
44
-
!__________________________________________________________________________
46
#####
COMPLEX FUNCTION PolyC( x0, x, f, N )
48
-
INTEGER, INTENT( IN ) :: N ! order of the polynomial
49
-
COMPLEX, INTENT( IN ) :: x0, x( N ), f( N ) ! x, y values of the polynomial
50
#####
COMPLEX :: ft( N ), h( N )
56
-
! Recursion for solution
57
#####
IF ( N >= 2) THEN
60
-
! ft( J ) = ( h( J+I ) * ft( J ) - h( J ) * ft( J+1 ) ) / &
61
-
! ( h( J+I ) - h( J ) )
62
#####
ft( J ) = ft( J ) + h( J ) * ( ft( J ) - ft( J+1 ) ) / &
63
#####
& ( h( J+I ) - h( J ) )
70
#####
END FUNCTION PolyC
72
-
!__________________________________________________________________________
74
#####
FUNCTION PolyZ( x0, x, F, N )
76
-
INTEGER, INTENT( IN ) :: N ! order of the polynomial
77
-
COMPLEX ( KIND=8 ), INTENT( IN ) :: x0, x( N ), f( N ) ! x, y values of the polynomial
78
-
COMPLEX ( KIND=8 ) :: PolyZ
79
#####
COMPLEX ( KIND=8 ) :: fT( N ), h( N )
85
-
! Recursion for solution
86
#####
IF ( N >= 2 ) THEN
89
#####
fT( j ) = ( h( j + i ) * fT( j ) - h( j ) * fT( j + 1 ) ) / ( h( j + i ) - h( j ) )
95
#####
END FUNCTION PolyZ