Expand description
§trig-const
Rust implementation of const trig functions.
The majority of functions have been implemented using a modified version of libm for const Rust.
This implementation carries forward the original MIT license.
§Project Goals
- Correctness while const (same result as std within a rounding error)
- no-std
- No unsafe
§Requirements
This crate supports any compiler version back to rustc 1.85.0
[dependencies]
trig-const = "0"§Example
use std::f64::consts::PI;
use trig_const::cos;
const COS_PI: f64 = cos(PI);
assert_eq!(COS_PI, -1.0);use std::f64::consts::PI;
use trig_const::{atan2, cos, sin};
/// 45° in radians
const DEG_45: f64 = 45.0 * PI / 180.0;
/// Pre-computed matrix to rotate object 30°
const ROTATIONAL_MATRIX: [[f64; 3]; 3] = [
[cos(DEG_45), 0.0, sin(DEG_45)],
[0.0, 1.0, 0.0],
[-sin(DEG_45), 0.0, cos(DEG_45)],
];
/// atan2 calculation
const ATAN2_0_0: f64 = atan2(0.0, 0.0);
fn main() {
println!("{:?}", ROTATIONAL_MATRIX);
println!("{}", ATAN2_0_0);
}§History
This crate was originally implemented using trigonometric Taylor series approximations, inspired by the work of Dr. Austin Henley and Dr. Stephen Marz:
- GitHub Repo: https://github.com/AZHenley/cosine
- Article: https://austinhenley.com/blog/cosine.html
However, several functions have since been implemented using a modified version of lib for const Rust which improved precision.
Functions§
- acos
- Arccosine
- acosh
- Inverse hyperbolic cosine (f64)
- asin
- Arcsine
- asinh
- Inverse hyperbolic sine (f64)
- atan
- Arctangent
- atan2
- Arctan2
- atanh
- Inverse hyperbolic tangent (f64)
- cos
- Cosine
- cosh
- Hyperbolic Cosine
- cot
- Cotangent
- csc
- Cosecant
- exp
- Exponential, base e (f64)
- expi
- x^pow
- fabs
- factorial
- Factorial (x!)
- floor
- ln
- Computes natural log using a port from Rust’s
libm - pow
- Power function
- sec
- Secant
- sin
- Sine
- sinh
- Hyperbolic Sine
- sqrt
- Const sqrt function using Newton’s method
- tan
- The tangent of
x(f64).