Class for 1d b-spline interpolation.
Note
The 1D class also contains methods for computing definite integrals, roots, the minimum and maximum, and the control points.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| integer(kind=ip), | private | :: | nx | = | 0_ip |
Number of abcissae |
|
| integer(kind=ip), | private | :: | kx | = | 0_ip |
The order of spline pieces in |
|
| real(kind=wp), | private, | dimension(:,:), allocatable | :: | bcoef |
array of coefficients of the b-spline interpolant (the last dimension is the output index) |
||
| real(kind=wp), | private, | dimension(:), allocatable | :: | tx |
The knots in the direction for the spline interpolant |
||
| real(kind=wp), | private, | dimension(:), allocatable | :: | work_val_1 |
[[db1val] work array of dimension |
Constructor for bspline_1d
It returns an empty bspline_1d type. Note that INITIALIZE still needs to be called before it can be used. Not really that useful except perhaps in some OpenMP applications.
Constructor for a bspline_1d type (auto knots). This is a wrapper for initialize_1d_auto_knots.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=wp), | intent(in), | dimension(:) | :: | x |
|
|
| real(kind=wp), | intent(in), | dimension(:) | :: | fcn |
|
|
| integer(kind=ip), | intent(in) | :: | kx |
The order of spline pieces in ( ) (order = polynomial degree + 1) |
||
| logical, | intent(in), | optional | :: | extrap |
if true, then extrapolation is allowed (default is false) |
Constructor for a bspline_1d type (user-specified knots). This is a wrapper for initialize_1d_specify_knots.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=wp), | intent(in), | dimension(:) | :: | x |
|
|
| real(kind=wp), | intent(in), | dimension(:) | :: | fcn |
|
|
| integer(kind=ip), | intent(in) | :: | kx |
The order of spline pieces in ( ) (order = polynomial degree + 1) |
||
| real(kind=wp), | intent(in), | dimension(:) | :: | tx |
The |
|
| logical, | intent(in), | optional | :: | extrap |
if true, then extrapolation is allowed (default is false) |
Finalizer for bspline_1d class. Just a wrapper for destroy_1d.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(bspline_1d), | intent(inout) | :: | me |
returns true if the last iflag status code was =0.
This routines returns true if the iflag code from the last
routine called was =0. Maybe of the routines have output iflag
variables, so they can be checked explicitly, or this routine
can be used.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(bspline_class), | intent(in) | :: | me |
retrieve the last status message
Get the status message from a bspline_class routine call.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(bspline_class), | intent(in) | :: | me | |||
| integer(kind=ip), | intent(in), | optional | :: | iflag |
the corresponding status code |
status message associated with the flag
to reset the iflag saved in the class.
This sets the iflag variable in the class to 0
(which indicates that everything is OK). It can be used
after an error is encountered.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(bspline_class), | intent(inout) | :: | me |
number of outputs (functions) of the spline
Returns the number of outputs (functions of the same inputs) of the
spline: 1 for a spline initialized with a single function, and nf
for one initialized with nf functions (the last dimension of fcn).
Returns 0 if the class is not initialized.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(bspline_class), | intent(in) | :: | me |
the spline |
number of outputs
Initialize a bspline_1d type (with automatically-computed knots). This is a wrapper for db1ink.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(bspline_1d), | intent(inout) | :: | me | |||
| real(kind=wp), | intent(in), | dimension(:) | :: | x |
|
|
| real(kind=wp), | intent(in), | dimension(:) | :: | fcn |
|
|
| integer(kind=ip), | intent(in) | :: | kx |
The order of spline pieces in ( ) (order = polynomial degree + 1) |
||
| integer(kind=ip), | intent(out) | :: | iflag |
status flag (see db1ink) |
||
| logical, | intent(in), | optional | :: | extrap |
if true, then extrapolation is allowed (default is false) |
Initialize a bspline_1d type (with user-specified knots). This is a wrapper for db1ink.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(bspline_1d), | intent(inout) | :: | me | |||
| real(kind=wp), | intent(in), | dimension(:) | :: | x |
|
|
| real(kind=wp), | intent(in), | dimension(:) | :: | fcn |
|
|
| integer(kind=ip), | intent(in) | :: | kx |
The order of spline pieces in ( ) (order = polynomial degree + 1) |
||
| real(kind=wp), | intent(in), | dimension(:) | :: | tx |
The |
|
| integer(kind=ip), | intent(out) | :: | iflag |
status flag (see db1ink) |
||
| logical, | intent(in), | optional | :: | extrap |
if true, then extrapolation is allowed (default is false) |
Initialize a bspline_1d type with multiple outputs: nf functions of
the same inputs, on the same grid.
The last dimension of fcn is the output index.
This is a wrapper for db1ink (multiple-output version).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(bspline_1d), | intent(inout) | :: | me |
the spline |
||
| real(kind=wp), | intent(in), | dimension(:) | :: | x |
|
|
| real(kind=wp), | intent(in), | dimension(:,:) | :: | fcn |
|
|
| integer(kind=ip), | intent(in) | :: | kx |
The order of spline pieces in |
||
| integer(kind=ip), | intent(out) | :: | iflag |
status flag (see db1ink) |
||
| logical, | intent(in), | optional | :: | extrap |
if true, then extrapolation is allowed (default is false) |
Initialize a bspline_1d type with multiple outputs: nf functions of
the same inputs, on the same grid (with user-specified knots).
The last dimension of fcn is the output index.
This is a wrapper for db1ink (multiple-output version).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(bspline_1d), | intent(inout) | :: | me |
the spline |
||
| real(kind=wp), | intent(in), | dimension(:) | :: | x |
|
|
| real(kind=wp), | intent(in), | dimension(:,:) | :: | fcn |
|
|
| integer(kind=ip), | intent(in) | :: | kx |
The order of spline pieces in |
||
| real(kind=wp), | intent(in), | dimension(:) | :: | tx |
The |
|
| integer(kind=ip), | intent(out) | :: | iflag |
status flag (see db1ink) |
||
| logical, | intent(in), | optional | :: | extrap |
if true, then extrapolation is allowed (default is false) |
Initialize a bspline_1d type with multiple outputs: nf functions of
the same inputs, on the same grid.
The last dimension of fcn is the output index.
This is a wrapper for db1ink (multiple-output version).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(bspline_1d), | intent(inout) | :: | me |
the spline |
||
| real(kind=wp), | intent(in), | dimension(:) | :: | x |
|
|
| real(kind=wp), | intent(in), | dimension(:,:) | :: | fcn |
|
|
| integer(kind=ip), | intent(in) | :: | kx |
The order of spline pieces in |
||
| integer(kind=ip), | intent(out) | :: | iflag |
status flag (see db1ink) |
||
| logical, | intent(in), | optional | :: | extrap |
if true, then extrapolation is allowed (default is false) |
Initialize a bspline_1d type with multiple outputs: nf functions of
the same inputs, on the same grid (with user-specified knots).
The last dimension of fcn is the output index.
This is a wrapper for db1ink (multiple-output version).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(bspline_1d), | intent(inout) | :: | me |
the spline |
||
| real(kind=wp), | intent(in), | dimension(:) | :: | x |
|
|
| real(kind=wp), | intent(in), | dimension(:,:) | :: | fcn |
|
|
| integer(kind=ip), | intent(in) | :: | kx |
The order of spline pieces in |
||
| real(kind=wp), | intent(in), | dimension(:) | :: | tx |
The |
|
| integer(kind=ip), | intent(out) | :: | iflag |
status flag (see db1ink) |
||
| logical, | intent(in), | optional | :: | extrap |
if true, then extrapolation is allowed (default is false) |
Initialize a bspline_1d type (with automatically-computed knots). This is a wrapper for db1ink.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(bspline_1d), | intent(inout) | :: | me | |||
| real(kind=wp), | intent(in), | dimension(:) | :: | x |
|
|
| real(kind=wp), | intent(in), | dimension(:) | :: | fcn |
|
|
| integer(kind=ip), | intent(in) | :: | kx |
The order of spline pieces in ( ) (order = polynomial degree + 1) |
||
| integer(kind=ip), | intent(out) | :: | iflag |
status flag (see db1ink) |
||
| logical, | intent(in), | optional | :: | extrap |
if true, then extrapolation is allowed (default is false) |
Initialize a bspline_1d type (with user-specified knots). This is a wrapper for db1ink.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(bspline_1d), | intent(inout) | :: | me | |||
| real(kind=wp), | intent(in), | dimension(:) | :: | x |
|
|
| real(kind=wp), | intent(in), | dimension(:) | :: | fcn |
|
|
| integer(kind=ip), | intent(in) | :: | kx |
The order of spline pieces in ( ) (order = polynomial degree + 1) |
||
| real(kind=wp), | intent(in), | dimension(:) | :: | tx |
The |
|
| integer(kind=ip), | intent(out) | :: | iflag |
status flag (see db1ink) |
||
| logical, | intent(in), | optional | :: | extrap |
if true, then extrapolation is allowed (default is false) |
Evaluate a bspline_1d interpolate. This is a wrapper for db1val.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(bspline_1d), | intent(inout) | :: | me | |||
| real(kind=wp), | intent(in) | :: | xval |
coordinate of evaluation point. |
||
| integer(kind=ip), | intent(in) | :: | idx |
derivative of piecewise polynomial to evaluate. |
||
| real(kind=wp), | intent(out) | :: | f |
interpolated value |
||
| integer(kind=ip), | intent(out) | :: | iflag |
status flag (see db1val) |
Evaluate all the outputs of a bspline_1d with multiple outputs. This is a wrapper for db1val (multiple-output version).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(bspline_1d), | intent(inout) | :: | me |
the spline |
||
| real(kind=wp), | intent(in) | :: | xval |
coordinate of evaluation point. |
||
| integer(kind=ip), | intent(in) | :: | idx |
derivative of piecewise polynomial to evaluate. |
||
| real(kind=wp), | intent(out), | dimension(:) | :: | f |
|
|
| integer(kind=ip), | intent(out) | :: | iflag |
status flag (see db1val) |
Evaluate a bspline_1d interpolate. This is a wrapper for db1val.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(bspline_1d), | intent(inout) | :: | me | |||
| real(kind=wp), | intent(in) | :: | xval |
coordinate of evaluation point. |
||
| integer(kind=ip), | intent(in) | :: | idx |
derivative of piecewise polynomial to evaluate. |
||
| real(kind=wp), | intent(out) | :: | f |
interpolated value |
||
| integer(kind=ip), | intent(out) | :: | iflag |
status flag (see db1val) |
Evaluate all the outputs of a bspline_1d with multiple outputs. This is a wrapper for db1val (multiple-output version).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(bspline_1d), | intent(inout) | :: | me |
the spline |
||
| real(kind=wp), | intent(in) | :: | xval |
coordinate of evaluation point. |
||
| integer(kind=ip), | intent(in) | :: | idx |
derivative of piecewise polynomial to evaluate. |
||
| real(kind=wp), | intent(out), | dimension(:) | :: | f |
|
|
| integer(kind=ip), | intent(out) | :: | iflag |
status flag (see db1val) |
Destructor for bspline_1d class.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(bspline_1d), | intent(inout) | :: | me |
Actual size of a bspline_1d structure in bits.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(bspline_1d), | intent(in) | :: | me |
size of the structure in bits
Initialize a bspline_1d type directly from its knots and b-spline
coefficients (for example, those saved from another object with
get_knots and get_coefficients), without interpolating any data.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(bspline_1d), | intent(inout) | :: | me |
the spline |
||
| real(kind=wp), | intent(in), | dimension(:) | :: | tx |
The |
|
| real(kind=wp), | intent(in), | dimension(:) | :: | bcoef |
|
|
| integer(kind=ip), | intent(in) | :: | kx |
The order of spline pieces in ( ) (order = polynomial degree + 1) |
||
| integer(kind=ip), | intent(out) | :: | iflag |
status flag: |
||
| logical, | intent(in), | optional | :: | extrap |
if true, then extrapolation is allowed (default is false) |
Initialize a bspline_1d type with multiple outputs directly from its
knots and b-spline coefficients. The last dimension of bcoef is the
output index.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(bspline_1d), | intent(inout) | :: | me |
the spline |
||
| real(kind=wp), | intent(in), | dimension(:) | :: | tx |
The |
|
| real(kind=wp), | intent(in), | dimension(:,:) | :: | bcoef |
|
|
| integer(kind=ip), | intent(in) | :: | kx |
The order of spline pieces in |
||
| integer(kind=ip), | intent(out) | :: | iflag |
status flag (see initialize_from_coefficients_1d),
or 6005 if |
||
| logical, | intent(in), | optional | :: | extrap |
if true, then extrapolation is allowed (default is false) |
Initialize a bspline_1d type directly from its knots and b-spline
coefficients (for example, those saved from another object with
get_knots and get_coefficients), without interpolating any data.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(bspline_1d), | intent(inout) | :: | me |
the spline |
||
| real(kind=wp), | intent(in), | dimension(:) | :: | tx |
The |
|
| real(kind=wp), | intent(in), | dimension(:) | :: | bcoef |
|
|
| integer(kind=ip), | intent(in) | :: | kx |
The order of spline pieces in ( ) (order = polynomial degree + 1) |
||
| integer(kind=ip), | intent(out) | :: | iflag |
status flag: |
||
| logical, | intent(in), | optional | :: | extrap |
if true, then extrapolation is allowed (default is false) |
Initialize a bspline_1d type with multiple outputs directly from its
knots and b-spline coefficients. The last dimension of bcoef is the
output index.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(bspline_1d), | intent(inout) | :: | me |
the spline |
||
| real(kind=wp), | intent(in), | dimension(:) | :: | tx |
The |
|
| real(kind=wp), | intent(in), | dimension(:,:) | :: | bcoef |
|
|
| integer(kind=ip), | intent(in) | :: | kx |
The order of spline pieces in |
||
| integer(kind=ip), | intent(out) | :: | iflag |
status flag (see initialize_from_coefficients_1d),
or 6005 if |
||
| logical, | intent(in), | optional | :: | extrap |
if true, then extrapolation is allowed (default is false) |
Returns the knot vectors of a bspline_1d.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(bspline_1d), | intent(inout) | :: | me |
the spline |
||
| real(kind=wp), | intent(out), | dimension(:), allocatable | :: | tx |
the |
|
| integer(kind=ip), | intent(out) | :: | iflag |
status flag: 0 if no errors, 1 if the class is not initialized |
Returns the b-spline coefficients of a bspline_1d. These are the values of the control points (see greville_abscissae for their locations).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(bspline_1d), | intent(inout) | :: | me |
the spline |
||
| real(kind=wp), | intent(out), | dimension(:), allocatable | :: | bcoef |
|
|
| integer(kind=ip), | intent(out) | :: | iflag |
status flag: 0 if no errors, 1 if the class is not initialized |
Returns the b-spline coefficients of a bspline_1d with any number of
outputs. The last dimension of bcoef is the output index.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(bspline_1d), | intent(inout) | :: | me |
the spline |
||
| real(kind=wp), | intent(out), | dimension(:,:), allocatable | :: | bcoef |
|
|
| integer(kind=ip), | intent(out) | :: | iflag |
status flag: 0 if no errors, 1 if the class is not initialized |
Returns the b-spline coefficients of a bspline_1d. These are the values of the control points (see greville_abscissae for their locations).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(bspline_1d), | intent(inout) | :: | me |
the spline |
||
| real(kind=wp), | intent(out), | dimension(:), allocatable | :: | bcoef |
|
|
| integer(kind=ip), | intent(out) | :: | iflag |
status flag: 0 if no errors, 1 if the class is not initialized |
Returns the b-spline coefficients of a bspline_1d with any number of
outputs. The last dimension of bcoef is the output index.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(bspline_1d), | intent(inout) | :: | me |
the spline |
||
| real(kind=wp), | intent(out), | dimension(:,:), allocatable | :: | bcoef |
|
|
| integer(kind=ip), | intent(out) | :: | iflag |
status flag: 0 if no errors, 1 if the class is not initialized |
The control points of a bspline_1d: the Greville abscissae (see greville_abscissae) and the b-spline coefficients.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(bspline_1d), | intent(inout) | :: | me | |||
| real(kind=wp), | intent(out), | dimension(:), allocatable | :: | x |
|
|
| real(kind=wp), | intent(out), | dimension(:), allocatable | :: | y |
|
|
| integer(kind=ip), | intent(out) | :: | iflag |
status flag: 0 if no errors, 1 if the class is not initialized |
Evaluate a bspline_1d definite integral. This is a wrapper for db1sqad.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(bspline_1d), | intent(inout) | :: | me | |||
| real(kind=wp), | intent(in) | :: | x1 |
left point of interval |
||
| real(kind=wp), | intent(in) | :: | x2 |
right point of interval |
||
| real(kind=wp), | intent(out) | :: | f |
integral of the b-spline over |
||
| integer(kind=ip), | intent(out) | :: | iflag |
status flag (see db1sqad) |
Evaluate a bspline_1d definite integral. This is a wrapper for db1fqad.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(bspline_1d), | intent(inout) | :: | me | |||
| procedure(b1fqad_func) | :: | fun |
external function of one argument for the
integrand |
|||
| integer(kind=ip), | intent(in) | :: | idx |
order of the spline derivative, |
||
| real(kind=wp), | intent(in) | :: | x1 |
left point of interval |
||
| real(kind=wp), | intent(in) | :: | x2 |
right point of interval |
||
| real(kind=wp), | intent(in) | :: | tol |
desired accuracy for the quadrature |
||
| real(kind=wp), | intent(out) | :: | f |
integral of |
||
| integer(kind=ip), | intent(out) | :: | iflag |
status flag (see db1sqad) |
All the roots of for a bspline_1d. This is a wrapper for db1root.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(bspline_1d), | intent(inout) | :: | me |
the spline |
||
| real(kind=wp), | intent(in) | :: | a |
the value to solve for |
||
| real(kind=wp), | intent(out), | dimension(:), allocatable | :: | x |
the roots, in increasing order (size 0 if there are none) |
|
| integer(kind=ip), | intent(out) | :: | iflag |
status flag (see db1root) |
The unique with for a bspline_1d (for example, a monotonic spline). This is a wrapper for db1root.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(bspline_1d), | intent(inout) | :: | me |
the spline |
||
| real(kind=wp), | intent(in) | :: | y |
the spline value |
||
| real(kind=wp), | intent(out) | :: | x |
the solution of |
||
| integer(kind=ip), | intent(out) | :: | iflag |
status flag (see db1root) |
The global minimum of a bspline_1d on
(the whole spline domain if xa and xb are not present).
This is a wrapper for db1min.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(bspline_1d), | intent(inout) | :: | me |
the spline |
||
| real(kind=wp), | intent(out) | :: | xmin |
location of the minimum |
||
| real(kind=wp), | intent(out) | :: | fmin |
minimum value |
||
| integer(kind=ip), | intent(out) | :: | iflag |
status flag (see db1min) |
||
| real(kind=wp), | intent(in), | optional | :: | xa |
left end of the interval (default |
|
| real(kind=wp), | intent(in), | optional | :: | xb |
right end of the interval (default |
The global maximum of a bspline_1d on
(the whole spline domain if xa and xb are not present).
This is a wrapper for db1max.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(bspline_1d), | intent(inout) | :: | me |
the spline |
||
| real(kind=wp), | intent(out) | :: | xmax |
location of the maximum |
||
| real(kind=wp), | intent(out) | :: | fmax |
maximum value |
||
| integer(kind=ip), | intent(out) | :: | iflag |
status flag (see db1max) |
||
| real(kind=wp), | intent(in), | optional | :: | xa |
left end of the interval (default |
|
| real(kind=wp), | intent(in), | optional | :: | xb |
right end of the interval (default |
type,extends(bspline_class),public :: bspline_1d !! Class for 1d b-spline interpolation. !! !!@note The 1D class also contains methods for computing !! definite integrals, roots, the minimum and maximum, !! and the control points. private integer(ip) :: nx = 0_ip !! Number of \(x\) abcissae integer(ip) :: kx = 0_ip !! The order of spline pieces in \(x\) real(wp),dimension(:,:),allocatable :: bcoef !! array of coefficients of the b-spline interpolant !! (the last dimension is the output index) real(wp),dimension(:),allocatable :: tx !! The knots in the \(x\) direction for the spline interpolant real(wp),dimension(:),allocatable :: work_val_1 !! [[db1val] work array of dimension `3*kx` contains private generic,public :: initialize => initialize_1d_auto_knots,initialize_1d_specify_knots,& initialize_1d_auto_knots_multi,initialize_1d_specify_knots_multi procedure :: initialize_1d_auto_knots_multi procedure :: initialize_1d_specify_knots_multi procedure :: initialize_1d_auto_knots procedure :: initialize_1d_specify_knots generic,public :: evaluate => evaluate_1d, evaluate_1d_multi procedure :: evaluate_1d procedure :: evaluate_1d_multi procedure,public :: destroy => destroy_1d procedure,public :: size_of => size_1d generic,public :: initialize_from_coefficients => initialize_from_coefficients_1d,& initialize_from_coefficients_1d_multi procedure :: initialize_from_coefficients_1d procedure :: initialize_from_coefficients_1d_multi procedure,public :: get_knots => get_knots_1d generic,public :: get_coefficients => get_coefficients_1d, get_coefficients_1d_multi procedure :: get_coefficients_1d procedure :: get_coefficients_1d_multi procedure,public :: control_points => control_points_1d procedure,public :: integral => integral_1d procedure,public :: fintegral => fintegral_1d procedure,public :: roots => roots_1d procedure,public :: inverse => inverse_1d procedure,public :: minimum => minimum_1d procedure,public :: maximum => maximum_1d final :: finalize_1d end type bspline_1d