x + \frac{\left(y - z\right) \cdot \left(t - x\right)}{a - z}\frac{t}{\frac{a - z}{y - z}} - \left(\frac{x}{\frac{a - z}{y - z}} - x\right)double f(double x, double y, double z, double t, double a) {
double r26972961 = x;
double r26972962 = y;
double r26972963 = z;
double r26972964 = r26972962 - r26972963;
double r26972965 = t;
double r26972966 = r26972965 - r26972961;
double r26972967 = r26972964 * r26972966;
double r26972968 = a;
double r26972969 = r26972968 - r26972963;
double r26972970 = r26972967 / r26972969;
double r26972971 = r26972961 + r26972970;
return r26972971;
}
double f(double x, double y, double z, double t, double a) {
double r26972972 = t;
double r26972973 = a;
double r26972974 = z;
double r26972975 = r26972973 - r26972974;
double r26972976 = y;
double r26972977 = r26972976 - r26972974;
double r26972978 = r26972975 / r26972977;
double r26972979 = r26972972 / r26972978;
double r26972980 = x;
double r26972981 = r26972980 / r26972978;
double r26972982 = r26972981 - r26972980;
double r26972983 = r26972979 - r26972982;
return r26972983;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 23.8 |
|---|---|
| Target | 11.4 |
| Herbie | 7.3 |
Initial program 23.8
Simplified11.4
rmApplied clear-num11.5
rmApplied fma-udef11.5
Simplified11.3
rmApplied div-sub11.3
Applied associate-+l-7.3
Final simplification7.3
herbie shell --seed 2019179 +o rules:numerics
(FPCore (x y z t a)
:name "Graphics.Rendering.Chart.Axis.Types:invLinMap from Chart-1.5.3"
:herbie-target
(if (< z -1.2536131056095036e+188) (- t (* (/ y z) (- t x))) (if (< z 4.446702369113811e+64) (+ x (/ (- y z) (/ (- a z) (- t x)))) (- t (* (/ y z) (- t x)))))
(+ x (/ (* (- y z) (- t x)) (- a z))))