\frac{a1 \cdot a2}{b1 \cdot b2}\begin{array}{l}
\mathbf{if}\;a1 \cdot a2 \le -3.994607886164469 \cdot 10^{+285}:\\
\;\;\;\;\frac{a1}{b1} \cdot \frac{a2}{b2}\\
\mathbf{elif}\;a1 \cdot a2 \le -8.15908135962733 \cdot 10^{-136}:\\
\;\;\;\;\frac{1}{\frac{b2 \cdot b1}{a1 \cdot a2}}\\
\mathbf{elif}\;a1 \cdot a2 \le -1.189043301750101 \cdot 10^{-232}:\\
\;\;\;\;\frac{\frac{1}{\frac{b1}{a1 \cdot a2}}}{b2}\\
\mathbf{elif}\;a1 \cdot a2 \le 4.98603927195009 \cdot 10^{-194}:\\
\;\;\;\;a1 \cdot \frac{\frac{a2}{b1}}{b2}\\
\mathbf{elif}\;a1 \cdot a2 \le 1.9296454068039114 \cdot 10^{+193}:\\
\;\;\;\;\frac{\frac{1}{\frac{b1}{a1 \cdot a2}}}{b2}\\
\mathbf{else}:\\
\;\;\;\;\frac{a1}{\frac{b2 \cdot b1}{a2}}\\
\end{array}double f(double a1, double a2, double b1, double b2) {
double r6378528 = a1;
double r6378529 = a2;
double r6378530 = r6378528 * r6378529;
double r6378531 = b1;
double r6378532 = b2;
double r6378533 = r6378531 * r6378532;
double r6378534 = r6378530 / r6378533;
return r6378534;
}
double f(double a1, double a2, double b1, double b2) {
double r6378535 = a1;
double r6378536 = a2;
double r6378537 = r6378535 * r6378536;
double r6378538 = -3.994607886164469e+285;
bool r6378539 = r6378537 <= r6378538;
double r6378540 = b1;
double r6378541 = r6378535 / r6378540;
double r6378542 = b2;
double r6378543 = r6378536 / r6378542;
double r6378544 = r6378541 * r6378543;
double r6378545 = -8.15908135962733e-136;
bool r6378546 = r6378537 <= r6378545;
double r6378547 = 1.0;
double r6378548 = r6378542 * r6378540;
double r6378549 = r6378548 / r6378537;
double r6378550 = r6378547 / r6378549;
double r6378551 = -1.189043301750101e-232;
bool r6378552 = r6378537 <= r6378551;
double r6378553 = r6378540 / r6378537;
double r6378554 = r6378547 / r6378553;
double r6378555 = r6378554 / r6378542;
double r6378556 = 4.98603927195009e-194;
bool r6378557 = r6378537 <= r6378556;
double r6378558 = r6378536 / r6378540;
double r6378559 = r6378558 / r6378542;
double r6378560 = r6378535 * r6378559;
double r6378561 = 1.9296454068039114e+193;
bool r6378562 = r6378537 <= r6378561;
double r6378563 = r6378548 / r6378536;
double r6378564 = r6378535 / r6378563;
double r6378565 = r6378562 ? r6378555 : r6378564;
double r6378566 = r6378557 ? r6378560 : r6378565;
double r6378567 = r6378552 ? r6378555 : r6378566;
double r6378568 = r6378546 ? r6378550 : r6378567;
double r6378569 = r6378539 ? r6378544 : r6378568;
return r6378569;
}




Bits error versus a1




Bits error versus a2




Bits error versus b1




Bits error versus b2
Results
| Original | 11.0 |
|---|---|
| Target | 10.8 |
| Herbie | 5.5 |
if (* a1 a2) < -3.994607886164469e+285Initial program 52.8
rmApplied times-frac7.8
if -3.994607886164469e+285 < (* a1 a2) < -8.15908135962733e-136Initial program 4.8
rmApplied clear-num5.0
if -8.15908135962733e-136 < (* a1 a2) < -1.189043301750101e-232 or 4.98603927195009e-194 < (* a1 a2) < 1.9296454068039114e+193Initial program 4.9
rmApplied associate-/r*3.7
rmApplied clear-num4.0
if -1.189043301750101e-232 < (* a1 a2) < 4.98603927195009e-194Initial program 14.6
rmApplied associate-/r*15.2
rmApplied *-un-lft-identity15.2
Applied *-un-lft-identity15.2
Applied times-frac7.9
Applied times-frac4.5
Simplified4.5
if 1.9296454068039114e+193 < (* a1 a2) Initial program 33.2
rmApplied associate-/l*18.1
Final simplification5.5
herbie shell --seed 2019158
(FPCore (a1 a2 b1 b2)
:name "Quotient of products"
:herbie-target
(* (/ a1 b1) (/ a2 b2))
(/ (* a1 a2) (* b1 b2)))