\frac{a1 \cdot a2}{b1 \cdot b2}\begin{array}{l}
\mathbf{if}\;a1 \cdot a2 \le -3.975410788026315 \cdot 10^{+305}:\\
\;\;\;\;\frac{\frac{a1}{b1}}{\sqrt[3]{b2} \cdot \sqrt[3]{b2}} \cdot \frac{a2}{\sqrt[3]{b2}}\\
\mathbf{elif}\;a1 \cdot a2 \le -5.1555799853760176 \cdot 10^{-213}:\\
\;\;\;\;\frac{a1 \cdot a2}{b2 \cdot b1}\\
\mathbf{elif}\;a1 \cdot a2 \le 1.1084891218651217 \cdot 10^{-234}:\\
\;\;\;\;a1 \cdot \frac{\frac{a2}{b1}}{b2}\\
\mathbf{elif}\;a1 \cdot a2 \le 1.7118743416701524 \cdot 10^{+99}:\\
\;\;\;\;\frac{a1 \cdot a2}{b2 \cdot b1}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{a1}{b1}}{\sqrt[3]{b2} \cdot \sqrt[3]{b2}} \cdot \frac{a2}{\sqrt[3]{b2}}\\
\end{array}double f(double a1, double a2, double b1, double b2) {
double r1320366 = a1;
double r1320367 = a2;
double r1320368 = r1320366 * r1320367;
double r1320369 = b1;
double r1320370 = b2;
double r1320371 = r1320369 * r1320370;
double r1320372 = r1320368 / r1320371;
return r1320372;
}
double f(double a1, double a2, double b1, double b2) {
double r1320373 = a1;
double r1320374 = a2;
double r1320375 = r1320373 * r1320374;
double r1320376 = -3.975410788026315e+305;
bool r1320377 = r1320375 <= r1320376;
double r1320378 = b1;
double r1320379 = r1320373 / r1320378;
double r1320380 = b2;
double r1320381 = cbrt(r1320380);
double r1320382 = r1320381 * r1320381;
double r1320383 = r1320379 / r1320382;
double r1320384 = r1320374 / r1320381;
double r1320385 = r1320383 * r1320384;
double r1320386 = -5.1555799853760176e-213;
bool r1320387 = r1320375 <= r1320386;
double r1320388 = r1320380 * r1320378;
double r1320389 = r1320375 / r1320388;
double r1320390 = 1.1084891218651217e-234;
bool r1320391 = r1320375 <= r1320390;
double r1320392 = r1320374 / r1320378;
double r1320393 = r1320392 / r1320380;
double r1320394 = r1320373 * r1320393;
double r1320395 = 1.7118743416701524e+99;
bool r1320396 = r1320375 <= r1320395;
double r1320397 = r1320396 ? r1320389 : r1320385;
double r1320398 = r1320391 ? r1320394 : r1320397;
double r1320399 = r1320387 ? r1320389 : r1320398;
double r1320400 = r1320377 ? r1320385 : r1320399;
return r1320400;
}




Bits error versus a1




Bits error versus a2




Bits error versus b1




Bits error versus b2
Results
| Original | 10.8 |
|---|---|
| Target | 11.0 |
| Herbie | 5.0 |
if (* a1 a2) < -3.975410788026315e+305 or 1.7118743416701524e+99 < (* a1 a2) Initial program 29.9
rmApplied times-frac10.6
rmApplied add-cube-cbrt11.5
Applied *-un-lft-identity11.5
Applied times-frac11.4
Applied associate-*r*9.7
Simplified9.7
if -3.975410788026315e+305 < (* a1 a2) < -5.1555799853760176e-213 or 1.1084891218651217e-234 < (* a1 a2) < 1.7118743416701524e+99Initial program 4.0
if -5.1555799853760176e-213 < (* a1 a2) < 1.1084891218651217e-234Initial program 15.4
rmApplied times-frac4.5
rmApplied div-inv4.5
Applied associate-*l*4.6
Simplified4.4
Final simplification5.0
herbie shell --seed 2019154 +o rules:numerics
(FPCore (a1 a2 b1 b2)
:name "Quotient of products"
:herbie-target
(* (/ a1 b1) (/ a2 b2))
(/ (* a1 a2) (* b1 b2)))