\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{t \cdot z}{3}\right) \le 0.9999647789220716953551004735345486551523:\\
\;\;\;\;\left(\cos \left(0.3333333333333333148296162562473909929395 \cdot \left(t \cdot z\right)\right) \cdot \cos y + \sqrt[3]{{\left(\sin \left(0.3333333333333333148296162562473909929395 \cdot \left(t \cdot z\right)\right) \cdot \sin y\right)}^{3}}\right) \cdot \left(\sqrt{x} \cdot 2\right) - \frac{\frac{a}{b}}{3}\\
\mathbf{else}:\\
\;\;\;\;\left(1 - \frac{1}{2} \cdot \left(y \cdot y\right)\right) \cdot \left(\sqrt{x} \cdot 2\right) - \frac{\frac{a}{b}}{3}\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r588511 = 2.0;
double r588512 = x;
double r588513 = sqrt(r588512);
double r588514 = r588511 * r588513;
double r588515 = y;
double r588516 = z;
double r588517 = t;
double r588518 = r588516 * r588517;
double r588519 = 3.0;
double r588520 = r588518 / r588519;
double r588521 = r588515 - r588520;
double r588522 = cos(r588521);
double r588523 = r588514 * r588522;
double r588524 = a;
double r588525 = b;
double r588526 = r588525 * r588519;
double r588527 = r588524 / r588526;
double r588528 = r588523 - r588527;
return r588528;
}
double f(double x, double y, double z, double t, double a, double b) {
double r588529 = y;
double r588530 = t;
double r588531 = z;
double r588532 = r588530 * r588531;
double r588533 = 3.0;
double r588534 = r588532 / r588533;
double r588535 = r588529 - r588534;
double r588536 = cos(r588535);
double r588537 = 0.9999647789220717;
bool r588538 = r588536 <= r588537;
double r588539 = 0.3333333333333333;
double r588540 = r588539 * r588532;
double r588541 = cos(r588540);
double r588542 = cos(r588529);
double r588543 = r588541 * r588542;
double r588544 = sin(r588540);
double r588545 = sin(r588529);
double r588546 = r588544 * r588545;
double r588547 = 3.0;
double r588548 = pow(r588546, r588547);
double r588549 = cbrt(r588548);
double r588550 = r588543 + r588549;
double r588551 = x;
double r588552 = sqrt(r588551);
double r588553 = 2.0;
double r588554 = r588552 * r588553;
double r588555 = r588550 * r588554;
double r588556 = a;
double r588557 = b;
double r588558 = r588556 / r588557;
double r588559 = r588558 / r588533;
double r588560 = r588555 - r588559;
double r588561 = 1.0;
double r588562 = 0.5;
double r588563 = r588529 * r588529;
double r588564 = r588562 * r588563;
double r588565 = r588561 - r588564;
double r588566 = r588565 * r588554;
double r588567 = r588566 - r588559;
double r588568 = r588538 ? r588560 : r588567;
return r588568;
}




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.6 |
|---|---|
| Target | 18.6 |
| Herbie | 17.9 |
if (cos (- y (/ (* z t) 3.0))) < 0.9999647789220717Initial program 20.0
Simplified20.0
rmApplied cos-diff19.2
Simplified19.2
Taylor expanded around inf 19.3
Simplified19.3
Taylor expanded around inf 19.3
Simplified19.3
rmApplied add-cbrt-cube19.3
Applied add-cbrt-cube19.3
Applied cbrt-unprod19.3
Simplified19.3
if 0.9999647789220717 < (cos (- y (/ (* z t) 3.0))) Initial program 21.8
Simplified21.7
Taylor expanded around 0 15.7
Simplified15.7
Final simplification17.9
herbie shell --seed 2019195
(FPCore (x y z t a b)
:name "Diagrams.Solve.Polynomial:cubForm from diagrams-solve-0.1, K"
:herbie-target
(if (< z -1.3793337487235141e+129) (- (* (* 2.0 (sqrt x)) (cos (- (/ 1.0 y) (/ (/ 0.3333333333333333 z) t)))) (/ (/ a 3.0) b)) (if (< z 3.516290613555987e+106) (- (* (* (sqrt x) 2.0) (cos (- y (* (/ t 3.0) z)))) (/ (/ a 3.0) b)) (- (* (cos (- y (/ (/ 0.3333333333333333 z) t))) (* 2.0 (sqrt x))) (/ (/ a b) 3.0))))
(- (* (* 2.0 (sqrt x)) (cos (- y (/ (* z t) 3.0)))) (/ a (* b 3.0))))