1
subroutine fpched(x,m,t,n,k,ib,ie,ier)
2
c subroutine fpched verifies the number and the position of the knots
3
c t(j),j=1,2,...,n of a spline of degree k,with ib derative constraints
4
c at x(1) and ie constraints at x(m), in relation to the number and
5
c the position of the data points x(i),i=1,2,...,m. if all of the
6
c following conditions are fulfilled, the error parameter ier is set
7
c to zero. if one of the conditions is violated ier is set to ten.
8
c 1) k+1 <= n-k-1 <= m + max(0,ib-1) + max(0,ie-1)
9
c 2) t(1) <= t(2) <= ... <= t(k+1)
10
c t(n-k) <= t(n-k+1) <= ... <= t(n)
11
c 3) t(k+1) < t(k+2) < ... < t(n-k)
12
c 4) t(k+1) <= x(i) <= t(n-k)
13
c 5) the conditions specified by schoenberg and whitney must hold
14
c for at least one subset of data points, i.e. there must be a
15
c subset of data points y(j) such that
16
c t(j) < y(j) < t(j+k+1), j=1+ib1,2+ib1,...,n-k-1-ie1
17
c with ib1 = max(0,ib-1), ie1 = max(0,ie-1)
19
c ..scalar arguments..
20
integer m,n,k,ib,ie,ier
24
integer i,ib1,ie1,j,jj,k1,k2,l,nk1,nk2,nk3
36
c check condition no 1
37
if(nk1.lt.k1 .or. nk1.gt.(m+ib1+ie1)) go to 80
38
c check condition no 2
41
if(t(i).gt.t(i+1)) go to 80
42
if(t(j).lt.t(j-1)) go to 80
45
c check condition no 3
47
if(t(i).le.t(i-1)) go to 80
49
c check condition no 4
50
if(x(1).lt.t(k1) .or. x(m).gt.t(nk2)) go to 80
51
c check condition no 5
52
if(x(1).ge.t(k2) .or. x(m).le.t(nk1)) go to 80
57
if(nk3.lt.jj) go to 70
64
if(x(i).le.tj) go to 40
65
if(x(i).ge.tl) go to 80