\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 = -\infty \lor \neg \left(z \cdot t \le 3.982214551187210407512533577328782205679 \cdot 10^{305}\right):\\
\;\;\;\;\left(2 \cdot \sqrt{x}\right) \cdot \mathsf{fma}\left({y}^{2}, \frac{-1}{2}, 1\right) - \frac{a}{b \cdot 3}\\
\mathbf{else}:\\
\;\;\;\;\left(2 \cdot \sqrt{x}\right) \cdot \cos \left(y - \left(\left(\frac{z}{\sqrt{3}} \cdot t\right) \cdot \left(\sqrt[3]{\frac{1}{\sqrt{3}}} \cdot \sqrt[3]{\frac{1}{\sqrt{3}}}\right)\right) \cdot \sqrt[3]{\frac{1}{\sqrt{3}}}\right) - \frac{a}{b \cdot 3}\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r532316 = 2.0;
double r532317 = x;
double r532318 = sqrt(r532317);
double r532319 = r532316 * r532318;
double r532320 = y;
double r532321 = z;
double r532322 = t;
double r532323 = r532321 * r532322;
double r532324 = 3.0;
double r532325 = r532323 / r532324;
double r532326 = r532320 - r532325;
double r532327 = cos(r532326);
double r532328 = r532319 * r532327;
double r532329 = a;
double r532330 = b;
double r532331 = r532330 * r532324;
double r532332 = r532329 / r532331;
double r532333 = r532328 - r532332;
return r532333;
}
double f(double x, double y, double z, double t, double a, double b) {
double r532334 = z;
double r532335 = t;
double r532336 = r532334 * r532335;
double r532337 = -inf.0;
bool r532338 = r532336 <= r532337;
double r532339 = 3.9822145511872104e+305;
bool r532340 = r532336 <= r532339;
double r532341 = !r532340;
bool r532342 = r532338 || r532341;
double r532343 = 2.0;
double r532344 = x;
double r532345 = sqrt(r532344);
double r532346 = r532343 * r532345;
double r532347 = y;
double r532348 = 2.0;
double r532349 = pow(r532347, r532348);
double r532350 = -0.5;
double r532351 = 1.0;
double r532352 = fma(r532349, r532350, r532351);
double r532353 = r532346 * r532352;
double r532354 = a;
double r532355 = b;
double r532356 = 3.0;
double r532357 = r532355 * r532356;
double r532358 = r532354 / r532357;
double r532359 = r532353 - r532358;
double r532360 = sqrt(r532356);
double r532361 = r532334 / r532360;
double r532362 = r532361 * r532335;
double r532363 = r532351 / r532360;
double r532364 = cbrt(r532363);
double r532365 = r532364 * r532364;
double r532366 = r532362 * r532365;
double r532367 = r532366 * r532364;
double r532368 = r532347 - r532367;
double r532369 = cos(r532368);
double r532370 = r532346 * r532369;
double r532371 = r532370 - r532358;
double r532372 = r532342 ? r532359 : r532371;
return r532372;
}




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.5 |
|---|---|
| Target | 18.6 |
| Herbie | 18.1 |
if (* z t) < -inf.0 or 3.9822145511872104e+305 < (* z t) Initial program 63.7
rmApplied add-sqr-sqrt63.7
Applied times-frac63.7
rmApplied div-inv63.7
Applied associate-*r*63.7
Taylor expanded around 0 45.2
Simplified45.2
if -inf.0 < (* z t) < 3.9822145511872104e+305Initial program 14.3
rmApplied add-sqr-sqrt14.2
Applied times-frac14.3
rmApplied div-inv14.3
Applied associate-*r*14.3
rmApplied add-cube-cbrt14.2
Applied associate-*r*14.2
Final simplification18.1
herbie shell --seed 2019325 +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))))