\frac{x \cdot \left(\frac{x}{y} + 1\right)}{x + 1}\frac{x}{x + 1} \cdot \left(\frac{x}{y} + 1\right)double f(double x, double y) {
double r988508 = x;
double r988509 = y;
double r988510 = r988508 / r988509;
double r988511 = 1.0;
double r988512 = r988510 + r988511;
double r988513 = r988508 * r988512;
double r988514 = r988508 + r988511;
double r988515 = r988513 / r988514;
return r988515;
}
double f(double x, double y) {
double r988516 = x;
double r988517 = 1.0;
double r988518 = r988516 + r988517;
double r988519 = r988516 / r988518;
double r988520 = y;
double r988521 = r988516 / r988520;
double r988522 = r988521 + r988517;
double r988523 = r988519 * r988522;
return r988523;
}




Bits error versus x




Bits error versus y
Results
| Original | 9.6 |
|---|---|
| Target | 0.1 |
| Herbie | 0.1 |
Initial program 9.6
rmApplied associate-/l*0.1
rmApplied associate-/r/0.1
Final simplification0.1
herbie shell --seed 2020027 +o rules:numerics
(FPCore (x y)
:name "Codec.Picture.Types:toneMapping from JuicyPixels-3.2.6.1"
:precision binary64
:herbie-target
(* (/ x 1) (/ (+ (/ x y) 1) (+ x 1)))
(/ (* x (+ (/ x y) 1)) (+ x 1)))