Average Error: 20.6 → 17.8
Time: 37.2s
Precision: 64
\[\left(2 \cdot \sqrt{x}\right) \cdot \cos \left(y - \frac{z \cdot t}{3}\right) - \frac{a}{b \cdot 3}\]
\[\begin{array}{l} \mathbf{if}\;\left(2 \cdot \sqrt{x}\right) \cdot \cos \left(y - \frac{z \cdot t}{3}\right) \le 1.965264242388164234247715384116746023602 \cdot 10^{152}:\\ \;\;\;\;\left(2 \cdot \sqrt{x}\right) \cdot \left(\cos y \cdot \cos \left(\sqrt[3]{\frac{1}{3}} \cdot \left(t \cdot \left(z \cdot {\left(\sqrt[3]{0.3333333333333333148296162562473909929395}\right)}^{2}\right)\right)\right) + \sin y \cdot \sin \left(\left(\sqrt[3]{\frac{z \cdot t}{3}} \cdot \sqrt[3]{\frac{z \cdot t}{3}}\right) \cdot \left(\sqrt[3]{\frac{z}{\sqrt{3}}} \cdot \sqrt[3]{\frac{t}{\sqrt{3}}}\right)\right)\right) - \frac{a}{b \cdot 3}\\ \mathbf{else}:\\ \;\;\;\;\left(2 \cdot \sqrt{x}\right) \cdot \mathsf{fma}\left({y}^{2}, \frac{-1}{2}, 1\right) - \frac{a}{b \cdot 3}\\ \end{array}\]
\left(2 \cdot \sqrt{x}\right) \cdot \cos \left(y - \frac{z \cdot t}{3}\right) - \frac{a}{b \cdot 3}
\begin{array}{l}
\mathbf{if}\;\left(2 \cdot \sqrt{x}\right) \cdot \cos \left(y - \frac{z \cdot t}{3}\right) \le 1.965264242388164234247715384116746023602 \cdot 10^{152}:\\
\;\;\;\;\left(2 \cdot \sqrt{x}\right) \cdot \left(\cos y \cdot \cos \left(\sqrt[3]{\frac{1}{3}} \cdot \left(t \cdot \left(z \cdot {\left(\sqrt[3]{0.3333333333333333148296162562473909929395}\right)}^{2}\right)\right)\right) + \sin y \cdot \sin \left(\left(\sqrt[3]{\frac{z \cdot t}{3}} \cdot \sqrt[3]{\frac{z \cdot t}{3}}\right) \cdot \left(\sqrt[3]{\frac{z}{\sqrt{3}}} \cdot \sqrt[3]{\frac{t}{\sqrt{3}}}\right)\right)\right) - \frac{a}{b \cdot 3}\\

\mathbf{else}:\\
\;\;\;\;\left(2 \cdot \sqrt{x}\right) \cdot \mathsf{fma}\left({y}^{2}, \frac{-1}{2}, 1\right) - \frac{a}{b \cdot 3}\\

\end{array}
double f(double x, double y, double z, double t, double a, double b) {
        double r702427 = 2.0;
        double r702428 = x;
        double r702429 = sqrt(r702428);
        double r702430 = r702427 * r702429;
        double r702431 = y;
        double r702432 = z;
        double r702433 = t;
        double r702434 = r702432 * r702433;
        double r702435 = 3.0;
        double r702436 = r702434 / r702435;
        double r702437 = r702431 - r702436;
        double r702438 = cos(r702437);
        double r702439 = r702430 * r702438;
        double r702440 = a;
        double r702441 = b;
        double r702442 = r702441 * r702435;
        double r702443 = r702440 / r702442;
        double r702444 = r702439 - r702443;
        return r702444;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r702445 = 2.0;
        double r702446 = x;
        double r702447 = sqrt(r702446);
        double r702448 = r702445 * r702447;
        double r702449 = y;
        double r702450 = z;
        double r702451 = t;
        double r702452 = r702450 * r702451;
        double r702453 = 3.0;
        double r702454 = r702452 / r702453;
        double r702455 = r702449 - r702454;
        double r702456 = cos(r702455);
        double r702457 = r702448 * r702456;
        double r702458 = 1.9652642423881642e+152;
        bool r702459 = r702457 <= r702458;
        double r702460 = cos(r702449);
        double r702461 = 1.0;
        double r702462 = r702461 / r702453;
        double r702463 = cbrt(r702462);
        double r702464 = 0.3333333333333333;
        double r702465 = cbrt(r702464);
        double r702466 = 2.0;
        double r702467 = pow(r702465, r702466);
        double r702468 = r702450 * r702467;
        double r702469 = r702451 * r702468;
        double r702470 = r702463 * r702469;
        double r702471 = cos(r702470);
        double r702472 = r702460 * r702471;
        double r702473 = sin(r702449);
        double r702474 = cbrt(r702454);
        double r702475 = r702474 * r702474;
        double r702476 = sqrt(r702453);
        double r702477 = r702450 / r702476;
        double r702478 = cbrt(r702477);
        double r702479 = r702451 / r702476;
        double r702480 = cbrt(r702479);
        double r702481 = r702478 * r702480;
        double r702482 = r702475 * r702481;
        double r702483 = sin(r702482);
        double r702484 = r702473 * r702483;
        double r702485 = r702472 + r702484;
        double r702486 = r702448 * r702485;
        double r702487 = a;
        double r702488 = b;
        double r702489 = r702488 * r702453;
        double r702490 = r702487 / r702489;
        double r702491 = r702486 - r702490;
        double r702492 = pow(r702449, r702466);
        double r702493 = -0.5;
        double r702494 = fma(r702492, r702493, r702461);
        double r702495 = r702448 * r702494;
        double r702496 = r702495 - r702490;
        double r702497 = r702459 ? r702491 : r702496;
        return r702497;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Bits error versus t

Bits error versus a

Bits error versus b

Target

Original20.6
Target18.6
Herbie17.8
\[\begin{array}{l} \mathbf{if}\;z \lt -1.379333748723514136852843173740882251575 \cdot 10^{129}:\\ \;\;\;\;\left(2 \cdot \sqrt{x}\right) \cdot \cos \left(\frac{1}{y} - \frac{\frac{0.3333333333333333148296162562473909929395}{z}}{t}\right) - \frac{\frac{a}{3}}{b}\\ \mathbf{elif}\;z \lt 3.516290613555987147199887107423758623887 \cdot 10^{106}:\\ \;\;\;\;\left(\sqrt{x} \cdot 2\right) \cdot \cos \left(y - \frac{t}{3} \cdot z\right) - \frac{\frac{a}{3}}{b}\\ \mathbf{else}:\\ \;\;\;\;\cos \left(y - \frac{\frac{0.3333333333333333148296162562473909929395}{z}}{t}\right) \cdot \left(2 \cdot \sqrt{x}\right) - \frac{\frac{a}{b}}{3}\\ \end{array}\]

Derivation

  1. Split input into 2 regimes
  2. if (* (* 2.0 (sqrt x)) (cos (- y (/ (* z t) 3.0)))) < 1.9652642423881642e+152

    1. Initial program 14.5

      \[\left(2 \cdot \sqrt{x}\right) \cdot \cos \left(y - \frac{z \cdot t}{3}\right) - \frac{a}{b \cdot 3}\]
    2. Using strategy rm
    3. Applied add-cube-cbrt14.5

      \[\leadsto \left(2 \cdot \sqrt{x}\right) \cdot \cos \left(y - \color{blue}{\left(\sqrt[3]{\frac{z \cdot t}{3}} \cdot \sqrt[3]{\frac{z \cdot t}{3}}\right) \cdot \sqrt[3]{\frac{z \cdot t}{3}}}\right) - \frac{a}{b \cdot 3}\]
    4. Using strategy rm
    5. Applied add-sqr-sqrt14.4

      \[\leadsto \left(2 \cdot \sqrt{x}\right) \cdot \cos \left(y - \left(\sqrt[3]{\frac{z \cdot t}{3}} \cdot \sqrt[3]{\frac{z \cdot t}{3}}\right) \cdot \sqrt[3]{\frac{z \cdot t}{\color{blue}{\sqrt{3} \cdot \sqrt{3}}}}\right) - \frac{a}{b \cdot 3}\]
    6. Applied times-frac14.5

      \[\leadsto \left(2 \cdot \sqrt{x}\right) \cdot \cos \left(y - \left(\sqrt[3]{\frac{z \cdot t}{3}} \cdot \sqrt[3]{\frac{z \cdot t}{3}}\right) \cdot \sqrt[3]{\color{blue}{\frac{z}{\sqrt{3}} \cdot \frac{t}{\sqrt{3}}}}\right) - \frac{a}{b \cdot 3}\]
    7. Applied cbrt-prod14.5

      \[\leadsto \left(2 \cdot \sqrt{x}\right) \cdot \cos \left(y - \left(\sqrt[3]{\frac{z \cdot t}{3}} \cdot \sqrt[3]{\frac{z \cdot t}{3}}\right) \cdot \color{blue}{\left(\sqrt[3]{\frac{z}{\sqrt{3}}} \cdot \sqrt[3]{\frac{t}{\sqrt{3}}}\right)}\right) - \frac{a}{b \cdot 3}\]
    8. Using strategy rm
    9. Applied cos-diff13.9

      \[\leadsto \left(2 \cdot \sqrt{x}\right) \cdot \color{blue}{\left(\cos y \cdot \cos \left(\left(\sqrt[3]{\frac{z \cdot t}{3}} \cdot \sqrt[3]{\frac{z \cdot t}{3}}\right) \cdot \left(\sqrt[3]{\frac{z}{\sqrt{3}}} \cdot \sqrt[3]{\frac{t}{\sqrt{3}}}\right)\right) + \sin y \cdot \sin \left(\left(\sqrt[3]{\frac{z \cdot t}{3}} \cdot \sqrt[3]{\frac{z \cdot t}{3}}\right) \cdot \left(\sqrt[3]{\frac{z}{\sqrt{3}}} \cdot \sqrt[3]{\frac{t}{\sqrt{3}}}\right)\right)\right)} - \frac{a}{b \cdot 3}\]
    10. Taylor expanded around inf 13.9

      \[\leadsto \left(2 \cdot \sqrt{x}\right) \cdot \left(\cos y \cdot \color{blue}{\cos \left(\left(t \cdot \left(z \cdot {\left(\sqrt[3]{0.3333333333333333148296162562473909929395}\right)}^{2}\right)\right) \cdot {\left(\frac{1}{{\left(\sqrt{3}\right)}^{2}}\right)}^{\frac{1}{3}}\right)} + \sin y \cdot \sin \left(\left(\sqrt[3]{\frac{z \cdot t}{3}} \cdot \sqrt[3]{\frac{z \cdot t}{3}}\right) \cdot \left(\sqrt[3]{\frac{z}{\sqrt{3}}} \cdot \sqrt[3]{\frac{t}{\sqrt{3}}}\right)\right)\right) - \frac{a}{b \cdot 3}\]
    11. Simplified13.9

      \[\leadsto \left(2 \cdot \sqrt{x}\right) \cdot \left(\cos y \cdot \color{blue}{\cos \left(\sqrt[3]{\frac{1}{3}} \cdot \left(t \cdot \left(z \cdot {\left(\sqrt[3]{0.3333333333333333148296162562473909929395}\right)}^{2}\right)\right)\right)} + \sin y \cdot \sin \left(\left(\sqrt[3]{\frac{z \cdot t}{3}} \cdot \sqrt[3]{\frac{z \cdot t}{3}}\right) \cdot \left(\sqrt[3]{\frac{z}{\sqrt{3}}} \cdot \sqrt[3]{\frac{t}{\sqrt{3}}}\right)\right)\right) - \frac{a}{b \cdot 3}\]

    if 1.9652642423881642e+152 < (* (* 2.0 (sqrt x)) (cos (- y (/ (* z t) 3.0))))

    1. Initial program 62.5

      \[\left(2 \cdot \sqrt{x}\right) \cdot \cos \left(y - \frac{z \cdot t}{3}\right) - \frac{a}{b \cdot 3}\]
    2. Taylor expanded around 0 44.3

      \[\leadsto \left(2 \cdot \sqrt{x}\right) \cdot \color{blue}{\left(1 - \frac{1}{2} \cdot {y}^{2}\right)} - \frac{a}{b \cdot 3}\]
    3. Simplified44.3

      \[\leadsto \left(2 \cdot \sqrt{x}\right) \cdot \color{blue}{\mathsf{fma}\left({y}^{2}, \frac{-1}{2}, 1\right)} - \frac{a}{b \cdot 3}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification17.8

    \[\leadsto \begin{array}{l} \mathbf{if}\;\left(2 \cdot \sqrt{x}\right) \cdot \cos \left(y - \frac{z \cdot t}{3}\right) \le 1.965264242388164234247715384116746023602 \cdot 10^{152}:\\ \;\;\;\;\left(2 \cdot \sqrt{x}\right) \cdot \left(\cos y \cdot \cos \left(\sqrt[3]{\frac{1}{3}} \cdot \left(t \cdot \left(z \cdot {\left(\sqrt[3]{0.3333333333333333148296162562473909929395}\right)}^{2}\right)\right)\right) + \sin y \cdot \sin \left(\left(\sqrt[3]{\frac{z \cdot t}{3}} \cdot \sqrt[3]{\frac{z \cdot t}{3}}\right) \cdot \left(\sqrt[3]{\frac{z}{\sqrt{3}}} \cdot \sqrt[3]{\frac{t}{\sqrt{3}}}\right)\right)\right) - \frac{a}{b \cdot 3}\\ \mathbf{else}:\\ \;\;\;\;\left(2 \cdot \sqrt{x}\right) \cdot \mathsf{fma}\left({y}^{2}, \frac{-1}{2}, 1\right) - \frac{a}{b \cdot 3}\\ \end{array}\]

Reproduce

herbie shell --seed 2019304 +o rules:numerics
(FPCore (x y z t a b)
  :name "Diagrams.Solve.Polynomial:cubForm  from diagrams-solve-0.1, K"
  :precision binary64

  :herbie-target
  (if (< z -1.379333748723514e129) (- (* (* 2 (sqrt x)) (cos (- (/ 1 y) (/ (/ 0.333333333333333315 z) t)))) (/ (/ a 3) b)) (if (< z 3.51629061355598715e106) (- (* (* (sqrt x) 2) (cos (- y (* (/ t 3) z)))) (/ (/ a 3) b)) (- (* (cos (- y (/ (/ 0.333333333333333315 z) t))) (* 2 (sqrt x))) (/ (/ a b) 3))))

  (- (* (* 2 (sqrt x)) (cos (- y (/ (* z t) 3)))) (/ a (* b 3))))