use oxinum_float::DBig;
pub fn pi(precision: usize) -> DBig {
oxinum_float::compute_pi(precision)
}
pub fn e(precision: usize) -> DBig {
oxinum_float::compute_e(precision)
}
pub fn ln2(precision: usize) -> DBig {
oxinum_float::compute_ln2(precision)
}
pub fn sqrt2(precision: usize) -> DBig {
use std::str::FromStr;
let two = DBig::from_str("2.0").expect("valid literal");
oxinum_float::sqrt(&two, precision).expect("sqrt(2) always succeeds")
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn pi_value() {
assert!(pi(40).to_string().starts_with("3.14159265358979"));
}
#[test]
fn e_value() {
assert!(e(40).to_string().starts_with("2.71828182845904"));
}
#[test]
fn ln2_value() {
assert!(ln2(40).to_string().starts_with("0.69314718055994"));
}
#[test]
fn sqrt2_value() {
assert!(sqrt2(30).to_string().starts_with("1.41421356237"));
}
}