1
subroutine fpchep(x,m,t,n,k,ier)
2
c subroutine fpchep verifies the number and the position of the knots
3
c t(j),j=1,2,...,n of a periodic spline of degree k, in relation to
4
c the number and the position of the data points x(i),i=1,2,...,m.
5
c if all of the following conditions are fulfilled, ier is set
6
c to zero. if one of the conditions is violated ier is set to ten.
7
c 1) k+1 <= n-k-1 <= m+k-1
8
c 2) t(1) <= t(2) <= ... <= t(k+1)
9
c t(n-k) <= t(n-k+1) <= ... <= t(n)
10
c 3) t(k+1) < t(k+2) < ... < t(n-k)
11
c 4) t(k+1) <= x(i) <= t(n-k)
12
c 5) the conditions specified by schoenberg and whitney must hold
13
c for at least one subset of data points, i.e. there must be a
14
c subset of data points y(j) such that
15
c t(j) < y(j) < t(j+k+1), j=k+1,...,n-k-1
17
c ..scalar arguments..
22
integer i,i1,i2,j,j1,k1,k2,l,l1,l2,mm,m1,nk1,nk2
31
c check condition no 1
32
if(nk1.lt.k1 .or. n.gt.m+2*k) go to 130
33
c check condition no 2
36
if(t(i).gt.t(i+1)) go to 130
37
if(t(j).lt.t(j-1)) go to 130
40
c check condition no 3
42
if(t(i).le.t(i-1)) go to 130
44
c check condition no 4
45
if(x(1).lt.t(k1) .or. x(m).gt.t(nk2)) go to 130
46
c check condition no 5
51
40 if(xi.lt.t(l1+1) .or. l.eq.nk1) go to 50
73
100 if(xi.le.tj) go to 70
74
if(xi.ge.tl) go to 120