\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1}\frac{\left(x + \frac{z}{t \cdot z - x} \cdot y\right) - \frac{x}{t \cdot z - x}}{x + 1}double f(double x, double y, double z, double t) {
double r465068 = x;
double r465069 = y;
double r465070 = z;
double r465071 = r465069 * r465070;
double r465072 = r465071 - r465068;
double r465073 = t;
double r465074 = r465073 * r465070;
double r465075 = r465074 - r465068;
double r465076 = r465072 / r465075;
double r465077 = r465068 + r465076;
double r465078 = 1.0;
double r465079 = r465068 + r465078;
double r465080 = r465077 / r465079;
return r465080;
}
double f(double x, double y, double z, double t) {
double r465081 = x;
double r465082 = z;
double r465083 = t;
double r465084 = r465083 * r465082;
double r465085 = r465084 - r465081;
double r465086 = r465082 / r465085;
double r465087 = y;
double r465088 = r465086 * r465087;
double r465089 = r465081 + r465088;
double r465090 = r465081 / r465085;
double r465091 = r465089 - r465090;
double r465092 = 1.0;
double r465093 = r465081 + r465092;
double r465094 = r465091 / r465093;
return r465094;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 7.2 |
|---|---|
| Target | 0.3 |
| Herbie | 2.1 |
Initial program 7.2
rmApplied div-sub7.2
Applied associate-+r-7.2
Simplified4.3
rmApplied associate-/r/2.1
Final simplification2.1
herbie shell --seed 2019304
(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)))