| Crates.io | irox-fixedmath |
| lib.rs | irox-fixedmath |
| version | 0.1.2 |
| created_at | 2024-09-29 17:49:12.222626+00 |
| updated_at | 2025-01-26 15:39:48.380175+00 |
| description | Fixed Precision Math Primitives |
| homepage | https://github.com/spmadden/irox |
| repository | https://github.com/spmadden/irox |
| max_upload_size | |
| id | 1391026 |
| size | 42,068 |
Fixed Precision Math Primitives
Wikipedia's article on 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/u16FixedI32 - Q15.16 - i16/u16
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/u32FixedI64 - Q31.32 - i32/u32
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]
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 aren't supported.