\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.9999999999999996669330926124530378729105:\\
\;\;\;\;\left(\cos \left(\mathsf{fma}\left(\frac{-t}{3}, z, \frac{t}{3} \cdot z\right)\right) \cdot \left(\cos y \cdot \cos \left(\frac{-t}{3} \cdot z\right) - \sin y \cdot \left(\sqrt[3]{\sin \left(\frac{-t}{3} \cdot z\right)} \cdot \left(\sqrt[3]{\sin \left(\frac{-t}{3} \cdot z\right)} \cdot \sqrt[3]{\sin \left(\frac{-t}{3} \cdot z\right)}\right)\right)\right) - \sin \left(\mathsf{fma}\left(\frac{-t}{3}, z, \frac{t}{3} \cdot z\right)\right) \cdot \sin \left(\mathsf{fma}\left(1, y, \frac{-t}{3} \cdot z\right)\right)\right) \cdot \left(2 \cdot \sqrt{x}\right) - \frac{a}{b \cdot 3}\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\frac{-1}{2}, y \cdot y, 1\right) \cdot \left(2 \cdot \sqrt{x}\right) - \frac{a}{b \cdot 3}\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r35324389 = 2.0;
double r35324390 = x;
double r35324391 = sqrt(r35324390);
double r35324392 = r35324389 * r35324391;
double r35324393 = y;
double r35324394 = z;
double r35324395 = t;
double r35324396 = r35324394 * r35324395;
double r35324397 = 3.0;
double r35324398 = r35324396 / r35324397;
double r35324399 = r35324393 - r35324398;
double r35324400 = cos(r35324399);
double r35324401 = r35324392 * r35324400;
double r35324402 = a;
double r35324403 = b;
double r35324404 = r35324403 * r35324397;
double r35324405 = r35324402 / r35324404;
double r35324406 = r35324401 - r35324405;
return r35324406;
}
double f(double x, double y, double z, double t, double a, double b) {
double r35324407 = y;
double r35324408 = z;
double r35324409 = t;
double r35324410 = r35324408 * r35324409;
double r35324411 = 3.0;
double r35324412 = r35324410 / r35324411;
double r35324413 = r35324407 - r35324412;
double r35324414 = cos(r35324413);
double r35324415 = 0.9999999999999997;
bool r35324416 = r35324414 <= r35324415;
double r35324417 = -r35324409;
double r35324418 = r35324417 / r35324411;
double r35324419 = r35324409 / r35324411;
double r35324420 = r35324419 * r35324408;
double r35324421 = fma(r35324418, r35324408, r35324420);
double r35324422 = cos(r35324421);
double r35324423 = cos(r35324407);
double r35324424 = r35324418 * r35324408;
double r35324425 = cos(r35324424);
double r35324426 = r35324423 * r35324425;
double r35324427 = sin(r35324407);
double r35324428 = sin(r35324424);
double r35324429 = cbrt(r35324428);
double r35324430 = r35324429 * r35324429;
double r35324431 = r35324429 * r35324430;
double r35324432 = r35324427 * r35324431;
double r35324433 = r35324426 - r35324432;
double r35324434 = r35324422 * r35324433;
double r35324435 = sin(r35324421);
double r35324436 = 1.0;
double r35324437 = fma(r35324436, r35324407, r35324424);
double r35324438 = sin(r35324437);
double r35324439 = r35324435 * r35324438;
double r35324440 = r35324434 - r35324439;
double r35324441 = 2.0;
double r35324442 = x;
double r35324443 = sqrt(r35324442);
double r35324444 = r35324441 * r35324443;
double r35324445 = r35324440 * r35324444;
double r35324446 = a;
double r35324447 = b;
double r35324448 = r35324447 * r35324411;
double r35324449 = r35324446 / r35324448;
double r35324450 = r35324445 - r35324449;
double r35324451 = -0.5;
double r35324452 = r35324407 * r35324407;
double r35324453 = fma(r35324451, r35324452, r35324436);
double r35324454 = r35324453 * r35324444;
double r35324455 = r35324454 - r35324449;
double r35324456 = r35324416 ? r35324450 : r35324455;
return r35324456;
}




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.2 |
|---|---|
| Target | 18.0 |
| Herbie | 15.5 |
if (cos (- y (/ (* z t) 3.0))) < 0.9999999999999997Initial program 19.2
rmApplied *-un-lft-identity19.2
Applied times-frac19.2
Applied *-un-lft-identity19.2
Applied prod-diff19.2
Applied cos-sum16.4
rmApplied fma-udef16.4
Applied cos-sum15.6
rmApplied add-cube-cbrt15.6
if 0.9999999999999997 < (cos (- y (/ (* z t) 3.0))) Initial program 22.0
Taylor expanded around 0 15.4
Simplified15.4
Final simplification15.5
herbie shell --seed 2019200 +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))))