\frac{a1 \cdot a2}{b1 \cdot b2}\begin{array}{l}
\mathbf{if}\;a1 \cdot a2 \le -6.67328305695128662 \cdot 10^{298}:\\
\;\;\;\;\frac{a1}{\frac{b1 \cdot b2}{a2}}\\
\mathbf{elif}\;a1 \cdot a2 \le -9.9624359391974792 \cdot 10^{-63}:\\
\;\;\;\;\frac{\left(a1 \cdot a2\right) \cdot \frac{1}{b1}}{b2}\\
\mathbf{elif}\;a1 \cdot a2 \le 6.4125112865997151 \cdot 10^{-110}:\\
\;\;\;\;\frac{a1}{b1} \cdot \frac{a2}{b2}\\
\mathbf{elif}\;a1 \cdot a2 \le 9.89298998926045652 \cdot 10^{206}:\\
\;\;\;\;\frac{\left(a1 \cdot a2\right) \cdot \frac{1}{b1}}{b2}\\
\mathbf{else}:\\
\;\;\;\;a1 \cdot \frac{\frac{a2}{b2}}{b1}\\
\end{array}double f(double a1, double a2, double b1, double b2) {
double r227438 = a1;
double r227439 = a2;
double r227440 = r227438 * r227439;
double r227441 = b1;
double r227442 = b2;
double r227443 = r227441 * r227442;
double r227444 = r227440 / r227443;
return r227444;
}
double f(double a1, double a2, double b1, double b2) {
double r227445 = a1;
double r227446 = a2;
double r227447 = r227445 * r227446;
double r227448 = -6.673283056951287e+298;
bool r227449 = r227447 <= r227448;
double r227450 = b1;
double r227451 = b2;
double r227452 = r227450 * r227451;
double r227453 = r227452 / r227446;
double r227454 = r227445 / r227453;
double r227455 = -9.96243593919748e-63;
bool r227456 = r227447 <= r227455;
double r227457 = 1.0;
double r227458 = r227457 / r227450;
double r227459 = r227447 * r227458;
double r227460 = r227459 / r227451;
double r227461 = 6.412511286599715e-110;
bool r227462 = r227447 <= r227461;
double r227463 = r227445 / r227450;
double r227464 = r227446 / r227451;
double r227465 = r227463 * r227464;
double r227466 = 9.892989989260457e+206;
bool r227467 = r227447 <= r227466;
double r227468 = r227464 / r227450;
double r227469 = r227445 * r227468;
double r227470 = r227467 ? r227460 : r227469;
double r227471 = r227462 ? r227465 : r227470;
double r227472 = r227456 ? r227460 : r227471;
double r227473 = r227449 ? r227454 : r227472;
return r227473;
}




Bits error versus a1




Bits error versus a2




Bits error versus b1




Bits error versus b2
Results
| Original | 11.1 |
|---|---|
| Target | 11.5 |
| Herbie | 6.7 |
if (* a1 a2) < -6.673283056951287e+298Initial program 60.1
rmApplied associate-/l*22.5
if -6.673283056951287e+298 < (* a1 a2) < -9.96243593919748e-63 or 6.412511286599715e-110 < (* a1 a2) < 9.892989989260457e+206Initial program 4.9
rmApplied associate-/r*4.4
rmApplied div-inv4.5
if -9.96243593919748e-63 < (* a1 a2) < 6.412511286599715e-110Initial program 11.3
rmApplied times-frac7.6
if 9.892989989260457e+206 < (* a1 a2) Initial program 31.4
rmApplied times-frac11.7
rmApplied div-inv11.8
Applied associate-*l*8.8
Simplified8.7
Final simplification6.7
herbie shell --seed 2020035
(FPCore (a1 a2 b1 b2)
:name "Quotient of products"
:precision binary64
:herbie-target
(* (/ a1 b1) (/ a2 b2))
(/ (* a1 a2) (* b1 b2)))