\frac{\left(1 - x\right) \cdot \left(3 - x\right)}{y \cdot 3}\left(\frac{1}{y} - \frac{1}{\frac{y}{\frac{x}{3}}}\right) \cdot \left(1 - x\right)double f(double x, double y) {
double r562629 = 1.0;
double r562630 = x;
double r562631 = r562629 - r562630;
double r562632 = 3.0;
double r562633 = r562632 - r562630;
double r562634 = r562631 * r562633;
double r562635 = y;
double r562636 = r562635 * r562632;
double r562637 = r562634 / r562636;
return r562637;
}
double f(double x, double y) {
double r562638 = 1.0;
double r562639 = y;
double r562640 = r562638 / r562639;
double r562641 = x;
double r562642 = 3.0;
double r562643 = r562641 / r562642;
double r562644 = r562639 / r562643;
double r562645 = r562638 / r562644;
double r562646 = r562640 - r562645;
double r562647 = 1.0;
double r562648 = r562647 - r562641;
double r562649 = r562646 * r562648;
return r562649;
}




Bits error versus x




Bits error versus y
Results
| Original | 5.5 |
|---|---|
| Target | 0.1 |
| Herbie | 0.2 |
Initial program 5.5
Simplified0.4
rmApplied div-sub0.4
Simplified0.2
Simplified0.2
rmApplied clear-num0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019196
(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)))