19 releases
0.3.5 | Mar 21, 2024 |
---|---|
0.3.3 | Jan 5, 2024 |
0.3.2 | Dec 10, 2023 |
0.2.2 | Nov 28, 2023 |
0.1.5 | Mar 7, 2023 |
#1565 in Math
159 downloads per month
Used in 6 crates
(2 directly)
800KB
18K
SLoC
Astro-float (astronomically large floating-point numbers) is an arbitrary precision floating-point numbers library designed for performance, portability, and implemented purely in Rust.
The library implements the basic operations and functions. It uses classical algorithms such as Karatsuba, Toom-Cook, Schönhage-Strassen algorithm, and others.
The library can work without the standard library provided there is a memory allocator.
What's new
Information about the latest changes is available in Release notes
Usage
Below is an example of using the library. For more information please refer to the library documentation: https://docs.rs/astro-float/latest/astro_float/
Calculate Pi with 1024 bit precision rounded to the nearest even number.
use astro_float::Consts;
use astro_float::RoundingMode;
use astro_float::ctx::Context;
use astro_float::expr;
// Create a context with precision 1024, and rounding to even.
let mut ctx = Context::new(1024, RoundingMode::ToEven,
Consts::new().expect("Constants cache initialized"),
-10000, 10000);
// Compute pi: pi = 6*arctan(1/sqrt(3))
let pi = expr!(6 * atan(1 / sqrt(3)), &mut ctx);
// Use library's constant value for verifying the result.
let pi_lib = ctx.const_pi();
// Compare computed constant with library's constant
assert_eq!(pi.cmp(&pi_lib), Some(0));
Performance
Benchmark can be found here: https://github.com/stencillogic/bigfloat-bench.
Contributing
Issues regarding bugs or new features can be opened here: https://github.com/stencillogic/astro-float/issues
For more information please check CONTRIBUTING.md
Dependencies
~0.5–0.9MB
~17K SLoC