x + \frac{y \cdot \left(z - x\right)}{t}\frac{z - x}{\frac{t}{y}} + xdouble f(double x, double y, double z, double t) {
double r256159 = x;
double r256160 = y;
double r256161 = z;
double r256162 = r256161 - r256159;
double r256163 = r256160 * r256162;
double r256164 = t;
double r256165 = r256163 / r256164;
double r256166 = r256159 + r256165;
return r256166;
}
double f(double x, double y, double z, double t) {
double r256167 = z;
double r256168 = x;
double r256169 = r256167 - r256168;
double r256170 = t;
double r256171 = y;
double r256172 = r256170 / r256171;
double r256173 = r256169 / r256172;
double r256174 = r256173 + r256168;
return r256174;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 6.3 |
|---|---|
| Target | 2.0 |
| Herbie | 1.9 |
if y < -7.329715074495526Initial program 14.7
rmApplied associate-/l*2.0
if -7.329715074495526 < y < 4.102782586155086e+55Initial program 1.2
rmApplied div-inv1.2
if 4.102782586155086e+55 < y Initial program 19.5
rmApplied clear-num19.5
rmApplied associate-/r*3.8
rmApplied *-un-lft-identity3.8
Applied *-un-lft-identity3.8
Applied *-un-lft-identity3.8
Applied times-frac3.8
Applied times-frac3.8
Applied *-un-lft-identity3.8
Applied times-frac3.8
Simplified3.8
Simplified3.7
Final simplification1.9
herbie shell --seed 2019291
(FPCore (x y z t)
:name "Optimisation.CirclePacking:place from circle-packing-0.1.0.4, D"
:precision binary64
:herbie-target
(- x (+ (* x (/ y t)) (* (- z) (/ y t))))
(+ x (/ (* y (- z x)) t)))