
(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))))
\begin{array}{l}
\\
\frac{0.25 \cdot e^{\frac{-r}{s}}}{\left(\left(2 \cdot \mathsf{PI}\left(\right)\right) \cdot s\right) \cdot r} + \frac{0.75 \cdot e^{\frac{-r}{3 \cdot s}}}{\left(\left(6 \cdot \mathsf{PI}\left(\right)\right) \cdot s\right) \cdot r}
\end{array}
Sampling outcomes in binary32 precision:
Herbie found 16 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))))
\begin{array}{l}
\\
\frac{0.25 \cdot e^{\frac{-r}{s}}}{\left(\left(2 \cdot \mathsf{PI}\left(\right)\right) \cdot s\right) \cdot r} + \frac{0.75 \cdot e^{\frac{-r}{3 \cdot s}}}{\left(\left(6 \cdot \mathsf{PI}\left(\right)\right) \cdot s\right) \cdot r}
\end{array}
(FPCore (s r) :precision binary32 (+ (/ (* (exp (/ (- r) (* 3.0 s))) 0.75) (* (* (* s r) 6.0) (PI))) (/ (* (exp (/ (- r) s)) 0.25) (* (* (* (PI) 2.0) s) r))))
\begin{array}{l}
\\
\frac{e^{\frac{-r}{3 \cdot s}} \cdot 0.75}{\left(\left(s \cdot r\right) \cdot 6\right) \cdot \mathsf{PI}\left(\right)} + \frac{e^{\frac{-r}{s}} \cdot 0.25}{\left(\left(\mathsf{PI}\left(\right) \cdot 2\right) \cdot s\right) \cdot r}
\end{array}
Initial program 99.2%
lift-*.f32N/A
lift-*.f32N/A
associate-*l*N/A
lift-*.f32N/A
*-commutativeN/A
associate-*l*N/A
lower-*.f32N/A
lower-*.f32N/A
lower-*.f3299.2
Applied rewrites99.2%
Final simplification99.2%
(FPCore (s r)
:precision binary32
(let* ((t_0 (* (PI) r)))
(if (<=
(+
(/ (* (exp (/ (- r) (* 3.0 s))) 0.75) (* (* (* 6.0 (PI)) s) r))
(/ (* (exp (/ (- r) s)) 0.25) (* (* (* (PI) 2.0) s) r)))
0.002199999988079071)
(+
(/ (* (exp (/ r (* -3.0 s))) 0.75) (* (* 6.0 s) t_0))
(/ (fma -0.125 (/ r (* (* s s) (PI))) (/ 0.125 (* (PI) s))) r))
(/
(-
(/
(-
(/ -0.16666666666666666 (PI))
(/ (* (/ -0.06944444444444445 (PI)) r) s))
s)
(/ -0.25 t_0))
s))))\begin{array}{l}
\\
\begin{array}{l}
t_0 := \mathsf{PI}\left(\right) \cdot r\\
\mathbf{if}\;\frac{e^{\frac{-r}{3 \cdot s}} \cdot 0.75}{\left(\left(6 \cdot \mathsf{PI}\left(\right)\right) \cdot s\right) \cdot r} + \frac{e^{\frac{-r}{s}} \cdot 0.25}{\left(\left(\mathsf{PI}\left(\right) \cdot 2\right) \cdot s\right) \cdot r} \leq 0.002199999988079071:\\
\;\;\;\;\frac{e^{\frac{r}{-3 \cdot s}} \cdot 0.75}{\left(6 \cdot s\right) \cdot t\_0} + \frac{\mathsf{fma}\left(-0.125, \frac{r}{\left(s \cdot s\right) \cdot \mathsf{PI}\left(\right)}, \frac{0.125}{\mathsf{PI}\left(\right) \cdot s}\right)}{r}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\frac{-0.16666666666666666}{\mathsf{PI}\left(\right)} - \frac{\frac{-0.06944444444444445}{\mathsf{PI}\left(\right)} \cdot r}{s}}{s} - \frac{-0.25}{t\_0}}{s}\\
\end{array}
\end{array}
if (+.f32 (/.f32 (*.f32 #s(literal 1/4 binary32) (exp.f32 (/.f32 (neg.f32 r) s))) (*.f32 (*.f32 (*.f32 #s(literal 2 binary32) (PI.f32)) s) r)) (/.f32 (*.f32 #s(literal 3/4 binary32) (exp.f32 (/.f32 (neg.f32 r) (*.f32 #s(literal 3 binary32) s)))) (*.f32 (*.f32 (*.f32 #s(literal 6 binary32) (PI.f32)) s) r))) < 0.0022Initial program 99.3%
lift-/.f32N/A
frac-2negN/A
lift-neg.f32N/A
remove-double-negN/A
lower-/.f32N/A
lift-*.f32N/A
distribute-lft-neg-inN/A
lower-*.f32N/A
metadata-eval99.3
Applied rewrites99.3%
lift-*.f32N/A
lift-*.f32N/A
associate-*l*N/A
lift-*.f32N/A
*-commutativeN/A
lift-*.f32N/A
associate-*l*N/A
*-commutativeN/A
lift-*.f32N/A
associate-*r*N/A
associate-*l*N/A
*-commutativeN/A
lift-*.f32N/A
lower-*.f32N/A
lower-*.f3299.3
Applied rewrites99.3%
Taylor expanded in r around 0
lower-/.f32N/A
lower-fma.f32N/A
lower-/.f32N/A
lower-*.f32N/A
unpow2N/A
lower-*.f32N/A
lower-PI.f32N/A
associate-*r/N/A
metadata-evalN/A
lower-/.f32N/A
*-commutativeN/A
lower-*.f32N/A
lower-PI.f325.2
Applied rewrites5.2%
if 0.0022 < (+.f32 (/.f32 (*.f32 #s(literal 1/4 binary32) (exp.f32 (/.f32 (neg.f32 r) s))) (*.f32 (*.f32 (*.f32 #s(literal 2 binary32) (PI.f32)) s) r)) (/.f32 (*.f32 #s(literal 3/4 binary32) (exp.f32 (/.f32 (neg.f32 r) (*.f32 #s(literal 3 binary32) s)))) (*.f32 (*.f32 (*.f32 #s(literal 6 binary32) (PI.f32)) s) r))) Initial program 98.4%
Taylor expanded in s around -inf
Applied rewrites64.4%
Taylor expanded in s around inf
Applied rewrites65.9%
Final simplification10.3%
(FPCore (s r)
:precision binary32
(let* ((t_0 (* (PI) r)))
(if (<=
(+
(/ (* (exp (/ (- r) (* 3.0 s))) 0.75) (* (* (* 6.0 (PI)) s) r))
(/ (* (exp (/ (- r) s)) 0.25) (* (* (* (PI) 2.0) s) r)))
1.9999999593223797e-31)
(fma
(pow (* -4.0 t_0) -1.0)
(/ -1.0 s)
(/
(/
(-
-0.16666666666666666
(* (fma (/ 0.021604938271604937 s) r -0.06944444444444445) (/ r s)))
(PI))
(* s s)))
(/
(-
(/
(-
(/ -0.16666666666666666 (PI))
(/ (* (/ -0.06944444444444445 (PI)) r) s))
s)
(/ -0.25 t_0))
s))))\begin{array}{l}
\\
\begin{array}{l}
t_0 := \mathsf{PI}\left(\right) \cdot r\\
\mathbf{if}\;\frac{e^{\frac{-r}{3 \cdot s}} \cdot 0.75}{\left(\left(6 \cdot \mathsf{PI}\left(\right)\right) \cdot s\right) \cdot r} + \frac{e^{\frac{-r}{s}} \cdot 0.25}{\left(\left(\mathsf{PI}\left(\right) \cdot 2\right) \cdot s\right) \cdot r} \leq 1.9999999593223797 \cdot 10^{-31}:\\
\;\;\;\;\mathsf{fma}\left({\left(-4 \cdot t\_0\right)}^{-1}, \frac{-1}{s}, \frac{\frac{-0.16666666666666666 - \mathsf{fma}\left(\frac{0.021604938271604937}{s}, r, -0.06944444444444445\right) \cdot \frac{r}{s}}{\mathsf{PI}\left(\right)}}{s \cdot s}\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\frac{-0.16666666666666666}{\mathsf{PI}\left(\right)} - \frac{\frac{-0.06944444444444445}{\mathsf{PI}\left(\right)} \cdot r}{s}}{s} - \frac{-0.25}{t\_0}}{s}\\
\end{array}
\end{array}
if (+.f32 (/.f32 (*.f32 #s(literal 1/4 binary32) (exp.f32 (/.f32 (neg.f32 r) s))) (*.f32 (*.f32 (*.f32 #s(literal 2 binary32) (PI.f32)) s) r)) (/.f32 (*.f32 #s(literal 3/4 binary32) (exp.f32 (/.f32 (neg.f32 r) (*.f32 #s(literal 3 binary32) s)))) (*.f32 (*.f32 (*.f32 #s(literal 6 binary32) (PI.f32)) s) r))) < 1.99999996e-31Initial program 99.6%
Taylor expanded in s around -inf
Applied rewrites3.4%
Applied rewrites5.1%
Applied rewrites15.0%
Applied rewrites8.1%
if 1.99999996e-31 < (+.f32 (/.f32 (*.f32 #s(literal 1/4 binary32) (exp.f32 (/.f32 (neg.f32 r) s))) (*.f32 (*.f32 (*.f32 #s(literal 2 binary32) (PI.f32)) s) r)) (/.f32 (*.f32 #s(literal 3/4 binary32) (exp.f32 (/.f32 (neg.f32 r) (*.f32 #s(literal 3 binary32) s)))) (*.f32 (*.f32 (*.f32 #s(literal 6 binary32) (PI.f32)) s) r))) Initial program 96.2%
Taylor expanded in s around -inf
Applied rewrites43.6%
Taylor expanded in s around inf
Applied rewrites47.5%
Final simplification12.8%
(FPCore (s r)
:precision binary32
(let* ((t_0 (/ -0.16666666666666666 (PI))) (t_1 (sqrt (PI))))
(if (<=
(+
(/ (* (exp (/ (- r) (* 3.0 s))) 0.75) (* (* (* 6.0 (PI)) s) r))
(/ (* (exp (/ (- r) s)) 0.25) (* (* (* (PI) 2.0) s) r)))
4.0000000126843074e-29)
(fma
(/
(-
t_0
(*
(/ (- -0.06944444444444445 (* (/ -0.021604938271604937 s) r)) (PI))
(/ r s)))
s)
(/ 1.0 s)
(/ (/ (- -0.25) (* (* t_1 r) t_1)) s))
(/
(-
(/ (- t_0 (/ (* (/ -0.06944444444444445 (PI)) r) s)) s)
(/ -0.25 (* (PI) r)))
s))))\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{-0.16666666666666666}{\mathsf{PI}\left(\right)}\\
t_1 := \sqrt{\mathsf{PI}\left(\right)}\\
\mathbf{if}\;\frac{e^{\frac{-r}{3 \cdot s}} \cdot 0.75}{\left(\left(6 \cdot \mathsf{PI}\left(\right)\right) \cdot s\right) \cdot r} + \frac{e^{\frac{-r}{s}} \cdot 0.25}{\left(\left(\mathsf{PI}\left(\right) \cdot 2\right) \cdot s\right) \cdot r} \leq 4.0000000126843074 \cdot 10^{-29}:\\
\;\;\;\;\mathsf{fma}\left(\frac{t\_0 - \frac{-0.06944444444444445 - \frac{-0.021604938271604937}{s} \cdot r}{\mathsf{PI}\left(\right)} \cdot \frac{r}{s}}{s}, \frac{1}{s}, \frac{\frac{--0.25}{\left(t\_1 \cdot r\right) \cdot t\_1}}{s}\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{t\_0 - \frac{\frac{-0.06944444444444445}{\mathsf{PI}\left(\right)} \cdot r}{s}}{s} - \frac{-0.25}{\mathsf{PI}\left(\right) \cdot r}}{s}\\
\end{array}
\end{array}
if (+.f32 (/.f32 (*.f32 #s(literal 1/4 binary32) (exp.f32 (/.f32 (neg.f32 r) s))) (*.f32 (*.f32 (*.f32 #s(literal 2 binary32) (PI.f32)) s) r)) (/.f32 (*.f32 #s(literal 3/4 binary32) (exp.f32 (/.f32 (neg.f32 r) (*.f32 #s(literal 3 binary32) s)))) (*.f32 (*.f32 (*.f32 #s(literal 6 binary32) (PI.f32)) s) r))) < 4.00000001e-29Initial program 99.6%
Taylor expanded in s around -inf
Applied rewrites3.4%
Applied rewrites7.2%
Applied rewrites4.7%
if 4.00000001e-29 < (+.f32 (/.f32 (*.f32 #s(literal 1/4 binary32) (exp.f32 (/.f32 (neg.f32 r) s))) (*.f32 (*.f32 (*.f32 #s(literal 2 binary32) (PI.f32)) s) r)) (/.f32 (*.f32 #s(literal 3/4 binary32) (exp.f32 (/.f32 (neg.f32 r) (*.f32 #s(literal 3 binary32) s)))) (*.f32 (*.f32 (*.f32 #s(literal 6 binary32) (PI.f32)) s) r))) Initial program 96.4%
Taylor expanded in s around -inf
Applied rewrites44.9%
Taylor expanded in s around inf
Applied rewrites48.8%
Final simplification10.1%
(FPCore (s r)
:precision binary32
(let* ((t_0 (/ -0.16666666666666666 (PI))) (t_1 (* (PI) r)))
(if (<=
(+
(/ (* (exp (/ (- r) (* 3.0 s))) 0.75) (* (* (* 6.0 (PI)) s) r))
(/ (* (exp (/ (- r) s)) 0.25) (* (* (* (PI) 2.0) s) r)))
4.0000000126843074e-29)
(fma
(/
(-
t_0
(*
(*
(-
(/ (/ 0.021604938271604937 s) (PI))
(/ (/ 0.06944444444444445 r) (PI)))
r)
(/ r s)))
s)
(/ 1.0 s)
(/ (/ 0.25 t_1) s))
(/
(- (/ (- t_0 (/ (* (/ -0.06944444444444445 (PI)) r) s)) s) (/ -0.25 t_1))
s))))\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{-0.16666666666666666}{\mathsf{PI}\left(\right)}\\
t_1 := \mathsf{PI}\left(\right) \cdot r\\
\mathbf{if}\;\frac{e^{\frac{-r}{3 \cdot s}} \cdot 0.75}{\left(\left(6 \cdot \mathsf{PI}\left(\right)\right) \cdot s\right) \cdot r} + \frac{e^{\frac{-r}{s}} \cdot 0.25}{\left(\left(\mathsf{PI}\left(\right) \cdot 2\right) \cdot s\right) \cdot r} \leq 4.0000000126843074 \cdot 10^{-29}:\\
\;\;\;\;\mathsf{fma}\left(\frac{t\_0 - \left(\left(\frac{\frac{0.021604938271604937}{s}}{\mathsf{PI}\left(\right)} - \frac{\frac{0.06944444444444445}{r}}{\mathsf{PI}\left(\right)}\right) \cdot r\right) \cdot \frac{r}{s}}{s}, \frac{1}{s}, \frac{\frac{0.25}{t\_1}}{s}\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{t\_0 - \frac{\frac{-0.06944444444444445}{\mathsf{PI}\left(\right)} \cdot r}{s}}{s} - \frac{-0.25}{t\_1}}{s}\\
\end{array}
\end{array}
if (+.f32 (/.f32 (*.f32 #s(literal 1/4 binary32) (exp.f32 (/.f32 (neg.f32 r) s))) (*.f32 (*.f32 (*.f32 #s(literal 2 binary32) (PI.f32)) s) r)) (/.f32 (*.f32 #s(literal 3/4 binary32) (exp.f32 (/.f32 (neg.f32 r) (*.f32 #s(literal 3 binary32) s)))) (*.f32 (*.f32 (*.f32 #s(literal 6 binary32) (PI.f32)) s) r))) < 4.00000001e-29Initial program 99.6%
Taylor expanded in s around -inf
Applied rewrites3.4%
Applied rewrites5.6%
Applied rewrites5.6%
Taylor expanded in r around inf
Applied rewrites5.2%
if 4.00000001e-29 < (+.f32 (/.f32 (*.f32 #s(literal 1/4 binary32) (exp.f32 (/.f32 (neg.f32 r) s))) (*.f32 (*.f32 (*.f32 #s(literal 2 binary32) (PI.f32)) s) r)) (/.f32 (*.f32 #s(literal 3/4 binary32) (exp.f32 (/.f32 (neg.f32 r) (*.f32 #s(literal 3 binary32) s)))) (*.f32 (*.f32 (*.f32 #s(literal 6 binary32) (PI.f32)) s) r))) Initial program 96.4%
Taylor expanded in s around -inf
Applied rewrites44.9%
Taylor expanded in s around inf
Applied rewrites48.8%
Final simplification10.1%
(FPCore (s r) :precision binary32 (+ (/ (* (exp (/ (- r) (* 3.0 s))) 0.75) (* (* (* 6.0 (PI)) s) r)) (/ (* (exp (/ (- r) s)) 0.25) (* (* (PI) 2.0) (* s r)))))
\begin{array}{l}
\\
\frac{e^{\frac{-r}{3 \cdot s}} \cdot 0.75}{\left(\left(6 \cdot \mathsf{PI}\left(\right)\right) \cdot s\right) \cdot r} + \frac{e^{\frac{-r}{s}} \cdot 0.25}{\left(\mathsf{PI}\left(\right) \cdot 2\right) \cdot \left(s \cdot r\right)}
\end{array}
Initial program 99.2%
lift-*.f32N/A
lift-*.f32N/A
associate-*l*N/A
lower-*.f32N/A
lift-*.f32N/A
*-commutativeN/A
lower-*.f32N/A
lower-*.f3299.2
Applied rewrites99.2%
Final simplification99.2%
(FPCore (s r) :precision binary32 (+ (/ (* (exp (/ r (* -3.0 s))) 0.75) (* (* (* 6.0 r) (PI)) s)) (/ (* (exp (/ (- r) s)) 0.25) (* (* (* (PI) 2.0) s) r))))
\begin{array}{l}
\\
\frac{e^{\frac{r}{-3 \cdot s}} \cdot 0.75}{\left(\left(6 \cdot r\right) \cdot \mathsf{PI}\left(\right)\right) \cdot s} + \frac{e^{\frac{-r}{s}} \cdot 0.25}{\left(\left(\mathsf{PI}\left(\right) \cdot 2\right) \cdot s\right) \cdot r}
\end{array}
Initial program 99.2%
lift-/.f32N/A
frac-2negN/A
lift-neg.f32N/A
remove-double-negN/A
lower-/.f32N/A
lift-*.f32N/A
distribute-lft-neg-inN/A
lower-*.f32N/A
metadata-eval99.2
Applied rewrites99.2%
lift-*.f32N/A
lift-*.f32N/A
associate-*l*N/A
lift-*.f32N/A
*-commutativeN/A
lift-*.f32N/A
associate-*r*N/A
lift-*.f32N/A
*-commutativeN/A
lift-PI.f32N/A
add-sqr-sqrtN/A
associate-*r*N/A
lower-*.f32N/A
lower-*.f32N/A
lift-*.f32N/A
*-commutativeN/A
lower-*.f32N/A
lift-PI.f32N/A
lower-sqrt.f32N/A
lift-PI.f32N/A
lower-sqrt.f3299.2
Applied rewrites99.2%
lift-*.f32N/A
lift-*.f32N/A
associate-*l*N/A
lift-*.f32N/A
lift-*.f32N/A
associate-*l*N/A
lift-sqrt.f32N/A
lift-sqrt.f32N/A
rem-square-sqrtN/A
associate-*l*N/A
lower-*.f32N/A
lower-*.f32N/A
*-commutativeN/A
lower-*.f3299.2
Applied rewrites99.2%
Final simplification99.2%
(FPCore (s r) :precision binary32 (* (+ (/ (exp (* (/ r s) -0.3333333333333333)) r) (/ (exp (/ (- r) s)) r)) (/ (/ 0.125 s) (PI))))
\begin{array}{l}
\\
\left(\frac{e^{\frac{r}{s} \cdot -0.3333333333333333}}{r} + \frac{e^{\frac{-r}{s}}}{r}\right) \cdot \frac{\frac{0.125}{s}}{\mathsf{PI}\left(\right)}
\end{array}
Initial program 99.2%
Applied rewrites97.7%
lift-cbrt.f32N/A
pow1/3N/A
lift-exp.f32N/A
lift-/.f32N/A
div-invN/A
exp-prodN/A
pow-powN/A
inv-powN/A
metadata-evalN/A
unpow-prod-downN/A
*-commutativeN/A
lift-*.f32N/A
inv-powN/A
exp-prodN/A
div-invN/A
lift-/.f32N/A
lift-exp.f3299.1
lift-/.f32N/A
lift-neg.f32N/A
lift-*.f32N/A
neg-mul-1N/A
times-fracN/A
lower-*.f32N/A
metadata-evalN/A
lower-/.f3299.0
Applied rewrites99.0%
Final simplification99.0%
(FPCore (s r)
:precision binary32
(if (<= s 1.0000000168623835e-16)
(fma
(/
(-
(/ -0.16666666666666666 (PI))
(*
(/ (- -0.06944444444444445 (* (/ -0.021604938271604937 s) r)) (PI))
(/ r s)))
s)
(/ 1.0 s)
(/ (/ -0.25 (* (PI) r)) (- s)))
(+
(/
(* (fma (/ (fma -0.5 (/ r s) 1.0) (- s)) r 1.0) 0.25)
(* (* (* (PI) 2.0) s) r))
(/ (* (exp (/ (- r) (* 3.0 s))) 0.75) (* (* (* 6.0 (PI)) s) r)))))\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;s \leq 1.0000000168623835 \cdot 10^{-16}:\\
\;\;\;\;\mathsf{fma}\left(\frac{\frac{-0.16666666666666666}{\mathsf{PI}\left(\right)} - \frac{-0.06944444444444445 - \frac{-0.021604938271604937}{s} \cdot r}{\mathsf{PI}\left(\right)} \cdot \frac{r}{s}}{s}, \frac{1}{s}, \frac{\frac{-0.25}{\mathsf{PI}\left(\right) \cdot r}}{-s}\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{\mathsf{fma}\left(\frac{\mathsf{fma}\left(-0.5, \frac{r}{s}, 1\right)}{-s}, r, 1\right) \cdot 0.25}{\left(\left(\mathsf{PI}\left(\right) \cdot 2\right) \cdot s\right) \cdot r} + \frac{e^{\frac{-r}{3 \cdot s}} \cdot 0.75}{\left(\left(6 \cdot \mathsf{PI}\left(\right)\right) \cdot s\right) \cdot r}\\
\end{array}
\end{array}
if s < 1.00000002e-16Initial program 100.0%
Taylor expanded in s around -inf
Applied rewrites3.1%
Applied rewrites5.5%
Applied rewrites3.9%
if 1.00000002e-16 < s Initial program 98.3%
Taylor expanded in s around inf
Applied rewrites13.3%
Taylor expanded in s around -inf
Applied rewrites12.8%
Final simplification8.6%
(FPCore (s r)
:precision binary32
(let* ((t_0 (/ -0.25 (* (PI) r))) (t_1 (/ -0.16666666666666666 (PI))))
(if (<= s 4.600000068355481e-12)
(fma
(/
(-
t_1
(*
(/ (- -0.06944444444444445 (* (/ -0.021604938271604937 s) r)) (PI))
(/ r s)))
s)
(/ 1.0 s)
(/ t_0 (- s)))
(/ (- (/ (- t_1 (/ (* (/ -0.06944444444444445 (PI)) r) s)) s) t_0) s))))\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{-0.25}{\mathsf{PI}\left(\right) \cdot r}\\
t_1 := \frac{-0.16666666666666666}{\mathsf{PI}\left(\right)}\\
\mathbf{if}\;s \leq 4.600000068355481 \cdot 10^{-12}:\\
\;\;\;\;\mathsf{fma}\left(\frac{t\_1 - \frac{-0.06944444444444445 - \frac{-0.021604938271604937}{s} \cdot r}{\mathsf{PI}\left(\right)} \cdot \frac{r}{s}}{s}, \frac{1}{s}, \frac{t\_0}{-s}\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{t\_1 - \frac{\frac{-0.06944444444444445}{\mathsf{PI}\left(\right)} \cdot r}{s}}{s} - t\_0}{s}\\
\end{array}
\end{array}
if s < 4.60000007e-12Initial program 100.0%
Taylor expanded in s around -inf
Applied rewrites3.1%
Applied rewrites5.4%
Applied rewrites4.1%
if 4.60000007e-12 < s Initial program 97.9%
Taylor expanded in s around -inf
Applied rewrites17.3%
Taylor expanded in s around inf
Applied rewrites18.9%
Final simplification10.1%
(FPCore (s r)
:precision binary32
(/
(-
(/
(- (/ -0.16666666666666666 (PI)) (/ (* (/ -0.06944444444444445 (PI)) r) s))
s)
(/ -0.25 (* (PI) r)))
s))\begin{array}{l}
\\
\frac{\frac{\frac{-0.16666666666666666}{\mathsf{PI}\left(\right)} - \frac{\frac{-0.06944444444444445}{\mathsf{PI}\left(\right)} \cdot r}{s}}{s} - \frac{-0.25}{\mathsf{PI}\left(\right) \cdot r}}{s}
\end{array}
Initial program 99.2%
Taylor expanded in s around -inf
Applied rewrites8.4%
Taylor expanded in s around inf
Applied rewrites9.1%
Final simplification9.1%
(FPCore (s r) :precision binary32 (* (/ (/ 1.0 (PI)) r) (/ 0.25 s)))
\begin{array}{l}
\\
\frac{\frac{1}{\mathsf{PI}\left(\right)}}{r} \cdot \frac{0.25}{s}
\end{array}
Initial program 99.2%
Taylor expanded in s around inf
associate-/l/N/A
metadata-evalN/A
associate-*r/N/A
lower-/.f32N/A
associate-*r/N/A
metadata-evalN/A
lower-/.f32N/A
*-commutativeN/A
lower-*.f32N/A
lower-PI.f328.4
Applied rewrites8.4%
Applied rewrites8.4%
Applied rewrites8.4%
Applied rewrites8.4%
Final simplification8.4%
(FPCore (s r) :precision binary32 (* (/ 0.25 (* (PI) r)) (/ 1.0 s)))
\begin{array}{l}
\\
\frac{0.25}{\mathsf{PI}\left(\right) \cdot r} \cdot \frac{1}{s}
\end{array}
Initial program 99.2%
Taylor expanded in s around inf
associate-/l/N/A
metadata-evalN/A
associate-*r/N/A
lower-/.f32N/A
associate-*r/N/A
metadata-evalN/A
lower-/.f32N/A
*-commutativeN/A
lower-*.f32N/A
lower-PI.f328.4
Applied rewrites8.4%
Applied rewrites8.4%
Applied rewrites8.4%
(FPCore (s r) :precision binary32 (/ (/ 0.25 s) (* (PI) r)))
\begin{array}{l}
\\
\frac{\frac{0.25}{s}}{\mathsf{PI}\left(\right) \cdot r}
\end{array}
Initial program 99.2%
Taylor expanded in s around inf
associate-/l/N/A
metadata-evalN/A
associate-*r/N/A
lower-/.f32N/A
associate-*r/N/A
metadata-evalN/A
lower-/.f32N/A
*-commutativeN/A
lower-*.f32N/A
lower-PI.f328.4
Applied rewrites8.4%
Applied rewrites8.4%
Applied rewrites8.4%
(FPCore (s r) :precision binary32 (/ 0.25 (* (* (PI) r) s)))
\begin{array}{l}
\\
\frac{0.25}{\left(\mathsf{PI}\left(\right) \cdot r\right) \cdot s}
\end{array}
Initial program 99.2%
Taylor expanded in s around inf
associate-/l/N/A
metadata-evalN/A
associate-*r/N/A
lower-/.f32N/A
associate-*r/N/A
metadata-evalN/A
lower-/.f32N/A
*-commutativeN/A
lower-*.f32N/A
lower-PI.f328.4
Applied rewrites8.4%
Applied rewrites8.4%
(FPCore (s r) :precision binary32 (/ 0.25 (* (* s r) (PI))))
\begin{array}{l}
\\
\frac{0.25}{\left(s \cdot r\right) \cdot \mathsf{PI}\left(\right)}
\end{array}
Initial program 99.2%
Taylor expanded in s around inf
associate-/l/N/A
metadata-evalN/A
associate-*r/N/A
lower-/.f32N/A
associate-*r/N/A
metadata-evalN/A
lower-/.f32N/A
*-commutativeN/A
lower-*.f32N/A
lower-PI.f328.4
Applied rewrites8.4%
Applied rewrites8.4%
Applied rewrites8.4%
herbie shell --seed 2024276
(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))))