\left(x - \frac{y}{z \cdot 3}\right) + \frac{t}{\left(z \cdot 3\right) \cdot y}\left(x - \frac{\frac{y}{z}}{3}\right) + \frac{1}{\frac{y}{0.333333333333333315 \cdot \frac{t}{z}}}double f(double x, double y, double z, double t) {
double r726205 = x;
double r726206 = y;
double r726207 = z;
double r726208 = 3.0;
double r726209 = r726207 * r726208;
double r726210 = r726206 / r726209;
double r726211 = r726205 - r726210;
double r726212 = t;
double r726213 = r726209 * r726206;
double r726214 = r726212 / r726213;
double r726215 = r726211 + r726214;
return r726215;
}
double f(double x, double y, double z, double t) {
double r726216 = x;
double r726217 = y;
double r726218 = z;
double r726219 = r726217 / r726218;
double r726220 = 3.0;
double r726221 = r726219 / r726220;
double r726222 = r726216 - r726221;
double r726223 = 1.0;
double r726224 = 0.3333333333333333;
double r726225 = t;
double r726226 = r726225 / r726218;
double r726227 = r726224 * r726226;
double r726228 = r726217 / r726227;
double r726229 = r726223 / r726228;
double r726230 = r726222 + r726229;
return r726230;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 3.7 |
|---|---|
| Target | 1.6 |
| Herbie | 1.6 |
Initial program 3.7
rmApplied associate-/r*1.6
Taylor expanded around 0 1.6
rmApplied associate-/r*1.6
rmApplied clear-num1.6
Final simplification1.6
herbie shell --seed 2020024 +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))))