piecewise-linear 0.1.0

A library for manipulating piecewise linear functions
Documentation
[![Build Status](https://travis-ci.org/MattX/piecewise-linear.svg?branch=master)](https://travis-ci.org/MattX/piecewise-linear)
[![Apache 2 licensed](https://img.shields.io/github/license/MattX/piecewise-linear)](LICENSE)
[![piecewise-linear on Crates.io](https://img.shields.io/crates/v/piecewise-linear.svg)](https://crates.io/crates/piecewise-linear)

# piecewise-linear

[Documentation](https://mattx.github.io/piecewise-linear/doc/piecewise_linear/), [view on GitHub](https://github.com/MattX/piecewise-linear).

*This crate is beta quality, please [report any issues you encounter](https://github.com/MattX/piecewise-linear/issues).*

## Piecewise linear function manipulation utilities

This crate provides utilities to manipulate continuous 
[piecewise linear functions](https://en.wikipedia.org/wiki/Piecewise_linear_function).
These are functions whose graph is made up of straight-line sections:

<img src="https://upload.wikimedia.org/wikipedia/commons/7/7c/Piecewise_linear_function.svg" alt="A piecewise linear function" width="25%">

It uses [geo](https://github.com/georust/geo) for geometric primitives and types.

### Usage example

```rust
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](https://mattx.github.io/piecewise-linear/doc/piecewise_linear/)
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.