\frac{a1 \cdot a2}{b1 \cdot b2}\begin{array}{l}
\mathbf{if}\;b1 \cdot b2 \le -9.428960705880200876258961640243637000071 \cdot 10^{126}:\\
\;\;\;\;\left(\frac{\frac{\frac{\sqrt[3]{a1}}{\sqrt[3]{b1}}}{\sqrt[3]{b2}}}{\sqrt[3]{b2}} \cdot \frac{a2}{\sqrt[3]{b2}}\right) \cdot \frac{\sqrt[3]{a1} \cdot \sqrt[3]{a1}}{\sqrt[3]{b1} \cdot \sqrt[3]{b1}}\\
\mathbf{elif}\;b1 \cdot b2 \le -2.337318175673325191697464939403041140096 \cdot 10^{-34}:\\
\;\;\;\;\frac{1}{\frac{b1 \cdot b2}{a1 \cdot a2}}\\
\mathbf{elif}\;b1 \cdot b2 \le 2.661278386110765337328613993419610157189 \cdot 10^{-140}:\\
\;\;\;\;\left(\frac{\frac{\frac{\sqrt[3]{a1}}{\sqrt[3]{b1}}}{\sqrt[3]{b2}}}{\sqrt[3]{b2}} \cdot \frac{a2}{\sqrt[3]{b2}}\right) \cdot \frac{\sqrt[3]{a1} \cdot \sqrt[3]{a1}}{\sqrt[3]{b1} \cdot \sqrt[3]{b1}}\\
\mathbf{elif}\;b1 \cdot b2 \le 2.596371441371215395153086343174960900167 \cdot 10^{-45}:\\
\;\;\;\;\frac{1}{\frac{b1 \cdot b2}{a1 \cdot a2}}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{\frac{\frac{\sqrt[3]{a1}}{\sqrt[3]{b1}}}{\sqrt[3]{b2}}}{\sqrt[3]{b2}} \cdot \frac{a2}{\sqrt[3]{b2}}\right) \cdot \frac{\sqrt[3]{a1} \cdot \sqrt[3]{a1}}{\sqrt[3]{b1} \cdot \sqrt[3]{b1}}\\
\end{array}double f(double a1, double a2, double b1, double b2) {
double r6392962 = a1;
double r6392963 = a2;
double r6392964 = r6392962 * r6392963;
double r6392965 = b1;
double r6392966 = b2;
double r6392967 = r6392965 * r6392966;
double r6392968 = r6392964 / r6392967;
return r6392968;
}
double f(double a1, double a2, double b1, double b2) {
double r6392969 = b1;
double r6392970 = b2;
double r6392971 = r6392969 * r6392970;
double r6392972 = -9.428960705880201e+126;
bool r6392973 = r6392971 <= r6392972;
double r6392974 = a1;
double r6392975 = cbrt(r6392974);
double r6392976 = cbrt(r6392969);
double r6392977 = r6392975 / r6392976;
double r6392978 = cbrt(r6392970);
double r6392979 = r6392977 / r6392978;
double r6392980 = r6392979 / r6392978;
double r6392981 = a2;
double r6392982 = r6392981 / r6392978;
double r6392983 = r6392980 * r6392982;
double r6392984 = r6392975 * r6392975;
double r6392985 = r6392976 * r6392976;
double r6392986 = r6392984 / r6392985;
double r6392987 = r6392983 * r6392986;
double r6392988 = -2.337318175673325e-34;
bool r6392989 = r6392971 <= r6392988;
double r6392990 = 1.0;
double r6392991 = r6392974 * r6392981;
double r6392992 = r6392971 / r6392991;
double r6392993 = r6392990 / r6392992;
double r6392994 = 2.6612783861107653e-140;
bool r6392995 = r6392971 <= r6392994;
double r6392996 = 2.5963714413712154e-45;
bool r6392997 = r6392971 <= r6392996;
double r6392998 = r6392997 ? r6392993 : r6392987;
double r6392999 = r6392995 ? r6392987 : r6392998;
double r6393000 = r6392989 ? r6392993 : r6392999;
double r6393001 = r6392973 ? r6392987 : r6393000;
return r6393001;
}




Bits error versus a1




Bits error versus a2




Bits error versus b1




Bits error versus b2
Results
| Original | 11.1 |
|---|---|
| Target | 11.2 |
| Herbie | 4.7 |
if (* b1 b2) < -9.428960705880201e+126 or -2.337318175673325e-34 < (* b1 b2) < 2.6612783861107653e-140 or 2.5963714413712154e-45 < (* b1 b2) Initial program 13.0
rmApplied times-frac9.8
rmApplied add-cube-cbrt10.4
Applied *-un-lft-identity10.4
Applied times-frac10.4
Applied associate-*r*9.6
Simplified9.6
rmApplied *-un-lft-identity9.6
Applied *-un-lft-identity9.6
Applied add-cube-cbrt9.8
Applied add-cube-cbrt9.9
Applied times-frac9.9
Applied times-frac8.5
Applied times-frac7.8
Applied associate-*l*5.0
if -9.428960705880201e+126 < (* b1 b2) < -2.337318175673325e-34 or 2.6612783861107653e-140 < (* b1 b2) < 2.5963714413712154e-45Initial program 3.3
rmApplied clear-num3.5
Final simplification4.7
herbie shell --seed 2019170
(FPCore (a1 a2 b1 b2)
:name "Quotient of products"
:herbie-target
(* (/ a1 b1) (/ a2 b2))
(/ (* a1 a2) (* b1 b2)))