\frac{a1 \cdot a2}{b1 \cdot b2}\begin{array}{l}
\mathbf{if}\;a1 \le -2.6262968301438297 \cdot 10^{+154}:\\
\;\;\;\;\frac{a2}{b2 \cdot b1} \cdot a1\\
\mathbf{elif}\;a1 \le -7.197696696298761 \cdot 10^{-23}:\\
\;\;\;\;\frac{\sqrt[3]{\frac{a2}{b2}}}{b1} \cdot \left(\left(\sqrt[3]{\frac{a2}{b2}} \cdot a1\right) \cdot \sqrt[3]{\frac{a2}{b2}}\right)\\
\mathbf{elif}\;a1 \le -1.4115765653207805 \cdot 10^{-101}:\\
\;\;\;\;\frac{a2}{b2 \cdot b1} \cdot a1\\
\mathbf{elif}\;a1 \le -3.75577994435908 \cdot 10^{-192}:\\
\;\;\;\;\frac{\frac{a2 \cdot a1}{b1}}{b2}\\
\mathbf{elif}\;a1 \le -2.7564687177065716 \cdot 10^{-269}:\\
\;\;\;\;\frac{1}{b1} \cdot \left(\frac{a2}{b2} \cdot a1\right)\\
\mathbf{elif}\;a1 \le 8.377469299573798 \cdot 10^{-267}:\\
\;\;\;\;\frac{a2 \cdot a1}{b2 \cdot b1}\\
\mathbf{elif}\;a1 \le 5.6037110240578724 \cdot 10^{-148}:\\
\;\;\;\;\frac{1}{b1} \cdot \left(\frac{a2}{b2} \cdot a1\right)\\
\mathbf{elif}\;a1 \le 1.3929709356464372 \cdot 10^{+88}:\\
\;\;\;\;\frac{a2}{b2 \cdot b1} \cdot a1\\
\mathbf{else}:\\
\;\;\;\;\frac{a1}{b1} \cdot \frac{a2}{b2}\\
\end{array}double f(double a1, double a2, double b1, double b2) {
double r5231116 = a1;
double r5231117 = a2;
double r5231118 = r5231116 * r5231117;
double r5231119 = b1;
double r5231120 = b2;
double r5231121 = r5231119 * r5231120;
double r5231122 = r5231118 / r5231121;
return r5231122;
}
double f(double a1, double a2, double b1, double b2) {
double r5231123 = a1;
double r5231124 = -2.6262968301438297e+154;
bool r5231125 = r5231123 <= r5231124;
double r5231126 = a2;
double r5231127 = b2;
double r5231128 = b1;
double r5231129 = r5231127 * r5231128;
double r5231130 = r5231126 / r5231129;
double r5231131 = r5231130 * r5231123;
double r5231132 = -7.197696696298761e-23;
bool r5231133 = r5231123 <= r5231132;
double r5231134 = r5231126 / r5231127;
double r5231135 = cbrt(r5231134);
double r5231136 = r5231135 / r5231128;
double r5231137 = r5231135 * r5231123;
double r5231138 = r5231137 * r5231135;
double r5231139 = r5231136 * r5231138;
double r5231140 = -1.4115765653207805e-101;
bool r5231141 = r5231123 <= r5231140;
double r5231142 = -3.75577994435908e-192;
bool r5231143 = r5231123 <= r5231142;
double r5231144 = r5231126 * r5231123;
double r5231145 = r5231144 / r5231128;
double r5231146 = r5231145 / r5231127;
double r5231147 = -2.7564687177065716e-269;
bool r5231148 = r5231123 <= r5231147;
double r5231149 = 1.0;
double r5231150 = r5231149 / r5231128;
double r5231151 = r5231134 * r5231123;
double r5231152 = r5231150 * r5231151;
double r5231153 = 8.377469299573798e-267;
bool r5231154 = r5231123 <= r5231153;
double r5231155 = r5231144 / r5231129;
double r5231156 = 5.6037110240578724e-148;
bool r5231157 = r5231123 <= r5231156;
double r5231158 = 1.3929709356464372e+88;
bool r5231159 = r5231123 <= r5231158;
double r5231160 = r5231123 / r5231128;
double r5231161 = r5231160 * r5231134;
double r5231162 = r5231159 ? r5231131 : r5231161;
double r5231163 = r5231157 ? r5231152 : r5231162;
double r5231164 = r5231154 ? r5231155 : r5231163;
double r5231165 = r5231148 ? r5231152 : r5231164;
double r5231166 = r5231143 ? r5231146 : r5231165;
double r5231167 = r5231141 ? r5231131 : r5231166;
double r5231168 = r5231133 ? r5231139 : r5231167;
double r5231169 = r5231125 ? r5231131 : r5231168;
return r5231169;
}




Bits error versus a1




Bits error versus a2




Bits error versus b1




Bits error versus b2
Results
| Original | 11.1 |
|---|---|
| Target | 11.2 |
| Herbie | 10.8 |
if a1 < -2.6262968301438297e+154 or -7.197696696298761e-23 < a1 < -1.4115765653207805e-101 or 5.6037110240578724e-148 < a1 < 1.3929709356464372e+88Initial program 10.6
rmApplied times-frac10.6
rmApplied div-inv10.6
Applied associate-*l*10.0
Simplified10.0
Taylor expanded around 0 10.7
if -2.6262968301438297e+154 < a1 < -7.197696696298761e-23Initial program 9.7
rmApplied times-frac10.2
rmApplied div-inv10.3
Applied associate-*l*10.2
Simplified10.2
rmApplied *-un-lft-identity10.2
Applied add-cube-cbrt10.9
Applied times-frac10.9
Applied associate-*r*8.5
Simplified8.5
if -1.4115765653207805e-101 < a1 < -3.75577994435908e-192Initial program 8.3
rmApplied associate-/r*8.5
if -3.75577994435908e-192 < a1 < -2.7564687177065716e-269 or 8.377469299573798e-267 < a1 < 5.6037110240578724e-148Initial program 11.0
rmApplied times-frac10.9
rmApplied div-inv10.9
Applied associate-*l*9.6
Simplified9.6
rmApplied div-inv9.6
Applied associate-*r*10.0
if -2.7564687177065716e-269 < a1 < 8.377469299573798e-267Initial program 11.8
rmApplied times-frac10.1
rmApplied div-inv10.1
Applied associate-*l*10.3
Simplified10.3
rmApplied *-un-lft-identity10.3
Applied add-cube-cbrt10.6
Applied times-frac10.6
Applied associate-*r*14.1
Simplified14.1
Taylor expanded around -inf 11.8
if 1.3929709356464372e+88 < a1 Initial program 15.6
rmApplied times-frac15.4
Final simplification10.8
herbie shell --seed 2019151
(FPCore (a1 a2 b1 b2)
:name "Quotient of products"
:herbie-target
(* (/ a1 b1) (/ a2 b2))
(/ (* a1 a2) (* b1 b2)))