Thanks to visit codestin.com
Credit goes to docs.rs

Crate trig_const

Source
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:

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).