\frac{\left(x \cdot y\right) \cdot z}{\sqrt{z \cdot z - t \cdot a}}\begin{array}{l}
\mathbf{if}\;z \le -2.97301002443429709 \cdot 10^{73}:\\
\;\;\;\;-x \cdot y\\
\mathbf{elif}\;z \le 2.9066318437014138 \cdot 10^{79}:\\
\;\;\;\;x \cdot \left(\frac{y}{\left|\sqrt[3]{{\left(\sqrt[3]{{z}^{2} - a \cdot t}\right)}^{3}}\right|} \cdot \frac{z}{\sqrt{\sqrt[3]{z \cdot z - t \cdot a}}}\right)\\
\mathbf{else}:\\
\;\;\;\;x \cdot y\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r364335 = x;
double r364336 = y;
double r364337 = r364335 * r364336;
double r364338 = z;
double r364339 = r364337 * r364338;
double r364340 = r364338 * r364338;
double r364341 = t;
double r364342 = a;
double r364343 = r364341 * r364342;
double r364344 = r364340 - r364343;
double r364345 = sqrt(r364344);
double r364346 = r364339 / r364345;
return r364346;
}
double f(double x, double y, double z, double t, double a) {
double r364347 = z;
double r364348 = -2.973010024434297e+73;
bool r364349 = r364347 <= r364348;
double r364350 = x;
double r364351 = y;
double r364352 = r364350 * r364351;
double r364353 = -r364352;
double r364354 = 2.9066318437014138e+79;
bool r364355 = r364347 <= r364354;
double r364356 = 2.0;
double r364357 = pow(r364347, r364356);
double r364358 = a;
double r364359 = t;
double r364360 = r364358 * r364359;
double r364361 = r364357 - r364360;
double r364362 = cbrt(r364361);
double r364363 = 3.0;
double r364364 = pow(r364362, r364363);
double r364365 = cbrt(r364364);
double r364366 = fabs(r364365);
double r364367 = r364351 / r364366;
double r364368 = r364347 * r364347;
double r364369 = r364359 * r364358;
double r364370 = r364368 - r364369;
double r364371 = cbrt(r364370);
double r364372 = sqrt(r364371);
double r364373 = r364347 / r364372;
double r364374 = r364367 * r364373;
double r364375 = r364350 * r364374;
double r364376 = r364355 ? r364375 : r364352;
double r364377 = r364349 ? r364353 : r364376;
return r364377;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 24.6 |
|---|---|
| Target | 7.9 |
| Herbie | 7.3 |
if z < -2.973010024434297e+73Initial program 39.9
rmApplied *-un-lft-identity39.9
Applied sqrt-prod39.9
Applied times-frac37.4
Simplified37.4
Taylor expanded around -inf 3.2
if -2.973010024434297e+73 < z < 2.9066318437014138e+79Initial program 11.4
rmApplied *-un-lft-identity11.4
Applied sqrt-prod11.4
Applied times-frac10.1
Simplified10.1
rmApplied associate-*l*10.1
rmApplied add-cube-cbrt10.4
Applied sqrt-prod10.5
Applied *-un-lft-identity10.5
Applied times-frac10.5
Applied associate-*r*11.0
Simplified11.0
rmApplied add-cbrt-cube11.1
Simplified11.1
if 2.9066318437014138e+79 < z Initial program 39.9
rmApplied *-un-lft-identity39.9
Applied sqrt-prod39.9
Applied times-frac37.8
Simplified37.8
Taylor expanded around inf 2.5
Final simplification7.3
herbie shell --seed 2020043
(FPCore (x y z t a)
:name "Statistics.Math.RootFinding:ridders from math-functions-0.1.5.2"
:precision binary64
:herbie-target
(if (< z -3.1921305903852764e+46) (- (* y x)) (if (< z 5.976268120920894e+90) (/ (* x z) (/ (sqrt (- (* z z) (* a t))) y)) (* y x)))
(/ (* (* x y) z) (sqrt (- (* z z) (* t a)))))