\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;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a




Bits error versus b
| Original | 20.6 |
|---|---|
| Target | 18.6 |
| Herbie | 17.8 |
if (* (* 2.0 (sqrt x)) (cos (- y (/ (* z t) 3.0)))) < 1.9652642423881642e+152Initial program 14.5
rmApplied add-cube-cbrt14.5
rmApplied add-sqr-sqrt14.4
Applied times-frac14.5
Applied cbrt-prod14.5
rmApplied cos-diff13.9
Taylor expanded around inf 13.9
Simplified13.9
if 1.9652642423881642e+152 < (* (* 2.0 (sqrt x)) (cos (- y (/ (* z t) 3.0)))) Initial program 62.5
Taylor expanded around 0 44.3
Simplified44.3
Final simplification17.8
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))))