inari 0.9.10

A Rust implementation of interval arithmetic
Documentation
# 🦊 inari

[![crates.io](https://img.shields.io/crates/v/inari.svg)](https://crates.io/crates/inari)
[![docs](https://docs.rs/inari/badge.svg)](https://docs.rs/inari)
[![build](https://img.shields.io/github/workflow/status/unageek/inari/build/master)](https://github.com/unageek/inari/actions?query=branch%3Amaster+workflow%3Abuild)
[![coverage](https://img.shields.io/coveralls/github/unageek/inari/master)](https://coveralls.io/github/unageek/inari?branch=master)

A Rust implementation of [interval arithmetic](https://en.wikipedia.org/wiki/Interval_arithmetic).

## Requirements

### Rust version

A recent version of the nightly toolchain is required since some unstable features ([asm](https://github.com/rust-lang/rust/issues/72016), [stdsimd](https://github.com/rust-lang/rust/issues/48556)) are used in the crate. You need to specify the toolchain by, for example, the [toolchain file](https://rust-lang.github.io/rustup/overrides.html#the-toolchain-file) in your crate (see [example](https://github.com/unageek/graphest/blob/master/rust/rust-toolchain).

### Target CPU

- x86-64

  Haswell-based and newer processors are supported.

  You need to specify the target CPU when building a crate that depends on inari. One way to do that is to add a [configuration file]https://doc.rust-lang.org/cargo/reference/config.html to the consuming crate (see [example]https://github.com/unageek/graphest/blob/master/rust/.cargo/config.toml; you may want to change `native` to `haswell` for maximum compatibility if you are going to distribute your binary).

- AArch64 (a.k.a. ARM64)

  Experimental, it is not tested continuously.

## Conditional features

- `gmp` (enabled by default) - Enables operations that depend on GMP and MPFR, namely, transcendental functions and conversion between texts and intervals. You can opt-out the feature to reduce dependencies. Even in that case, you still have access to all arithmetic operations that are required for writing filters for robust geometric predicates.

## Related projects

- [Graphest]https://github.com/unageek/graphest - a faithful graphing calculator

## [Changelog]CHANGELOG.md

## TODO

- Improve conformance to the standard
- More formatting options
  - https://octave.sourceforge.io/interval/function/intervaltotext.html
  - https://docs.python.org/3/library/string.html#formatspec

## References

- IEEE Std 1788-2015 - IEEE Standard for Interval Arithmetic. https://doi.org/10.1109/IEEESTD.2015.7140721
- IEEE Std 1788.1-2017 - IEEE Standard for Interval Arithmetic (Simplified). https://doi.org/10.1109/IEEESTD.2018.8277144