#![cfg_attr(
any(feature = "std", feature = "libm"),
doc = r##"
// Animations can be composed and transformed in various ways
let anim3 = anim2
.lerp(pareen::circle().cos())
.scale_min_max(5.0, 10.0)
.backwards(1.0)
.squeeze(0.5..=1.0);
let anim4 = pareen::cubic(&[1.0, 2.0, 3.0, 4.0]) - anim3;
let value = anim4.eval(1.0);
assert_approx_eq!(value, 0.0);
"##
)]
#![no_std]
mod anim;
#[cfg(feature = "alloc")]
mod anim_box;
mod anim_with_dur;
mod arithmetic;
mod primitives;
pub mod stats;
#[cfg(all(feature = "easer", any(feature = "std", feature = "libm")))]
mod easer_combinators;
pub use anim::{cond, lerp, Anim, Fun};
#[cfg(feature = "alloc")]
pub use anim_box::AnimBox;
pub use anim_with_dur::{slice, AnimWithDur};
pub use primitives::{
circle, constant, cubic, cycle, fun, half_circle, id, prop, quadratic, quarter_circle,
};
pub use stats::{simple_linear_regression, simple_linear_regression_with_slope};
#[cfg(all(feature = "easer", any(feature = "std", feature = "libm")))]
pub use easer;
#[cfg(all(feature = "easer", any(feature = "std", feature = "libm")))]
pub use easer_combinators::{ease_in, ease_in_out, ease_out};