cubecl_std/trigonometry.rs
1//! Trigonometric functions and utilities for CubeCL.
2//!
3//! This module provides basic trigonometric operations and angle conversion utilities
4//! that can be used in all GPU kernels.
5
6use core::f32;
7use cubecl::prelude::*;
8use cubecl_core as cubecl;
9
10/// Converts an angle from radians to degrees.
11///
12/// # Example
13///
14/// ```rust,ignore
15/// let radians = F::new(std::f32::consts::PI);
16/// let degrees = to_degrees(radians);
17/// assert!((degrees - F::new(180.0)).abs() < F::new(1e-6));
18/// ```
19#[cube]
20pub fn to_degrees<F: Float>(val: F) -> F {
21 val * F::new(180.0 / f32::consts::PI)
22}
23
24/// Converts an angle from degrees to radians.
25///
26/// # Example
27///
28/// ```rust,ignore
29/// let degrees = F::new(180.0);
30/// let radians = to_radians(degrees);
31/// assert!((radians - F::new(std::f32::consts::PI)).abs() < F::new(1e-6));
32/// ```
33#[cube]
34pub fn to_radians<F: Float>(val: F) -> F {
35 val * F::new(f32::consts::PI / 180.0)
36}