#complex-numbers #complex #numeric

num-irrational

num-irrational is based on num and extends it with support for several kinds of irrational numbers

10 unstable releases (3 breaking)

0.3.0 Apr 15, 2022
0.3.0-alpha Apr 11, 2022
0.2.0 Apr 8, 2022
0.2.0-alpha Mar 3, 2022
0.0.3 Jan 18, 2022

#1947 in Math

38 downloads per month
Used in 2 crates

Apache-2.0

175KB
4K SLoC

num-irrational

This crate provides representations of irrational numbers within following categories:

  • Math constants (pi, e, etc.)
  • Quadratic Numbers
    • Quadratic irrational aka. Quadratic surd
    • Quadratic integer
    • Gaussian integer / Eisenstein integer
  • Continued Fraction
    • Simple (aka. Regular) continued fraction
    • General continued fraction
    • Hurwitz continued fraction

As you can see, the support for irrational number is not limited in the real field, it also support several numeric types in the complex field (by enabling the complex feature). It's based on the num creates.


lib.rs:

This crate provides representations of irrational numbers within following categories:

It's based on the num creates.

Examples

use num_irrational::{FromSqrt, QuadraticSurd};
let sq2 = QuadraticSurd::from_sqrt(2i32).unwrap();
println!("Square root of 2: {}", sq2); // √2

use num_irrational::Computable;
let sq2_approx = sq2.approximated(&100).value();
println!("Rational approximation with denominator under 100: {}", sq2_approx); // 99/70

use core::convert::TryFrom;
use num_irrational::ContinuedFraction;
// let sq2_fraction = ContinuedFraction::from(sq2); // only if feature `complex` is disabled
let sq2_fraction = ContinuedFraction::try_from(sq2).unwrap();
println!("Continued Fraction: {}", sq2_fraction); // [1; (2)]

Optional Features

  • complex: Enable negative square root base support for [QuadraticSurd]. Note that this flag might change some behavior of the operators on [QuadraticSurd].
  • num-complex: Enable converting [QuadraticSurd] to num_complex::Complex. You probably want to enable the complex feature at the same time.
  • num-bigint: Enable using big integers as the internal representation.

Dependencies

~620KB
~14K SLoC