# fnbrk

Name and part(s) of form

## Syntax

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

fnbrk(f,interval)

fnbrk(pp,j)

fnbrk(f)

## Description

`[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 option.

Regardless of what particular form `f`

is in,
`parti`

can be one of the following, specified as a character
vector or string scalar.

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

## Examples

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.