\left(x - \frac{y}{z \cdot 3}\right) + \frac{t}{\left(z \cdot 3\right) \cdot y}\begin{array}{l}
\mathbf{if}\;t \le -43648.09610487145255319774150848388671875 \lor \neg \left(t \le 5.854675196306246238384814072270733670477 \cdot 10^{46}\right):\\
\;\;\;\;\left(x - 0.3333333333333333148296162562473909929395 \cdot \frac{y}{z}\right) + \frac{t}{\left(z \cdot 3\right) \cdot y}\\
\mathbf{else}:\\
\;\;\;\;\left(x - \frac{y}{z \cdot 3}\right) + \frac{\frac{1}{z}}{\frac{y}{\frac{t}{3}}}\\
\end{array}double f(double x, double y, double z, double t) {
double r761402 = x;
double r761403 = y;
double r761404 = z;
double r761405 = 3.0;
double r761406 = r761404 * r761405;
double r761407 = r761403 / r761406;
double r761408 = r761402 - r761407;
double r761409 = t;
double r761410 = r761406 * r761403;
double r761411 = r761409 / r761410;
double r761412 = r761408 + r761411;
return r761412;
}
double f(double x, double y, double z, double t) {
double r761413 = t;
double r761414 = -43648.09610487145;
bool r761415 = r761413 <= r761414;
double r761416 = 5.854675196306246e+46;
bool r761417 = r761413 <= r761416;
double r761418 = !r761417;
bool r761419 = r761415 || r761418;
double r761420 = x;
double r761421 = 0.3333333333333333;
double r761422 = y;
double r761423 = z;
double r761424 = r761422 / r761423;
double r761425 = r761421 * r761424;
double r761426 = r761420 - r761425;
double r761427 = 3.0;
double r761428 = r761423 * r761427;
double r761429 = r761428 * r761422;
double r761430 = r761413 / r761429;
double r761431 = r761426 + r761430;
double r761432 = r761422 / r761428;
double r761433 = r761420 - r761432;
double r761434 = 1.0;
double r761435 = r761434 / r761423;
double r761436 = r761413 / r761427;
double r761437 = r761422 / r761436;
double r761438 = r761435 / r761437;
double r761439 = r761433 + r761438;
double r761440 = r761419 ? r761431 : r761439;
return r761440;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 3.9 |
|---|---|
| Target | 1.6 |
| Herbie | 0.4 |
if t < -43648.09610487145 or 5.854675196306246e+46 < t Initial program 0.6
Taylor expanded around 0 0.7
if -43648.09610487145 < t < 5.854675196306246e+46Initial program 5.8
rmApplied associate-/r*1.0
rmApplied *-un-lft-identity1.0
Applied times-frac1.0
Applied associate-/l*0.2
Final simplification0.4
herbie shell --seed 2020002 +o rules:numerics
(FPCore (x y z t)
:name "Diagrams.Solve.Polynomial:cubForm from diagrams-solve-0.1, H"
:precision binary64
:herbie-target
(+ (- x (/ y (* z 3))) (/ (/ t (* z 3)) y))
(+ (- x (/ y (* z 3))) (/ t (* (* z 3) y))))