\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 r148653 = a1;
double r148654 = a2;
double r148655 = r148653 * r148654;
double r148656 = b1;
double r148657 = b2;
double r148658 = r148656 * r148657;
double r148659 = r148655 / r148658;
return r148659;
}
double f(double a1, double a2, double b1, double b2) {
double r148660 = a1;
double r148661 = a2;
double r148662 = r148660 * r148661;
double r148663 = -6.673283056951287e+298;
bool r148664 = r148662 <= r148663;
double r148665 = b1;
double r148666 = b2;
double r148667 = r148665 * r148666;
double r148668 = r148667 / r148661;
double r148669 = r148660 / r148668;
double r148670 = -9.96243593919748e-63;
bool r148671 = r148662 <= r148670;
double r148672 = 1.0;
double r148673 = r148672 / r148665;
double r148674 = r148662 * r148673;
double r148675 = r148674 / r148666;
double r148676 = 6.412511286599715e-110;
bool r148677 = r148662 <= r148676;
double r148678 = r148660 / r148665;
double r148679 = r148661 / r148666;
double r148680 = r148678 * r148679;
double r148681 = 9.892989989260457e+206;
bool r148682 = r148662 <= r148681;
double r148683 = r148679 / r148665;
double r148684 = r148660 * r148683;
double r148685 = r148682 ? r148675 : r148684;
double r148686 = r148677 ? r148680 : r148685;
double r148687 = r148671 ? r148675 : r148686;
double r148688 = r148664 ? r148669 : r148687;
return r148688;
}




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 +o rules:numerics
(FPCore (a1 a2 b1 b2)
:name "Quotient of products"
:precision binary64
:herbie-target
(* (/ a1 b1) (/ a2 b2))
(/ (* a1 a2) (* b1 b2)))