\frac{\left(1 - x\right) \cdot \left(3 - x\right)}{y \cdot 3}\frac{\frac{-x}{y} \cdot \left(3 - x\right)}{3} + \frac{\left(1 - \frac{x}{3}\right) \cdot 1}{y}double f(double x, double y) {
double r504962 = 1.0;
double r504963 = x;
double r504964 = r504962 - r504963;
double r504965 = 3.0;
double r504966 = r504965 - r504963;
double r504967 = r504964 * r504966;
double r504968 = y;
double r504969 = r504968 * r504965;
double r504970 = r504967 / r504969;
return r504970;
}
double f(double x, double y) {
double r504971 = x;
double r504972 = -r504971;
double r504973 = y;
double r504974 = r504972 / r504973;
double r504975 = 3.0;
double r504976 = r504975 - r504971;
double r504977 = r504974 * r504976;
double r504978 = r504977 / r504975;
double r504979 = 1.0;
double r504980 = r504971 / r504975;
double r504981 = r504979 - r504980;
double r504982 = 1.0;
double r504983 = r504981 * r504982;
double r504984 = r504983 / r504973;
double r504985 = r504978 + r504984;
return r504985;
}




Bits error versus x




Bits error versus y
Results
| Original | 5.7 |
|---|---|
| Target | 0.1 |
| Herbie | 0.2 |
Initial program 5.7
Simplified0.1
rmApplied div-sub0.1
rmApplied sub-neg0.1
Applied distribute-rgt-in0.1
Simplified0.1
Simplified0.2
Final simplification0.2
herbie shell --seed 2019194 +o rules:numerics
(FPCore (x y)
:name "Diagrams.TwoD.Arc:bezierFromSweepQ1 from diagrams-lib-1.3.0.3"
:herbie-target
(* (/ (- 1.0 x) y) (/ (- 3.0 x) 3.0))
(/ (* (- 1.0 x) (- 3.0 x)) (* y 3.0)))