6 releases (3 breaking)
0.4.0 | Mar 6, 2021 |
---|---|
0.3.0 | Jun 20, 2020 |
0.2.2 | May 12, 2019 |
0.2.1 | Apr 28, 2019 |
0.1.0 | Dec 6, 2018 |
#1146 in Algorithms
20,004 downloads per month
Used in 103 crates
(8 directly)
12KB
267 lines
Cauchy
Trait for real and complex numbers
lib.rs
:
Scalar trait for generic algorithm
Examples
Basic arithmetics with real/complex
use cauchy::Scalar;
fn add_int<A: Scalar>(a: A) -> A {
a + A::from(1).unwrap() // A::from is inhereted from num_traits::NumCast
}
fn add_float<A: Scalar>(a: A) -> A {
a + A::from(1.0).unwrap()
}
fn add_real<A: Scalar>(a: A) -> A::Real {
a.re() + A::real(1.0)
}
fn add_complex<A: Scalar>(a: A) -> A::Complex {
a.as_c() + A::complex(1.0, 1.0) // upcast to complex if real
}
Random number generation
use cauchy::Scalar;
use rand::prelude::*;
fn random_algorithm<A: Scalar>() {
let mut rng = StdRng::from_entropy();
let a = A::rand(&mut rng);
}
Dependencies
~0.5–1MB
~18K SLoC