BSCPP
Converts a spline in B-spline representation to piecewise polynomial representation.
Required Arguments
KORDER — Order of the spline. (Input)
XKNOT — Array of length KORDER + NCOEF containing the knot sequence. (Input)
XKNOT must be nondecreasing.
NCOEF — Number of B-spline coefficients. (Input)
BSCOEF — Array of length NCOEF containing the B-spline coefficients. (Input)
NPPCF — Number of piecewise polynomial pieces. (Output)
NPPCF is always less than or equal to NCOEF KORDER + 1.
BREAK — Array of length (NPPCF + 1) containing the breakpoints of the piecewise polynomial representation. (Output)
BREAK must be dimensioned at least NCOEF KORDER + 2.
PPCOEF — Array of length KORDER * NPPCF containing the local coefficients of the polynomial pieces. (Output)
PPCOEF is treated internally as a matrix of size KORDER by NPPCF.
FORTRAN 90 Interface
Generic: CALL BSCPP (KORDER, XKNOT, NCOEF, BSCOEF, NPPCF, BREAK, PPCOEF)
Specific: The specific interface names are S_BSCPP and D_BSCPP.
FORTRAN 77 Interface
Single: CALL BSCPP (KORDER, XKNOT, NCOEF, BSCOEF, NPPCF, BREAK, PPCOEF)
Double: The double precision name is DBSCPP.
Description
The routine BSCPP is based on the routine BSPLPP by de Boor (1978, page 140). This routine is used to convert a spline in B-spline representation to a piecewise polynomial (pp) representation which can then be evaluated more efficiently. There is some overhead in converting from the
B-spline representation to the pp representation, but the conversion to pp form is recommended when 3 or more function values are needed per polynomial piece.
Comments
1. Workspace may be explicitly provided, if desired, by use of B2CPP/DB2CPP. The reference is:
CALL B2CPP (KORDER, XKNOT, NCOEF, BSCOEFF, NPPCF, BREAK, PPCOEF, WK)
The additional argument is
WK — Work array of length (KORDER + 3) * KORDER.
2. Informational errors
Type
Code
Description
4
4
Multiplicity of the knots cannot exceed the order of the spline.
4
5
The knots must be nondecreasing.
Example
For an example of the use of BSCPP, see PPDER.