************80
! BSPP2D converts from B-spline to piecewise polynomial representation.
Discussion:
The B-spline representation
T, BCOEF(.,J), N, K
is converted to its piecewise polynomial representation
BREAK, COEF(J,.,.), L, K, J=1, ..., M.
This is an extended version of BSPLPP for use with tensor products.
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 endpoint 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,M). For each J, B(*,J) is the
B-spline coefficient sequence, of length N.
Input, integer ( kind = 4 ) N, the length of BCOEF.
Input, integer ( kind = 4 ) K, the order of the spline.
Input, integer ( kind = 4 ) M, the number of data sets.
Work array, real ( kind = 8 ) SCRTCH(K,K,M).
Output, real ( kind = 8 ) BREAK(L+1), the breakpoint sequence
containing the distinct points in the sequence T(K),...,T(N+1)
Output, real ( kind = 8 ) COEF(M,K,N), with COEF(MM,I,J) = the (I-1)st
derivative of the MM-th spline at BREAK(J) from the right, MM=1, ..., M.
Output, integer ( kind = 4 ) L, the number of polynomial pieces which
make up the spline in the interval (T(K), T(N+1)).
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=8) | :: | t(n+k) | ||||
real(kind=8) | :: | bcoef(n,m) | ||||
integer(kind=4) | :: | n | ||||
integer(kind=4) | :: | k | ||||
integer(kind=4) | :: | m | ||||
real(kind=8) | :: | scrtch(k,k,m) | ||||
real(kind=8) | :: | break(*) | ||||
real(kind=8) | :: | coef(m,k,*) | ||||
integer(kind=4) | :: | l |