1 unstable release
new 0.2.0 | Jan 11, 2025 |
---|
#376 in Math
132 downloads per month
Used in easing-fixed
18KB
348 lines
fixed-exp
Exponentiation for fixed-point numbers. This is a manual fork of the original repository, which has vanished.
[dependencies]
fixed-exp = { git = "https://github.com/spookyvision/fixed-exp" }
Changes to the original
- changed
std::cmp
imports tocore::cmp
to facilitateno_std
compatibility fixed
broke semver by addingis_zero()
. Removed from this crate.- removed crash by added special handling to
powf
where the integer part of the exponent is zero - rewrote
powi
(which is used bypowf
) to not use a greedy accumulator that would very quickly overflow (e.g. for2**9
inI16F16
). The new algorithm is slower, so the old behavior is preserved under thefast-powi
feature flag.
Usage
This crate provides powi
and powf
for most fixed
number types through the FixedPowI
and FixedPowF
extension traits:
use fixed::types::I32F32;
use fixed_exp::{FixedPowI, FixedPowF};
let x = I32F32::from_num(4.0);
assert_eq!(I32F32::from_num(1024.0), x.powi(5));
assert_eq!(I32F32::from_num(8.0), x.powf(I32F32::from_num(1.5)));
License
Licensed under either of Apache License, Version 2.0 or MIT license at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this crate by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Dependencies
~2.5MB
~47K SLoC