#numeric

fixed-exp2

Exponentiation for fixed-point numbers (forked, see README)

1 unstable release

new 0.2.0 Jan 11, 2025

#376 in Math

Download history 132/week @ 2025-01-06

132 downloads per month
Used in easing-fixed

MIT/Apache

18KB
348 lines

fixed-exp

crates.io docs.rs

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 to core::cmp to facilitate no_std compatibility
  • fixed broke semver by adding is_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 by powf) to not use a greedy accumulator that would very quickly overflow (e.g. for 2**9 in I16F16). The new algorithm is slower, so the old behavior is preserved under the fast-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