\frac{a1 \cdot a2}{b1 \cdot b2}\begin{array}{l}
\mathbf{if}\;a1 \cdot a2 \le -8.86452261856546459 \cdot 10^{62}:\\
\;\;\;\;a1 \cdot \frac{a2}{b1 \cdot b2}\\
\mathbf{elif}\;a1 \cdot a2 \le -1.4672356117320064 \cdot 10^{-254}:\\
\;\;\;\;\frac{1}{\frac{b1}{\frac{a1 \cdot a2}{b2}}}\\
\mathbf{elif}\;a1 \cdot a2 \le 6.0955568267489453 \cdot 10^{-107}:\\
\;\;\;\;a1 \cdot \frac{a2}{b1 \cdot b2}\\
\mathbf{elif}\;a1 \cdot a2 \le 3.3074354815251371 \cdot 10^{202}:\\
\;\;\;\;\frac{1}{\frac{b1}{\frac{a1 \cdot a2}{b2}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{a1}{b1 \cdot \frac{b2}{a2}}\\
\end{array}double f(double a1, double a2, double b1, double b2) {
double r147818 = a1;
double r147819 = a2;
double r147820 = r147818 * r147819;
double r147821 = b1;
double r147822 = b2;
double r147823 = r147821 * r147822;
double r147824 = r147820 / r147823;
return r147824;
}
double f(double a1, double a2, double b1, double b2) {
double r147825 = a1;
double r147826 = a2;
double r147827 = r147825 * r147826;
double r147828 = -8.864522618565465e+62;
bool r147829 = r147827 <= r147828;
double r147830 = b1;
double r147831 = b2;
double r147832 = r147830 * r147831;
double r147833 = r147826 / r147832;
double r147834 = r147825 * r147833;
double r147835 = -1.4672356117320064e-254;
bool r147836 = r147827 <= r147835;
double r147837 = 1.0;
double r147838 = r147827 / r147831;
double r147839 = r147830 / r147838;
double r147840 = r147837 / r147839;
double r147841 = 6.095556826748945e-107;
bool r147842 = r147827 <= r147841;
double r147843 = 3.307435481525137e+202;
bool r147844 = r147827 <= r147843;
double r147845 = r147831 / r147826;
double r147846 = r147830 * r147845;
double r147847 = r147825 / r147846;
double r147848 = r147844 ? r147840 : r147847;
double r147849 = r147842 ? r147834 : r147848;
double r147850 = r147836 ? r147840 : r147849;
double r147851 = r147829 ? r147834 : r147850;
return r147851;
}




Bits error versus a1




Bits error versus a2




Bits error versus b1




Bits error versus b2
Results
| Original | 11.1 |
|---|---|
| Target | 11.7 |
| Herbie | 7.3 |
if (* a1 a2) < -8.864522618565465e+62 or -1.4672356117320064e-254 < (* a1 a2) < 6.095556826748945e-107Initial program 14.8
rmApplied associate-/l*9.9
rmApplied div-inv10.1
Simplified9.9
if -8.864522618565465e+62 < (* a1 a2) < -1.4672356117320064e-254 or 6.095556826748945e-107 < (* a1 a2) < 3.307435481525137e+202Initial program 4.2
rmApplied clear-num4.5
rmApplied associate-/l*4.4
if 3.307435481525137e+202 < (* a1 a2) Initial program 34.1
rmApplied associate-/l*17.7
rmApplied *-un-lft-identity17.7
Applied times-frac10.1
Simplified10.1
Final simplification7.3
herbie shell --seed 2020003
(FPCore (a1 a2 b1 b2)
:name "Quotient of products"
:precision binary64
:herbie-target
(* (/ a1 b1) (/ a2 b2))
(/ (* a1 a2) (* b1 b2)))