2 unstable releases
0.2.0 | Sep 19, 2023 |
---|---|
0.1.0 | Aug 18, 2019 |
#971 in Math
35KB
616 lines
piecewise-linear
Documentation, view on GitHub.
This crate is beta quality, please report any issues you encounter.
Piecewise linear function manipulation utilities
This crate provides utilities to manipulate continuous piecewise linear functions. These are functions whose graph is made up of straight-line sections:
It uses geo for geometric primitives and types.
Usage example
let f = PiecewiseLinearFunction::try_from(vec![(0., 0.), (1., 1.), (2., 1.5)]).unwrap();
assert_eq!(f.y_at_x(1.25), Some(1.125));
Features
- Efficient iterator over inflection points of n functions
- Shrink and expand function domain
- Sum
- Max
- Numerical integration
- Negation
Various convenience features are also implemented. See the documentation for more details. Pull requests for other features are very welcome!
Other things to be done
- Improve CI with clippy and fmt
- Benchmarks
- Add links in rustdoc
- More tests
Contributing
Feel free to open issues and pull requests! Documentation improvements are appreciated. Please fully document new public features and provide a unit testing suite for any new code.
License
Licensed under the Apache-2.0 license. See the LICENSE file for details.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be licensed as above, without any additional terms or conditions.
Dependencies
~5MB
~80K SLoC