\frac{a1 \cdot a2}{b1 \cdot b2}\begin{array}{l}
\mathbf{if}\;\frac{a1 \cdot a2}{b1 \cdot b2} = -\infty:\\
\;\;\;\;\frac{\sqrt[3]{a1} \cdot \sqrt[3]{a1}}{b2} \cdot \frac{\sqrt[3]{a1}}{\frac{b1}{a2}}\\
\mathbf{elif}\;\frac{a1 \cdot a2}{b1 \cdot b2} \le -5.6076803324010859 \cdot 10^{-289}:\\
\;\;\;\;\frac{1}{\frac{b1 \cdot b2}{a1 \cdot a2}}\\
\mathbf{elif}\;\frac{a1 \cdot a2}{b1 \cdot b2} \le 0.0:\\
\;\;\;\;\frac{a1}{b1} \cdot \frac{a2}{b2}\\
\mathbf{elif}\;\frac{a1 \cdot a2}{b1 \cdot b2} \le 1.9543767746540478 \cdot 10^{306}:\\
\;\;\;\;\frac{1}{\frac{b1 \cdot b2}{a1 \cdot a2}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt[3]{a1} \cdot \sqrt[3]{a1}}{b2} \cdot \frac{\sqrt[3]{a1}}{\frac{b1}{a2}}\\
\end{array}double f(double a1, double a2, double b1, double b2) {
double r211964 = a1;
double r211965 = a2;
double r211966 = r211964 * r211965;
double r211967 = b1;
double r211968 = b2;
double r211969 = r211967 * r211968;
double r211970 = r211966 / r211969;
return r211970;
}
double f(double a1, double a2, double b1, double b2) {
double r211971 = a1;
double r211972 = a2;
double r211973 = r211971 * r211972;
double r211974 = b1;
double r211975 = b2;
double r211976 = r211974 * r211975;
double r211977 = r211973 / r211976;
double r211978 = -inf.0;
bool r211979 = r211977 <= r211978;
double r211980 = cbrt(r211971);
double r211981 = r211980 * r211980;
double r211982 = r211981 / r211975;
double r211983 = r211974 / r211972;
double r211984 = r211980 / r211983;
double r211985 = r211982 * r211984;
double r211986 = -5.607680332401086e-289;
bool r211987 = r211977 <= r211986;
double r211988 = 1.0;
double r211989 = r211976 / r211973;
double r211990 = r211988 / r211989;
double r211991 = 0.0;
bool r211992 = r211977 <= r211991;
double r211993 = r211971 / r211974;
double r211994 = r211972 / r211975;
double r211995 = r211993 * r211994;
double r211996 = 1.9543767746540478e+306;
bool r211997 = r211977 <= r211996;
double r211998 = r211997 ? r211990 : r211985;
double r211999 = r211992 ? r211995 : r211998;
double r212000 = r211987 ? r211990 : r211999;
double r212001 = r211979 ? r211985 : r212000;
return r212001;
}




Bits error versus a1




Bits error versus a2




Bits error versus b1




Bits error versus b2
Results
| Original | 11.7 |
|---|---|
| Target | 10.7 |
| Herbie | 2.3 |
if (/ (* a1 a2) (* b1 b2)) < -inf.0 or 1.9543767746540478e+306 < (/ (* a1 a2) (* b1 b2)) Initial program 63.5
rmApplied associate-/l*42.5
Simplified13.8
rmApplied add-cube-cbrt14.7
Applied times-frac7.4
if -inf.0 < (/ (* a1 a2) (* b1 b2)) < -5.607680332401086e-289 or 0.0 < (/ (* a1 a2) (* b1 b2)) < 1.9543767746540478e+306Initial program 0.9
rmApplied clear-num1.2
if -5.607680332401086e-289 < (/ (* a1 a2) (* b1 b2)) < 0.0Initial program 13.5
rmApplied times-frac2.6
Final simplification2.3
herbie shell --seed 2020047
(FPCore (a1 a2 b1 b2)
:name "Quotient of products"
:precision binary64
:herbie-target
(* (/ a1 b1) (/ a2 b2))
(/ (* a1 a2) (* b1 b2)))