\frac{a1 \cdot a2}{b1 \cdot b2}\frac{\frac{a1 \cdot a2}{b1}}{b2}double f(double a1, double a2, double b1, double b2) {
double r141891 = a1;
double r141892 = a2;
double r141893 = r141891 * r141892;
double r141894 = b1;
double r141895 = b2;
double r141896 = r141894 * r141895;
double r141897 = r141893 / r141896;
return r141897;
}
double f(double a1, double a2, double b1, double b2) {
double r141898 = a1;
double r141899 = a2;
double r141900 = r141898 * r141899;
double r141901 = b1;
double r141902 = r141900 / r141901;
double r141903 = b2;
double r141904 = r141902 / r141903;
return r141904;
}




Bits error versus a1




Bits error versus a2




Bits error versus b1




Bits error versus b2
Results
| Original | 10.8 |
|---|---|
| Target | 11.7 |
| Herbie | 11.0 |
if (* a1 a2) < -3.6160475663182616e+189 or 3.0277503863756097e+132 < (* a1 a2) Initial program 27.7
rmApplied associate-/r*27.6
rmApplied *-un-lft-identity27.6
Applied times-frac16.9
Applied associate-/l*11.0
if -3.6160475663182616e+189 < (* a1 a2) < -4.586910408345106e-202Initial program 4.1
rmApplied associate-/r*4.5
rmApplied *-un-lft-identity4.5
if -4.586910408345106e-202 < (* a1 a2) < 1.6268561300982777e-203Initial program 14.5
rmApplied associate-/r*14.7
rmApplied add-cube-cbrt14.9
Applied times-frac7.5
Applied associate-/l*3.7
if 1.6268561300982777e-203 < (* a1 a2) < 3.0277503863756097e+132Initial program 3.8
rmApplied associate-/r*3.7
rmApplied *-un-lft-identity3.7
Applied div-inv3.8
Applied times-frac4.1
Simplified4.1
Final simplification11.0
herbie shell --seed 2019298
(FPCore (a1 a2 b1 b2)
:name "Quotient of products"
:precision binary64
:herbie-target
(* (/ a1 b1) (/ a2 b2))
(/ (* a1 a2) (* b1 b2)))