3个版本
0.0.2 | 2022年12月24日 |
---|---|
0.0.1 | 2022年3月10日 |
0.0.0 | 2022年2月2日 |
#575 in 数学
每月 39 次下载
用于 qukit
16KB
310 行
Const-trig
这个包存在是为了提供诸如 const
的函数版本,如 cos
,sin
等。
请注意,此包需要nightly Rust来统一函数的行为。
当所有这些函数都成为std中的const时,不再需要此包。
例如,从std中的 cos
,sin
函数可以访问为 const_trig::cos
。
并非所有三角函数都有,但如果你想要添加它们,可以打开一个 GitHub问题(总有一天我会看到的) :) 使用方法
use const_trig::{ToDegrees, ToRadians};
macro_rules! cmp {
($fn:ident, $e:expr) => {
println!(concat!("const_trig::", stringify!($fn), " = {}"), const_trig::$fn($e, None));
println!(concat!("std ", stringify!($fn), " = {}\n"), $e.$fn());
};
($fn:ident, $lib:expr, $std:expr) => {
println!(concat!("const_trig::", stringify!($fn), " = {}"), const_trig::$fn($lib, None));
println!(concat!("std ", stringify!($fn), " = {}\n"), $std.$fn());
};
(! $fn:ident, $e:expr, $fnstd:ident) => {
println!(concat!("const_trig::", stringify!($fn), " = {}"), const_trig::$fn($e, None));
println!(concat!("std ", stringify!($fnstd), " = {}\n"), $e.$fnstd());
};
}
fn main() {
let sixty_degrees = 60.0f32.degrees().radians().get();
cmp!(sin, sixty_degrees.radians(), sixty_degrees);
cmp!(cos, sixty_degrees.radians(), sixty_degrees);
cmp!(sqrt, 4.0f64);
cmp!(sqrt, 2.0f64);
cmp!(ln, 10.0f64);
cmp!(ln, core::f64::consts::E);
cmp!(! lg, core::f64::consts::E, log10);
cmp!(! lb, 10.0f64, log2);
println!("const_trig::log = {}", const_trig::log(3.5, 10.0f64, None));
println!("std log = {}", 3.5f64.log(10.0));
println!("{}", const_trig::root(34.0, 5, None))
}