Average Error: 0.3 → 0.2
Time: 5.5s
Precision: binary64
\[x \cdot \log x \]
\[\mathsf{fma}\left(\log \left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right), x, x \cdot \log \left({\left(\frac{1}{x}\right)}^{-0.3333333333333333}\right)\right) \]
x \cdot \log x
\mathsf{fma}\left(\log \left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right), x, x \cdot \log \left({\left(\frac{1}{x}\right)}^{-0.3333333333333333}\right)\right)
(FPCore (x) :precision binary64 (* x (log x)))
(FPCore (x)
 :precision binary64
 (fma
  (log (* (cbrt x) (cbrt x)))
  x
  (* x (log (pow (/ 1.0 x) -0.3333333333333333)))))
double code(double x) {
	return x * log(x);
}
double code(double x) {
	return fma(log(cbrt(x) * cbrt(x)), x, (x * log(pow((1.0 / x), -0.3333333333333333))));
}

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. Applied fma-def_binary640.3

    \[\leadsto \color{blue}{\mathsf{fma}\left(\log \left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right), x, \log \left(\sqrt[3]{x}\right) \cdot x\right)} \]
  6. Taylor expanded in x around inf 0.2

    \[\leadsto \mathsf{fma}\left(\log \left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right), x, \color{blue}{\log \left({\left(\frac{1}{x}\right)}^{-0.3333333333333333}\right) \cdot x}\right) \]
  7. Final simplification0.2

    \[\leadsto \mathsf{fma}\left(\log \left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right), x, x \cdot \log \left({\left(\frac{1}{x}\right)}^{-0.3333333333333333}\right)\right) \]

Reproduce

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