\frac{a1 \cdot a2}{b1 \cdot b2}\begin{array}{l}
\mathbf{if}\;b2 \cdot b1 \le -1.01617180932453511492908011356128864722 \cdot 10^{164}:\\
\;\;\;\;\frac{1}{\frac{\frac{b2}{a1}}{a2} \cdot b1}\\
\mathbf{elif}\;b2 \cdot b1 \le -1.24741513213610445062245200240454350713 \cdot 10^{-196}:\\
\;\;\;\;\frac{a1}{\frac{b2 \cdot b1}{a2}}\\
\mathbf{elif}\;b2 \cdot b1 \le 1.089678327652974985488432713888714628032 \cdot 10^{-177}:\\
\;\;\;\;\frac{1}{\frac{\frac{b1}{a1}}{a2} \cdot b2}\\
\mathbf{elif}\;b2 \cdot b1 \le 9.601719431289735048499440223645585873733 \cdot 10^{203}:\\
\;\;\;\;\frac{a1}{\frac{b2 \cdot b1}{a2}}\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{\frac{\frac{b2}{a1}}{a2} \cdot b1}\\
\end{array}double f(double a1, double a2, double b1, double b2) {
double r6474222 = a1;
double r6474223 = a2;
double r6474224 = r6474222 * r6474223;
double r6474225 = b1;
double r6474226 = b2;
double r6474227 = r6474225 * r6474226;
double r6474228 = r6474224 / r6474227;
return r6474228;
}
double f(double a1, double a2, double b1, double b2) {
double r6474229 = b2;
double r6474230 = b1;
double r6474231 = r6474229 * r6474230;
double r6474232 = -1.0161718093245351e+164;
bool r6474233 = r6474231 <= r6474232;
double r6474234 = 1.0;
double r6474235 = a1;
double r6474236 = r6474229 / r6474235;
double r6474237 = a2;
double r6474238 = r6474236 / r6474237;
double r6474239 = r6474238 * r6474230;
double r6474240 = r6474234 / r6474239;
double r6474241 = -1.2474151321361045e-196;
bool r6474242 = r6474231 <= r6474241;
double r6474243 = r6474231 / r6474237;
double r6474244 = r6474235 / r6474243;
double r6474245 = 1.089678327652975e-177;
bool r6474246 = r6474231 <= r6474245;
double r6474247 = r6474230 / r6474235;
double r6474248 = r6474247 / r6474237;
double r6474249 = r6474248 * r6474229;
double r6474250 = r6474234 / r6474249;
double r6474251 = 9.601719431289735e+203;
bool r6474252 = r6474231 <= r6474251;
double r6474253 = r6474252 ? r6474244 : r6474240;
double r6474254 = r6474246 ? r6474250 : r6474253;
double r6474255 = r6474242 ? r6474244 : r6474254;
double r6474256 = r6474233 ? r6474240 : r6474255;
return r6474256;
}




Bits error versus a1




Bits error versus a2




Bits error versus b1




Bits error versus b2
Results
| Original | 11.2 |
|---|---|
| Target | 11.3 |
| Herbie | 5.2 |
if (* b1 b2) < -1.0161718093245351e+164 or 9.601719431289735e+203 < (* b1 b2) Initial program 15.2
rmApplied associate-/r*8.7
rmApplied clear-num8.8
rmApplied *-un-lft-identity8.8
Applied *-un-lft-identity8.8
Applied times-frac8.8
Applied associate-/l*9.3
Simplified6.4
rmApplied *-un-lft-identity6.4
Applied div-inv6.4
Applied times-frac8.9
Applied associate-*l*8.6
Simplified5.4
if -1.0161718093245351e+164 < (* b1 b2) < -1.2474151321361045e-196 or 1.089678327652975e-177 < (* b1 b2) < 9.601719431289735e+203Initial program 4.3
rmApplied associate-/l*3.6
if -1.2474151321361045e-196 < (* b1 b2) < 1.089678327652975e-177Initial program 29.3
rmApplied associate-/r*14.6
rmApplied clear-num14.8
rmApplied *-un-lft-identity14.8
Applied *-un-lft-identity14.8
Applied times-frac14.8
Applied associate-/l*14.8
Simplified10.9
Final simplification5.2
herbie shell --seed 2019168
(FPCore (a1 a2 b1 b2)
:name "Quotient of products"
:herbie-target
(* (/ a1 b1) (/ a2 b2))
(/ (* a1 a2) (* b1 b2)))