\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.9999929230019897197223599505377933382988:\\
\;\;\;\;\left(2 \cdot \sqrt{x}\right) \cdot \left(\cos y \cdot \cos \left(0.3333333333333333148296162562473909929395 \cdot \left(t \cdot z\right)\right) + \sin y \cdot \sin \left(0.3333333333333333148296162562473909929395 \cdot \left(t \cdot z\right)\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 r554437 = 2.0;
double r554438 = x;
double r554439 = sqrt(r554438);
double r554440 = r554437 * r554439;
double r554441 = y;
double r554442 = z;
double r554443 = t;
double r554444 = r554442 * r554443;
double r554445 = 3.0;
double r554446 = r554444 / r554445;
double r554447 = r554441 - r554446;
double r554448 = cos(r554447);
double r554449 = r554440 * r554448;
double r554450 = a;
double r554451 = b;
double r554452 = r554451 * r554445;
double r554453 = r554450 / r554452;
double r554454 = r554449 - r554453;
return r554454;
}
double f(double x, double y, double z, double t, double a, double b) {
double r554455 = y;
double r554456 = z;
double r554457 = t;
double r554458 = r554456 * r554457;
double r554459 = 3.0;
double r554460 = r554458 / r554459;
double r554461 = r554455 - r554460;
double r554462 = cos(r554461);
double r554463 = 0.9999929230019897;
bool r554464 = r554462 <= r554463;
double r554465 = 2.0;
double r554466 = x;
double r554467 = sqrt(r554466);
double r554468 = r554465 * r554467;
double r554469 = cos(r554455);
double r554470 = 0.3333333333333333;
double r554471 = r554457 * r554456;
double r554472 = r554470 * r554471;
double r554473 = cos(r554472);
double r554474 = r554469 * r554473;
double r554475 = sin(r554455);
double r554476 = sin(r554472);
double r554477 = r554475 * r554476;
double r554478 = r554474 + r554477;
double r554479 = r554468 * r554478;
double r554480 = a;
double r554481 = b;
double r554482 = r554480 / r554481;
double r554483 = r554482 / r554459;
double r554484 = r554479 - r554483;
double r554485 = 1.0;
double r554486 = 0.5;
double r554487 = 2.0;
double r554488 = pow(r554455, r554487);
double r554489 = r554486 * r554488;
double r554490 = r554485 - r554489;
double r554491 = r554468 * r554490;
double r554492 = r554481 * r554459;
double r554493 = r554480 / r554492;
double r554494 = r554491 - r554493;
double r554495 = r554464 ? r554484 : r554494;
return r554495;
}




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 | 21.0 |
|---|---|
| Target | 19.0 |
| Herbie | 18.4 |
if (cos (- y (/ (* z t) 3.0))) < 0.9999929230019897Initial program 20.4
rmApplied cos-diff19.9
Taylor expanded around inf 19.9
Taylor expanded around inf 19.9
rmApplied associate-/r*20.0
if 0.9999929230019897 < (cos (- y (/ (* z t) 3.0))) Initial program 22.0
Taylor expanded around 0 15.8
Final simplification18.4
herbie shell --seed 2019297
(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))))