tenso_rs/utils/math/sinc.rs
1use num_traits::{one, Float, FloatConst};
2
3// By Definition of Normalized Sinc Function:
4// sinc(x) = sin(pi * x) / (pi * x) for x != 0
5// sinc(0) = 1
6pub(crate) fn sinc<T: Float + FloatConst>(x: T) -> T {
7 if x.is_zero() {
8 one::<T>()
9 } else {
10 let inner: T = <T as FloatConst>::PI() * x;
11 inner.sin() / inner
12 }
13}