\frac{a1 \cdot a2}{b1 \cdot b2}\begin{array}{l}
\mathbf{if}\;a1 \cdot a2 \le -8.166761891516301 \cdot 10^{+211}:\\
\;\;\;\;a1 \cdot \frac{\frac{a2}{b1}}{b2}\\
\mathbf{elif}\;a1 \cdot a2 \le -1.9012909414021198 \cdot 10^{-246}:\\
\;\;\;\;\frac{a1 \cdot a2}{\sqrt[3]{b2} \cdot \sqrt[3]{b2}} \cdot \frac{\frac{1}{b1}}{\sqrt[3]{b2}}\\
\mathbf{elif}\;a1 \cdot a2 \le 2.0454448799638273 \cdot 10^{-197}:\\
\;\;\;\;a1 \cdot \frac{\frac{a2}{b1}}{b2}\\
\mathbf{elif}\;a1 \cdot a2 \le 4.068274320797992 \cdot 10^{+202}:\\
\;\;\;\;\frac{a1 \cdot a2}{\sqrt[3]{b2} \cdot \sqrt[3]{b2}} \cdot \frac{\frac{1}{b1}}{\sqrt[3]{b2}}\\
\mathbf{else}:\\
\;\;\;\;a1 \cdot \frac{\frac{a2}{b1}}{b2}\\
\end{array}double f(double a1, double a2, double b1, double b2) {
double r24558277 = a1;
double r24558278 = a2;
double r24558279 = r24558277 * r24558278;
double r24558280 = b1;
double r24558281 = b2;
double r24558282 = r24558280 * r24558281;
double r24558283 = r24558279 / r24558282;
return r24558283;
}
double f(double a1, double a2, double b1, double b2) {
double r24558284 = a1;
double r24558285 = a2;
double r24558286 = r24558284 * r24558285;
double r24558287 = -8.166761891516301e+211;
bool r24558288 = r24558286 <= r24558287;
double r24558289 = b1;
double r24558290 = r24558285 / r24558289;
double r24558291 = b2;
double r24558292 = r24558290 / r24558291;
double r24558293 = r24558284 * r24558292;
double r24558294 = -1.9012909414021198e-246;
bool r24558295 = r24558286 <= r24558294;
double r24558296 = cbrt(r24558291);
double r24558297 = r24558296 * r24558296;
double r24558298 = r24558286 / r24558297;
double r24558299 = 1.0;
double r24558300 = r24558299 / r24558289;
double r24558301 = r24558300 / r24558296;
double r24558302 = r24558298 * r24558301;
double r24558303 = 2.0454448799638273e-197;
bool r24558304 = r24558286 <= r24558303;
double r24558305 = 4.068274320797992e+202;
bool r24558306 = r24558286 <= r24558305;
double r24558307 = r24558306 ? r24558302 : r24558293;
double r24558308 = r24558304 ? r24558293 : r24558307;
double r24558309 = r24558295 ? r24558302 : r24558308;
double r24558310 = r24558288 ? r24558293 : r24558309;
return r24558310;
}




Bits error versus a1




Bits error versus a2




Bits error versus b1




Bits error versus b2
Results
| Original | 10.6 |
|---|---|
| Target | 10.6 |
| Herbie | 3.9 |
if (* a1 a2) < -8.166761891516301e+211 or -1.9012909414021198e-246 < (* a1 a2) < 2.0454448799638273e-197 or 4.068274320797992e+202 < (* a1 a2) Initial program 20.7
rmApplied associate-/r*20.7
rmApplied *-un-lft-identity20.7
Applied associate-/l*20.8
rmApplied *-un-lft-identity20.8
Applied times-frac11.0
Applied *-un-lft-identity11.0
Applied times-frac6.4
Applied add-sqr-sqrt6.4
Applied times-frac6.3
Simplified6.2
Simplified6.1
if -8.166761891516301e+211 < (* a1 a2) < -1.9012909414021198e-246 or 2.0454448799638273e-197 < (* a1 a2) < 4.068274320797992e+202Initial program 4.6
rmApplied associate-/r*4.3
rmApplied add-cube-cbrt5.1
Applied div-inv5.1
Applied times-frac2.6
Final simplification3.9
herbie shell --seed 2019107 +o rules:numerics
(FPCore (a1 a2 b1 b2)
:name "Quotient of products"
:herbie-target
(* (/ a1 b1) (/ a2 b2))
(/ (* a1 a2) (* b1 b2)))