\frac{a1 \cdot a2}{b1 \cdot b2}\frac{a1 \cdot a2}{b1 \cdot b2}double f(double a1, double a2, double b1, double b2) {
double r79509 = a1;
double r79510 = a2;
double r79511 = r79509 * r79510;
double r79512 = b1;
double r79513 = b2;
double r79514 = r79512 * r79513;
double r79515 = r79511 / r79514;
return r79515;
}
double f(double a1, double a2, double b1, double b2) {
double r79516 = a1;
double r79517 = a2;
double r79518 = r79516 * r79517;
double r79519 = b1;
double r79520 = b2;
double r79521 = r79519 * r79520;
double r79522 = r79518 / r79521;
return r79522;
}




Bits error versus a1




Bits error versus a2




Bits error versus b1




Bits error versus b2
Results
| Original | 11.5 |
|---|---|
| Target | 11.2 |
| Herbie | 11.5 |
if (* b1 b2) < -1.9533036250714963e+210Initial program 16.9
rmApplied times-frac4.6
if -1.9533036250714963e+210 < (* b1 b2) < -1.1259899127088251e-109 or 1.2432106094940164e-234 < (* b1 b2) < 2.771822019487987e+122Initial program 3.8
rmApplied div-inv3.9
if -1.1259899127088251e-109 < (* b1 b2) < 1.2432106094940164e-234Initial program 26.9
rmApplied associate-/r*15.0
rmApplied associate-/l*11.6
if 2.771822019487987e+122 < (* b1 b2) Initial program 13.9
rmApplied associate-/r*8.8
rmApplied associate-/l*6.9
rmApplied associate-/r/6.3
Applied associate-/l*7.2
Final simplification11.5
herbie shell --seed 2019297
(FPCore (a1 a2 b1 b2)
:name "Quotient of products"
:precision binary64
:herbie-target
(* (/ a1 b1) (/ a2 b2))
(/ (* a1 a2) (* b1 b2)))