\frac{a1 \cdot a2}{b1 \cdot b2}\begin{array}{l}
\mathbf{if}\;a1 \le -7.561022864069795 \cdot 10^{+200}:\\
\;\;\;\;\frac{a2}{b2} \cdot \frac{a1}{b1}\\
\mathbf{elif}\;a1 \le -3.981707805125607 \cdot 10^{-149}:\\
\;\;\;\;\frac{\frac{a1}{\frac{b1}{a2}}}{b2}\\
\mathbf{elif}\;a1 \le -6.112442409088481 \cdot 10^{-246}:\\
\;\;\;\;\frac{1}{b1} \cdot \left(a2 \cdot \frac{a1}{b2}\right)\\
\mathbf{elif}\;a1 \le 1.0068818146049866 \cdot 10^{-272}:\\
\;\;\;\;\frac{\frac{a2 \cdot a1}{b1}}{b2}\\
\mathbf{elif}\;a1 \le 1.5797091395129618 \cdot 10^{-129}:\\
\;\;\;\;\frac{\frac{a2}{b1}}{b2} \cdot a1\\
\mathbf{elif}\;a1 \le 9.94244733053713 \cdot 10^{-64}:\\
\;\;\;\;\frac{1}{b1} \cdot \left(a2 \cdot \frac{a1}{b2}\right)\\
\mathbf{elif}\;a1 \le 1.1607821255854974 \cdot 10^{+39}:\\
\;\;\;\;\frac{\frac{a2 \cdot a1}{b1}}{b2}\\
\mathbf{elif}\;a1 \le 6.918690886706279 \cdot 10^{+198}:\\
\;\;\;\;\frac{1}{b1} \cdot \left(a2 \cdot \frac{a1}{b2}\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{a1}{\frac{b1 \cdot b2}{a2}}\\
\end{array}double f(double a1, double a2, double b1, double b2) {
double r6173642 = a1;
double r6173643 = a2;
double r6173644 = r6173642 * r6173643;
double r6173645 = b1;
double r6173646 = b2;
double r6173647 = r6173645 * r6173646;
double r6173648 = r6173644 / r6173647;
return r6173648;
}
double f(double a1, double a2, double b1, double b2) {
double r6173649 = a1;
double r6173650 = -7.561022864069795e+200;
bool r6173651 = r6173649 <= r6173650;
double r6173652 = a2;
double r6173653 = b2;
double r6173654 = r6173652 / r6173653;
double r6173655 = b1;
double r6173656 = r6173649 / r6173655;
double r6173657 = r6173654 * r6173656;
double r6173658 = -3.981707805125607e-149;
bool r6173659 = r6173649 <= r6173658;
double r6173660 = r6173655 / r6173652;
double r6173661 = r6173649 / r6173660;
double r6173662 = r6173661 / r6173653;
double r6173663 = -6.112442409088481e-246;
bool r6173664 = r6173649 <= r6173663;
double r6173665 = 1.0;
double r6173666 = r6173665 / r6173655;
double r6173667 = r6173649 / r6173653;
double r6173668 = r6173652 * r6173667;
double r6173669 = r6173666 * r6173668;
double r6173670 = 1.0068818146049866e-272;
bool r6173671 = r6173649 <= r6173670;
double r6173672 = r6173652 * r6173649;
double r6173673 = r6173672 / r6173655;
double r6173674 = r6173673 / r6173653;
double r6173675 = 1.5797091395129618e-129;
bool r6173676 = r6173649 <= r6173675;
double r6173677 = r6173652 / r6173655;
double r6173678 = r6173677 / r6173653;
double r6173679 = r6173678 * r6173649;
double r6173680 = 9.94244733053713e-64;
bool r6173681 = r6173649 <= r6173680;
double r6173682 = 1.1607821255854974e+39;
bool r6173683 = r6173649 <= r6173682;
double r6173684 = 6.918690886706279e+198;
bool r6173685 = r6173649 <= r6173684;
double r6173686 = r6173655 * r6173653;
double r6173687 = r6173686 / r6173652;
double r6173688 = r6173649 / r6173687;
double r6173689 = r6173685 ? r6173669 : r6173688;
double r6173690 = r6173683 ? r6173674 : r6173689;
double r6173691 = r6173681 ? r6173669 : r6173690;
double r6173692 = r6173676 ? r6173679 : r6173691;
double r6173693 = r6173671 ? r6173674 : r6173692;
double r6173694 = r6173664 ? r6173669 : r6173693;
double r6173695 = r6173659 ? r6173662 : r6173694;
double r6173696 = r6173651 ? r6173657 : r6173695;
return r6173696;
}




Bits error versus a1




Bits error versus a2




Bits error versus b1




Bits error versus b2
Results
| Original | 11.1 |
|---|---|
| Target | 11.5 |
| Herbie | 11.0 |
if a1 < -7.561022864069795e+200Initial program 17.9
rmApplied times-frac18.9
if -7.561022864069795e+200 < a1 < -3.981707805125607e-149Initial program 9.6
rmApplied associate-/r*9.1
rmApplied clear-num9.4
rmApplied *-un-lft-identity9.4
Applied times-frac9.1
Applied associate-/r*8.8
Simplified8.8
if -3.981707805125607e-149 < a1 < -6.112442409088481e-246 or 1.5797091395129618e-129 < a1 < 9.94244733053713e-64 or 1.1607821255854974e+39 < a1 < 6.918690886706279e+198Initial program 10.4
rmApplied associate-/r*10.8
rmApplied clear-num11.1
rmApplied *-un-lft-identity11.1
Applied div-inv11.3
Applied add-cube-cbrt11.3
Applied times-frac11.1
Applied times-frac10.6
Simplified10.6
Simplified10.9
if -6.112442409088481e-246 < a1 < 1.0068818146049866e-272 or 9.94244733053713e-64 < a1 < 1.1607821255854974e+39Initial program 9.5
rmApplied associate-/r*9.2
Taylor expanded around -inf 9.2
if 1.0068818146049866e-272 < a1 < 1.5797091395129618e-129Initial program 10.4
rmApplied associate-/r*10.0
rmApplied clear-num10.4
rmApplied *-un-lft-identity10.4
Applied *-un-lft-identity10.4
Applied times-frac10.8
Applied *-un-lft-identity10.8
Applied times-frac10.7
Applied times-frac10.7
Simplified10.7
Simplified10.6
if 6.918690886706279e+198 < a1 Initial program 19.5
rmApplied associate-/l*19.7
Final simplification11.0
herbie shell --seed 2019142
(FPCore (a1 a2 b1 b2)
:name "Quotient of products"
:herbie-target
(* (/ a1 b1) (/ a2 b2))
(/ (* a1 a2) (* b1 b2)))