Average Error: 9.0 → 0.6
Time: 32.6s
Precision: 64
\[\left(x \cdot \log y + z \cdot \log \left(1.0 - y\right)\right) - t\]
\[\mathsf{fma}\left(\mathsf{fma}\left(\frac{y}{1.0} \cdot \frac{y}{1.0}, \frac{-1}{2}, \log 1.0 - y \cdot 1.0\right), z, \left(x \cdot \sqrt[3]{\log y}\right) \cdot \sqrt[3]{\log y \cdot \log y} - t\right)\]
\left(x \cdot \log y + z \cdot \log \left(1.0 - y\right)\right) - t
\mathsf{fma}\left(\mathsf{fma}\left(\frac{y}{1.0} \cdot \frac{y}{1.0}, \frac{-1}{2}, \log 1.0 - y \cdot 1.0\right), z, \left(x \cdot \sqrt[3]{\log y}\right) \cdot \sqrt[3]{\log y \cdot \log y} - t\right)
double f(double x, double y, double z, double t) {
        double r19802466 = x;
        double r19802467 = y;
        double r19802468 = log(r19802467);
        double r19802469 = r19802466 * r19802468;
        double r19802470 = z;
        double r19802471 = 1.0;
        double r19802472 = r19802471 - r19802467;
        double r19802473 = log(r19802472);
        double r19802474 = r19802470 * r19802473;
        double r19802475 = r19802469 + r19802474;
        double r19802476 = t;
        double r19802477 = r19802475 - r19802476;
        return r19802477;
}

double f(double x, double y, double z, double t) {
        double r19802478 = y;
        double r19802479 = 1.0;
        double r19802480 = r19802478 / r19802479;
        double r19802481 = r19802480 * r19802480;
        double r19802482 = -0.5;
        double r19802483 = log(r19802479);
        double r19802484 = r19802478 * r19802479;
        double r19802485 = r19802483 - r19802484;
        double r19802486 = fma(r19802481, r19802482, r19802485);
        double r19802487 = z;
        double r19802488 = x;
        double r19802489 = log(r19802478);
        double r19802490 = cbrt(r19802489);
        double r19802491 = r19802488 * r19802490;
        double r19802492 = r19802489 * r19802489;
        double r19802493 = cbrt(r19802492);
        double r19802494 = r19802491 * r19802493;
        double r19802495 = t;
        double r19802496 = r19802494 - r19802495;
        double r19802497 = fma(r19802486, r19802487, r19802496);
        return r19802497;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Bits error versus t

Target

Original9.0
Target0.3
Herbie0.6
\[\left(-z\right) \cdot \left(\left(0.5 \cdot \left(y \cdot y\right) + y\right) + \frac{\frac{1}{3}}{1.0 \cdot \left(1.0 \cdot 1.0\right)} \cdot \left(y \cdot \left(y \cdot y\right)\right)\right) - \left(t - x \cdot \log y\right)\]

Derivation

  1. Initial program 9.0

    \[\left(x \cdot \log y + z \cdot \log \left(1.0 - y\right)\right) - t\]
  2. Simplified9.0

    \[\leadsto \color{blue}{\mathsf{fma}\left(\log \left(1.0 - y\right), z, \log y \cdot x - t\right)}\]
  3. Taylor expanded around 0 0.3

    \[\leadsto \mathsf{fma}\left(\color{blue}{\log 1.0 - \left(1.0 \cdot y + \frac{1}{2} \cdot \frac{{y}^{2}}{{1.0}^{2}}\right)}, z, \log y \cdot x - t\right)\]
  4. Simplified0.3

    \[\leadsto \mathsf{fma}\left(\color{blue}{\mathsf{fma}\left(\frac{y}{1.0} \cdot \frac{y}{1.0}, \frac{-1}{2}, \log 1.0 - 1.0 \cdot y\right)}, z, \log y \cdot x - t\right)\]
  5. Using strategy rm
  6. Applied add-cube-cbrt0.8

    \[\leadsto \mathsf{fma}\left(\mathsf{fma}\left(\frac{y}{1.0} \cdot \frac{y}{1.0}, \frac{-1}{2}, \log 1.0 - 1.0 \cdot y\right), z, \color{blue}{\left(\left(\sqrt[3]{\log y} \cdot \sqrt[3]{\log y}\right) \cdot \sqrt[3]{\log y}\right)} \cdot x - t\right)\]
  7. Applied associate-*l*0.8

    \[\leadsto \mathsf{fma}\left(\mathsf{fma}\left(\frac{y}{1.0} \cdot \frac{y}{1.0}, \frac{-1}{2}, \log 1.0 - 1.0 \cdot y\right), z, \color{blue}{\left(\sqrt[3]{\log y} \cdot \sqrt[3]{\log y}\right) \cdot \left(\sqrt[3]{\log y} \cdot x\right)} - t\right)\]
  8. Using strategy rm
  9. Applied cbrt-unprod0.6

    \[\leadsto \mathsf{fma}\left(\mathsf{fma}\left(\frac{y}{1.0} \cdot \frac{y}{1.0}, \frac{-1}{2}, \log 1.0 - 1.0 \cdot y\right), z, \color{blue}{\sqrt[3]{\log y \cdot \log y}} \cdot \left(\sqrt[3]{\log y} \cdot x\right) - t\right)\]
  10. Final simplification0.6

    \[\leadsto \mathsf{fma}\left(\mathsf{fma}\left(\frac{y}{1.0} \cdot \frac{y}{1.0}, \frac{-1}{2}, \log 1.0 - y \cdot 1.0\right), z, \left(x \cdot \sqrt[3]{\log y}\right) \cdot \sqrt[3]{\log y \cdot \log y} - t\right)\]

Reproduce

herbie shell --seed 2019163 +o rules:numerics
(FPCore (x y z t)
  :name "Numeric.SpecFunctions:invIncompleteBetaWorker from math-functions-0.1.5.2, B"

  :herbie-target
  (- (* (- z) (+ (+ (* 0.5 (* y y)) y) (* (/ 1/3 (* 1.0 (* 1.0 1.0))) (* y (* y y))))) (- t (* x (log y))))

  (- (+ (* x (log y)) (* z (log (- 1.0 y)))) t))