\frac{a1 \cdot a2}{b1 \cdot b2}\begin{array}{l}
\mathbf{if}\;b1 \cdot b2 \le -1.0840043817926052 \cdot 10^{194}:\\
\;\;\;\;\left(\frac{\sqrt[3]{a1} \cdot \sqrt[3]{a1}}{b2} \cdot \frac{\sqrt[3]{\sqrt[3]{a1}} \cdot \sqrt[3]{\sqrt[3]{a1}}}{\frac{\sqrt[3]{b1} \cdot \sqrt[3]{b1}}{\sqrt[3]{a2} \cdot \sqrt[3]{a2}}}\right) \cdot \frac{\sqrt[3]{\sqrt[3]{a1}}}{\frac{\sqrt[3]{b1}}{\sqrt[3]{a2}}}\\
\mathbf{elif}\;b1 \cdot b2 \le -3.08257491941769578 \cdot 10^{-195}:\\
\;\;\;\;\frac{1}{\frac{b1 \cdot b2}{a1 \cdot a2}}\\
\mathbf{elif}\;b1 \cdot b2 \le 1.4142553735687107 \cdot 10^{-148}:\\
\;\;\;\;\frac{\frac{a1}{b2}}{\frac{b1}{a2}}\\
\mathbf{elif}\;b1 \cdot b2 \le 3.0707001026583607 \cdot 10^{167}:\\
\;\;\;\;\frac{1}{\frac{b1 \cdot b2}{a1 \cdot a2}}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{\sqrt[3]{a1} \cdot \sqrt[3]{a1}}{b2} \cdot \frac{\sqrt[3]{\sqrt[3]{a1}} \cdot \sqrt[3]{\sqrt[3]{a1}}}{\frac{\sqrt[3]{b1} \cdot \sqrt[3]{b1}}{\sqrt[3]{a2} \cdot \sqrt[3]{a2}}}\right) \cdot \frac{\sqrt[3]{\sqrt[3]{a1}}}{\frac{\sqrt[3]{b1}}{\sqrt[3]{a2}}}\\
\end{array}double f(double a1, double a2, double b1, double b2) {
double r137472 = a1;
double r137473 = a2;
double r137474 = r137472 * r137473;
double r137475 = b1;
double r137476 = b2;
double r137477 = r137475 * r137476;
double r137478 = r137474 / r137477;
return r137478;
}
double f(double a1, double a2, double b1, double b2) {
double r137479 = b1;
double r137480 = b2;
double r137481 = r137479 * r137480;
double r137482 = -1.0840043817926052e+194;
bool r137483 = r137481 <= r137482;
double r137484 = a1;
double r137485 = cbrt(r137484);
double r137486 = r137485 * r137485;
double r137487 = r137486 / r137480;
double r137488 = cbrt(r137485);
double r137489 = r137488 * r137488;
double r137490 = cbrt(r137479);
double r137491 = r137490 * r137490;
double r137492 = a2;
double r137493 = cbrt(r137492);
double r137494 = r137493 * r137493;
double r137495 = r137491 / r137494;
double r137496 = r137489 / r137495;
double r137497 = r137487 * r137496;
double r137498 = r137490 / r137493;
double r137499 = r137488 / r137498;
double r137500 = r137497 * r137499;
double r137501 = -3.0825749194176958e-195;
bool r137502 = r137481 <= r137501;
double r137503 = 1.0;
double r137504 = r137484 * r137492;
double r137505 = r137481 / r137504;
double r137506 = r137503 / r137505;
double r137507 = 1.4142553735687107e-148;
bool r137508 = r137481 <= r137507;
double r137509 = r137484 / r137480;
double r137510 = r137479 / r137492;
double r137511 = r137509 / r137510;
double r137512 = 3.0707001026583607e+167;
bool r137513 = r137481 <= r137512;
double r137514 = r137513 ? r137506 : r137500;
double r137515 = r137508 ? r137511 : r137514;
double r137516 = r137502 ? r137506 : r137515;
double r137517 = r137483 ? r137500 : r137516;
return r137517;
}




Bits error versus a1




Bits error versus a2




Bits error versus b1




Bits error versus b2
Results
| Original | 11.7 |
|---|---|
| Target | 10.7 |
| Herbie | 4.9 |
if (* b1 b2) < -1.0840043817926052e+194 or 3.0707001026583607e+167 < (* b1 b2) Initial program 15.2
rmApplied associate-/l*14.6
Simplified7.9
rmApplied add-cube-cbrt8.3
Applied times-frac4.7
rmApplied add-cube-cbrt4.9
Applied add-cube-cbrt4.9
Applied times-frac4.9
Applied add-cube-cbrt5.0
Applied times-frac3.8
Applied associate-*r*2.7
if -1.0840043817926052e+194 < (* b1 b2) < -3.0825749194176958e-195 or 1.4142553735687107e-148 < (* b1 b2) < 3.0707001026583607e+167Initial program 3.8
rmApplied clear-num4.2
if -3.0825749194176958e-195 < (* b1 b2) < 1.4142553735687107e-148Initial program 29.1
rmApplied associate-/l*28.6
Simplified16.0
rmApplied associate-/r*11.0
Final simplification4.9
herbie shell --seed 2020047
(FPCore (a1 a2 b1 b2)
:name "Quotient of products"
:precision binary64
:herbie-target
(* (/ a1 b1) (/ a2 b2))
(/ (* a1 a2) (* b1 b2)))