\frac{a1 \cdot a2}{b1 \cdot b2}\begin{array}{l}
\mathbf{if}\;b1 \cdot b2 \le -3.414369515820831570610704236356476842558 \cdot 10^{292} \lor \neg \left(b1 \cdot b2 \le -8.920570285255288003225140490033096723389 \cdot 10^{-272} \lor \neg \left(b1 \cdot b2 \le 5.989507253638667303240435404300402458215 \cdot 10^{-222}\right) \land b1 \cdot b2 \le 2.895501126392921286080507373965703281239 \cdot 10^{177}\right):\\
\;\;\;\;\frac{\frac{a1}{\frac{b1}{\sqrt[3]{a2} \cdot \sqrt[3]{a2}}}}{\frac{b2}{\sqrt[3]{a2}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{a1}{\frac{b1 \cdot b2}{a2}}\\
\end{array}double f(double a1, double a2, double b1, double b2) {
double r71066 = a1;
double r71067 = a2;
double r71068 = r71066 * r71067;
double r71069 = b1;
double r71070 = b2;
double r71071 = r71069 * r71070;
double r71072 = r71068 / r71071;
return r71072;
}
double f(double a1, double a2, double b1, double b2) {
double r71073 = b1;
double r71074 = b2;
double r71075 = r71073 * r71074;
double r71076 = -3.4143695158208316e+292;
bool r71077 = r71075 <= r71076;
double r71078 = -8.920570285255288e-272;
bool r71079 = r71075 <= r71078;
double r71080 = 5.989507253638667e-222;
bool r71081 = r71075 <= r71080;
double r71082 = !r71081;
double r71083 = 2.8955011263929213e+177;
bool r71084 = r71075 <= r71083;
bool r71085 = r71082 && r71084;
bool r71086 = r71079 || r71085;
double r71087 = !r71086;
bool r71088 = r71077 || r71087;
double r71089 = a1;
double r71090 = a2;
double r71091 = cbrt(r71090);
double r71092 = r71091 * r71091;
double r71093 = r71073 / r71092;
double r71094 = r71089 / r71093;
double r71095 = r71074 / r71091;
double r71096 = r71094 / r71095;
double r71097 = r71075 / r71090;
double r71098 = r71089 / r71097;
double r71099 = r71088 ? r71096 : r71098;
return r71099;
}




Bits error versus a1




Bits error versus a2




Bits error versus b1




Bits error versus b2
Results
| Original | 11.3 |
|---|---|
| Target | 11.3 |
| Herbie | 5.1 |
if (* b1 b2) < -3.4143695158208316e+292 or -8.920570285255288e-272 < (* b1 b2) < 5.989507253638667e-222 or 2.8955011263929213e+177 < (* b1 b2) Initial program 23.6
rmApplied associate-/l*23.8
rmApplied add-cube-cbrt24.0
Applied times-frac12.2
Applied associate-/r*4.7
if -3.4143695158208316e+292 < (* b1 b2) < -8.920570285255288e-272 or 5.989507253638667e-222 < (* b1 b2) < 2.8955011263929213e+177Initial program 5.1
rmApplied associate-/l*5.4
Final simplification5.1
herbie shell --seed 2019305
(FPCore (a1 a2 b1 b2)
:name "Quotient of products"
:precision binary64
:herbie-target
(* (/ a1 b1) (/ a2 b2))
(/ (* a1 a2) (* b1 b2)))