\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 r90161 = a1;
double r90162 = a2;
double r90163 = r90161 * r90162;
double r90164 = b1;
double r90165 = b2;
double r90166 = r90164 * r90165;
double r90167 = r90163 / r90166;
return r90167;
}
double f(double a1, double a2, double b1, double b2) {
double r90168 = a1;
double r90169 = a2;
double r90170 = r90168 * r90169;
double r90171 = b1;
double r90172 = b2;
double r90173 = r90171 * r90172;
double r90174 = r90170 / r90173;
return r90174;
}




Bits error versus a1




Bits error versus a2




Bits error versus b1




Bits error versus b2
Results
| Original | 11.1 |
|---|---|
| Target | 11.3 |
| Herbie | 11.1 |
if (/ (* a1 a2) (* b1 b2)) < -inf.0 or -8.150496738080393e-304 < (/ (* a1 a2) (* b1 b2)) < 0.0 or 1.1733062016682887e+275 < (/ (* a1 a2) (* b1 b2)) Initial program 31.0
rmApplied times-frac5.5
if -inf.0 < (/ (* a1 a2) (* b1 b2)) < -8.150496738080393e-304 or 0.0 < (/ (* a1 a2) (* b1 b2)) < 1.1733062016682887e+275Initial program 3.5
Final simplification11.1
herbie shell --seed 2019304
(FPCore (a1 a2 b1 b2)
:name "Quotient of products"
:precision binary64
:herbie-target
(* (/ a1 b1) (/ a2 b2))
(/ (* a1 a2) (* b1 b2)))