\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 \le -1.799335942069011867122479081012577649284 \cdot 10^{305}:\\
\;\;\;\;\mathsf{fma}\left(\frac{-1}{2}, y \cdot y, 1\right) \cdot \left(\sqrt{x} \cdot 2\right) - \frac{a}{b \cdot 3}\\
\mathbf{elif}\;z \cdot t \le -5554585690422355:\\
\;\;\;\;\left(\cos \left(\mathsf{fma}\left(\sqrt[3]{y} \cdot \sqrt[3]{y}, \sqrt[3]{y}, \frac{t}{3} \cdot \left(-z\right)\right)\right) \cdot \cos \left(\mathsf{fma}\left(\frac{-t}{3}, z, z \cdot \frac{t}{3}\right)\right) - \sin \left(\mathsf{fma}\left(\sqrt[3]{y} \cdot \sqrt[3]{y}, \sqrt[3]{y}, \frac{t}{3} \cdot \left(-z\right)\right)\right) \cdot \sin \left(\mathsf{fma}\left(\frac{-t}{3}, z, z \cdot \frac{t}{3}\right)\right)\right) \cdot \left(\sqrt{x} \cdot 2\right) - \frac{a}{b \cdot 3}\\
\mathbf{elif}\;z \cdot t \le 2.650669621479893038998696276370616139907 \cdot 10^{306}:\\
\;\;\;\;\left(\cos \left(\mathsf{fma}\left(\frac{-\frac{t}{\sqrt[3]{3}}}{\sqrt[3]{\sqrt[3]{3}}}, \frac{\frac{z}{\sqrt[3]{3}}}{\sqrt[3]{\sqrt[3]{3}} \cdot \sqrt[3]{\sqrt[3]{3}}}, \frac{\frac{t}{\sqrt[3]{3}}}{\sqrt[3]{\sqrt[3]{3}}} \cdot \frac{\frac{z}{\sqrt[3]{3}}}{\sqrt[3]{\sqrt[3]{3}} \cdot \sqrt[3]{\sqrt[3]{3}}}\right)\right) \cdot \cos \left(\mathsf{fma}\left(1, y, \frac{\frac{t}{\sqrt[3]{3}}}{\sqrt[3]{\sqrt[3]{3}}} \cdot \frac{-\frac{z}{\sqrt[3]{3}}}{\sqrt[3]{\sqrt[3]{3}} \cdot \sqrt[3]{\sqrt[3]{3}}}\right)\right) - \sin \left(\mathsf{fma}\left(\frac{-\frac{t}{\sqrt[3]{3}}}{\sqrt[3]{\sqrt[3]{3}}}, \frac{\frac{z}{\sqrt[3]{3}}}{\sqrt[3]{\sqrt[3]{3}} \cdot \sqrt[3]{\sqrt[3]{3}}}, \frac{\frac{t}{\sqrt[3]{3}}}{\sqrt[3]{\sqrt[3]{3}}} \cdot \frac{\frac{z}{\sqrt[3]{3}}}{\sqrt[3]{\sqrt[3]{3}} \cdot \sqrt[3]{\sqrt[3]{3}}}\right)\right) \cdot \sin \left(\mathsf{fma}\left(1, y, \frac{\frac{t}{\sqrt[3]{3}}}{\sqrt[3]{\sqrt[3]{3}}} \cdot \frac{-\frac{z}{\sqrt[3]{3}}}{\sqrt[3]{\sqrt[3]{3}} \cdot \sqrt[3]{\sqrt[3]{3}}}\right)\right)\right) \cdot \left(\sqrt{x} \cdot 2\right) - \frac{a}{b \cdot 3}\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\frac{-1}{2}, y \cdot y, 1\right) \cdot \left(\sqrt{x} \cdot 2\right) - \frac{a}{b \cdot 3}\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r28890406 = 2.0;
double r28890407 = x;
double r28890408 = sqrt(r28890407);
double r28890409 = r28890406 * r28890408;
double r28890410 = y;
double r28890411 = z;
double r28890412 = t;
double r28890413 = r28890411 * r28890412;
double r28890414 = 3.0;
double r28890415 = r28890413 / r28890414;
double r28890416 = r28890410 - r28890415;
double r28890417 = cos(r28890416);
double r28890418 = r28890409 * r28890417;
double r28890419 = a;
double r28890420 = b;
double r28890421 = r28890420 * r28890414;
double r28890422 = r28890419 / r28890421;
double r28890423 = r28890418 - r28890422;
return r28890423;
}
double f(double x, double y, double z, double t, double a, double b) {
double r28890424 = z;
double r28890425 = t;
double r28890426 = r28890424 * r28890425;
double r28890427 = -1.799335942069012e+305;
bool r28890428 = r28890426 <= r28890427;
double r28890429 = -0.5;
double r28890430 = y;
double r28890431 = r28890430 * r28890430;
double r28890432 = 1.0;
double r28890433 = fma(r28890429, r28890431, r28890432);
double r28890434 = x;
double r28890435 = sqrt(r28890434);
double r28890436 = 2.0;
double r28890437 = r28890435 * r28890436;
double r28890438 = r28890433 * r28890437;
double r28890439 = a;
double r28890440 = b;
double r28890441 = 3.0;
double r28890442 = r28890440 * r28890441;
double r28890443 = r28890439 / r28890442;
double r28890444 = r28890438 - r28890443;
double r28890445 = -5554585690422355.0;
bool r28890446 = r28890426 <= r28890445;
double r28890447 = cbrt(r28890430);
double r28890448 = r28890447 * r28890447;
double r28890449 = r28890425 / r28890441;
double r28890450 = -r28890424;
double r28890451 = r28890449 * r28890450;
double r28890452 = fma(r28890448, r28890447, r28890451);
double r28890453 = cos(r28890452);
double r28890454 = -r28890425;
double r28890455 = r28890454 / r28890441;
double r28890456 = r28890424 * r28890449;
double r28890457 = fma(r28890455, r28890424, r28890456);
double r28890458 = cos(r28890457);
double r28890459 = r28890453 * r28890458;
double r28890460 = sin(r28890452);
double r28890461 = sin(r28890457);
double r28890462 = r28890460 * r28890461;
double r28890463 = r28890459 - r28890462;
double r28890464 = r28890463 * r28890437;
double r28890465 = r28890464 - r28890443;
double r28890466 = 2.650669621479893e+306;
bool r28890467 = r28890426 <= r28890466;
double r28890468 = cbrt(r28890441);
double r28890469 = r28890425 / r28890468;
double r28890470 = -r28890469;
double r28890471 = cbrt(r28890468);
double r28890472 = r28890470 / r28890471;
double r28890473 = r28890424 / r28890468;
double r28890474 = r28890471 * r28890471;
double r28890475 = r28890473 / r28890474;
double r28890476 = r28890469 / r28890471;
double r28890477 = r28890476 * r28890475;
double r28890478 = fma(r28890472, r28890475, r28890477);
double r28890479 = cos(r28890478);
double r28890480 = -r28890473;
double r28890481 = r28890480 / r28890474;
double r28890482 = r28890476 * r28890481;
double r28890483 = fma(r28890432, r28890430, r28890482);
double r28890484 = cos(r28890483);
double r28890485 = r28890479 * r28890484;
double r28890486 = sin(r28890478);
double r28890487 = sin(r28890483);
double r28890488 = r28890486 * r28890487;
double r28890489 = r28890485 - r28890488;
double r28890490 = r28890489 * r28890437;
double r28890491 = r28890490 - r28890443;
double r28890492 = r28890467 ? r28890491 : r28890444;
double r28890493 = r28890446 ? r28890465 : r28890492;
double r28890494 = r28890428 ? r28890444 : r28890493;
return r28890494;
}




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.3 |
|---|---|
| Target | 18.4 |
| Herbie | 16.9 |
if (* z t) < -1.799335942069012e+305 or 2.650669621479893e+306 < (* z t) Initial program 63.6
Taylor expanded around 0 44.5
Simplified44.5
if -1.799335942069012e+305 < (* z t) < -5554585690422355.0Initial program 33.6
rmApplied *-un-lft-identity33.6
Applied times-frac33.7
Applied add-cube-cbrt33.8
Applied prod-diff33.7
Applied cos-sum27.6
if -5554585690422355.0 < (* z t) < 2.650669621479893e+306Initial program 9.4
rmApplied add-cube-cbrt9.4
Applied associate-/r*9.4
rmApplied add-cube-cbrt9.4
Applied times-frac9.4
Applied times-frac9.4
Applied *-un-lft-identity9.4
Applied prod-diff9.4
Applied cos-sum9.4
Final simplification16.9
herbie shell --seed 2019171 +o rules:numerics
(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))))