\frac{\left(x \cdot y\right) \cdot z}{\sqrt{z \cdot z - t \cdot a}}\begin{array}{l}
\mathbf{if}\;z \le -6.506706062111452568496513260808126439647 \cdot 10^{153}:\\
\;\;\;\;-x \cdot y\\
\mathbf{elif}\;z \le 3.243528684537981667725101402901133521761 \cdot 10^{132}:\\
\;\;\;\;\frac{x}{\frac{\sqrt[3]{\sqrt{z \cdot z - t \cdot a}} \cdot \sqrt[3]{\sqrt{z \cdot z - t \cdot a}}}{\sqrt[3]{z} \cdot \sqrt[3]{z}}} \cdot \frac{y}{\frac{\sqrt[3]{\sqrt{z \cdot z - t \cdot a}}}{\sqrt[3]{z}}}\\
\mathbf{else}:\\
\;\;\;\;x \cdot y\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r316429 = x;
double r316430 = y;
double r316431 = r316429 * r316430;
double r316432 = z;
double r316433 = r316431 * r316432;
double r316434 = r316432 * r316432;
double r316435 = t;
double r316436 = a;
double r316437 = r316435 * r316436;
double r316438 = r316434 - r316437;
double r316439 = sqrt(r316438);
double r316440 = r316433 / r316439;
return r316440;
}
double f(double x, double y, double z, double t, double a) {
double r316441 = z;
double r316442 = -6.5067060621114526e+153;
bool r316443 = r316441 <= r316442;
double r316444 = x;
double r316445 = y;
double r316446 = r316444 * r316445;
double r316447 = -r316446;
double r316448 = 3.2435286845379817e+132;
bool r316449 = r316441 <= r316448;
double r316450 = r316441 * r316441;
double r316451 = t;
double r316452 = a;
double r316453 = r316451 * r316452;
double r316454 = r316450 - r316453;
double r316455 = sqrt(r316454);
double r316456 = cbrt(r316455);
double r316457 = r316456 * r316456;
double r316458 = cbrt(r316441);
double r316459 = r316458 * r316458;
double r316460 = r316457 / r316459;
double r316461 = r316444 / r316460;
double r316462 = r316456 / r316458;
double r316463 = r316445 / r316462;
double r316464 = r316461 * r316463;
double r316465 = r316449 ? r316464 : r316446;
double r316466 = r316443 ? r316447 : r316465;
return r316466;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 24.5 |
|---|---|
| Target | 7.8 |
| Herbie | 5.4 |
if z < -6.5067060621114526e+153Initial program 53.4
Taylor expanded around -inf 0.9
Simplified0.9
if -6.5067060621114526e+153 < z < 3.2435286845379817e+132Initial program 11.4
rmApplied associate-/l*9.2
rmApplied add-cube-cbrt9.9
Applied add-cube-cbrt9.4
Applied times-frac9.4
Applied times-frac7.6
if 3.2435286845379817e+132 < z Initial program 48.8
Taylor expanded around inf 1.4
Final simplification5.4
herbie shell --seed 2019326
(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)))))