V3FIT
polynomial.f
1  MODULE polynomial
2  USE precision
3  CONTAINS
4  FUNCTION polyval(a,n,x,m)
5  IMPLICIT NONE
6  INTEGER :: n, m, nt, i, j
7  REAL(rprec) a(0:n-1),x(*)
8  REAL(rprec), POINTER :: polyval(:)
9  nt=n-1
10  ALLOCATE(polyval(m))
11  DO i=1,m
12  polyval(i)=a(0)
13  DO j=1,nt
14  IF(x(i).ne.0.)polyval(i)=polyval(i)+a(j)*x(i)**j
15  ENDDO
16  ENDDO
17  RETURN
18  END FUNCTION polyval
19  FUNCTION polyder(a,n,x,m)
20  IMPLICIT NONE
21  INTEGER :: n, m, nt, i, j
22  REAL(rprec) a(0:n-1),x(*)
23  REAL(rprec), POINTER :: polyder(:)
24  nt=n-1
25  ALLOCATE(polyder(m))
26  DO i=1,m
27  polyder(i)=a(1)
28  DO j=2,nt
29  IF(x(i).ne.0.)polyder(i)=polyder(i)+a(j)*j*x(i)**(j-1)
30  ENDDO
31  ENDDO
32  RETURN
33  END FUNCTION polyder
34  FUNCTION polyint(a,n,x,m)
35  IMPLICIT NONE
36  INTEGER :: n, m, nt, i, j
37  REAL(rprec) a(0:n-1),x(*)
38  REAL(rprec), POINTER :: polyint(:)
39  nt=n-1
40  ALLOCATE(polyint(m))
41  polyint=0.
42  DO i=1,m
43  polyint(i)=a(0)*x(i)
44  DO j=1,nt
45  IF(x(i).ne.0.)polyint(i)=polyint(i)+a(j)/(j+1)*x(i)**(j+1)
46  ENDDO
47  ENDDO
48  RETURN
49  END FUNCTION polyint
50 
51  END MODULE polynomial