8 stable releases
new 2.5.0 | Feb 11, 2025 |
---|---|
2.4.0 | Feb 10, 2025 |
2.3.0 | Aug 12, 2023 |
2.2.0 | Jun 24, 2022 |
1.0.0 | Mar 31, 2021 |
#355 in Algorithms
233 downloads per month
Used in 2 crates
(via disktest-lib)
34KB
580 lines
movavg - Generic Moving Average calculation
Generic Moving Average calculation for the integer types.
- i8, i16, i32, i64, i128, isize
- u8, u16, u32, u64, u128, usize
and float types
- f32, f64
Example Cargo.toml dependencies
Add this to your Cargo.toml:
[dependencies]
movavg = "2"
Example usage
// Integers
let mut avg: MovAvg<i32, i32, 3> = MovAvg::new(); // window size = 3
assert_eq!(avg.feed(10), 10);
assert_eq!(avg.feed(20), 15);
assert_eq!(avg.feed(30), 20);
assert_eq!(avg.feed(40), 30);
assert_eq!(avg.get(), 30);
// Floats
let mut avg: MovAvg<f64, f64, 3> = MovAvg::new();
assert_eq!(avg.feed(10.0), 10.0);
assert_eq!(avg.feed(20.0), 15.0);
assert_eq!(avg.feed(30.0), 20.0);
assert_eq!(avg.feed(40.0), 30.0);
assert_eq!(avg.get(), 30.0);
// Bigger accumulator
let mut avg: MovAvg<i8, i32, 3> = MovAvg::new();
assert_eq!(avg.feed(100), 100);
assert_eq!(avg.feed(100), 100); // This would overflow an i8 accumulator
Cargo Feature selections
no_std
If you want to use movavg without the std
library (often called no_std
), then use the following Cargo.toml dependency to disable the std
feature:
[dependencies]
movavg = { version = "2", default-features = false }
Currently the no_std
variant supports all functionality that the default std
variant supports. But that may change in future.
fastfloat
The fastfloat
feature can be used to enable much faster, but less accurate floating point calculations. Enabling this feature leads to bigger floating point rounding and cancellation errors.
[dependencies]
movavg = { version = "2", features = ["fastfloat"] }
This feature may also be used together with disabled std
feature (see no_std
).
MSRV: Minimum supported Rust compiler version
Requires Rust compiler version 1.61 or later.
License
Copyright (c) 2021-2025 Michael Büsch m@bues.ch
Licensed under the Apache License version 2.0 or the MIT license, at your option.
Dependencies
~150KB