\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}{\frac{t}{z \cdot 3}}}double f(double x, double y, double z, double t) {
double r846963 = x;
double r846964 = y;
double r846965 = z;
double r846966 = 3.0;
double r846967 = r846965 * r846966;
double r846968 = r846964 / r846967;
double r846969 = r846963 - r846968;
double r846970 = t;
double r846971 = r846967 * r846964;
double r846972 = r846970 / r846971;
double r846973 = r846969 + r846972;
return r846973;
}
double f(double x, double y, double z, double t) {
double r846974 = x;
double r846975 = y;
double r846976 = z;
double r846977 = r846975 / r846976;
double r846978 = 3.0;
double r846979 = r846977 / r846978;
double r846980 = r846974 - r846979;
double r846981 = 1.0;
double r846982 = t;
double r846983 = r846976 * r846978;
double r846984 = r846982 / r846983;
double r846985 = r846975 / r846984;
double r846986 = r846981 / r846985;
double r846987 = r846980 + r846986;
return r846987;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 3.7 |
|---|---|
| Target | 1.8 |
| Herbie | 1.8 |
Initial program 3.7
rmApplied associate-/r*1.8
rmApplied associate-/r*1.8
rmApplied clear-num1.8
Final simplification1.8
herbie shell --seed 2020060
(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))))