
(FPCore (s r) :precision binary32 (+ (/ (* 0.25 (exp (/ (- r) s))) (* (* (* 2.0 PI) s) r)) (/ (* 0.75 (exp (/ (- r) (* 3.0 s)))) (* (* (* 6.0 PI) s) r))))
float code(float s, float r) {
return ((0.25f * expf((-r / s))) / (((2.0f * ((float) M_PI)) * s) * r)) + ((0.75f * expf((-r / (3.0f * s)))) / (((6.0f * ((float) M_PI)) * s) * r));
}
function code(s, r) return Float32(Float32(Float32(Float32(0.25) * exp(Float32(Float32(-r) / s))) / Float32(Float32(Float32(Float32(2.0) * Float32(pi)) * s) * r)) + Float32(Float32(Float32(0.75) * exp(Float32(Float32(-r) / Float32(Float32(3.0) * s)))) / Float32(Float32(Float32(Float32(6.0) * Float32(pi)) * s) * r))) end
function tmp = code(s, r) tmp = ((single(0.25) * exp((-r / s))) / (((single(2.0) * single(pi)) * s) * r)) + ((single(0.75) * exp((-r / (single(3.0) * s)))) / (((single(6.0) * single(pi)) * s) * r)); end
\begin{array}{l}
\\
\frac{0.25 \cdot e^{\frac{-r}{s}}}{\left(\left(2 \cdot \pi\right) \cdot s\right) \cdot r} + \frac{0.75 \cdot e^{\frac{-r}{3 \cdot s}}}{\left(\left(6 \cdot \pi\right) \cdot s\right) \cdot r}
\end{array}
Sampling outcomes in binary32 precision:
Herbie found 31 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (s r) :precision binary32 (+ (/ (* 0.25 (exp (/ (- r) s))) (* (* (* 2.0 PI) s) r)) (/ (* 0.75 (exp (/ (- r) (* 3.0 s)))) (* (* (* 6.0 PI) s) r))))
float code(float s, float r) {
return ((0.25f * expf((-r / s))) / (((2.0f * ((float) M_PI)) * s) * r)) + ((0.75f * expf((-r / (3.0f * s)))) / (((6.0f * ((float) M_PI)) * s) * r));
}
function code(s, r) return Float32(Float32(Float32(Float32(0.25) * exp(Float32(Float32(-r) / s))) / Float32(Float32(Float32(Float32(2.0) * Float32(pi)) * s) * r)) + Float32(Float32(Float32(0.75) * exp(Float32(Float32(-r) / Float32(Float32(3.0) * s)))) / Float32(Float32(Float32(Float32(6.0) * Float32(pi)) * s) * r))) end
function tmp = code(s, r) tmp = ((single(0.25) * exp((-r / s))) / (((single(2.0) * single(pi)) * s) * r)) + ((single(0.75) * exp((-r / (single(3.0) * s)))) / (((single(6.0) * single(pi)) * s) * r)); end
\begin{array}{l}
\\
\frac{0.25 \cdot e^{\frac{-r}{s}}}{\left(\left(2 \cdot \pi\right) \cdot s\right) \cdot r} + \frac{0.75 \cdot e^{\frac{-r}{3 \cdot s}}}{\left(\left(6 \cdot \pi\right) \cdot s\right) \cdot r}
\end{array}
(FPCore (s r) :precision binary32 (/ (/ -0.125 (/ PI (+ (exp (/ r (- s))) (exp (/ r (* s -3.0)))))) (- 0.0 (* r s))))
float code(float s, float r) {
return (-0.125f / (((float) M_PI) / (expf((r / -s)) + expf((r / (s * -3.0f)))))) / (0.0f - (r * s));
}
function code(s, r) return Float32(Float32(Float32(-0.125) / Float32(Float32(pi) / Float32(exp(Float32(r / Float32(-s))) + exp(Float32(r / Float32(s * Float32(-3.0))))))) / Float32(Float32(0.0) - Float32(r * s))) end
function tmp = code(s, r) tmp = (single(-0.125) / (single(pi) / (exp((r / -s)) + exp((r / (s * single(-3.0))))))) / (single(0.0) - (r * s)); end
\begin{array}{l}
\\
\frac{\frac{-0.125}{\frac{\pi}{e^{\frac{r}{-s}} + e^{\frac{r}{s \cdot -3}}}}}{0 - r \cdot s}
\end{array}
Initial program 99.5%
Simplified96.7%
associate-/l*N/A
frac-2negN/A
associate-*l/N/A
/-lowering-/.f32N/A
Applied egg-rr99.5%
Final simplification99.5%
(FPCore (s r) :precision binary32 (* (/ (+ (exp (/ r (- s))) (pow E (/ r (/ s -0.3333333333333333)))) (* PI s)) (/ 0.125 r)))
float code(float s, float r) {
return ((expf((r / -s)) + powf(((float) M_E), (r / (s / -0.3333333333333333f)))) / (((float) M_PI) * s)) * (0.125f / r);
}
function code(s, r) return Float32(Float32(Float32(exp(Float32(r / Float32(-s))) + (Float32(exp(1)) ^ Float32(r / Float32(s / Float32(-0.3333333333333333))))) / Float32(Float32(pi) * s)) * Float32(Float32(0.125) / r)) end
function tmp = code(s, r) tmp = ((exp((r / -s)) + (single(2.71828182845904523536) ^ (r / (s / single(-0.3333333333333333))))) / (single(pi) * s)) * (single(0.125) / r); end
\begin{array}{l}
\\
\frac{e^{\frac{r}{-s}} + {e}^{\left(\frac{r}{\frac{s}{-0.3333333333333333}}\right)}}{\pi \cdot s} \cdot \frac{0.125}{r}
\end{array}
Initial program 99.5%
Simplified96.7%
associate-/l*N/A
frac-2negN/A
associate-*l/N/A
/-lowering-/.f32N/A
Applied egg-rr99.5%
div-invN/A
clear-numN/A
times-fracN/A
metadata-evalN/A
frac-2negN/A
*-commutativeN/A
*-lowering-*.f32N/A
Applied egg-rr99.5%
clear-numN/A
div-invN/A
clear-numN/A
exp-prodN/A
pow-lowering-pow.f32N/A
exp-1-eN/A
E-lowering-E.f32N/A
/-lowering-/.f32N/A
/-lowering-/.f3299.5%
Applied egg-rr99.5%
Final simplification99.5%
(FPCore (s r) :precision binary32 (/ (/ (+ (exp (/ r (- s))) (exp (/ r (* s -3.0)))) PI) (/ s (/ 0.125 r))))
float code(float s, float r) {
return ((expf((r / -s)) + expf((r / (s * -3.0f)))) / ((float) M_PI)) / (s / (0.125f / r));
}
function code(s, r) return Float32(Float32(Float32(exp(Float32(r / Float32(-s))) + exp(Float32(r / Float32(s * Float32(-3.0))))) / Float32(pi)) / Float32(s / Float32(Float32(0.125) / r))) end
function tmp = code(s, r) tmp = ((exp((r / -s)) + exp((r / (s * single(-3.0))))) / single(pi)) / (s / (single(0.125) / r)); end
\begin{array}{l}
\\
\frac{\frac{e^{\frac{r}{-s}} + e^{\frac{r}{s \cdot -3}}}{\pi}}{\frac{s}{\frac{0.125}{r}}}
\end{array}
Initial program 99.5%
Simplified96.7%
associate-/l*N/A
*-commutativeN/A
clear-numN/A
div-invN/A
/-lowering-/.f32N/A
Applied egg-rr99.5%
(FPCore (s r) :precision binary32 (* (/ 0.125 r) (/ (+ (exp (/ r (- s))) (exp (/ r (/ s -0.3333333333333333)))) (* PI s))))
float code(float s, float r) {
return (0.125f / r) * ((expf((r / -s)) + expf((r / (s / -0.3333333333333333f)))) / (((float) M_PI) * s));
}
function code(s, r) return Float32(Float32(Float32(0.125) / r) * Float32(Float32(exp(Float32(r / Float32(-s))) + exp(Float32(r / Float32(s / Float32(-0.3333333333333333))))) / Float32(Float32(pi) * s))) end
function tmp = code(s, r) tmp = (single(0.125) / r) * ((exp((r / -s)) + exp((r / (s / single(-0.3333333333333333))))) / (single(pi) * s)); end
\begin{array}{l}
\\
\frac{0.125}{r} \cdot \frac{e^{\frac{r}{-s}} + e^{\frac{r}{\frac{s}{-0.3333333333333333}}}}{\pi \cdot s}
\end{array}
Initial program 99.5%
Simplified96.7%
associate-/l*N/A
frac-2negN/A
associate-*l/N/A
/-lowering-/.f32N/A
Applied egg-rr99.5%
div-invN/A
clear-numN/A
times-fracN/A
metadata-evalN/A
frac-2negN/A
*-commutativeN/A
*-lowering-*.f32N/A
Applied egg-rr99.5%
Final simplification99.5%
(FPCore (s r)
:precision binary32
(let* ((t_0 (/ (* s s) PI)))
(if (<= s 2.0000000072549875e-15)
(*
(/
(/
-0.125
(* (* r (* r r)) (* 0.006172839506172839 (/ PI (* s (* s s))))))
s)
(/ -1.0 r))
(/
(/
-0.125
(+
(* PI 0.5)
(*
r
(fma
(* s (+ (* s s) (* -0.8888888888888888 (/ PI (/ PI (* s s))))))
(*
r
(* r (/ (/ -0.05555555555555555 t_0) (* s (* s (- 0.0 (* s s)))))))
(+
(* r (/ 0.08333333333333333 t_0))
(/ 0.3333333333333333 (/ s PI)))))))
(- 0.0 (* r s))))))
float code(float s, float r) {
float t_0 = (s * s) / ((float) M_PI);
float tmp;
if (s <= 2.0000000072549875e-15f) {
tmp = ((-0.125f / ((r * (r * r)) * (0.006172839506172839f * (((float) M_PI) / (s * (s * s)))))) / s) * (-1.0f / r);
} else {
tmp = (-0.125f / ((((float) M_PI) * 0.5f) + (r * fmaf((s * ((s * s) + (-0.8888888888888888f * (((float) M_PI) / (((float) M_PI) / (s * s)))))), (r * (r * ((-0.05555555555555555f / t_0) / (s * (s * (0.0f - (s * s))))))), ((r * (0.08333333333333333f / t_0)) + (0.3333333333333333f / (s / ((float) M_PI)))))))) / (0.0f - (r * s));
}
return tmp;
}
function code(s, r) t_0 = Float32(Float32(s * s) / Float32(pi)) tmp = Float32(0.0) if (s <= Float32(2.0000000072549875e-15)) tmp = Float32(Float32(Float32(Float32(-0.125) / Float32(Float32(r * Float32(r * r)) * Float32(Float32(0.006172839506172839) * Float32(Float32(pi) / Float32(s * Float32(s * s)))))) / s) * Float32(Float32(-1.0) / r)); else tmp = Float32(Float32(Float32(-0.125) / Float32(Float32(Float32(pi) * Float32(0.5)) + Float32(r * fma(Float32(s * Float32(Float32(s * s) + Float32(Float32(-0.8888888888888888) * Float32(Float32(pi) / Float32(Float32(pi) / Float32(s * s)))))), Float32(r * Float32(r * Float32(Float32(Float32(-0.05555555555555555) / t_0) / Float32(s * Float32(s * Float32(Float32(0.0) - Float32(s * s))))))), Float32(Float32(r * Float32(Float32(0.08333333333333333) / t_0)) + Float32(Float32(0.3333333333333333) / Float32(s / Float32(pi)))))))) / Float32(Float32(0.0) - Float32(r * s))); end return tmp end
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{s \cdot s}{\pi}\\
\mathbf{if}\;s \leq 2.0000000072549875 \cdot 10^{-15}:\\
\;\;\;\;\frac{\frac{-0.125}{\left(r \cdot \left(r \cdot r\right)\right) \cdot \left(0.006172839506172839 \cdot \frac{\pi}{s \cdot \left(s \cdot s\right)}\right)}}{s} \cdot \frac{-1}{r}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{-0.125}{\pi \cdot 0.5 + r \cdot \mathsf{fma}\left(s \cdot \left(s \cdot s + -0.8888888888888888 \cdot \frac{\pi}{\frac{\pi}{s \cdot s}}\right), r \cdot \left(r \cdot \frac{\frac{-0.05555555555555555}{t\_0}}{s \cdot \left(s \cdot \left(0 - s \cdot s\right)\right)}\right), r \cdot \frac{0.08333333333333333}{t\_0} + \frac{0.3333333333333333}{\frac{s}{\pi}}\right)}}{0 - r \cdot s}\\
\end{array}
\end{array}
if s < 2.00000001e-15Initial program 100.0%
Simplified95.3%
associate-/l*N/A
frac-2negN/A
associate-*l/N/A
/-lowering-/.f32N/A
Applied egg-rr100.0%
Taylor expanded in r around 0
Simplified-0.0%
Applied egg-rr-0.0%
Taylor expanded in r around inf
mul-1-negN/A
distribute-rgt-neg-inN/A
mul-1-negN/A
*-lowering-*.f32N/A
cube-multN/A
unpow2N/A
*-lowering-*.f32N/A
unpow2N/A
*-lowering-*.f32N/A
mul-1-negN/A
distribute-rgt-outN/A
metadata-evalN/A
*-commutativeN/A
distribute-lft-neg-inN/A
metadata-evalN/A
*-lowering-*.f32N/A
/-lowering-/.f32N/A
PI-lowering-PI.f32N/A
cube-multN/A
Simplified100.0%
if 2.00000001e-15 < s Initial program 98.7%
Simplified98.6%
associate-/l*N/A
frac-2negN/A
associate-*l/N/A
/-lowering-/.f32N/A
Applied egg-rr98.8%
Taylor expanded in r around 0
Simplified37.6%
associate-*l/N/A
clear-numN/A
frac-addN/A
div-invN/A
*-lowering-*.f32N/A
Applied egg-rr65.7%
Applied egg-rr68.2%
Final simplification86.6%
(FPCore (s r)
:precision binary32
(let* ((t_0 (* s (* s s))))
(if (<= s 2.0000000072549875e-15)
(*
(/ (/ -0.125 (* (* r (* r r)) (* 0.006172839506172839 (/ PI t_0)))) s)
(/ -1.0 r))
(*
(/ -1.0 r)
(/
(/
-0.125
(+
(*
(* r r)
(-
(/ 0.08333333333333333 (/ s (/ PI s)))
(*
(* s (+ (* s s) (* -0.8888888888888888 (/ PI (/ PI (* s s))))))
(* r (/ (/ -0.05555555555555555 (/ (* s s) PI)) (* s t_0))))))
(* PI (+ 0.5 (/ r (/ s 0.3333333333333333))))))
s)))))
float code(float s, float r) {
float t_0 = s * (s * s);
float tmp;
if (s <= 2.0000000072549875e-15f) {
tmp = ((-0.125f / ((r * (r * r)) * (0.006172839506172839f * (((float) M_PI) / t_0)))) / s) * (-1.0f / r);
} else {
tmp = (-1.0f / r) * ((-0.125f / (((r * r) * ((0.08333333333333333f / (s / (((float) M_PI) / s))) - ((s * ((s * s) + (-0.8888888888888888f * (((float) M_PI) / (((float) M_PI) / (s * s)))))) * (r * ((-0.05555555555555555f / ((s * s) / ((float) M_PI))) / (s * t_0)))))) + (((float) M_PI) * (0.5f + (r / (s / 0.3333333333333333f)))))) / s);
}
return tmp;
}
function code(s, r) t_0 = Float32(s * Float32(s * s)) tmp = Float32(0.0) if (s <= Float32(2.0000000072549875e-15)) tmp = Float32(Float32(Float32(Float32(-0.125) / Float32(Float32(r * Float32(r * r)) * Float32(Float32(0.006172839506172839) * Float32(Float32(pi) / t_0)))) / s) * Float32(Float32(-1.0) / r)); else tmp = Float32(Float32(Float32(-1.0) / r) * Float32(Float32(Float32(-0.125) / Float32(Float32(Float32(r * r) * Float32(Float32(Float32(0.08333333333333333) / Float32(s / Float32(Float32(pi) / s))) - Float32(Float32(s * Float32(Float32(s * s) + Float32(Float32(-0.8888888888888888) * Float32(Float32(pi) / Float32(Float32(pi) / Float32(s * s)))))) * Float32(r * Float32(Float32(Float32(-0.05555555555555555) / Float32(Float32(s * s) / Float32(pi))) / Float32(s * t_0)))))) + Float32(Float32(pi) * Float32(Float32(0.5) + Float32(r / Float32(s / Float32(0.3333333333333333))))))) / s)); end return tmp end
function tmp_2 = code(s, r) t_0 = s * (s * s); tmp = single(0.0); if (s <= single(2.0000000072549875e-15)) tmp = ((single(-0.125) / ((r * (r * r)) * (single(0.006172839506172839) * (single(pi) / t_0)))) / s) * (single(-1.0) / r); else tmp = (single(-1.0) / r) * ((single(-0.125) / (((r * r) * ((single(0.08333333333333333) / (s / (single(pi) / s))) - ((s * ((s * s) + (single(-0.8888888888888888) * (single(pi) / (single(pi) / (s * s)))))) * (r * ((single(-0.05555555555555555) / ((s * s) / single(pi))) / (s * t_0)))))) + (single(pi) * (single(0.5) + (r / (s / single(0.3333333333333333))))))) / s); end tmp_2 = tmp; end
\begin{array}{l}
\\
\begin{array}{l}
t_0 := s \cdot \left(s \cdot s\right)\\
\mathbf{if}\;s \leq 2.0000000072549875 \cdot 10^{-15}:\\
\;\;\;\;\frac{\frac{-0.125}{\left(r \cdot \left(r \cdot r\right)\right) \cdot \left(0.006172839506172839 \cdot \frac{\pi}{t\_0}\right)}}{s} \cdot \frac{-1}{r}\\
\mathbf{else}:\\
\;\;\;\;\frac{-1}{r} \cdot \frac{\frac{-0.125}{\left(r \cdot r\right) \cdot \left(\frac{0.08333333333333333}{\frac{s}{\frac{\pi}{s}}} - \left(s \cdot \left(s \cdot s + -0.8888888888888888 \cdot \frac{\pi}{\frac{\pi}{s \cdot s}}\right)\right) \cdot \left(r \cdot \frac{\frac{-0.05555555555555555}{\frac{s \cdot s}{\pi}}}{s \cdot t\_0}\right)\right) + \pi \cdot \left(0.5 + \frac{r}{\frac{s}{0.3333333333333333}}\right)}}{s}\\
\end{array}
\end{array}
if s < 2.00000001e-15Initial program 100.0%
Simplified95.3%
associate-/l*N/A
frac-2negN/A
associate-*l/N/A
/-lowering-/.f32N/A
Applied egg-rr100.0%
Taylor expanded in r around 0
Simplified-0.0%
Applied egg-rr-0.0%
Taylor expanded in r around inf
mul-1-negN/A
distribute-rgt-neg-inN/A
mul-1-negN/A
*-lowering-*.f32N/A
cube-multN/A
unpow2N/A
*-lowering-*.f32N/A
unpow2N/A
*-lowering-*.f32N/A
mul-1-negN/A
distribute-rgt-outN/A
metadata-evalN/A
*-commutativeN/A
distribute-lft-neg-inN/A
metadata-evalN/A
*-lowering-*.f32N/A
/-lowering-/.f32N/A
PI-lowering-PI.f32N/A
cube-multN/A
Simplified100.0%
if 2.00000001e-15 < s Initial program 98.7%
Simplified98.6%
associate-/l*N/A
frac-2negN/A
associate-*l/N/A
/-lowering-/.f32N/A
Applied egg-rr98.8%
Taylor expanded in r around 0
Simplified37.6%
Applied egg-rr36.7%
Applied egg-rr67.3%
Final simplification86.2%
(FPCore (s r)
:precision binary32
(let* ((t_0 (* s (* s s))))
(if (<= s 2.0000000072549875e-15)
(*
(/ (/ -0.125 (* (* r (* r r)) (* 0.006172839506172839 (/ PI t_0)))) s)
(/ -1.0 r))
(/
(/
-0.125
(-
(*
r
(-
(*
r
(-
(*
r
(*
(* t_0 0.1111111111111111)
(/ 1.0 (/ t_0 (/ (/ -0.05555555555555555 (/ s (/ PI s))) s)))))
(* (/ PI (* s s)) 0.08333333333333333)))
(/ (* PI 0.3333333333333333) s)))
(* PI 0.5)))
(* r s)))))
float code(float s, float r) {
float t_0 = s * (s * s);
float tmp;
if (s <= 2.0000000072549875e-15f) {
tmp = ((-0.125f / ((r * (r * r)) * (0.006172839506172839f * (((float) M_PI) / t_0)))) / s) * (-1.0f / r);
} else {
tmp = (-0.125f / ((r * ((r * ((r * ((t_0 * 0.1111111111111111f) * (1.0f / (t_0 / ((-0.05555555555555555f / (s / (((float) M_PI) / s))) / s))))) - ((((float) M_PI) / (s * s)) * 0.08333333333333333f))) - ((((float) M_PI) * 0.3333333333333333f) / s))) - (((float) M_PI) * 0.5f))) / (r * s);
}
return tmp;
}
function code(s, r) t_0 = Float32(s * Float32(s * s)) tmp = Float32(0.0) if (s <= Float32(2.0000000072549875e-15)) tmp = Float32(Float32(Float32(Float32(-0.125) / Float32(Float32(r * Float32(r * r)) * Float32(Float32(0.006172839506172839) * Float32(Float32(pi) / t_0)))) / s) * Float32(Float32(-1.0) / r)); else tmp = Float32(Float32(Float32(-0.125) / Float32(Float32(r * Float32(Float32(r * Float32(Float32(r * Float32(Float32(t_0 * Float32(0.1111111111111111)) * Float32(Float32(1.0) / Float32(t_0 / Float32(Float32(Float32(-0.05555555555555555) / Float32(s / Float32(Float32(pi) / s))) / s))))) - Float32(Float32(Float32(pi) / Float32(s * s)) * Float32(0.08333333333333333)))) - Float32(Float32(Float32(pi) * Float32(0.3333333333333333)) / s))) - Float32(Float32(pi) * Float32(0.5)))) / Float32(r * s)); end return tmp end
function tmp_2 = code(s, r) t_0 = s * (s * s); tmp = single(0.0); if (s <= single(2.0000000072549875e-15)) tmp = ((single(-0.125) / ((r * (r * r)) * (single(0.006172839506172839) * (single(pi) / t_0)))) / s) * (single(-1.0) / r); else tmp = (single(-0.125) / ((r * ((r * ((r * ((t_0 * single(0.1111111111111111)) * (single(1.0) / (t_0 / ((single(-0.05555555555555555) / (s / (single(pi) / s))) / s))))) - ((single(pi) / (s * s)) * single(0.08333333333333333)))) - ((single(pi) * single(0.3333333333333333)) / s))) - (single(pi) * single(0.5)))) / (r * s); end tmp_2 = tmp; end
\begin{array}{l}
\\
\begin{array}{l}
t_0 := s \cdot \left(s \cdot s\right)\\
\mathbf{if}\;s \leq 2.0000000072549875 \cdot 10^{-15}:\\
\;\;\;\;\frac{\frac{-0.125}{\left(r \cdot \left(r \cdot r\right)\right) \cdot \left(0.006172839506172839 \cdot \frac{\pi}{t\_0}\right)}}{s} \cdot \frac{-1}{r}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{-0.125}{r \cdot \left(r \cdot \left(r \cdot \left(\left(t\_0 \cdot 0.1111111111111111\right) \cdot \frac{1}{\frac{t\_0}{\frac{\frac{-0.05555555555555555}{\frac{s}{\frac{\pi}{s}}}}{s}}}\right) - \frac{\pi}{s \cdot s} \cdot 0.08333333333333333\right) - \frac{\pi \cdot 0.3333333333333333}{s}\right) - \pi \cdot 0.5}}{r \cdot s}\\
\end{array}
\end{array}
if s < 2.00000001e-15Initial program 100.0%
Simplified95.3%
associate-/l*N/A
frac-2negN/A
associate-*l/N/A
/-lowering-/.f32N/A
Applied egg-rr100.0%
Taylor expanded in r around 0
Simplified-0.0%
Applied egg-rr-0.0%
Taylor expanded in r around inf
mul-1-negN/A
distribute-rgt-neg-inN/A
mul-1-negN/A
*-lowering-*.f32N/A
cube-multN/A
unpow2N/A
*-lowering-*.f32N/A
unpow2N/A
*-lowering-*.f32N/A
mul-1-negN/A
distribute-rgt-outN/A
metadata-evalN/A
*-commutativeN/A
distribute-lft-neg-inN/A
metadata-evalN/A
*-lowering-*.f32N/A
/-lowering-/.f32N/A
PI-lowering-PI.f32N/A
cube-multN/A
Simplified100.0%
if 2.00000001e-15 < s Initial program 98.7%
Simplified98.6%
associate-/l*N/A
frac-2negN/A
associate-*l/N/A
/-lowering-/.f32N/A
Applied egg-rr98.8%
Taylor expanded in r around 0
Simplified37.6%
associate-*l/N/A
clear-numN/A
frac-addN/A
div-invN/A
*-lowering-*.f32N/A
Applied egg-rr65.7%
Taylor expanded in s around 0
*-commutativeN/A
*-lowering-*.f32N/A
cube-multN/A
unpow2N/A
*-lowering-*.f32N/A
unpow2N/A
*-lowering-*.f3265.7%
Simplified65.7%
Final simplification85.6%
(FPCore (s r)
:precision binary32
(/
(/
-0.125
(-
(*
r
(-
(*
r
(-
(*
r
(*
(+ (* s 0.04938271604938271) (* s -0.05555555555555555))
(/ 1.0 (/ s (/ PI (* s (* s s)))))))
(* (/ PI (* s s)) 0.08333333333333333)))
(/ (* PI 0.3333333333333333) s)))
(* PI 0.5)))
(* r s)))
float code(float s, float r) {
return (-0.125f / ((r * ((r * ((r * (((s * 0.04938271604938271f) + (s * -0.05555555555555555f)) * (1.0f / (s / (((float) M_PI) / (s * (s * s))))))) - ((((float) M_PI) / (s * s)) * 0.08333333333333333f))) - ((((float) M_PI) * 0.3333333333333333f) / s))) - (((float) M_PI) * 0.5f))) / (r * s);
}
function code(s, r) return Float32(Float32(Float32(-0.125) / Float32(Float32(r * Float32(Float32(r * Float32(Float32(r * Float32(Float32(Float32(s * Float32(0.04938271604938271)) + Float32(s * Float32(-0.05555555555555555))) * Float32(Float32(1.0) / Float32(s / Float32(Float32(pi) / Float32(s * Float32(s * s))))))) - Float32(Float32(Float32(pi) / Float32(s * s)) * Float32(0.08333333333333333)))) - Float32(Float32(Float32(pi) * Float32(0.3333333333333333)) / s))) - Float32(Float32(pi) * Float32(0.5)))) / Float32(r * s)) end
function tmp = code(s, r) tmp = (single(-0.125) / ((r * ((r * ((r * (((s * single(0.04938271604938271)) + (s * single(-0.05555555555555555))) * (single(1.0) / (s / (single(pi) / (s * (s * s))))))) - ((single(pi) / (s * s)) * single(0.08333333333333333)))) - ((single(pi) * single(0.3333333333333333)) / s))) - (single(pi) * single(0.5)))) / (r * s); end
\begin{array}{l}
\\
\frac{\frac{-0.125}{r \cdot \left(r \cdot \left(r \cdot \left(\left(s \cdot 0.04938271604938271 + s \cdot -0.05555555555555555\right) \cdot \frac{1}{\frac{s}{\frac{\pi}{s \cdot \left(s \cdot s\right)}}}\right) - \frac{\pi}{s \cdot s} \cdot 0.08333333333333333\right) - \frac{\pi \cdot 0.3333333333333333}{s}\right) - \pi \cdot 0.5}}{r \cdot s}
\end{array}
Initial program 99.5%
Simplified96.7%
associate-/l*N/A
frac-2negN/A
associate-*l/N/A
/-lowering-/.f32N/A
Applied egg-rr99.5%
Taylor expanded in r around 0
Simplified15.9%
associate-*l/N/A
clear-numN/A
frac-addN/A
div-invN/A
*-lowering-*.f32N/A
Applied egg-rr28.5%
Applied egg-rr81.0%
Final simplification81.0%
(FPCore (s r)
:precision binary32
(/
-0.125
(*
s
(*
r
(-
(*
(* r r)
(-
(/
(* r (+ (* s 0.04938271604938271) (* s -0.05555555555555555)))
(/ s (/ PI (* s (* s s)))))
(/ 0.08333333333333333 (/ (* s s) PI))))
(* PI (+ 0.5 (/ r (/ s 0.3333333333333333)))))))))
float code(float s, float r) {
return -0.125f / (s * (r * (((r * r) * (((r * ((s * 0.04938271604938271f) + (s * -0.05555555555555555f))) / (s / (((float) M_PI) / (s * (s * s))))) - (0.08333333333333333f / ((s * s) / ((float) M_PI))))) - (((float) M_PI) * (0.5f + (r / (s / 0.3333333333333333f)))))));
}
function code(s, r) return Float32(Float32(-0.125) / Float32(s * Float32(r * Float32(Float32(Float32(r * r) * Float32(Float32(Float32(r * Float32(Float32(s * Float32(0.04938271604938271)) + Float32(s * Float32(-0.05555555555555555)))) / Float32(s / Float32(Float32(pi) / Float32(s * Float32(s * s))))) - Float32(Float32(0.08333333333333333) / Float32(Float32(s * s) / Float32(pi))))) - Float32(Float32(pi) * Float32(Float32(0.5) + Float32(r / Float32(s / Float32(0.3333333333333333))))))))) end
function tmp = code(s, r) tmp = single(-0.125) / (s * (r * (((r * r) * (((r * ((s * single(0.04938271604938271)) + (s * single(-0.05555555555555555)))) / (s / (single(pi) / (s * (s * s))))) - (single(0.08333333333333333) / ((s * s) / single(pi))))) - (single(pi) * (single(0.5) + (r / (s / single(0.3333333333333333)))))))); end
\begin{array}{l}
\\
\frac{-0.125}{s \cdot \left(r \cdot \left(\left(r \cdot r\right) \cdot \left(\frac{r \cdot \left(s \cdot 0.04938271604938271 + s \cdot -0.05555555555555555\right)}{\frac{s}{\frac{\pi}{s \cdot \left(s \cdot s\right)}}} - \frac{0.08333333333333333}{\frac{s \cdot s}{\pi}}\right) - \pi \cdot \left(0.5 + \frac{r}{\frac{s}{0.3333333333333333}}\right)\right)\right)}
\end{array}
Initial program 99.5%
Simplified96.7%
associate-/l*N/A
frac-2negN/A
associate-*l/N/A
/-lowering-/.f32N/A
Applied egg-rr99.5%
Taylor expanded in r around 0
Simplified15.9%
Applied egg-rr15.5%
Applied egg-rr80.4%
Final simplification80.4%
(FPCore (s r)
:precision binary32
(/
(/
0.125
(+
(* PI (+ 0.5 (/ r (/ s 0.3333333333333333))))
(*
(* r r)
(-
(/ 0.08333333333333333 (/ (* s s) PI))
(/
(* r (+ (* s 0.04938271604938271) (* s -0.05555555555555555)))
(/ s (/ PI (* s (* s s)))))))))
(* r s)))
float code(float s, float r) {
return (0.125f / ((((float) M_PI) * (0.5f + (r / (s / 0.3333333333333333f)))) + ((r * r) * ((0.08333333333333333f / ((s * s) / ((float) M_PI))) - ((r * ((s * 0.04938271604938271f) + (s * -0.05555555555555555f))) / (s / (((float) M_PI) / (s * (s * s))))))))) / (r * s);
}
function code(s, r) return Float32(Float32(Float32(0.125) / Float32(Float32(Float32(pi) * Float32(Float32(0.5) + Float32(r / Float32(s / Float32(0.3333333333333333))))) + Float32(Float32(r * r) * Float32(Float32(Float32(0.08333333333333333) / Float32(Float32(s * s) / Float32(pi))) - Float32(Float32(r * Float32(Float32(s * Float32(0.04938271604938271)) + Float32(s * Float32(-0.05555555555555555)))) / Float32(s / Float32(Float32(pi) / Float32(s * Float32(s * s))))))))) / Float32(r * s)) end
function tmp = code(s, r) tmp = (single(0.125) / ((single(pi) * (single(0.5) + (r / (s / single(0.3333333333333333))))) + ((r * r) * ((single(0.08333333333333333) / ((s * s) / single(pi))) - ((r * ((s * single(0.04938271604938271)) + (s * single(-0.05555555555555555)))) / (s / (single(pi) / (s * (s * s))))))))) / (r * s); end
\begin{array}{l}
\\
\frac{\frac{0.125}{\pi \cdot \left(0.5 + \frac{r}{\frac{s}{0.3333333333333333}}\right) + \left(r \cdot r\right) \cdot \left(\frac{0.08333333333333333}{\frac{s \cdot s}{\pi}} - \frac{r \cdot \left(s \cdot 0.04938271604938271 + s \cdot -0.05555555555555555\right)}{\frac{s}{\frac{\pi}{s \cdot \left(s \cdot s\right)}}}\right)}}{r \cdot s}
\end{array}
Initial program 99.5%
Simplified96.7%
associate-/l*N/A
frac-2negN/A
associate-*l/N/A
/-lowering-/.f32N/A
Applied egg-rr99.5%
Taylor expanded in r around 0
Simplified15.9%
Applied egg-rr15.5%
Applied egg-rr78.2%
Final simplification78.2%
(FPCore (s r)
:precision binary32
(/
(/
0.125
(*
s
(+
(* PI (+ 0.5 (/ r (/ s 0.3333333333333333))))
(*
(* r r)
(-
(/ 0.08333333333333333 (/ (* s s) PI))
(/
(* r (+ (* s 0.04938271604938271) (* s -0.05555555555555555)))
(/ s (/ PI (* s (* s s))))))))))
r))
float code(float s, float r) {
return (0.125f / (s * ((((float) M_PI) * (0.5f + (r / (s / 0.3333333333333333f)))) + ((r * r) * ((0.08333333333333333f / ((s * s) / ((float) M_PI))) - ((r * ((s * 0.04938271604938271f) + (s * -0.05555555555555555f))) / (s / (((float) M_PI) / (s * (s * s)))))))))) / r;
}
function code(s, r) return Float32(Float32(Float32(0.125) / Float32(s * Float32(Float32(Float32(pi) * Float32(Float32(0.5) + Float32(r / Float32(s / Float32(0.3333333333333333))))) + Float32(Float32(r * r) * Float32(Float32(Float32(0.08333333333333333) / Float32(Float32(s * s) / Float32(pi))) - Float32(Float32(r * Float32(Float32(s * Float32(0.04938271604938271)) + Float32(s * Float32(-0.05555555555555555)))) / Float32(s / Float32(Float32(pi) / Float32(s * Float32(s * s)))))))))) / r) end
function tmp = code(s, r) tmp = (single(0.125) / (s * ((single(pi) * (single(0.5) + (r / (s / single(0.3333333333333333))))) + ((r * r) * ((single(0.08333333333333333) / ((s * s) / single(pi))) - ((r * ((s * single(0.04938271604938271)) + (s * single(-0.05555555555555555)))) / (s / (single(pi) / (s * (s * s)))))))))) / r; end
\begin{array}{l}
\\
\frac{\frac{0.125}{s \cdot \left(\pi \cdot \left(0.5 + \frac{r}{\frac{s}{0.3333333333333333}}\right) + \left(r \cdot r\right) \cdot \left(\frac{0.08333333333333333}{\frac{s \cdot s}{\pi}} - \frac{r \cdot \left(s \cdot 0.04938271604938271 + s \cdot -0.05555555555555555\right)}{\frac{s}{\frac{\pi}{s \cdot \left(s \cdot s\right)}}}\right)\right)}}{r}
\end{array}
Initial program 99.5%
Simplified96.7%
associate-/l*N/A
frac-2negN/A
associate-*l/N/A
/-lowering-/.f32N/A
Applied egg-rr99.5%
Taylor expanded in r around 0
Simplified15.9%
Applied egg-rr15.5%
Applied egg-rr78.1%
Final simplification78.1%
(FPCore (s r)
:precision binary32
(if (<= s 2.999999970665357e-10)
(/
(/
-0.125
(+
(* PI 0.5)
(*
r
(*
(* r r)
(+
(* 0.006172839506172839 (/ PI (* s (* s s))))
(/ (* PI 0.08333333333333333) (* r (* s s))))))))
(- 0.0 (* r s)))
(/
(/ 1.0 PI)
(*
r
(+
(* s 4.0)
(*
r
(+
2.6666666666666665
(*
r
(+
(* 0.04938271604938271 (/ r (* s s)))
(/ 0.6666666666666666 s))))))))))
float code(float s, float r) {
float tmp;
if (s <= 2.999999970665357e-10f) {
tmp = (-0.125f / ((((float) M_PI) * 0.5f) + (r * ((r * r) * ((0.006172839506172839f * (((float) M_PI) / (s * (s * s)))) + ((((float) M_PI) * 0.08333333333333333f) / (r * (s * s)))))))) / (0.0f - (r * s));
} else {
tmp = (1.0f / ((float) M_PI)) / (r * ((s * 4.0f) + (r * (2.6666666666666665f + (r * ((0.04938271604938271f * (r / (s * s))) + (0.6666666666666666f / s)))))));
}
return tmp;
}
function code(s, r) tmp = Float32(0.0) if (s <= Float32(2.999999970665357e-10)) tmp = Float32(Float32(Float32(-0.125) / Float32(Float32(Float32(pi) * Float32(0.5)) + Float32(r * Float32(Float32(r * r) * Float32(Float32(Float32(0.006172839506172839) * Float32(Float32(pi) / Float32(s * Float32(s * s)))) + Float32(Float32(Float32(pi) * Float32(0.08333333333333333)) / Float32(r * Float32(s * s)))))))) / Float32(Float32(0.0) - Float32(r * s))); else tmp = Float32(Float32(Float32(1.0) / Float32(pi)) / Float32(r * Float32(Float32(s * Float32(4.0)) + Float32(r * Float32(Float32(2.6666666666666665) + Float32(r * Float32(Float32(Float32(0.04938271604938271) * Float32(r / Float32(s * s))) + Float32(Float32(0.6666666666666666) / s)))))))); end return tmp end
function tmp_2 = code(s, r) tmp = single(0.0); if (s <= single(2.999999970665357e-10)) tmp = (single(-0.125) / ((single(pi) * single(0.5)) + (r * ((r * r) * ((single(0.006172839506172839) * (single(pi) / (s * (s * s)))) + ((single(pi) * single(0.08333333333333333)) / (r * (s * s)))))))) / (single(0.0) - (r * s)); else tmp = (single(1.0) / single(pi)) / (r * ((s * single(4.0)) + (r * (single(2.6666666666666665) + (r * ((single(0.04938271604938271) * (r / (s * s))) + (single(0.6666666666666666) / s))))))); end tmp_2 = tmp; end
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;s \leq 2.999999970665357 \cdot 10^{-10}:\\
\;\;\;\;\frac{\frac{-0.125}{\pi \cdot 0.5 + r \cdot \left(\left(r \cdot r\right) \cdot \left(0.006172839506172839 \cdot \frac{\pi}{s \cdot \left(s \cdot s\right)} + \frac{\pi \cdot 0.08333333333333333}{r \cdot \left(s \cdot s\right)}\right)\right)}}{0 - r \cdot s}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{1}{\pi}}{r \cdot \left(s \cdot 4 + r \cdot \left(2.6666666666666665 + r \cdot \left(0.04938271604938271 \cdot \frac{r}{s \cdot s} + \frac{0.6666666666666666}{s}\right)\right)\right)}\\
\end{array}
\end{array}
if s < 2.99999997e-10Initial program 100.0%
Simplified96.1%
associate-/l*N/A
frac-2negN/A
associate-*l/N/A
/-lowering-/.f32N/A
Applied egg-rr100.0%
Taylor expanded in r around 0
Simplified8.3%
Taylor expanded in r around inf
*-lowering-*.f32N/A
unpow2N/A
*-lowering-*.f32N/A
+-lowering-+.f32N/A
Simplified94.0%
if 2.99999997e-10 < s Initial program 98.2%
Simplified98.0%
clear-numN/A
associate-/r/N/A
associate-*l/N/A
clear-numN/A
un-div-invN/A
/-lowering-/.f32N/A
/-lowering-/.f32N/A
PI-lowering-PI.f32N/A
/-lowering-/.f32N/A
*-lowering-*.f32N/A
sub0-negN/A
distribute-frac-negN/A
Applied egg-rr98.2%
Taylor expanded in r around 0
*-lowering-*.f32N/A
+-lowering-+.f32N/A
*-commutativeN/A
*-lowering-*.f32N/A
*-lowering-*.f32N/A
+-lowering-+.f32N/A
*-lowering-*.f32N/A
+-lowering-+.f32N/A
*-lowering-*.f32N/A
/-lowering-/.f32N/A
unpow2N/A
*-lowering-*.f32N/A
associate-*r/N/A
metadata-evalN/A
/-lowering-/.f3234.0%
Simplified34.0%
Final simplification76.4%
(FPCore (s r)
:precision binary32
(/
(/
-0.125
(-
(*
r
(-
(*
r
(-
(* (/ PI (* s (* s s))) (* r -0.006172839506172839))
(/ (* PI 0.08333333333333333) (* s s))))
(/ (* PI 0.3333333333333333) s)))
(* PI 0.5)))
(* r s)))
float code(float s, float r) {
return (-0.125f / ((r * ((r * (((((float) M_PI) / (s * (s * s))) * (r * -0.006172839506172839f)) - ((((float) M_PI) * 0.08333333333333333f) / (s * s)))) - ((((float) M_PI) * 0.3333333333333333f) / s))) - (((float) M_PI) * 0.5f))) / (r * s);
}
function code(s, r) return Float32(Float32(Float32(-0.125) / Float32(Float32(r * Float32(Float32(r * Float32(Float32(Float32(Float32(pi) / Float32(s * Float32(s * s))) * Float32(r * Float32(-0.006172839506172839))) - Float32(Float32(Float32(pi) * Float32(0.08333333333333333)) / Float32(s * s)))) - Float32(Float32(Float32(pi) * Float32(0.3333333333333333)) / s))) - Float32(Float32(pi) * Float32(0.5)))) / Float32(r * s)) end
function tmp = code(s, r) tmp = (single(-0.125) / ((r * ((r * (((single(pi) / (s * (s * s))) * (r * single(-0.006172839506172839))) - ((single(pi) * single(0.08333333333333333)) / (s * s)))) - ((single(pi) * single(0.3333333333333333)) / s))) - (single(pi) * single(0.5)))) / (r * s); end
\begin{array}{l}
\\
\frac{\frac{-0.125}{r \cdot \left(r \cdot \left(\frac{\pi}{s \cdot \left(s \cdot s\right)} \cdot \left(r \cdot -0.006172839506172839\right) - \frac{\pi \cdot 0.08333333333333333}{s \cdot s}\right) - \frac{\pi \cdot 0.3333333333333333}{s}\right) - \pi \cdot 0.5}}{r \cdot s}
\end{array}
Initial program 99.5%
Simplified96.7%
associate-/l*N/A
frac-2negN/A
associate-*l/N/A
/-lowering-/.f32N/A
Applied egg-rr99.5%
Taylor expanded in r around 0
Simplified15.9%
Taylor expanded in r around 0
+-lowering-+.f32N/A
associate-*r/N/A
/-lowering-/.f32N/A
*-commutativeN/A
*-lowering-*.f32N/A
PI-lowering-PI.f32N/A
*-lowering-*.f32N/A
+-commutativeN/A
mul-1-negN/A
unsub-negN/A
Simplified76.4%
Final simplification76.4%
(FPCore (s r)
:precision binary32
(/
(/
-0.125
(-
(*
r
(/
(-
(* r (* PI (* r -0.006172839506172839)))
(* s (* PI (+ (* r 0.08333333333333333) (* s 0.3333333333333333)))))
(* s (* s s))))
(* PI 0.5)))
(* r s)))
float code(float s, float r) {
return (-0.125f / ((r * (((r * (((float) M_PI) * (r * -0.006172839506172839f))) - (s * (((float) M_PI) * ((r * 0.08333333333333333f) + (s * 0.3333333333333333f))))) / (s * (s * s)))) - (((float) M_PI) * 0.5f))) / (r * s);
}
function code(s, r) return Float32(Float32(Float32(-0.125) / Float32(Float32(r * Float32(Float32(Float32(r * Float32(Float32(pi) * Float32(r * Float32(-0.006172839506172839)))) - Float32(s * Float32(Float32(pi) * Float32(Float32(r * Float32(0.08333333333333333)) + Float32(s * Float32(0.3333333333333333)))))) / Float32(s * Float32(s * s)))) - Float32(Float32(pi) * Float32(0.5)))) / Float32(r * s)) end
function tmp = code(s, r) tmp = (single(-0.125) / ((r * (((r * (single(pi) * (r * single(-0.006172839506172839)))) - (s * (single(pi) * ((r * single(0.08333333333333333)) + (s * single(0.3333333333333333)))))) / (s * (s * s)))) - (single(pi) * single(0.5)))) / (r * s); end
\begin{array}{l}
\\
\frac{\frac{-0.125}{r \cdot \frac{r \cdot \left(\pi \cdot \left(r \cdot -0.006172839506172839\right)\right) - s \cdot \left(\pi \cdot \left(r \cdot 0.08333333333333333 + s \cdot 0.3333333333333333\right)\right)}{s \cdot \left(s \cdot s\right)} - \pi \cdot 0.5}}{r \cdot s}
\end{array}
Initial program 99.5%
Simplified96.7%
associate-/l*N/A
frac-2negN/A
associate-*l/N/A
/-lowering-/.f32N/A
Applied egg-rr99.5%
Taylor expanded in r around 0
Simplified15.9%
Taylor expanded in s around 0
/-lowering-/.f32N/A
Simplified75.0%
Final simplification75.0%
(FPCore (s r)
:precision binary32
(/
(/
-0.125
(-
(*
r
(/
(-
(* PI -0.3333333333333333)
(/
(+
(* r (* PI 0.08333333333333333))
(* r (* r (/ (* PI 0.006172839506172839) s))))
s))
s))
(* PI 0.5)))
(* r s)))
float code(float s, float r) {
return (-0.125f / ((r * (((((float) M_PI) * -0.3333333333333333f) - (((r * (((float) M_PI) * 0.08333333333333333f)) + (r * (r * ((((float) M_PI) * 0.006172839506172839f) / s)))) / s)) / s)) - (((float) M_PI) * 0.5f))) / (r * s);
}
function code(s, r) return Float32(Float32(Float32(-0.125) / Float32(Float32(r * Float32(Float32(Float32(Float32(pi) * Float32(-0.3333333333333333)) - Float32(Float32(Float32(r * Float32(Float32(pi) * Float32(0.08333333333333333))) + Float32(r * Float32(r * Float32(Float32(Float32(pi) * Float32(0.006172839506172839)) / s)))) / s)) / s)) - Float32(Float32(pi) * Float32(0.5)))) / Float32(r * s)) end
function tmp = code(s, r) tmp = (single(-0.125) / ((r * (((single(pi) * single(-0.3333333333333333)) - (((r * (single(pi) * single(0.08333333333333333))) + (r * (r * ((single(pi) * single(0.006172839506172839)) / s)))) / s)) / s)) - (single(pi) * single(0.5)))) / (r * s); end
\begin{array}{l}
\\
\frac{\frac{-0.125}{r \cdot \frac{\pi \cdot -0.3333333333333333 - \frac{r \cdot \left(\pi \cdot 0.08333333333333333\right) + r \cdot \left(r \cdot \frac{\pi \cdot 0.006172839506172839}{s}\right)}{s}}{s} - \pi \cdot 0.5}}{r \cdot s}
\end{array}
Initial program 99.5%
Simplified96.7%
associate-/l*N/A
frac-2negN/A
associate-*l/N/A
/-lowering-/.f32N/A
Applied egg-rr99.5%
Taylor expanded in r around 0
Simplified15.9%
Taylor expanded in s around -inf
mul-1-negN/A
distribute-neg-frac2N/A
mul-1-negN/A
/-lowering-/.f32N/A
Simplified74.6%
Final simplification74.6%
(FPCore (s r)
:precision binary32
(let* ((t_0 (* r (* r r))))
(if (<= s 2.000000047484456e-33)
(* (/ -1.0 r) (/ (* 0.125 (* s s)) (* t_0 (* PI -0.006172839506172839))))
(if (<= s 1.500000053056283e-6)
(*
(/ -1.0 r)
(/ 0.125 (* (* s t_0) (/ (* PI -0.006172839506172839) (* s (* s s))))))
(/
(/ 1.0 PI)
(*
r
(+
(* s 4.0)
(* r (+ 2.6666666666666665 (/ (* r 0.6666666666666666) s))))))))))
float code(float s, float r) {
float t_0 = r * (r * r);
float tmp;
if (s <= 2.000000047484456e-33f) {
tmp = (-1.0f / r) * ((0.125f * (s * s)) / (t_0 * (((float) M_PI) * -0.006172839506172839f)));
} else if (s <= 1.500000053056283e-6f) {
tmp = (-1.0f / r) * (0.125f / ((s * t_0) * ((((float) M_PI) * -0.006172839506172839f) / (s * (s * s)))));
} else {
tmp = (1.0f / ((float) M_PI)) / (r * ((s * 4.0f) + (r * (2.6666666666666665f + ((r * 0.6666666666666666f) / s)))));
}
return tmp;
}
function code(s, r) t_0 = Float32(r * Float32(r * r)) tmp = Float32(0.0) if (s <= Float32(2.000000047484456e-33)) tmp = Float32(Float32(Float32(-1.0) / r) * Float32(Float32(Float32(0.125) * Float32(s * s)) / Float32(t_0 * Float32(Float32(pi) * Float32(-0.006172839506172839))))); elseif (s <= Float32(1.500000053056283e-6)) tmp = Float32(Float32(Float32(-1.0) / r) * Float32(Float32(0.125) / Float32(Float32(s * t_0) * Float32(Float32(Float32(pi) * Float32(-0.006172839506172839)) / Float32(s * Float32(s * s)))))); else tmp = Float32(Float32(Float32(1.0) / Float32(pi)) / Float32(r * Float32(Float32(s * Float32(4.0)) + Float32(r * Float32(Float32(2.6666666666666665) + Float32(Float32(r * Float32(0.6666666666666666)) / s)))))); end return tmp end
function tmp_2 = code(s, r) t_0 = r * (r * r); tmp = single(0.0); if (s <= single(2.000000047484456e-33)) tmp = (single(-1.0) / r) * ((single(0.125) * (s * s)) / (t_0 * (single(pi) * single(-0.006172839506172839)))); elseif (s <= single(1.500000053056283e-6)) tmp = (single(-1.0) / r) * (single(0.125) / ((s * t_0) * ((single(pi) * single(-0.006172839506172839)) / (s * (s * s))))); else tmp = (single(1.0) / single(pi)) / (r * ((s * single(4.0)) + (r * (single(2.6666666666666665) + ((r * single(0.6666666666666666)) / s))))); end tmp_2 = tmp; end
\begin{array}{l}
\\
\begin{array}{l}
t_0 := r \cdot \left(r \cdot r\right)\\
\mathbf{if}\;s \leq 2.000000047484456 \cdot 10^{-33}:\\
\;\;\;\;\frac{-1}{r} \cdot \frac{0.125 \cdot \left(s \cdot s\right)}{t\_0 \cdot \left(\pi \cdot -0.006172839506172839\right)}\\
\mathbf{elif}\;s \leq 1.500000053056283 \cdot 10^{-6}:\\
\;\;\;\;\frac{-1}{r} \cdot \frac{0.125}{\left(s \cdot t\_0\right) \cdot \frac{\pi \cdot -0.006172839506172839}{s \cdot \left(s \cdot s\right)}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{1}{\pi}}{r \cdot \left(s \cdot 4 + r \cdot \left(2.6666666666666665 + \frac{r \cdot 0.6666666666666666}{s}\right)\right)}\\
\end{array}
\end{array}
if s < 2.00000005e-33Initial program 100.0%
Simplified80.6%
associate-/l*N/A
frac-2negN/A
associate-*l/N/A
/-lowering-/.f32N/A
Applied egg-rr100.0%
Taylor expanded in r around 0
Simplified-0.0%
Applied egg-rr-0.0%
Taylor expanded in s around 0
associate-*r/N/A
/-lowering-/.f32N/A
*-lowering-*.f32N/A
unpow2N/A
*-lowering-*.f32N/A
*-lowering-*.f32N/A
cube-multN/A
unpow2N/A
*-lowering-*.f32N/A
unpow2N/A
*-lowering-*.f32N/A
distribute-rgt-outN/A
metadata-evalN/A
*-lowering-*.f32N/A
PI-lowering-PI.f32100.0%
Simplified100.0%
if 2.00000005e-33 < s < 1.50000005e-6Initial program 99.8%
Simplified99.8%
associate-/l*N/A
frac-2negN/A
associate-*l/N/A
/-lowering-/.f32N/A
Applied egg-rr99.8%
Taylor expanded in r around 0
Simplified10.4%
Applied egg-rr9.9%
Taylor expanded in r around inf
/-lowering-/.f32N/A
associate-*r*N/A
*-lowering-*.f32N/A
*-lowering-*.f32N/A
cube-multN/A
unpow2N/A
*-lowering-*.f32N/A
unpow2N/A
*-lowering-*.f32N/A
distribute-rgt-outN/A
metadata-evalN/A
*-commutativeN/A
associate-*r/N/A
/-lowering-/.f32N/A
*-lowering-*.f32N/A
PI-lowering-PI.f32N/A
cube-multN/A
unpow2N/A
*-lowering-*.f32N/A
unpow2N/A
*-lowering-*.f3274.7%
Simplified74.7%
if 1.50000005e-6 < s Initial program 98.0%
Simplified97.8%
clear-numN/A
associate-/r/N/A
associate-*l/N/A
clear-numN/A
un-div-invN/A
/-lowering-/.f32N/A
/-lowering-/.f32N/A
PI-lowering-PI.f32N/A
/-lowering-/.f32N/A
*-lowering-*.f32N/A
sub0-negN/A
distribute-frac-negN/A
Applied egg-rr98.0%
Taylor expanded in r around 0
*-lowering-*.f32N/A
+-lowering-+.f32N/A
*-commutativeN/A
*-lowering-*.f32N/A
*-lowering-*.f32N/A
+-lowering-+.f32N/A
associate-*r/N/A
/-lowering-/.f32N/A
*-lowering-*.f3240.8%
Simplified40.8%
Final simplification71.5%
(FPCore (s r)
:precision binary32
(if (<= s 2.999999970665357e-10)
(/
(/
-0.125
(+
(* PI 0.5)
(* r (* (* r r) (* 0.006172839506172839 (/ PI (* s (* s s))))))))
(- 0.0 (* r s)))
(/
(/ 1.0 PI)
(*
r
(+
(* s 4.0)
(*
r
(+
2.6666666666666665
(*
r
(+
(* 0.04938271604938271 (/ r (* s s)))
(/ 0.6666666666666666 s))))))))))
float code(float s, float r) {
float tmp;
if (s <= 2.999999970665357e-10f) {
tmp = (-0.125f / ((((float) M_PI) * 0.5f) + (r * ((r * r) * (0.006172839506172839f * (((float) M_PI) / (s * (s * s)))))))) / (0.0f - (r * s));
} else {
tmp = (1.0f / ((float) M_PI)) / (r * ((s * 4.0f) + (r * (2.6666666666666665f + (r * ((0.04938271604938271f * (r / (s * s))) + (0.6666666666666666f / s)))))));
}
return tmp;
}
function code(s, r) tmp = Float32(0.0) if (s <= Float32(2.999999970665357e-10)) tmp = Float32(Float32(Float32(-0.125) / Float32(Float32(Float32(pi) * Float32(0.5)) + Float32(r * Float32(Float32(r * r) * Float32(Float32(0.006172839506172839) * Float32(Float32(pi) / Float32(s * Float32(s * s)))))))) / Float32(Float32(0.0) - Float32(r * s))); else tmp = Float32(Float32(Float32(1.0) / Float32(pi)) / Float32(r * Float32(Float32(s * Float32(4.0)) + Float32(r * Float32(Float32(2.6666666666666665) + Float32(r * Float32(Float32(Float32(0.04938271604938271) * Float32(r / Float32(s * s))) + Float32(Float32(0.6666666666666666) / s)))))))); end return tmp end
function tmp_2 = code(s, r) tmp = single(0.0); if (s <= single(2.999999970665357e-10)) tmp = (single(-0.125) / ((single(pi) * single(0.5)) + (r * ((r * r) * (single(0.006172839506172839) * (single(pi) / (s * (s * s)))))))) / (single(0.0) - (r * s)); else tmp = (single(1.0) / single(pi)) / (r * ((s * single(4.0)) + (r * (single(2.6666666666666665) + (r * ((single(0.04938271604938271) * (r / (s * s))) + (single(0.6666666666666666) / s))))))); end tmp_2 = tmp; end
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;s \leq 2.999999970665357 \cdot 10^{-10}:\\
\;\;\;\;\frac{\frac{-0.125}{\pi \cdot 0.5 + r \cdot \left(\left(r \cdot r\right) \cdot \left(0.006172839506172839 \cdot \frac{\pi}{s \cdot \left(s \cdot s\right)}\right)\right)}}{0 - r \cdot s}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{1}{\pi}}{r \cdot \left(s \cdot 4 + r \cdot \left(2.6666666666666665 + r \cdot \left(0.04938271604938271 \cdot \frac{r}{s \cdot s} + \frac{0.6666666666666666}{s}\right)\right)\right)}\\
\end{array}
\end{array}
if s < 2.99999997e-10Initial program 100.0%
Simplified96.1%
associate-/l*N/A
frac-2negN/A
associate-*l/N/A
/-lowering-/.f32N/A
Applied egg-rr100.0%
Taylor expanded in r around 0
Simplified8.3%
Taylor expanded in r around inf
mul-1-negN/A
distribute-rgt-neg-inN/A
mul-1-negN/A
*-lowering-*.f32N/A
unpow2N/A
*-lowering-*.f32N/A
mul-1-negN/A
distribute-rgt-outN/A
metadata-evalN/A
distribute-rgt-neg-inN/A
metadata-evalN/A
*-lowering-*.f32N/A
Simplified94.0%
if 2.99999997e-10 < s Initial program 98.2%
Simplified98.0%
clear-numN/A
associate-/r/N/A
associate-*l/N/A
clear-numN/A
un-div-invN/A
/-lowering-/.f32N/A
/-lowering-/.f32N/A
PI-lowering-PI.f32N/A
/-lowering-/.f32N/A
*-lowering-*.f32N/A
sub0-negN/A
distribute-frac-negN/A
Applied egg-rr98.2%
Taylor expanded in r around 0
*-lowering-*.f32N/A
+-lowering-+.f32N/A
*-commutativeN/A
*-lowering-*.f32N/A
*-lowering-*.f32N/A
+-lowering-+.f32N/A
*-lowering-*.f32N/A
+-lowering-+.f32N/A
*-lowering-*.f32N/A
/-lowering-/.f32N/A
unpow2N/A
*-lowering-*.f32N/A
associate-*r/N/A
metadata-evalN/A
/-lowering-/.f3234.0%
Simplified34.0%
Final simplification76.4%
(FPCore (s r)
:precision binary32
(if (<= s 1.500000053056283e-6)
(*
(/
(/ -0.125 (* (* r (* r r)) (* 0.006172839506172839 (/ PI (* s (* s s))))))
s)
(/ -1.0 r))
(/
(/ 1.0 PI)
(*
r
(+
(* s 4.0)
(* r (+ 2.6666666666666665 (/ (* r 0.6666666666666666) s))))))))
float code(float s, float r) {
float tmp;
if (s <= 1.500000053056283e-6f) {
tmp = ((-0.125f / ((r * (r * r)) * (0.006172839506172839f * (((float) M_PI) / (s * (s * s)))))) / s) * (-1.0f / r);
} else {
tmp = (1.0f / ((float) M_PI)) / (r * ((s * 4.0f) + (r * (2.6666666666666665f + ((r * 0.6666666666666666f) / s)))));
}
return tmp;
}
function code(s, r) tmp = Float32(0.0) if (s <= Float32(1.500000053056283e-6)) tmp = Float32(Float32(Float32(Float32(-0.125) / Float32(Float32(r * Float32(r * r)) * Float32(Float32(0.006172839506172839) * Float32(Float32(pi) / Float32(s * Float32(s * s)))))) / s) * Float32(Float32(-1.0) / r)); else tmp = Float32(Float32(Float32(1.0) / Float32(pi)) / Float32(r * Float32(Float32(s * Float32(4.0)) + Float32(r * Float32(Float32(2.6666666666666665) + Float32(Float32(r * Float32(0.6666666666666666)) / s)))))); end return tmp end
function tmp_2 = code(s, r) tmp = single(0.0); if (s <= single(1.500000053056283e-6)) tmp = ((single(-0.125) / ((r * (r * r)) * (single(0.006172839506172839) * (single(pi) / (s * (s * s)))))) / s) * (single(-1.0) / r); else tmp = (single(1.0) / single(pi)) / (r * ((s * single(4.0)) + (r * (single(2.6666666666666665) + ((r * single(0.6666666666666666)) / s))))); end tmp_2 = tmp; end
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;s \leq 1.500000053056283 \cdot 10^{-6}:\\
\;\;\;\;\frac{\frac{-0.125}{\left(r \cdot \left(r \cdot r\right)\right) \cdot \left(0.006172839506172839 \cdot \frac{\pi}{s \cdot \left(s \cdot s\right)}\right)}}{s} \cdot \frac{-1}{r}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{1}{\pi}}{r \cdot \left(s \cdot 4 + r \cdot \left(2.6666666666666665 + \frac{r \cdot 0.6666666666666666}{s}\right)\right)}\\
\end{array}
\end{array}
if s < 1.50000005e-6Initial program 99.8%
Simplified96.4%
associate-/l*N/A
frac-2negN/A
associate-*l/N/A
/-lowering-/.f32N/A
Applied egg-rr99.8%
Taylor expanded in r around 0
Simplified8.6%
Applied egg-rr8.1%
Taylor expanded in r around inf
mul-1-negN/A
distribute-rgt-neg-inN/A
mul-1-negN/A
*-lowering-*.f32N/A
cube-multN/A
unpow2N/A
*-lowering-*.f32N/A
unpow2N/A
*-lowering-*.f32N/A
mul-1-negN/A
distribute-rgt-outN/A
metadata-evalN/A
*-commutativeN/A
distribute-lft-neg-inN/A
metadata-evalN/A
*-lowering-*.f32N/A
/-lowering-/.f32N/A
PI-lowering-PI.f32N/A
cube-multN/A
Simplified84.2%
if 1.50000005e-6 < s Initial program 98.0%
Simplified97.8%
clear-numN/A
associate-/r/N/A
associate-*l/N/A
clear-numN/A
un-div-invN/A
/-lowering-/.f32N/A
/-lowering-/.f32N/A
PI-lowering-PI.f32N/A
/-lowering-/.f32N/A
*-lowering-*.f32N/A
sub0-negN/A
distribute-frac-negN/A
Applied egg-rr98.0%
Taylor expanded in r around 0
*-lowering-*.f32N/A
+-lowering-+.f32N/A
*-commutativeN/A
*-lowering-*.f32N/A
*-lowering-*.f32N/A
+-lowering-+.f32N/A
associate-*r/N/A
/-lowering-/.f32N/A
*-lowering-*.f3240.8%
Simplified40.8%
Final simplification75.5%
(FPCore (s r)
:precision binary32
(/
(/
-0.125
(+
(* PI 0.5)
(* r (* (* r r) (* 0.006172839506172839 (/ PI (* s (* s s))))))))
(- 0.0 (* r s))))
float code(float s, float r) {
return (-0.125f / ((((float) M_PI) * 0.5f) + (r * ((r * r) * (0.006172839506172839f * (((float) M_PI) / (s * (s * s)))))))) / (0.0f - (r * s));
}
function code(s, r) return Float32(Float32(Float32(-0.125) / Float32(Float32(Float32(pi) * Float32(0.5)) + Float32(r * Float32(Float32(r * r) * Float32(Float32(0.006172839506172839) * Float32(Float32(pi) / Float32(s * Float32(s * s)))))))) / Float32(Float32(0.0) - Float32(r * s))) end
function tmp = code(s, r) tmp = (single(-0.125) / ((single(pi) * single(0.5)) + (r * ((r * r) * (single(0.006172839506172839) * (single(pi) / (s * (s * s)))))))) / (single(0.0) - (r * s)); end
\begin{array}{l}
\\
\frac{\frac{-0.125}{\pi \cdot 0.5 + r \cdot \left(\left(r \cdot r\right) \cdot \left(0.006172839506172839 \cdot \frac{\pi}{s \cdot \left(s \cdot s\right)}\right)\right)}}{0 - r \cdot s}
\end{array}
Initial program 99.5%
Simplified96.7%
associate-/l*N/A
frac-2negN/A
associate-*l/N/A
/-lowering-/.f32N/A
Applied egg-rr99.5%
Taylor expanded in r around 0
Simplified15.9%
Taylor expanded in r around inf
mul-1-negN/A
distribute-rgt-neg-inN/A
mul-1-negN/A
*-lowering-*.f32N/A
unpow2N/A
*-lowering-*.f32N/A
mul-1-negN/A
distribute-rgt-outN/A
metadata-evalN/A
distribute-rgt-neg-inN/A
metadata-evalN/A
*-lowering-*.f32N/A
Simplified72.9%
Final simplification72.9%
(FPCore (s r)
:precision binary32
(if (<= s 1.500000053056283e-6)
(*
(/ -1.0 r)
(/ (* 0.125 (* s s)) (* (* r (* r r)) (* PI -0.006172839506172839))))
(/
(/ 1.0 PI)
(*
r
(+
(* s 4.0)
(* r (+ 2.6666666666666665 (/ (* r 0.6666666666666666) s))))))))
float code(float s, float r) {
float tmp;
if (s <= 1.500000053056283e-6f) {
tmp = (-1.0f / r) * ((0.125f * (s * s)) / ((r * (r * r)) * (((float) M_PI) * -0.006172839506172839f)));
} else {
tmp = (1.0f / ((float) M_PI)) / (r * ((s * 4.0f) + (r * (2.6666666666666665f + ((r * 0.6666666666666666f) / s)))));
}
return tmp;
}
function code(s, r) tmp = Float32(0.0) if (s <= Float32(1.500000053056283e-6)) tmp = Float32(Float32(Float32(-1.0) / r) * Float32(Float32(Float32(0.125) * Float32(s * s)) / Float32(Float32(r * Float32(r * r)) * Float32(Float32(pi) * Float32(-0.006172839506172839))))); else tmp = Float32(Float32(Float32(1.0) / Float32(pi)) / Float32(r * Float32(Float32(s * Float32(4.0)) + Float32(r * Float32(Float32(2.6666666666666665) + Float32(Float32(r * Float32(0.6666666666666666)) / s)))))); end return tmp end
function tmp_2 = code(s, r) tmp = single(0.0); if (s <= single(1.500000053056283e-6)) tmp = (single(-1.0) / r) * ((single(0.125) * (s * s)) / ((r * (r * r)) * (single(pi) * single(-0.006172839506172839)))); else tmp = (single(1.0) / single(pi)) / (r * ((s * single(4.0)) + (r * (single(2.6666666666666665) + ((r * single(0.6666666666666666)) / s))))); end tmp_2 = tmp; end
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;s \leq 1.500000053056283 \cdot 10^{-6}:\\
\;\;\;\;\frac{-1}{r} \cdot \frac{0.125 \cdot \left(s \cdot s\right)}{\left(r \cdot \left(r \cdot r\right)\right) \cdot \left(\pi \cdot -0.006172839506172839\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{1}{\pi}}{r \cdot \left(s \cdot 4 + r \cdot \left(2.6666666666666665 + \frac{r \cdot 0.6666666666666666}{s}\right)\right)}\\
\end{array}
\end{array}
if s < 1.50000005e-6Initial program 99.8%
Simplified96.4%
associate-/l*N/A
frac-2negN/A
associate-*l/N/A
/-lowering-/.f32N/A
Applied egg-rr99.8%
Taylor expanded in r around 0
Simplified8.6%
Applied egg-rr8.1%
Taylor expanded in s around 0
associate-*r/N/A
/-lowering-/.f32N/A
*-lowering-*.f32N/A
unpow2N/A
*-lowering-*.f32N/A
*-lowering-*.f32N/A
cube-multN/A
unpow2N/A
*-lowering-*.f32N/A
unpow2N/A
*-lowering-*.f32N/A
distribute-rgt-outN/A
metadata-evalN/A
*-lowering-*.f32N/A
PI-lowering-PI.f3265.7%
Simplified65.7%
if 1.50000005e-6 < s Initial program 98.0%
Simplified97.8%
clear-numN/A
associate-/r/N/A
associate-*l/N/A
clear-numN/A
un-div-invN/A
/-lowering-/.f32N/A
/-lowering-/.f32N/A
PI-lowering-PI.f32N/A
/-lowering-/.f32N/A
*-lowering-*.f32N/A
sub0-negN/A
distribute-frac-negN/A
Applied egg-rr98.0%
Taylor expanded in r around 0
*-lowering-*.f32N/A
+-lowering-+.f32N/A
*-commutativeN/A
*-lowering-*.f32N/A
*-lowering-*.f32N/A
+-lowering-+.f32N/A
associate-*r/N/A
/-lowering-/.f32N/A
*-lowering-*.f3240.8%
Simplified40.8%
Final simplification60.8%
(FPCore (s r)
:precision binary32
(if (<= s 9.999999747378752e-6)
(*
(/ -1.0 r)
(/ (* 0.125 (* s s)) (* (* r (* r r)) (* PI -0.006172839506172839))))
(/
(/
(+
(/ 0.25 r)
(/ (+ (/ (* r 0.06944444444444445) s) -0.16666666666666666) s))
s)
PI)))
float code(float s, float r) {
float tmp;
if (s <= 9.999999747378752e-6f) {
tmp = (-1.0f / r) * ((0.125f * (s * s)) / ((r * (r * r)) * (((float) M_PI) * -0.006172839506172839f)));
} else {
tmp = (((0.25f / r) + ((((r * 0.06944444444444445f) / s) + -0.16666666666666666f) / s)) / s) / ((float) M_PI);
}
return tmp;
}
function code(s, r) tmp = Float32(0.0) if (s <= Float32(9.999999747378752e-6)) tmp = Float32(Float32(Float32(-1.0) / r) * Float32(Float32(Float32(0.125) * Float32(s * s)) / Float32(Float32(r * Float32(r * r)) * Float32(Float32(pi) * Float32(-0.006172839506172839))))); else tmp = Float32(Float32(Float32(Float32(Float32(0.25) / r) + Float32(Float32(Float32(Float32(r * Float32(0.06944444444444445)) / s) + Float32(-0.16666666666666666)) / s)) / s) / Float32(pi)); end return tmp end
function tmp_2 = code(s, r) tmp = single(0.0); if (s <= single(9.999999747378752e-6)) tmp = (single(-1.0) / r) * ((single(0.125) * (s * s)) / ((r * (r * r)) * (single(pi) * single(-0.006172839506172839)))); else tmp = (((single(0.25) / r) + ((((r * single(0.06944444444444445)) / s) + single(-0.16666666666666666)) / s)) / s) / single(pi); end tmp_2 = tmp; end
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;s \leq 9.999999747378752 \cdot 10^{-6}:\\
\;\;\;\;\frac{-1}{r} \cdot \frac{0.125 \cdot \left(s \cdot s\right)}{\left(r \cdot \left(r \cdot r\right)\right) \cdot \left(\pi \cdot -0.006172839506172839\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\frac{0.25}{r} + \frac{\frac{r \cdot 0.06944444444444445}{s} + -0.16666666666666666}{s}}{s}}{\pi}\\
\end{array}
\end{array}
if s < 9.99999975e-6Initial program 99.8%
Simplified96.4%
associate-/l*N/A
frac-2negN/A
associate-*l/N/A
/-lowering-/.f32N/A
Applied egg-rr99.8%
Taylor expanded in r around 0
Simplified8.7%
Applied egg-rr8.2%
Taylor expanded in s around 0
associate-*r/N/A
/-lowering-/.f32N/A
*-lowering-*.f32N/A
unpow2N/A
*-lowering-*.f32N/A
*-lowering-*.f32N/A
cube-multN/A
unpow2N/A
*-lowering-*.f32N/A
unpow2N/A
*-lowering-*.f32N/A
distribute-rgt-outN/A
metadata-evalN/A
*-lowering-*.f32N/A
PI-lowering-PI.f3265.2%
Simplified65.2%
if 9.99999975e-6 < s Initial program 98.0%
Simplified97.7%
Taylor expanded in r around 0
/-lowering-/.f32N/A
Simplified36.5%
Taylor expanded in s around inf
/-lowering-/.f32N/A
Simplified36.7%
Final simplification59.8%
(FPCore (s r) :precision binary32 (if (<= s 9.800000012268644e-32) (/ (/ -0.125 (* 0.3333333333333333 (/ (* PI r) s))) (- 0.0 (* r s))) (/ (/ 1.0 PI) (* r (+ (* s 4.0) (* r 2.6666666666666665))))))
float code(float s, float r) {
float tmp;
if (s <= 9.800000012268644e-32f) {
tmp = (-0.125f / (0.3333333333333333f * ((((float) M_PI) * r) / s))) / (0.0f - (r * s));
} else {
tmp = (1.0f / ((float) M_PI)) / (r * ((s * 4.0f) + (r * 2.6666666666666665f)));
}
return tmp;
}
function code(s, r) tmp = Float32(0.0) if (s <= Float32(9.800000012268644e-32)) tmp = Float32(Float32(Float32(-0.125) / Float32(Float32(0.3333333333333333) * Float32(Float32(Float32(pi) * r) / s))) / Float32(Float32(0.0) - Float32(r * s))); else tmp = Float32(Float32(Float32(1.0) / Float32(pi)) / Float32(r * Float32(Float32(s * Float32(4.0)) + Float32(r * Float32(2.6666666666666665))))); end return tmp end
function tmp_2 = code(s, r) tmp = single(0.0); if (s <= single(9.800000012268644e-32)) tmp = (single(-0.125) / (single(0.3333333333333333) * ((single(pi) * r) / s))) / (single(0.0) - (r * s)); else tmp = (single(1.0) / single(pi)) / (r * ((s * single(4.0)) + (r * single(2.6666666666666665)))); end tmp_2 = tmp; end
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;s \leq 9.800000012268644 \cdot 10^{-32}:\\
\;\;\;\;\frac{\frac{-0.125}{0.3333333333333333 \cdot \frac{\pi \cdot r}{s}}}{0 - r \cdot s}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{1}{\pi}}{r \cdot \left(s \cdot 4 + r \cdot 2.6666666666666665\right)}\\
\end{array}
\end{array}
if s < 9.80000001e-32Initial program 100.0%
Simplified85.1%
associate-/l*N/A
frac-2negN/A
associate-*l/N/A
/-lowering-/.f32N/A
Applied egg-rr100.0%
Taylor expanded in r around 0
+-commutativeN/A
+-lowering-+.f32N/A
*-commutativeN/A
*-lowering-*.f32N/A
PI-lowering-PI.f32N/A
*-commutativeN/A
associate-*l/N/A
*-commutativeN/A
associate-*r*N/A
*-commutativeN/A
/-lowering-/.f32N/A
*-lowering-*.f32N/A
PI-lowering-PI.f32N/A
*-commutativeN/A
*-lowering-*.f3220.2%
Simplified20.2%
Taylor expanded in r around inf
*-lowering-*.f32N/A
/-lowering-/.f32N/A
*-lowering-*.f32N/A
PI-lowering-PI.f3226.1%
Simplified26.1%
if 9.80000001e-32 < s Initial program 99.3%
Simplified99.3%
clear-numN/A
associate-/r/N/A
associate-*l/N/A
clear-numN/A
un-div-invN/A
/-lowering-/.f32N/A
/-lowering-/.f32N/A
PI-lowering-PI.f32N/A
/-lowering-/.f32N/A
*-lowering-*.f32N/A
sub0-negN/A
distribute-frac-negN/A
Applied egg-rr99.3%
Taylor expanded in r around 0
*-lowering-*.f32N/A
+-lowering-+.f32N/A
*-commutativeN/A
*-lowering-*.f32N/A
*-commutativeN/A
*-lowering-*.f3213.4%
Simplified13.4%
Final simplification15.8%
(FPCore (s r) :precision binary32 (/ (/ -0.125 (* r (* PI (- (- 0.5) (/ r (/ s 0.3333333333333333)))))) s))
float code(float s, float r) {
return (-0.125f / (r * (((float) M_PI) * (-0.5f - (r / (s / 0.3333333333333333f)))))) / s;
}
function code(s, r) return Float32(Float32(Float32(-0.125) / Float32(r * Float32(Float32(pi) * Float32(Float32(-Float32(0.5)) - Float32(r / Float32(s / Float32(0.3333333333333333))))))) / s) end
function tmp = code(s, r) tmp = (single(-0.125) / (r * (single(pi) * (-single(0.5) - (r / (s / single(0.3333333333333333))))))) / s; end
\begin{array}{l}
\\
\frac{\frac{-0.125}{r \cdot \left(\pi \cdot \left(\left(-0.5\right) - \frac{r}{\frac{s}{0.3333333333333333}}\right)\right)}}{s}
\end{array}
Initial program 99.5%
Simplified96.7%
associate-/l*N/A
frac-2negN/A
associate-*l/N/A
/-lowering-/.f32N/A
Applied egg-rr99.5%
Taylor expanded in r around 0
+-commutativeN/A
+-lowering-+.f32N/A
*-commutativeN/A
*-lowering-*.f32N/A
PI-lowering-PI.f32N/A
*-commutativeN/A
associate-*l/N/A
*-commutativeN/A
associate-*r*N/A
*-commutativeN/A
/-lowering-/.f32N/A
*-lowering-*.f32N/A
PI-lowering-PI.f32N/A
*-commutativeN/A
*-lowering-*.f3214.7%
Simplified14.7%
Taylor expanded in r around 0
+-commutativeN/A
*-commutativeN/A
associate-/l*N/A
associate-*r*N/A
*-commutativeN/A
+-lowering-+.f32N/A
*-commutativeN/A
*-lowering-*.f32N/A
PI-lowering-PI.f32N/A
*-commutativeN/A
associate-*r*N/A
associate-/l*N/A
*-commutativeN/A
*-lowering-*.f32N/A
/-lowering-/.f32N/A
*-lowering-*.f32N/A
PI-lowering-PI.f3215.8%
Simplified15.8%
associate-/r*N/A
/-lowering-/.f32N/A
Applied egg-rr17.9%
Final simplification17.9%
(FPCore (s r) :precision binary32 (/ (/ 0.125 (* PI (+ 0.5 (/ r (/ s 0.3333333333333333))))) (* r s)))
float code(float s, float r) {
return (0.125f / (((float) M_PI) * (0.5f + (r / (s / 0.3333333333333333f))))) / (r * s);
}
function code(s, r) return Float32(Float32(Float32(0.125) / Float32(Float32(pi) * Float32(Float32(0.5) + Float32(r / Float32(s / Float32(0.3333333333333333)))))) / Float32(r * s)) end
function tmp = code(s, r) tmp = (single(0.125) / (single(pi) * (single(0.5) + (r / (s / single(0.3333333333333333)))))) / (r * s); end
\begin{array}{l}
\\
\frac{\frac{0.125}{\pi \cdot \left(0.5 + \frac{r}{\frac{s}{0.3333333333333333}}\right)}}{r \cdot s}
\end{array}
Initial program 99.5%
Simplified96.7%
associate-/l*N/A
frac-2negN/A
associate-*l/N/A
/-lowering-/.f32N/A
Applied egg-rr99.5%
Taylor expanded in r around 0
+-commutativeN/A
+-lowering-+.f32N/A
*-commutativeN/A
*-lowering-*.f32N/A
PI-lowering-PI.f32N/A
*-commutativeN/A
associate-*l/N/A
*-commutativeN/A
associate-*r*N/A
*-commutativeN/A
/-lowering-/.f32N/A
*-lowering-*.f32N/A
PI-lowering-PI.f32N/A
*-commutativeN/A
*-lowering-*.f3214.7%
Simplified14.7%
distribute-lft-neg-outN/A
distribute-frac-neg2N/A
distribute-frac-negN/A
/-lowering-/.f32N/A
Applied egg-rr14.7%
Final simplification14.7%
(FPCore (s r) :precision binary32 (/ 0.125 (* (* PI (+ 0.5 (/ r (/ s 0.3333333333333333)))) (* r s))))
float code(float s, float r) {
return 0.125f / ((((float) M_PI) * (0.5f + (r / (s / 0.3333333333333333f)))) * (r * s));
}
function code(s, r) return Float32(Float32(0.125) / Float32(Float32(Float32(pi) * Float32(Float32(0.5) + Float32(r / Float32(s / Float32(0.3333333333333333))))) * Float32(r * s))) end
function tmp = code(s, r) tmp = single(0.125) / ((single(pi) * (single(0.5) + (r / (s / single(0.3333333333333333))))) * (r * s)); end
\begin{array}{l}
\\
\frac{0.125}{\left(\pi \cdot \left(0.5 + \frac{r}{\frac{s}{0.3333333333333333}}\right)\right) \cdot \left(r \cdot s\right)}
\end{array}
Initial program 99.5%
Simplified96.7%
associate-/l*N/A
frac-2negN/A
associate-*l/N/A
/-lowering-/.f32N/A
Applied egg-rr99.5%
Taylor expanded in r around 0
+-commutativeN/A
+-lowering-+.f32N/A
*-commutativeN/A
*-lowering-*.f32N/A
PI-lowering-PI.f32N/A
*-commutativeN/A
associate-*l/N/A
*-commutativeN/A
associate-*r*N/A
*-commutativeN/A
/-lowering-/.f32N/A
*-lowering-*.f32N/A
PI-lowering-PI.f32N/A
*-commutativeN/A
*-lowering-*.f3214.7%
Simplified14.7%
associate-/l/N/A
frac-2negN/A
metadata-evalN/A
/-lowering-/.f32N/A
distribute-lft-neg-outN/A
distribute-lft-neg-outN/A
remove-double-negN/A
*-lowering-*.f32N/A
*-lowering-*.f32N/A
+-commutativeN/A
associate-/l*N/A
distribute-lft-outN/A
*-lowering-*.f32N/A
PI-lowering-PI.f32N/A
+-lowering-+.f32N/A
Applied egg-rr14.6%
Final simplification14.6%
(FPCore (s r) :precision binary32 (/ (/ 1.0 PI) (* r (+ (* s 4.0) (* r 2.6666666666666665)))))
float code(float s, float r) {
return (1.0f / ((float) M_PI)) / (r * ((s * 4.0f) + (r * 2.6666666666666665f)));
}
function code(s, r) return Float32(Float32(Float32(1.0) / Float32(pi)) / Float32(r * Float32(Float32(s * Float32(4.0)) + Float32(r * Float32(2.6666666666666665))))) end
function tmp = code(s, r) tmp = (single(1.0) / single(pi)) / (r * ((s * single(4.0)) + (r * single(2.6666666666666665)))); end
\begin{array}{l}
\\
\frac{\frac{1}{\pi}}{r \cdot \left(s \cdot 4 + r \cdot 2.6666666666666665\right)}
\end{array}
Initial program 99.5%
Simplified96.7%
clear-numN/A
associate-/r/N/A
associate-*l/N/A
clear-numN/A
un-div-invN/A
/-lowering-/.f32N/A
/-lowering-/.f32N/A
PI-lowering-PI.f32N/A
/-lowering-/.f32N/A
*-lowering-*.f32N/A
sub0-negN/A
distribute-frac-negN/A
Applied egg-rr99.5%
Taylor expanded in r around 0
*-lowering-*.f32N/A
+-lowering-+.f32N/A
*-commutativeN/A
*-lowering-*.f32N/A
*-commutativeN/A
*-lowering-*.f3212.2%
Simplified12.2%
Final simplification12.2%
(FPCore (s r) :precision binary32 (/ (/ 0.25 (* r s)) (+ -1.0 (+ PI 1.0))))
float code(float s, float r) {
return (0.25f / (r * s)) / (-1.0f + (((float) M_PI) + 1.0f));
}
function code(s, r) return Float32(Float32(Float32(0.25) / Float32(r * s)) / Float32(Float32(-1.0) + Float32(Float32(pi) + Float32(1.0)))) end
function tmp = code(s, r) tmp = (single(0.25) / (r * s)) / (single(-1.0) + (single(pi) + single(1.0))); end
\begin{array}{l}
\\
\frac{\frac{0.25}{r \cdot s}}{-1 + \left(\pi + 1\right)}
\end{array}
Initial program 99.5%
Taylor expanded in r around 0
associate-/r*N/A
metadata-evalN/A
associate-*r/N/A
associate-/r*N/A
/-lowering-/.f32N/A
associate-*r/N/A
metadata-evalN/A
associate-/r*N/A
/-lowering-/.f32N/A
*-lowering-*.f32N/A
PI-lowering-PI.f328.8%
Simplified8.8%
expm1-log1p-uN/A
expm1-undefineN/A
--lowering--.f32N/A
log1p-undefineN/A
rem-exp-logN/A
+-lowering-+.f32N/A
PI-lowering-PI.f328.8%
Applied egg-rr8.8%
Final simplification8.8%
(FPCore (s r) :precision binary32 (/ (/ (/ 0.25 PI) r) s))
float code(float s, float r) {
return ((0.25f / ((float) M_PI)) / r) / s;
}
function code(s, r) return Float32(Float32(Float32(Float32(0.25) / Float32(pi)) / r) / s) end
function tmp = code(s, r) tmp = ((single(0.25) / single(pi)) / r) / s; end
\begin{array}{l}
\\
\frac{\frac{\frac{0.25}{\pi}}{r}}{s}
\end{array}
Initial program 99.5%
Taylor expanded in r around 0
associate-/r*N/A
metadata-evalN/A
associate-*r/N/A
associate-/r*N/A
/-lowering-/.f32N/A
associate-*r/N/A
metadata-evalN/A
associate-/r*N/A
/-lowering-/.f32N/A
*-lowering-*.f32N/A
PI-lowering-PI.f328.8%
Simplified8.8%
associate-/l/N/A
/-lowering-/.f32N/A
*-lowering-*.f32N/A
PI-lowering-PI.f32N/A
*-lowering-*.f328.8%
Applied egg-rr8.8%
associate-/r*N/A
associate-/r*N/A
/-lowering-/.f32N/A
/-lowering-/.f32N/A
/-lowering-/.f32N/A
PI-lowering-PI.f328.8%
Applied egg-rr8.8%
(FPCore (s r) :precision binary32 (/ (/ 0.25 PI) (* r s)))
float code(float s, float r) {
return (0.25f / ((float) M_PI)) / (r * s);
}
function code(s, r) return Float32(Float32(Float32(0.25) / Float32(pi)) / Float32(r * s)) end
function tmp = code(s, r) tmp = (single(0.25) / single(pi)) / (r * s); end
\begin{array}{l}
\\
\frac{\frac{0.25}{\pi}}{r \cdot s}
\end{array}
Initial program 99.5%
Taylor expanded in r around 0
associate-/r*N/A
metadata-evalN/A
associate-*r/N/A
associate-/r*N/A
/-lowering-/.f32N/A
associate-*r/N/A
metadata-evalN/A
associate-/r*N/A
/-lowering-/.f32N/A
*-lowering-*.f32N/A
PI-lowering-PI.f328.8%
Simplified8.8%
associate-/l/N/A
associate-/r*N/A
/-lowering-/.f32N/A
/-lowering-/.f32N/A
PI-lowering-PI.f32N/A
*-lowering-*.f328.8%
Applied egg-rr8.8%
(FPCore (s r) :precision binary32 (/ 0.25 (* s (* PI r))))
float code(float s, float r) {
return 0.25f / (s * (((float) M_PI) * r));
}
function code(s, r) return Float32(Float32(0.25) / Float32(s * Float32(Float32(pi) * r))) end
function tmp = code(s, r) tmp = single(0.25) / (s * (single(pi) * r)); end
\begin{array}{l}
\\
\frac{0.25}{s \cdot \left(\pi \cdot r\right)}
\end{array}
Initial program 99.5%
Taylor expanded in r around 0
associate-/r*N/A
metadata-evalN/A
associate-*r/N/A
associate-/r*N/A
/-lowering-/.f32N/A
associate-*r/N/A
metadata-evalN/A
associate-/r*N/A
/-lowering-/.f32N/A
*-lowering-*.f32N/A
PI-lowering-PI.f328.8%
Simplified8.8%
associate-/l/N/A
/-lowering-/.f32N/A
*-lowering-*.f32N/A
PI-lowering-PI.f32N/A
*-lowering-*.f328.8%
Applied egg-rr8.8%
associate-*r*N/A
*-lowering-*.f32N/A
*-lowering-*.f32N/A
PI-lowering-PI.f328.8%
Applied egg-rr8.8%
Final simplification8.8%
(FPCore (s r) :precision binary32 (/ 0.25 (* PI (* r s))))
float code(float s, float r) {
return 0.25f / (((float) M_PI) * (r * s));
}
function code(s, r) return Float32(Float32(0.25) / Float32(Float32(pi) * Float32(r * s))) end
function tmp = code(s, r) tmp = single(0.25) / (single(pi) * (r * s)); end
\begin{array}{l}
\\
\frac{0.25}{\pi \cdot \left(r \cdot s\right)}
\end{array}
Initial program 99.5%
Taylor expanded in r around 0
associate-/r*N/A
metadata-evalN/A
associate-*r/N/A
associate-/r*N/A
/-lowering-/.f32N/A
associate-*r/N/A
metadata-evalN/A
associate-/r*N/A
/-lowering-/.f32N/A
*-lowering-*.f32N/A
PI-lowering-PI.f328.8%
Simplified8.8%
associate-/l/N/A
/-lowering-/.f32N/A
*-lowering-*.f32N/A
PI-lowering-PI.f32N/A
*-lowering-*.f328.8%
Applied egg-rr8.8%
herbie shell --seed 2024164
(FPCore (s r)
:name "Disney BSSRDF, PDF of scattering profile"
:precision binary32
:pre (and (and (<= 0.0 s) (<= s 256.0)) (and (< 1e-6 r) (< r 1000000.0)))
(+ (/ (* 0.25 (exp (/ (- r) s))) (* (* (* 2.0 PI) s) r)) (/ (* 0.75 (exp (/ (- r) (* 3.0 s)))) (* (* (* 6.0 PI) s) r))))