Average Error: 0.1 → 0.1
Time: 6.1s
Precision: binary32
\[0 \leq s \land s \leq 256 \land 10^{-6} < r \land r < 1000000\]
\[\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} \]
\[\begin{array}{l} t_0 := \frac{-r}{s}\\ \frac{0.25 \cdot e^{t_0}}{r \cdot \left(s \cdot \left(2 \cdot \pi\right)\right)} + \frac{0.75 \cdot e^{\frac{t_0}{3}}}{\left(s \cdot \left(\left(\sqrt[3]{\pi} \cdot \sqrt[3]{\pi}\right) \cdot \left(r \cdot \sqrt[3]{\pi}\right)\right)\right) \cdot 6} \end{array} \]
\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}
\begin{array}{l}
t_0 := \frac{-r}{s}\\
\frac{0.25 \cdot e^{t_0}}{r \cdot \left(s \cdot \left(2 \cdot \pi\right)\right)} + \frac{0.75 \cdot e^{\frac{t_0}{3}}}{\left(s \cdot \left(\left(\sqrt[3]{\pi} \cdot \sqrt[3]{\pi}\right) \cdot \left(r \cdot \sqrt[3]{\pi}\right)\right)\right) \cdot 6}
\end{array}
(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))))
(FPCore (s r)
 :precision binary32
 (let* ((t_0 (/ (- r) s)))
   (+
    (/ (* 0.25 (exp t_0)) (* r (* s (* 2.0 PI))))
    (/
     (* 0.75 (exp (/ t_0 3.0)))
     (* (* s (* (* (cbrt PI) (cbrt PI)) (* r (cbrt PI)))) 6.0)))))
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));
}
float code(float s, float r) {
	float t_0 = -r / s;
	return ((0.25f * expf(t_0)) / (r * (s * (2.0f * ((float) M_PI))))) + ((0.75f * expf(t_0 / 3.0f)) / ((s * ((cbrtf((float) M_PI) * cbrtf((float) M_PI)) * (r * cbrtf((float) M_PI)))) * 6.0f));
}

Error

Bits error versus s

Bits error versus r

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Initial program 0.1

    \[\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} \]
  2. Using strategy rm
  3. Applied add-cube-cbrt_binary320.2

    \[\leadsto \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{\color{blue}{\left(\sqrt[3]{-r} \cdot \sqrt[3]{-r}\right) \cdot \sqrt[3]{-r}}}{3 \cdot s}}}{\left(\left(6 \cdot \pi\right) \cdot s\right) \cdot r} \]
  4. Applied times-frac_binary320.2

    \[\leadsto \frac{0.25 \cdot e^{\frac{-r}{s}}}{\left(\left(2 \cdot \pi\right) \cdot s\right) \cdot r} + \frac{0.75 \cdot e^{\color{blue}{\frac{\sqrt[3]{-r} \cdot \sqrt[3]{-r}}{3} \cdot \frac{\sqrt[3]{-r}}{s}}}}{\left(\left(6 \cdot \pi\right) \cdot s\right) \cdot r} \]
  5. Applied associate-*l/_binary320.2

    \[\leadsto \frac{0.25 \cdot e^{\frac{-r}{s}}}{\left(\left(2 \cdot \pi\right) \cdot s\right) \cdot r} + \frac{0.75 \cdot e^{\color{blue}{\frac{\left(\sqrt[3]{-r} \cdot \sqrt[3]{-r}\right) \cdot \frac{\sqrt[3]{-r}}{s}}{3}}}}{\left(\left(6 \cdot \pi\right) \cdot s\right) \cdot r} \]
  6. Simplified0.1

    \[\leadsto \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{\color{blue}{\frac{-r}{s}}}{3}}}{\left(\left(6 \cdot \pi\right) \cdot s\right) \cdot r} \]
  7. Taylor expanded around 0 0.1

    \[\leadsto \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{\frac{-r}{s}}{3}}}{\color{blue}{6 \cdot \left(s \cdot \left(\pi \cdot r\right)\right)}} \]
  8. Simplified0.1

    \[\leadsto \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{\frac{-r}{s}}{3}}}{\color{blue}{\left(s \cdot \left(\pi \cdot r\right)\right) \cdot 6}} \]
  9. Using strategy rm
  10. Applied add-cube-cbrt_binary320.1

    \[\leadsto \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{\frac{-r}{s}}{3}}}{\left(s \cdot \left(\color{blue}{\left(\left(\sqrt[3]{\pi} \cdot \sqrt[3]{\pi}\right) \cdot \sqrt[3]{\pi}\right)} \cdot r\right)\right) \cdot 6} \]
  11. Applied associate-*l*_binary320.1

    \[\leadsto \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{\frac{-r}{s}}{3}}}{\left(s \cdot \color{blue}{\left(\left(\sqrt[3]{\pi} \cdot \sqrt[3]{\pi}\right) \cdot \left(\sqrt[3]{\pi} \cdot r\right)\right)}\right) \cdot 6} \]
  12. Simplified0.1

    \[\leadsto \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{\frac{-r}{s}}{3}}}{\left(s \cdot \left(\left(\sqrt[3]{\pi} \cdot \sqrt[3]{\pi}\right) \cdot \color{blue}{\left(r \cdot \sqrt[3]{\pi}\right)}\right)\right) \cdot 6} \]
  13. Final simplification0.1

    \[\leadsto \frac{0.25 \cdot e^{\frac{-r}{s}}}{r \cdot \left(s \cdot \left(2 \cdot \pi\right)\right)} + \frac{0.75 \cdot e^{\frac{\frac{-r}{s}}{3}}}{\left(s \cdot \left(\left(\sqrt[3]{\pi} \cdot \sqrt[3]{\pi}\right) \cdot \left(r \cdot \sqrt[3]{\pi}\right)\right)\right) \cdot 6} \]

Reproduce

herbie shell --seed 2021211 
(FPCore (s r)
  :name "Disney BSSRDF, PDF of scattering profile"
  :precision binary32
  :pre (and (<= 0.0 s 256.0) (< 1e-6 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))))