This document contains all changes to the crate since version 0.1.8.
- Add Gauss-Chebyshev quadrature of the first and second kinds.
- Add the
rayon
feature that enables certain calculations to be done in parallel. - Add the function
par_integrate
to every quadrature rule struct which can be used when therayon
feature is enabled to perform integration in parallel. - Add the function
par_new
toGaussLegendre
to initialize it in parallel. This function is also behind therayon
feature.
This update is mostly about changing the API to adhere to the Rust API guidelines.
- Changed the name of all constructors from
init
tonew
. - All constructors now return a
Result
that contains an error when the input is invalid, instead of panicking. Simplyunwrap()
it to recover the old behaviour. - The fields of the quadrature rule structs are now private to uphold the invariants needed for integration.
- A set of functions have been implemented that access the node and weight data of the quadrature rule structs in various ways.
- The
nodes_and_weights
functions have been removed. To achieve the same effect you can doQuadratureRule::new(...)?.into_node_weight_pairs()
if you wish to have aVec<(f64, f64)>
of nodes and their corresponding weights, or you can doQuadratureRule::new(...)?.into_iter().unzip()
if you wish to have the nodes and weights separate. - The crate no longer exports the
DMatrixf64
type alias. - The crate no longer re-exports the
core::f64::consts::PI
constant.
- Added the
serde
feature which implements theSerialize
andDeserialize
traits fromserde
for all quadrature rule structs. - The quadrature rule structs now store the nodes and weights together in a single allocation. This slightly speeds up integration, and removes one intermediate allocation during creation.
- Fixed a sign error in the documentation for
GaussJacobi
.
- Update
nalgebra
dependency to 0.33.0.