\left(x - \frac{y}{z \cdot 3}\right) + \frac{t}{\left(z \cdot 3\right) \cdot y}\begin{array}{l}
\mathbf{if}\;t \le -6.04040118693943595803771657159403407899 \cdot 10^{54}:\\
\;\;\;\;\frac{t}{z \cdot \left(3 \cdot y\right)} + \left(x - \frac{y}{z \cdot 3}\right)\\
\mathbf{elif}\;t \le 17403769.191135458648204803466796875:\\
\;\;\;\;\left(x - \frac{y}{z \cdot 3}\right) + \frac{1}{z} \cdot \frac{\frac{t}{3}}{y}\\
\mathbf{else}:\\
\;\;\;\;\left(x - \frac{\frac{y}{z}}{3}\right) + \frac{\frac{t}{z \cdot 3}}{y}\\
\end{array}double f(double x, double y, double z, double t) {
double r32306211 = x;
double r32306212 = y;
double r32306213 = z;
double r32306214 = 3.0;
double r32306215 = r32306213 * r32306214;
double r32306216 = r32306212 / r32306215;
double r32306217 = r32306211 - r32306216;
double r32306218 = t;
double r32306219 = r32306215 * r32306212;
double r32306220 = r32306218 / r32306219;
double r32306221 = r32306217 + r32306220;
return r32306221;
}
double f(double x, double y, double z, double t) {
double r32306222 = t;
double r32306223 = -6.040401186939436e+54;
bool r32306224 = r32306222 <= r32306223;
double r32306225 = z;
double r32306226 = 3.0;
double r32306227 = y;
double r32306228 = r32306226 * r32306227;
double r32306229 = r32306225 * r32306228;
double r32306230 = r32306222 / r32306229;
double r32306231 = x;
double r32306232 = r32306225 * r32306226;
double r32306233 = r32306227 / r32306232;
double r32306234 = r32306231 - r32306233;
double r32306235 = r32306230 + r32306234;
double r32306236 = 17403769.19113546;
bool r32306237 = r32306222 <= r32306236;
double r32306238 = 1.0;
double r32306239 = r32306238 / r32306225;
double r32306240 = r32306222 / r32306226;
double r32306241 = r32306240 / r32306227;
double r32306242 = r32306239 * r32306241;
double r32306243 = r32306234 + r32306242;
double r32306244 = r32306227 / r32306225;
double r32306245 = r32306244 / r32306226;
double r32306246 = r32306231 - r32306245;
double r32306247 = r32306222 / r32306232;
double r32306248 = r32306247 / r32306227;
double r32306249 = r32306246 + r32306248;
double r32306250 = r32306237 ? r32306243 : r32306249;
double r32306251 = r32306224 ? r32306235 : r32306250;
return r32306251;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 3.6 |
|---|---|
| Target | 1.6 |
| Herbie | 0.8 |
if t < -6.040401186939436e+54Initial program 0.7
rmApplied associate-*l*0.6
if -6.040401186939436e+54 < t < 17403769.19113546Initial program 5.3
rmApplied associate-/r*1.0
rmApplied *-un-lft-identity1.0
Applied *-un-lft-identity1.0
Applied times-frac1.1
Applied times-frac0.3
Simplified0.3
if 17403769.19113546 < t Initial program 0.8
rmApplied associate-/r*2.1
rmApplied associate-/r*2.1
Final simplification0.8
herbie shell --seed 2019174 +o rules:numerics
(FPCore (x y z t)
:name "Diagrams.Solve.Polynomial:cubForm from diagrams-solve-0.1, H"
:herbie-target
(+ (- x (/ y (* z 3.0))) (/ (/ t (* z 3.0)) y))
(+ (- x (/ y (* z 3.0))) (/ t (* (* z 3.0) y))))