bsplpp Subroutine

subroutine bsplpp(t, bcoef, n, k, scrtch, break, coef, l)

************80

! BSPLPP converts from B-spline to piecewise polynomial form.

Discussion:

The B-spline representation of a spline is ( T, BCOEF, N, K ),
while the piecewise polynomial representation is 
( BREAK, COEF, L, K ).

For each breakpoint interval, the K relevant B-spline coefficients 
of the spline are found and then differenced repeatedly to get the 
B-spline coefficients of all the derivatives of the spline on that 
interval.

The spline and its first K-1 derivatives are then evaluated at the 
left end point of that interval, using BSPLVB repeatedly to obtain 
the values of all B-splines of the appropriate order at that point.

Modified:

14 February 2007

Author:

Carl DeBoor

Reference:

Carl DeBoor,
A Practical Guide to Splines,
Springer, 2001,
ISBN: 0387953663,
LC: QA1.A647.v27.

Parameters:

Input, real ( kind = 8 ) T(N+K), the knot sequence.

Input, real ( kind = 8 ) BCOEF(N), the B spline coefficient sequence.

Input, integer ( kind = 4 ) N, the number of B spline coefficients.

Input, integer ( kind = 4 ) K, the order of the spline.

Work array, real ( kind = 8 ) SCRTCH(K,K).

Output, real ( kind = 8 ) BREAK(L+1), the piecewise polynomial breakpoint 
sequence.  BREAK contains the distinct points in the sequence T(K:N+1)

Output, real ( kind = 8 ) COEF(K,N), with COEF(I,J) = (I-1)st derivative 
of the spline at BREAK(J) from the right.

Output, integer ( kind = 4 ) L, the number of polynomial pieces which 
make up the spline in the interval ( T(K), T(N+1) ).

Arguments

Type IntentOptional Attributes Name
real(kind=8) :: t(n+k)
real(kind=8) :: bcoef(n)
integer(kind=4) :: n
integer(kind=4) :: k
real(kind=8) :: scrtch(k,k)
real(kind=8) :: break(*)
real(kind=8) :: coef(k,n)
integer(kind=4) :: l

Calls

proc~~bsplpp~2~~CallsGraph proc~bsplpp~2 bsplpp bsplvb bsplvb proc~bsplpp~2->bsplvb