\frac{a1 \cdot a2}{b1 \cdot b2}\begin{array}{l}
\mathbf{if}\;a1 \cdot a2 \le -8.1576239880029206 \cdot 10^{195}:\\
\;\;\;\;a1 \cdot \frac{\frac{a2}{b1}}{b2}\\
\mathbf{elif}\;a1 \cdot a2 \le -7.6760268479022844 \cdot 10^{-278}:\\
\;\;\;\;\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 1.3851302523781732 \cdot 10^{-273}:\\
\;\;\;\;\frac{a1}{b1} \cdot \frac{a2}{b2}\\
\mathbf{elif}\;a1 \cdot a2 \le 2.0507310125992406 \cdot 10^{162}:\\
\;\;\;\;\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 r291201 = a1;
double r291202 = a2;
double r291203 = r291201 * r291202;
double r291204 = b1;
double r291205 = b2;
double r291206 = r291204 * r291205;
double r291207 = r291203 / r291206;
return r291207;
}
double f(double a1, double a2, double b1, double b2) {
double r291208 = a1;
double r291209 = a2;
double r291210 = r291208 * r291209;
double r291211 = -8.157623988002921e+195;
bool r291212 = r291210 <= r291211;
double r291213 = b1;
double r291214 = r291209 / r291213;
double r291215 = b2;
double r291216 = r291214 / r291215;
double r291217 = r291208 * r291216;
double r291218 = -7.676026847902284e-278;
bool r291219 = r291210 <= r291218;
double r291220 = cbrt(r291215);
double r291221 = r291220 * r291220;
double r291222 = r291210 / r291221;
double r291223 = 1.0;
double r291224 = r291223 / r291213;
double r291225 = r291224 / r291220;
double r291226 = r291222 * r291225;
double r291227 = 1.3851302523781732e-273;
bool r291228 = r291210 <= r291227;
double r291229 = r291208 / r291213;
double r291230 = r291209 / r291215;
double r291231 = r291229 * r291230;
double r291232 = 2.0507310125992406e+162;
bool r291233 = r291210 <= r291232;
double r291234 = r291233 ? r291226 : r291217;
double r291235 = r291228 ? r291231 : r291234;
double r291236 = r291219 ? r291226 : r291235;
double r291237 = r291212 ? r291217 : r291236;
return r291237;
}




Bits error versus a1




Bits error versus a2




Bits error versus b1




Bits error versus b2
Results
| Original | 11.5 |
|---|---|
| Target | 11.3 |
| Herbie | 4.7 |
if (* a1 a2) < -8.157623988002921e+195 or 2.0507310125992406e+162 < (* a1 a2) Initial program 30.8
rmApplied associate-/r*31.9
rmApplied *-un-lft-identity31.9
Applied *-un-lft-identity31.9
Applied times-frac18.2
Applied times-frac11.8
Simplified11.8
if -8.157623988002921e+195 < (* a1 a2) < -7.676026847902284e-278 or 1.3851302523781732e-273 < (* a1 a2) < 2.0507310125992406e+162Initial program 5.0
rmApplied associate-/r*4.6
rmApplied add-cube-cbrt5.4
Applied div-inv5.4
Applied times-frac3.5
if -7.676026847902284e-278 < (* a1 a2) < 1.3851302523781732e-273Initial program 18.1
rmApplied times-frac3.2
Final simplification4.7
herbie shell --seed 2020036
(FPCore (a1 a2 b1 b2)
:name "Quotient of products"
:precision binary64
:herbie-target
(* (/ a1 b1) (/ a2 b2))
(/ (* a1 a2) (* b1 b2)))