bspp2d Subroutine

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

************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)).

Arguments

Type IntentOptional 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

Calls

proc~~bspp2d~2~~CallsGraph proc~bspp2d~2 bspp2d bsplvb bsplvb proc~bspp2d~2->bsplvb