\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 r24582463 = a1;
double r24582464 = a2;
double r24582465 = r24582463 * r24582464;
double r24582466 = b1;
double r24582467 = b2;
double r24582468 = r24582466 * r24582467;
double r24582469 = r24582465 / r24582468;
return r24582469;
}
double f(double a1, double a2, double b1, double b2) {
double r24582470 = a1;
double r24582471 = a2;
double r24582472 = r24582470 * r24582471;
double r24582473 = -8.166761891516301e+211;
bool r24582474 = r24582472 <= r24582473;
double r24582475 = b1;
double r24582476 = r24582471 / r24582475;
double r24582477 = b2;
double r24582478 = r24582476 / r24582477;
double r24582479 = r24582470 * r24582478;
double r24582480 = -1.9012909414021198e-246;
bool r24582481 = r24582472 <= r24582480;
double r24582482 = cbrt(r24582477);
double r24582483 = r24582482 * r24582482;
double r24582484 = r24582472 / r24582483;
double r24582485 = 1.0;
double r24582486 = r24582485 / r24582475;
double r24582487 = r24582486 / r24582482;
double r24582488 = r24582484 * r24582487;
double r24582489 = 2.0454448799638273e-197;
bool r24582490 = r24582472 <= r24582489;
double r24582491 = 4.068274320797992e+202;
bool r24582492 = r24582472 <= r24582491;
double r24582493 = r24582492 ? r24582488 : r24582479;
double r24582494 = r24582490 ? r24582479 : r24582493;
double r24582495 = r24582481 ? r24582488 : r24582494;
double r24582496 = r24582474 ? r24582479 : r24582495;
return r24582496;
}




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 *-un-lft-identity20.7
Applied times-frac10.7
Applied times-frac6.1
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
(FPCore (a1 a2 b1 b2)
:name "Quotient of products"
:herbie-target
(* (/ a1 b1) (/ a2 b2))
(/ (* a1 a2) (* b1 b2)))