\frac{a1 \cdot a2}{b1 \cdot b2}\begin{array}{l}
\mathbf{if}\;b1 \cdot b2 \le -6.898490520999014 \cdot 10^{+277}:\\
\;\;\;\;\frac{\frac{1}{b1}}{\frac{\frac{1}{a2}}{\frac{a1}{b2}}}\\
\mathbf{elif}\;b1 \cdot b2 \le -9.006559789728174 \cdot 10^{-250}:\\
\;\;\;\;a1 \cdot \frac{a2}{b1 \cdot b2}\\
\mathbf{elif}\;b1 \cdot b2 \le 1.30715975193335 \cdot 10^{-196}:\\
\;\;\;\;\frac{\frac{a1}{b1}}{\frac{b2}{a2}}\\
\mathbf{elif}\;b1 \cdot b2 \le 7.676958632971629 \cdot 10^{+257}:\\
\;\;\;\;\frac{\frac{a1}{b1 \cdot b2}}{\frac{1}{a2}}\\
\mathbf{else}:\\
\;\;\;\;\frac{a1}{\frac{b2}{\sqrt[3]{a2}}} \cdot \frac{1}{\frac{b1}{\sqrt[3]{a2} \cdot \sqrt[3]{a2}}}\\
\end{array}double f(double a1, double a2, double b1, double b2) {
double r2861061 = a1;
double r2861062 = a2;
double r2861063 = r2861061 * r2861062;
double r2861064 = b1;
double r2861065 = b2;
double r2861066 = r2861064 * r2861065;
double r2861067 = r2861063 / r2861066;
return r2861067;
}
double f(double a1, double a2, double b1, double b2) {
double r2861068 = b1;
double r2861069 = b2;
double r2861070 = r2861068 * r2861069;
double r2861071 = -6.898490520999014e+277;
bool r2861072 = r2861070 <= r2861071;
double r2861073 = 1.0;
double r2861074 = r2861073 / r2861068;
double r2861075 = a2;
double r2861076 = r2861073 / r2861075;
double r2861077 = a1;
double r2861078 = r2861077 / r2861069;
double r2861079 = r2861076 / r2861078;
double r2861080 = r2861074 / r2861079;
double r2861081 = -9.006559789728174e-250;
bool r2861082 = r2861070 <= r2861081;
double r2861083 = r2861075 / r2861070;
double r2861084 = r2861077 * r2861083;
double r2861085 = 1.30715975193335e-196;
bool r2861086 = r2861070 <= r2861085;
double r2861087 = r2861077 / r2861068;
double r2861088 = r2861069 / r2861075;
double r2861089 = r2861087 / r2861088;
double r2861090 = 7.676958632971629e+257;
bool r2861091 = r2861070 <= r2861090;
double r2861092 = r2861077 / r2861070;
double r2861093 = r2861092 / r2861076;
double r2861094 = cbrt(r2861075);
double r2861095 = r2861069 / r2861094;
double r2861096 = r2861077 / r2861095;
double r2861097 = r2861094 * r2861094;
double r2861098 = r2861068 / r2861097;
double r2861099 = r2861073 / r2861098;
double r2861100 = r2861096 * r2861099;
double r2861101 = r2861091 ? r2861093 : r2861100;
double r2861102 = r2861086 ? r2861089 : r2861101;
double r2861103 = r2861082 ? r2861084 : r2861102;
double r2861104 = r2861072 ? r2861080 : r2861103;
return r2861104;
}




Bits error versus a1




Bits error versus a2




Bits error versus b1




Bits error versus b2
Results
| Original | 11.4 |
|---|---|
| Target | 11.0 |
| Herbie | 4.9 |
if (* b1 b2) < -6.898490520999014e+277Initial program 20.9
rmApplied associate-/l*20.8
rmApplied div-inv20.8
Applied associate-/r*20.9
rmApplied *-un-lft-identity20.9
Applied times-frac7.2
Applied associate-/l*2.4
if -6.898490520999014e+277 < (* b1 b2) < -9.006559789728174e-250Initial program 5.0
rmApplied associate-/l*5.2
rmApplied div-inv5.2
Applied associate-/r*4.9
rmApplied *-un-lft-identity4.9
Applied add-cube-cbrt4.9
Applied times-frac4.9
Applied div-inv4.9
Applied times-frac5.3
Simplified5.3
Simplified5.2
if -9.006559789728174e-250 < (* b1 b2) < 1.30715975193335e-196Initial program 35.6
rmApplied associate-/l*35.7
rmApplied *-un-lft-identity35.7
Applied times-frac17.2
Applied associate-/r*10.0
Simplified10.0
if 1.30715975193335e-196 < (* b1 b2) < 7.676958632971629e+257Initial program 5.0
rmApplied associate-/l*4.7
rmApplied div-inv4.7
Applied associate-/r*4.3
if 7.676958632971629e+257 < (* b1 b2) Initial program 18.3
rmApplied associate-/l*18.4
rmApplied add-cube-cbrt18.5
Applied times-frac7.9
Applied *-un-lft-identity7.9
Applied times-frac2.4
Final simplification4.9
herbie shell --seed 2019153
(FPCore (a1 a2 b1 b2)
:name "Quotient of products"
:herbie-target
(* (/ a1 b1) (/ a2 b2))
(/ (* a1 a2) (* b1 b2)))