\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}\;z \cdot t = -\infty \lor \neg \left(z \cdot t \le 1.0112129461852768 \cdot 10^{290}\right):\\
\;\;\;\;\left(2 \cdot \sqrt{x}\right) \cdot \left(1 - \frac{1}{2} \cdot {y}^{2}\right) - \frac{a}{b \cdot 3}\\
\mathbf{else}:\\
\;\;\;\;\left(2 \cdot \sqrt{x}\right) \cdot \left(\cos y \cdot \cos \left(\frac{z}{\sqrt{3}} \cdot \frac{t}{\sqrt{3}}\right) + \sin y \cdot \log \left(e^{\sin \left(\frac{z}{\sqrt{3}} \cdot \left(\left(\sqrt[3]{\frac{t}{\sqrt{3}}} \cdot \sqrt[3]{\frac{t}{\sqrt{3}}}\right) \cdot \sqrt[3]{\frac{t}{\sqrt{3}}}\right)\right)}\right)\right) - \frac{a}{b \cdot 3}\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r885545 = 2.0;
double r885546 = x;
double r885547 = sqrt(r885546);
double r885548 = r885545 * r885547;
double r885549 = y;
double r885550 = z;
double r885551 = t;
double r885552 = r885550 * r885551;
double r885553 = 3.0;
double r885554 = r885552 / r885553;
double r885555 = r885549 - r885554;
double r885556 = cos(r885555);
double r885557 = r885548 * r885556;
double r885558 = a;
double r885559 = b;
double r885560 = r885559 * r885553;
double r885561 = r885558 / r885560;
double r885562 = r885557 - r885561;
return r885562;
}
double f(double x, double y, double z, double t, double a, double b) {
double r885563 = z;
double r885564 = t;
double r885565 = r885563 * r885564;
double r885566 = -inf.0;
bool r885567 = r885565 <= r885566;
double r885568 = 1.0112129461852768e+290;
bool r885569 = r885565 <= r885568;
double r885570 = !r885569;
bool r885571 = r885567 || r885570;
double r885572 = 2.0;
double r885573 = x;
double r885574 = sqrt(r885573);
double r885575 = r885572 * r885574;
double r885576 = 1.0;
double r885577 = 0.5;
double r885578 = y;
double r885579 = 2.0;
double r885580 = pow(r885578, r885579);
double r885581 = r885577 * r885580;
double r885582 = r885576 - r885581;
double r885583 = r885575 * r885582;
double r885584 = a;
double r885585 = b;
double r885586 = 3.0;
double r885587 = r885585 * r885586;
double r885588 = r885584 / r885587;
double r885589 = r885583 - r885588;
double r885590 = cos(r885578);
double r885591 = sqrt(r885586);
double r885592 = r885563 / r885591;
double r885593 = r885564 / r885591;
double r885594 = r885592 * r885593;
double r885595 = cos(r885594);
double r885596 = r885590 * r885595;
double r885597 = sin(r885578);
double r885598 = cbrt(r885593);
double r885599 = r885598 * r885598;
double r885600 = r885599 * r885598;
double r885601 = r885592 * r885600;
double r885602 = sin(r885601);
double r885603 = exp(r885602);
double r885604 = log(r885603);
double r885605 = r885597 * r885604;
double r885606 = r885596 + r885605;
double r885607 = r885575 * r885606;
double r885608 = r885607 - r885588;
double r885609 = r885571 ? r885589 : r885608;
return r885609;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a




Bits error versus b
Results
| Original | 20.4 |
|---|---|
| Target | 18.3 |
| Herbie | 17.6 |
if (* z t) < -inf.0 or 1.0112129461852768e+290 < (* z t) Initial program 62.4
Taylor expanded around 0 44.1
if -inf.0 < (* z t) < 1.0112129461852768e+290Initial program 13.9
rmApplied add-sqr-sqrt14.0
Applied times-frac13.9
rmApplied cos-diff13.5
rmApplied add-cube-cbrt13.5
rmApplied add-log-exp13.5
Final simplification17.6
herbie shell --seed 2020100
(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))))