Average Error: 9.5 → 0.4
Time: 9.4s
Precision: 64
\[\left(x \cdot \log y + z \cdot \log \left(1 - y\right)\right) - t\]
\[\left(x \cdot \log \left(\left|{y}^{\frac{1}{3}}\right| \cdot \left|{y}^{\frac{1}{3}}\right|\right) + \mathsf{fma}\left(\log \left(\sqrt[3]{y}\right), x, z \cdot \left(\log 1 - \left(1 \cdot y + \frac{1}{2} \cdot \frac{{y}^{2}}{{1}^{2}}\right)\right)\right)\right) - t\]
\left(x \cdot \log y + z \cdot \log \left(1 - y\right)\right) - t
\left(x \cdot \log \left(\left|{y}^{\frac{1}{3}}\right| \cdot \left|{y}^{\frac{1}{3}}\right|\right) + \mathsf{fma}\left(\log \left(\sqrt[3]{y}\right), x, z \cdot \left(\log 1 - \left(1 \cdot y + \frac{1}{2} \cdot \frac{{y}^{2}}{{1}^{2}}\right)\right)\right)\right) - t
double f(double x, double y, double z, double t) {
        double r520363 = x;
        double r520364 = y;
        double r520365 = log(r520364);
        double r520366 = r520363 * r520365;
        double r520367 = z;
        double r520368 = 1.0;
        double r520369 = r520368 - r520364;
        double r520370 = log(r520369);
        double r520371 = r520367 * r520370;
        double r520372 = r520366 + r520371;
        double r520373 = t;
        double r520374 = r520372 - r520373;
        return r520374;
}

double f(double x, double y, double z, double t) {
        double r520375 = x;
        double r520376 = y;
        double r520377 = 0.3333333333333333;
        double r520378 = pow(r520376, r520377);
        double r520379 = fabs(r520378);
        double r520380 = r520379 * r520379;
        double r520381 = log(r520380);
        double r520382 = r520375 * r520381;
        double r520383 = cbrt(r520376);
        double r520384 = log(r520383);
        double r520385 = z;
        double r520386 = 1.0;
        double r520387 = log(r520386);
        double r520388 = r520386 * r520376;
        double r520389 = 0.5;
        double r520390 = 2.0;
        double r520391 = pow(r520376, r520390);
        double r520392 = pow(r520386, r520390);
        double r520393 = r520391 / r520392;
        double r520394 = r520389 * r520393;
        double r520395 = r520388 + r520394;
        double r520396 = r520387 - r520395;
        double r520397 = r520385 * r520396;
        double r520398 = fma(r520384, r520375, r520397);
        double r520399 = r520382 + r520398;
        double r520400 = t;
        double r520401 = r520399 - r520400;
        return r520401;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Bits error versus t

Target

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

Derivation

  1. Initial program 9.5

    \[\left(x \cdot \log y + z \cdot \log \left(1 - y\right)\right) - t\]
  2. Taylor expanded around 0 0.3

    \[\leadsto \left(x \cdot \log y + z \cdot \color{blue}{\left(\log 1 - \left(1 \cdot y + \frac{1}{2} \cdot \frac{{y}^{2}}{{1}^{2}}\right)\right)}\right) - t\]
  3. Using strategy rm
  4. Applied add-cube-cbrt0.3

    \[\leadsto \left(x \cdot \log \color{blue}{\left(\left(\sqrt[3]{y} \cdot \sqrt[3]{y}\right) \cdot \sqrt[3]{y}\right)} + z \cdot \left(\log 1 - \left(1 \cdot y + \frac{1}{2} \cdot \frac{{y}^{2}}{{1}^{2}}\right)\right)\right) - t\]
  5. Applied log-prod0.4

    \[\leadsto \left(x \cdot \color{blue}{\left(\log \left(\sqrt[3]{y} \cdot \sqrt[3]{y}\right) + \log \left(\sqrt[3]{y}\right)\right)} + z \cdot \left(\log 1 - \left(1 \cdot y + \frac{1}{2} \cdot \frac{{y}^{2}}{{1}^{2}}\right)\right)\right) - t\]
  6. Applied distribute-lft-in0.4

    \[\leadsto \left(\color{blue}{\left(x \cdot \log \left(\sqrt[3]{y} \cdot \sqrt[3]{y}\right) + x \cdot \log \left(\sqrt[3]{y}\right)\right)} + z \cdot \left(\log 1 - \left(1 \cdot y + \frac{1}{2} \cdot \frac{{y}^{2}}{{1}^{2}}\right)\right)\right) - t\]
  7. Applied associate-+l+0.4

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

    \[\leadsto \left(x \cdot \log \left(\sqrt[3]{y} \cdot \sqrt[3]{y}\right) + \color{blue}{\mathsf{fma}\left(\log \left(\sqrt[3]{y}\right), x, z \cdot \left(\log 1 - \left(1 \cdot y + \frac{1}{2} \cdot \frac{{y}^{2}}{{1}^{2}}\right)\right)\right)}\right) - t\]
  9. Using strategy rm
  10. Applied add-sqr-sqrt0.4

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

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

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

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

Reproduce

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

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

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