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




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.9 |
|---|---|
| Target | 19.1 |
| Herbie | 18.4 |
if (cos (- y (/ (* z t) 3.0))) < 0.9999929107336669Initial program 20.3
rmApplied sub-neg20.3
Applied cos-sum19.7
Simplified19.7
rmApplied associate-/l*19.7
rmApplied add-cube-cbrt19.7
Applied associate-/r*19.7
rmApplied associate-/r*19.7
if 0.9999929107336669 < (cos (- y (/ (* z t) 3.0))) Initial program 21.9
Taylor expanded around 0 16.2
Final simplification18.4
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))))