(FPCore (x tau) :precision binary32 (* (/ (sin (* (* x PI) tau)) (* (* x PI) tau)) (/ (sin (* x PI)) (* x PI))))
(FPCore (x tau)
:precision binary32
(let* ((t_1 (* PI (* tau x))) (t_2 (sin t_1)))
(*
(cbrt (/ (* (pow t_2 2.0) t_2) (pow t_1 3.0)))
(cbrt (/ (pow (sin (* x PI)) 3.0) (pow (* x PI) 3.0))))))float code(float x, float tau) {
return (sinf(((x * ((float) M_PI)) * tau)) / ((x * ((float) M_PI)) * tau)) * (sinf((x * ((float) M_PI))) / (x * ((float) M_PI)));
}
float code(float x, float tau) {
float t_1 = ((float) M_PI) * (tau * x);
float t_2 = sinf(t_1);
return cbrtf(((powf(t_2, 2.0f) * t_2) / powf(t_1, 3.0f))) * cbrtf((powf(sinf((x * ((float) M_PI))), 3.0f) / powf((x * ((float) M_PI)), 3.0f)));
}
function code(x, tau) return Float32(Float32(sin(Float32(Float32(x * Float32(pi)) * tau)) / Float32(Float32(x * Float32(pi)) * tau)) * Float32(sin(Float32(x * Float32(pi))) / Float32(x * Float32(pi)))) end
function code(x, tau) t_1 = Float32(Float32(pi) * Float32(tau * x)) t_2 = sin(t_1) return Float32(cbrt(Float32(Float32((t_2 ^ Float32(2.0)) * t_2) / (t_1 ^ Float32(3.0)))) * cbrt(Float32((sin(Float32(x * Float32(pi))) ^ Float32(3.0)) / (Float32(x * Float32(pi)) ^ Float32(3.0))))) end
\frac{\sin \left(\left(x \cdot \pi\right) \cdot tau\right)}{\left(x \cdot \pi\right) \cdot tau} \cdot \frac{\sin \left(x \cdot \pi\right)}{x \cdot \pi}
\begin{array}{l}
t_1 := \pi \cdot \left(tau \cdot x\right)\\
t_2 := \sin t_1\\
\sqrt[3]{\frac{{t_2}^{2} \cdot t_2}{{t_1}^{3}}} \cdot \sqrt[3]{\frac{{\sin \left(x \cdot \pi\right)}^{3}}{{\left(x \cdot \pi\right)}^{3}}}
\end{array}



Bits error versus x



Bits error versus tau
Results
Initial program 0.7
Taylor expanded in x around inf 0.7
Applied egg-rr0.7
Applied egg-rr0.7
Applied egg-rr0.7
Final simplification0.7
herbie shell --seed 2022152
(FPCore (x tau)
:name "Lanczos kernel"
:precision binary32
:pre (and (and (<= 1e-5 x) (<= x 1.0)) (and (<= 1.0 tau) (<= tau 5.0)))
(* (/ (sin (* (* x PI) tau)) (* (* x PI) tau)) (/ (sin (* x PI)) (* x PI))))