\left(2.0 \cdot \sqrt{x}\right) \cdot \cos \left(y - \frac{z \cdot t}{3.0}\right) - \frac{a}{b \cdot 3.0}\begin{array}{l}
\mathbf{if}\;z \cdot t = -\infty:\\
\;\;\;\;\mathsf{fma}\left(y \cdot y, \frac{-1}{2}, 1\right) \cdot \left(\sqrt{x} \cdot 2.0\right) - \frac{a}{b \cdot 3.0}\\
\mathbf{elif}\;z \cdot t \le 4.529717789787369 \cdot 10^{+261}:\\
\;\;\;\;\left(\cos \left(\mathsf{fma}\left(\frac{-t}{3.0}, z, z \cdot \frac{t}{3.0}\right)\right) \cdot \cos \left(\mathsf{fma}\left(1, y, \frac{-t}{3.0} \cdot z\right)\right) - \left(\cos y \cdot \sin \left(\frac{-t}{3.0} \cdot z\right) + \sin y\right) \cdot \sin \left(\mathsf{fma}\left(\frac{-t}{3.0}, z, z \cdot \frac{t}{3.0}\right)\right)\right) \cdot \left(\sqrt{x} \cdot 2.0\right) - \frac{a}{b \cdot 3.0}\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(y \cdot y, \frac{-1}{2}, 1\right) \cdot \left(\sqrt{x} \cdot 2.0\right) - \frac{a}{b \cdot 3.0}\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r13412604 = 2.0;
double r13412605 = x;
double r13412606 = sqrt(r13412605);
double r13412607 = r13412604 * r13412606;
double r13412608 = y;
double r13412609 = z;
double r13412610 = t;
double r13412611 = r13412609 * r13412610;
double r13412612 = 3.0;
double r13412613 = r13412611 / r13412612;
double r13412614 = r13412608 - r13412613;
double r13412615 = cos(r13412614);
double r13412616 = r13412607 * r13412615;
double r13412617 = a;
double r13412618 = b;
double r13412619 = r13412618 * r13412612;
double r13412620 = r13412617 / r13412619;
double r13412621 = r13412616 - r13412620;
return r13412621;
}
double f(double x, double y, double z, double t, double a, double b) {
double r13412622 = z;
double r13412623 = t;
double r13412624 = r13412622 * r13412623;
double r13412625 = -inf.0;
bool r13412626 = r13412624 <= r13412625;
double r13412627 = y;
double r13412628 = r13412627 * r13412627;
double r13412629 = -0.5;
double r13412630 = 1.0;
double r13412631 = fma(r13412628, r13412629, r13412630);
double r13412632 = x;
double r13412633 = sqrt(r13412632);
double r13412634 = 2.0;
double r13412635 = r13412633 * r13412634;
double r13412636 = r13412631 * r13412635;
double r13412637 = a;
double r13412638 = b;
double r13412639 = 3.0;
double r13412640 = r13412638 * r13412639;
double r13412641 = r13412637 / r13412640;
double r13412642 = r13412636 - r13412641;
double r13412643 = 4.529717789787369e+261;
bool r13412644 = r13412624 <= r13412643;
double r13412645 = -r13412623;
double r13412646 = r13412645 / r13412639;
double r13412647 = r13412623 / r13412639;
double r13412648 = r13412622 * r13412647;
double r13412649 = fma(r13412646, r13412622, r13412648);
double r13412650 = cos(r13412649);
double r13412651 = r13412646 * r13412622;
double r13412652 = fma(r13412630, r13412627, r13412651);
double r13412653 = cos(r13412652);
double r13412654 = r13412650 * r13412653;
double r13412655 = cos(r13412627);
double r13412656 = sin(r13412651);
double r13412657 = r13412655 * r13412656;
double r13412658 = sin(r13412627);
double r13412659 = r13412657 + r13412658;
double r13412660 = sin(r13412649);
double r13412661 = r13412659 * r13412660;
double r13412662 = r13412654 - r13412661;
double r13412663 = r13412662 * r13412635;
double r13412664 = r13412663 - r13412641;
double r13412665 = r13412644 ? r13412664 : r13412642;
double r13412666 = r13412626 ? r13412642 : r13412665;
return r13412666;
}




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 | 19.9 |
|---|---|
| Target | 18.3 |
| Herbie | 16.1 |
if (* z t) < -inf.0 or 4.529717789787369e+261 < (* z t) Initial program 58.5
Taylor expanded around 0 44.8
Simplified44.8
if -inf.0 < (* z t) < 4.529717789787369e+261Initial program 13.4
rmApplied *-un-lft-identity13.4
Applied times-frac13.5
Applied *-un-lft-identity13.5
Applied prod-diff13.5
Applied cos-sum11.3
rmApplied fma-udef11.3
Applied sin-sum11.2
Taylor expanded around 0 11.2
Final simplification16.1
herbie shell --seed 2019156 +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 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))))