\frac{a1 \cdot a2}{b1 \cdot b2}\begin{array}{l}
\mathbf{if}\;a1 \cdot a2 \le -2.12735229765193038 \cdot 10^{182}:\\
\;\;\;\;\frac{a1}{b1 \cdot \frac{b2}{a2}}\\
\mathbf{elif}\;a1 \cdot a2 \le -1.0024754663520561 \cdot 10^{-263}:\\
\;\;\;\;\frac{\left(a1 \cdot a2\right) \cdot \frac{1}{b2}}{b1}\\
\mathbf{elif}\;a1 \cdot a2 \le 5.48183825434908302 \cdot 10^{-297} \lor \neg \left(a1 \cdot a2 \le 2.32454057704183092 \cdot 10^{123}\right):\\
\;\;\;\;\frac{a1}{b1 \cdot \frac{b2}{a2}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{a1 \cdot a2}{b1}}{b2}\\
\end{array}double f(double a1, double a2, double b1, double b2) {
double r233283 = a1;
double r233284 = a2;
double r233285 = r233283 * r233284;
double r233286 = b1;
double r233287 = b2;
double r233288 = r233286 * r233287;
double r233289 = r233285 / r233288;
return r233289;
}
double f(double a1, double a2, double b1, double b2) {
double r233290 = a1;
double r233291 = a2;
double r233292 = r233290 * r233291;
double r233293 = -2.1273522976519304e+182;
bool r233294 = r233292 <= r233293;
double r233295 = b1;
double r233296 = b2;
double r233297 = r233296 / r233291;
double r233298 = r233295 * r233297;
double r233299 = r233290 / r233298;
double r233300 = -1.002475466352056e-263;
bool r233301 = r233292 <= r233300;
double r233302 = 1.0;
double r233303 = r233302 / r233296;
double r233304 = r233292 * r233303;
double r233305 = r233304 / r233295;
double r233306 = 5.481838254349083e-297;
bool r233307 = r233292 <= r233306;
double r233308 = 2.324540577041831e+123;
bool r233309 = r233292 <= r233308;
double r233310 = !r233309;
bool r233311 = r233307 || r233310;
double r233312 = r233292 / r233295;
double r233313 = r233312 / r233296;
double r233314 = r233311 ? r233299 : r233313;
double r233315 = r233301 ? r233305 : r233314;
double r233316 = r233294 ? r233299 : r233315;
return r233316;
}




Bits error versus a1




Bits error versus a2




Bits error versus b1




Bits error versus b2
Results
| Original | 11.4 |
|---|---|
| Target | 11.0 |
| Herbie | 5.4 |
if (* a1 a2) < -2.1273522976519304e+182 or -1.002475466352056e-263 < (* a1 a2) < 5.481838254349083e-297 or 2.324540577041831e+123 < (* a1 a2) Initial program 22.5
rmApplied associate-/l*11.6
Simplified6.9
if -2.1273522976519304e+182 < (* a1 a2) < -1.002475466352056e-263Initial program 4.8
rmApplied times-frac13.9
rmApplied associate-*l/11.0
rmApplied div-inv11.0
Applied associate-*r*4.6
if 5.481838254349083e-297 < (* a1 a2) < 2.324540577041831e+123Initial program 4.8
rmApplied associate-/r*4.4
Final simplification5.4
herbie shell --seed 2020045 +o rules:numerics
(FPCore (a1 a2 b1 b2)
:name "Quotient of products"
:precision binary64
:herbie-target
(* (/ a1 b1) (/ a2 b2))
(/ (* a1 a2) (* b1 b2)))