\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1}\frac{x + \left(\frac{z}{t \cdot z - x} \cdot y - \frac{x}{t \cdot z - x}\right)}{x + 1}double f(double x, double y, double z, double t) {
double r434000 = x;
double r434001 = y;
double r434002 = z;
double r434003 = r434001 * r434002;
double r434004 = r434003 - r434000;
double r434005 = t;
double r434006 = r434005 * r434002;
double r434007 = r434006 - r434000;
double r434008 = r434004 / r434007;
double r434009 = r434000 + r434008;
double r434010 = 1.0;
double r434011 = r434000 + r434010;
double r434012 = r434009 / r434011;
return r434012;
}
double f(double x, double y, double z, double t) {
double r434013 = x;
double r434014 = z;
double r434015 = t;
double r434016 = r434015 * r434014;
double r434017 = r434016 - r434013;
double r434018 = r434014 / r434017;
double r434019 = y;
double r434020 = r434018 * r434019;
double r434021 = r434013 / r434017;
double r434022 = r434020 - r434021;
double r434023 = r434013 + r434022;
double r434024 = 1.0;
double r434025 = r434013 + r434024;
double r434026 = r434023 / r434025;
return r434026;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 7.7 |
|---|---|
| Target | 0.4 |
| Herbie | 2.3 |
Initial program 7.7
rmApplied div-sub7.7
Simplified2.3
rmApplied pow12.3
Final simplification2.3
herbie shell --seed 2019303
(FPCore (x y z t)
:name "Diagrams.Trail:splitAtParam from diagrams-lib-1.3.0.3, A"
:precision binary64
:herbie-target
(/ (+ x (- (/ y (- t (/ x z))) (/ x (- (* t z) x)))) (+ x 1))
(/ (+ x (/ (- (* y z) x) (- (* t z) x))) (+ x 1)))