IROX-FIXEDMATH =========== *Fixed Precision Math Primitives* Wikipedia's article on [Fixed-point arithmetic](https://en.wikipedia.org/wiki/Fixed-point_arithmetic) All of the fractional components are scaled by the max value of the fractional size. Works acceptably well: * `FixedU32` - Q16.16 - `u16`/`u16` * `FixedI32` - Q15.16 - `i16`/`u16` * Each fractional value represents `1/u16::MAX` ~= `1.5259e-5` or `0.000_015_259`, or about `15.3 micro`, and can accurately represent SI-prefixes: `milli/1e-3` with no loss of accuracy. * `FixedU64` - Q32.32 - `u32`/`u32` * `FixedI64` - Q31.32 - `i32`/`u32` * Each fractional value represents `1/u32::MAX` ~= `2.328306e-10` or `0.000_000_000_238_306`, or about `238.3 pico`, and can accurately represent SI-prefixes `milli/1e-3`, `micro/1e-6`, and `nano/1e-9` with no loss of accuracy. Beta quality/Some known issues: * `FixedU128` - Q64.64 - `u64`/`u64` [1] * `FixedI128` - Q63.64 - `i64`/`u64` [1] * Each fractional value represents `1/u64::MAX`] ~= `5.4210e-20` or `0.000_000_000_000_000_000_054_210`, or about `54.2 zepto`, and can accurately represent SI-prefixes `milli/1e-3`, `micro/1e-6`, `nano/1e-9`, `pico/1e-12`, `femto/1e-15`, and `atto/1e-18` with no loss of accuracy. [1]: Multiplication doesn't roll over properly, so [`FloatExt`](https://docs.rs/irox-tools/latest/irox_tools/f64/trait.FloatExt.html) aren't supported. ### No-STD support: * Fully No-STD, No-Alloc ### Cargo Features: * None