Name and part(s) of form

`[out1,...,outn] = fnbrk(f,part1,...,partm) `

fnbrk(f,interval)

fnbrk(pp,j)

fnbrk(f)

`[out1,...,outn] = fnbrk(f,part1,...,partm) `

returns the
part(s) of the form in `f`

specified by ```
part1,...,partn
```

(assuming that `n<=m`

). These are the parts used when
the form was put together, in `spmak`

or `ppmak`

or `rpmak`

or
`rsmak`

or `stmak`

, but also other parts
derived from these.

You only need to specify the beginning character(s) of the relevant character vector.

Regardless of what particular form `f`

is in, `parti`

can
be one of the following.

| The particular form used |

| The dimension of the function's domain |

| The dimension of the function's target |

| The coefficients in that particular form |

| The basic interval of that form |

Depending on the form in `f`

, additional parts
may be asked for.

If `f`

is in B-form (or BBform or rBform),
then additional choices for `parti`

are

| The knot sequence |

| The B-spline coefficients |

| The number of coefficients |

| The polynomial order of the spline |

If `f`

is in ppform (or rpform), then additional
choices for `parti`

are

| The break sequence |

| The local polynomial coefficients |

| The number of polynomial pieces |

| The polynomial order of the spline |

| The local polynomial coefficients, but in the form needed
for |

If the function in `f`

is multivariate, then
the corresponding multivariate parts are returned. This means, e.g.,
that knots, breaks, and the basic interval, are cell arrays, the coefficient
array is, in general, higher than two-dimensional, and order, number
and pieces are vectors.

If `f`

is in stform, then additional choices
for `parti`

are

| The centers |

| The coefficients |

| Number of coefficients or terms |

| The particular type |

`fnbrk(f,interval) `

with `interval`

a
1-by-2 matrix `[a b]`

with `a<b`

does
not return a particular part. Rather, it returns a description of
the univariate function described by `f`

and in the
same form but with the basic interval changed, to the interval given.
If, instead, `interval`

is `[ ]`

, `f`

is
returned unchanged. This is of particular help when the function in `f`

is *m*-variate,
in which case `interval`

must be a cell array with *m* entries,
with the *i*th entry specifying the desired interval
in the *i*th dimension. If that *i*th
entry is `[ ]`

, the basic interval in the *i*th
dimension is unchanged.

`fnbrk(pp,j)`

, with `pp`

the
ppform of a univariate function and `j`

a positive
integer, does not return a particular part, but returns the ppform
of the `j`

th polynomial piece of the function in `pp`

.
If `pp`

is the ppform of an *m*-variate
function, then `j`

must be a cell array of length *m*.
In that case, each entry of `j`

must be a positive
integer or else an interval, to single out a particular polynomial
piece or else to specify the basic interval in that dimension.

`fnbrk(f)`

returns nothing,
but a description of the various parts of the form is printed at the
command line instead.

If `p1`

and `p2`

contain the
B-form of two splines of the same order, with the same knot sequence,
and the same target dimension, then

p1plusp2 = spmak(fnbrk(p1,'k'),fnbrk(p1,'c')+fnbrk(p2,'c'));

provides the (pointwise) sum of those two functions.

If `pp`

contains the ppform of a bivariate
spline with at least four polynomial pieces in the first variable,
then `ppp=fnbrk(pp,{4,[-1 1]})`

gives the spline
that agrees with the spline in `pp`

on the rectangle
[`b4`

.. `b5`

] x [`-`

1
.. 1] , where `b4`

, `b5`

are
the fourth and fifth entry in the break sequence for the first variable.