Average Error: 0.3 → 0.2
Time: 7.8s
Precision: binary64
\[x \cdot \log x \]
\[\begin{array}{l} t_0 := \log \left(\sqrt[3]{\sqrt[3]{x}}\right)\\ \mathsf{fma}\left(x, \log \left(\sqrt[3]{x}\right) \cdot 2, \mathsf{fma}\left(x, 2 \cdot t_0, x \cdot t_0\right)\right) \end{array} \]
x \cdot \log x
\begin{array}{l}
t_0 := \log \left(\sqrt[3]{\sqrt[3]{x}}\right)\\
\mathsf{fma}\left(x, \log \left(\sqrt[3]{x}\right) \cdot 2, \mathsf{fma}\left(x, 2 \cdot t_0, x \cdot t_0\right)\right)
\end{array}
(FPCore (x) :precision binary64 (* x (log x)))
(FPCore (x)
 :precision binary64
 (let* ((t_0 (log (cbrt (cbrt x)))))
   (fma x (* (log (cbrt x)) 2.0) (fma x (* 2.0 t_0) (* x t_0)))))
double code(double x) {
	return x * log(x);
}
double code(double x) {
	double t_0 = log(cbrt(cbrt(x)));
	return fma(x, (log(cbrt(x)) * 2.0), fma(x, (2.0 * t_0), (x * t_0)));
}

Error

Bits error versus x

Derivation

  1. Initial program 0.3

    \[x \cdot \log x \]
  2. Applied add-cube-cbrt_binary640.3

    \[\leadsto x \cdot \log \color{blue}{\left(\left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right) \cdot \sqrt[3]{x}\right)} \]
  3. Applied log-prod_binary640.4

    \[\leadsto x \cdot \color{blue}{\left(\log \left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right) + \log \left(\sqrt[3]{x}\right)\right)} \]
  4. Applied distribute-rgt-in_binary640.4

    \[\leadsto \color{blue}{\log \left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right) \cdot x + \log \left(\sqrt[3]{x}\right) \cdot x} \]
  5. Simplified0.4

    \[\leadsto \color{blue}{x \cdot \left(\log \left(\sqrt[3]{x}\right) \cdot 2\right)} + \log \left(\sqrt[3]{x}\right) \cdot x \]
  6. Simplified0.4

    \[\leadsto x \cdot \left(\log \left(\sqrt[3]{x}\right) \cdot 2\right) + \color{blue}{x \cdot \log \left(\sqrt[3]{x}\right)} \]
  7. Applied add-cube-cbrt_binary640.4

    \[\leadsto x \cdot \left(\log \left(\sqrt[3]{x}\right) \cdot 2\right) + x \cdot \log \color{blue}{\left(\left(\sqrt[3]{\sqrt[3]{x}} \cdot \sqrt[3]{\sqrt[3]{x}}\right) \cdot \sqrt[3]{\sqrt[3]{x}}\right)} \]
  8. Applied log-prod_binary640.3

    \[\leadsto x \cdot \left(\log \left(\sqrt[3]{x}\right) \cdot 2\right) + x \cdot \color{blue}{\left(\log \left(\sqrt[3]{\sqrt[3]{x}} \cdot \sqrt[3]{\sqrt[3]{x}}\right) + \log \left(\sqrt[3]{\sqrt[3]{x}}\right)\right)} \]
  9. Applied distribute-rgt-in_binary640.3

    \[\leadsto x \cdot \left(\log \left(\sqrt[3]{x}\right) \cdot 2\right) + \color{blue}{\left(\log \left(\sqrt[3]{\sqrt[3]{x}} \cdot \sqrt[3]{\sqrt[3]{x}}\right) \cdot x + \log \left(\sqrt[3]{\sqrt[3]{x}}\right) \cdot x\right)} \]
  10. Simplified0.3

    \[\leadsto x \cdot \left(\log \left(\sqrt[3]{x}\right) \cdot 2\right) + \left(\color{blue}{x \cdot \left(2 \cdot \log \left(\sqrt[3]{\sqrt[3]{x}}\right)\right)} + \log \left(\sqrt[3]{\sqrt[3]{x}}\right) \cdot x\right) \]
  11. Simplified0.3

    \[\leadsto x \cdot \left(\log \left(\sqrt[3]{x}\right) \cdot 2\right) + \left(x \cdot \left(2 \cdot \log \left(\sqrt[3]{\sqrt[3]{x}}\right)\right) + \color{blue}{x \cdot \log \left(\sqrt[3]{\sqrt[3]{x}}\right)}\right) \]
  12. Applied fma-def_binary640.2

    \[\leadsto \color{blue}{\mathsf{fma}\left(x, \log \left(\sqrt[3]{x}\right) \cdot 2, x \cdot \left(2 \cdot \log \left(\sqrt[3]{\sqrt[3]{x}}\right)\right) + x \cdot \log \left(\sqrt[3]{\sqrt[3]{x}}\right)\right)} \]
  13. Applied fma-def_binary640.2

    \[\leadsto \mathsf{fma}\left(x, \log \left(\sqrt[3]{x}\right) \cdot 2, \color{blue}{\mathsf{fma}\left(x, 2 \cdot \log \left(\sqrt[3]{\sqrt[3]{x}}\right), x \cdot \log \left(\sqrt[3]{\sqrt[3]{x}}\right)\right)}\right) \]
  14. Final simplification0.2

    \[\leadsto \mathsf{fma}\left(x, \log \left(\sqrt[3]{x}\right) \cdot 2, \mathsf{fma}\left(x, 2 \cdot \log \left(\sqrt[3]{\sqrt[3]{x}}\right), x \cdot \log \left(\sqrt[3]{\sqrt[3]{x}}\right)\right)\right) \]

Reproduce

herbie shell --seed 2022077 
(FPCore (x)
  :name "Statistics.Distribution.Binomial:directEntropy from math-functions-0.1.5.2"
  :precision binary64
  (* x (log x)))