Crates.io | astro-float |

lib.rs | astro-float |

version | 0.9.4 |

source | src |

created_at | 2022-10-10 13:20:21.480186 |

updated_at | 2024-03-21 18:41:36.828951 |

description | Multiple precision floating-point numbers library. |

homepage | |

repository | https://github.com/stencillogic/astro-float |

max_upload_size | |

id | 684640 |

size | 46,731 |

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.

Information about the latest changes is available in Release notes

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));
```

Benchmark can be found here: https://github.com/stencillogic/bigfloat-bench.

Issues regarding bugs or new features can be opened here: https://github.com/stencillogic/astro-float/issues

For more information please check CONTRIBUTING.md