Average Error: 20.9 → 18.4
Time: 14.5s
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}\;\cos \left(y - \frac{z \cdot t}{3}\right) \le 0.9999929107336669:\\ \;\;\;\;\left(2 \cdot \sqrt{x}\right) \cdot \left(\cos y \cdot \cos \left(\frac{\frac{z \cdot t}{\sqrt[3]{3} \cdot \sqrt[3]{3}}}{\sqrt[3]{3}}\right) - \sin y \cdot \sin \left(-\frac{z}{\frac{3}{t}}\right)\right) - \frac{\frac{a}{b}}{3}\\ \mathbf{else}:\\ \;\;\;\;\left(2 \cdot \sqrt{x}\right) \cdot \left(1 - \frac{1}{2} \cdot {y}^{2}\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}\;\cos \left(y - \frac{z \cdot t}{3}\right) \le 0.9999929107336669:\\
\;\;\;\;\left(2 \cdot \sqrt{x}\right) \cdot \left(\cos y \cdot \cos \left(\frac{\frac{z \cdot t}{\sqrt[3]{3} \cdot \sqrt[3]{3}}}{\sqrt[3]{3}}\right) - \sin y \cdot \sin \left(-\frac{z}{\frac{3}{t}}\right)\right) - \frac{\frac{a}{b}}{3}\\

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

\end{array}
double f(double x, double y, double z, double t, double a, double b) {
        double r748461 = 2.0;
        double r748462 = x;
        double r748463 = sqrt(r748462);
        double r748464 = r748461 * r748463;
        double r748465 = y;
        double r748466 = z;
        double r748467 = t;
        double r748468 = r748466 * r748467;
        double r748469 = 3.0;
        double r748470 = r748468 / r748469;
        double r748471 = r748465 - r748470;
        double r748472 = cos(r748471);
        double r748473 = r748464 * r748472;
        double r748474 = a;
        double r748475 = b;
        double r748476 = r748475 * r748469;
        double r748477 = r748474 / r748476;
        double r748478 = r748473 - r748477;
        return r748478;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r748479 = y;
        double r748480 = z;
        double r748481 = t;
        double r748482 = r748480 * r748481;
        double r748483 = 3.0;
        double r748484 = r748482 / r748483;
        double r748485 = r748479 - r748484;
        double r748486 = cos(r748485);
        double r748487 = 0.9999929107336669;
        bool r748488 = r748486 <= r748487;
        double r748489 = 2.0;
        double r748490 = x;
        double r748491 = sqrt(r748490);
        double r748492 = r748489 * r748491;
        double r748493 = cos(r748479);
        double r748494 = cbrt(r748483);
        double r748495 = r748494 * r748494;
        double r748496 = r748482 / r748495;
        double r748497 = r748496 / r748494;
        double r748498 = cos(r748497);
        double r748499 = r748493 * r748498;
        double r748500 = sin(r748479);
        double r748501 = r748483 / r748481;
        double r748502 = r748480 / r748501;
        double r748503 = -r748502;
        double r748504 = sin(r748503);
        double r748505 = r748500 * r748504;
        double r748506 = r748499 - r748505;
        double r748507 = r748492 * r748506;
        double r748508 = a;
        double r748509 = b;
        double r748510 = r748508 / r748509;
        double r748511 = r748510 / r748483;
        double r748512 = r748507 - r748511;
        double r748513 = 1.0;
        double r748514 = 0.5;
        double r748515 = 2.0;
        double r748516 = pow(r748479, r748515);
        double r748517 = r748514 * r748516;
        double r748518 = r748513 - r748517;
        double r748519 = r748492 * r748518;
        double r748520 = r748509 * r748483;
        double r748521 = r748508 / r748520;
        double r748522 = r748519 - r748521;
        double r748523 = r748488 ? r748512 : r748522;
        return r748523;
}

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

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original20.9
Target19.1
Herbie18.4
\[\begin{array}{l} \mathbf{if}\;z \lt -1.379333748723514 \cdot 10^{129}:\\ \;\;\;\;\left(2 \cdot \sqrt{x}\right) \cdot \cos \left(\frac{1}{y} - \frac{\frac{0.333333333333333315}{z}}{t}\right) - \frac{\frac{a}{3}}{b}\\ \mathbf{elif}\;z \lt 3.51629061355598715 \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.333333333333333315}{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 (cos (- y (/ (* z t) 3.0))) < 0.9999929107336669

    1. Initial program 20.3

      \[\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 sub-neg20.3

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

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

      \[\leadsto \left(2 \cdot \sqrt{x}\right) \cdot \left(\color{blue}{\cos y \cdot \cos \left(\frac{z \cdot t}{3}\right)} - \sin y \cdot \sin \left(-\frac{z \cdot t}{3}\right)\right) - \frac{a}{b \cdot 3}\]
    6. Using strategy rm
    7. Applied associate-/l*19.7

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

      \[\leadsto \left(2 \cdot \sqrt{x}\right) \cdot \left(\cos y \cdot \cos \left(\frac{z \cdot t}{\color{blue}{\left(\sqrt[3]{3} \cdot \sqrt[3]{3}\right) \cdot \sqrt[3]{3}}}\right) - \sin y \cdot \sin \left(-\frac{z}{\frac{3}{t}}\right)\right) - \frac{a}{b \cdot 3}\]
    10. Applied associate-/r*19.7

      \[\leadsto \left(2 \cdot \sqrt{x}\right) \cdot \left(\cos y \cdot \cos \color{blue}{\left(\frac{\frac{z \cdot t}{\sqrt[3]{3} \cdot \sqrt[3]{3}}}{\sqrt[3]{3}}\right)} - \sin y \cdot \sin \left(-\frac{z}{\frac{3}{t}}\right)\right) - \frac{a}{b \cdot 3}\]
    11. Using strategy rm
    12. Applied associate-/r*19.7

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

    if 0.9999929107336669 < (cos (- y (/ (* z t) 3.0)))

    1. Initial program 21.9

      \[\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 16.2

      \[\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. Recombined 2 regimes into one program.
  4. Final simplification18.4

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

Reproduce

herbie shell --seed 2020036 +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.379333748723514e+129) (- (* (* 2 (sqrt x)) (cos (- (/ 1 y) (/ (/ 0.3333333333333333 z) t)))) (/ (/ a 3) b)) (if (< z 3.516290613555987e+106) (- (* (* (sqrt x) 2) (cos (- y (* (/ t 3) z)))) (/ (/ a 3) b)) (- (* (cos (- y (/ (/ 0.3333333333333333 z) t))) (* 2 (sqrt x))) (/ (/ a b) 3))))

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