\left(x - \frac{y}{z \cdot 3}\right) + \frac{t}{\left(z \cdot 3\right) \cdot y}\left(x + \frac{-\frac{y}{3}}{z}\right) + \frac{\frac{t}{z}}{3} \cdot \frac{1}{y}double f(double x, double y, double z, double t) {
double r928623 = x;
double r928624 = y;
double r928625 = z;
double r928626 = 3.0;
double r928627 = r928625 * r928626;
double r928628 = r928624 / r928627;
double r928629 = r928623 - r928628;
double r928630 = t;
double r928631 = r928627 * r928624;
double r928632 = r928630 / r928631;
double r928633 = r928629 + r928632;
return r928633;
}
double f(double x, double y, double z, double t) {
double r928634 = x;
double r928635 = y;
double r928636 = 3.0;
double r928637 = r928635 / r928636;
double r928638 = -r928637;
double r928639 = z;
double r928640 = r928638 / r928639;
double r928641 = r928634 + r928640;
double r928642 = t;
double r928643 = r928642 / r928639;
double r928644 = r928643 / r928636;
double r928645 = 1.0;
double r928646 = r928645 / r928635;
double r928647 = r928644 * r928646;
double r928648 = r928641 + r928647;
return r928648;
}




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
rmApplied div-inv1.7
rmApplied sub-neg1.7
Simplified1.6
rmApplied associate-/r*1.6
Final simplification1.6
herbie shell --seed 2020042 +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))))