1#![doc = include_str!("../README.md")]
2#![no_std]
8#![deny(clippy::unwrap_used)]
9#![deny(clippy::expect_used)]
10#![deny(clippy::panic)]
11#![deny(
13 missing_copy_implementations,
14 missing_debug_implementations,
15 trivial_casts,
16 trivial_numeric_casts,
17 unused_must_use,
18 unused_extern_crates,
19 unused_import_braces,
20 unused_qualifications,
21 unused_results
22)]
23#![warn(unused_results)]
24#![warn(clippy::pedantic)]
25#![warn(clippy::doc_paragraphs_missing_punctuation)]
26
27#[cfg(all(not(feature = "std"), not(feature = "libm")))]
28compile_error!("signal-filters requires either the `std` or `libm` feature to provide a MulAdd trait in num-traits.");
29
30mod biquad_filter;
31mod circular_buffer;
32mod filters;
33mod median_filter;
34mod moving_average_filter;
35mod pt_filters;
36mod rolling_buffer;
37mod slew_filter;
38
39pub use biquad_filter::BiquadFilter;
40pub use biquad_filter::{BiquadFilterVector2f32, BiquadFilterVector3f32, BiquadFilterVector4f32, BiquadFilterf32};
41pub use biquad_filter::{BiquadFilterVector2f64, BiquadFilterVector3f64, BiquadFilterVector4f64, BiquadFilterf64};
42
43pub use circular_buffer::CircularBuffer;
44
45pub use filters::{SignalFilter, UpdateFilter};
46
47pub use median_filter::{MedianFilter3, MedianFilter5};
48pub use median_filter::{MedianFilter3f32, MedianFilter5f32};
49pub use median_filter::{MedianFilter3f64, MedianFilter5f64};
50
51pub use moving_average_filter::MovingAverageFilter;
52pub use moving_average_filter::{
53 MovingAverageFilterVector2f32, MovingAverageFilterVector3f32, MovingAverageFilterVector4f32, MovingAverageFilterf32,
54};
55pub use moving_average_filter::{
56 MovingAverageFilterVector2f64, MovingAverageFilterVector3f64, MovingAverageFilterVector4f64, MovingAverageFilterf64,
57};
58
59pub use pt_filters::{Pt1Filter, Pt1Filterf32, Pt1Filterf64};
60pub use pt_filters::{Pt1FilterVector2Vector2f32, Pt1FilterVector3Vector3f32, Pt1FilterVector4Vector4f32};
61pub use pt_filters::{Pt1FilterVector2Vector2f64, Pt1FilterVector3Vector3f64, Pt1FilterVector4Vector4f64};
62pub use pt_filters::{Pt1FilterVector2f32, Pt1FilterVector3f32, Pt1FilterVector4f32};
63pub use pt_filters::{Pt1FilterVector2f64, Pt1FilterVector3f64, Pt1FilterVector4f64};
64
65pub use pt_filters::{Pt2Filter, Pt2Filterf32, Pt2Filterf64};
66pub use pt_filters::{Pt2FilterVector2Vector2f32, Pt2FilterVector3Vector3f32, Pt2FilterVector4Vector4f32};
67pub use pt_filters::{Pt2FilterVector2Vector2f64, Pt2FilterVector3Vector3f64, Pt2FilterVector4Vector4f64};
68pub use pt_filters::{Pt2FilterVector2f32, Pt2FilterVector3f32, Pt2FilterVector4f32};
69pub use pt_filters::{Pt2FilterVector2f64, Pt2FilterVector3f64, Pt2FilterVector4f64};
70
71pub use pt_filters::{Pt3Filter, Pt3Filterf32, Pt3Filterf64};
72pub use pt_filters::{Pt3FilterVector2Vector2f32, Pt3FilterVector3Vector3f32, Pt3FilterVector4Vector4f32};
73pub use pt_filters::{Pt3FilterVector2Vector2f64, Pt3FilterVector3Vector3f64, Pt3FilterVector4Vector4f64};
74pub use pt_filters::{Pt3FilterVector2f32, Pt3FilterVector3f32, Pt3FilterVector4f32};
75pub use pt_filters::{Pt3FilterVector2f64, Pt3FilterVector3f64, Pt3FilterVector4f64};
76
77pub use rolling_buffer::RollingBuffer;
78
79pub use slew_filter::{LimitSlew, SlewRateLimiter, SlewRateLimiterf32, SlewRateLimiterf64};