\frac{a1 \cdot a2}{b1 \cdot b2}\begin{array}{l}
\mathbf{if}\;a1 \cdot a2 \le -5.5026396274140615 \cdot 10^{+75}:\\
\;\;\;\;\frac{a1}{\left(\sqrt[3]{b2} \cdot \sqrt[3]{b1}\right) \cdot \left(\sqrt[3]{b2} \cdot \sqrt[3]{b1}\right)} \cdot \frac{\frac{a2}{\sqrt[3]{b1}}}{\sqrt[3]{b2}}\\
\mathbf{elif}\;a1 \cdot a2 \le -2.116765585551356 \cdot 10^{-143}:\\
\;\;\;\;\frac{\frac{a1 \cdot a2}{b1}}{b2}\\
\mathbf{elif}\;a1 \cdot a2 \le 1.166300044269929 \cdot 10^{-272}:\\
\;\;\;\;\frac{a1}{\left(\sqrt[3]{b2} \cdot \sqrt[3]{b1}\right) \cdot \left(\sqrt[3]{b2} \cdot \sqrt[3]{b1}\right)} \cdot \frac{\frac{a2}{\sqrt[3]{b1}}}{\sqrt[3]{b2}}\\
\mathbf{elif}\;a1 \cdot a2 \le 1.3143600279928167 \cdot 10^{+180}:\\
\;\;\;\;\frac{\frac{a1 \cdot a2}{b1}}{b2}\\
\mathbf{else}:\\
\;\;\;\;\frac{a1}{\left(\sqrt[3]{b2} \cdot \sqrt[3]{b1}\right) \cdot \left(\sqrt[3]{b2} \cdot \sqrt[3]{b1}\right)} \cdot \frac{\frac{a2}{\sqrt[3]{b1}}}{\sqrt[3]{b2}}\\
\end{array}double f(double a1, double a2, double b1, double b2) {
double r6595037 = a1;
double r6595038 = a2;
double r6595039 = r6595037 * r6595038;
double r6595040 = b1;
double r6595041 = b2;
double r6595042 = r6595040 * r6595041;
double r6595043 = r6595039 / r6595042;
return r6595043;
}
double f(double a1, double a2, double b1, double b2) {
double r6595044 = a1;
double r6595045 = a2;
double r6595046 = r6595044 * r6595045;
double r6595047 = -5.5026396274140615e+75;
bool r6595048 = r6595046 <= r6595047;
double r6595049 = b2;
double r6595050 = cbrt(r6595049);
double r6595051 = b1;
double r6595052 = cbrt(r6595051);
double r6595053 = r6595050 * r6595052;
double r6595054 = r6595053 * r6595053;
double r6595055 = r6595044 / r6595054;
double r6595056 = r6595045 / r6595052;
double r6595057 = r6595056 / r6595050;
double r6595058 = r6595055 * r6595057;
double r6595059 = -2.116765585551356e-143;
bool r6595060 = r6595046 <= r6595059;
double r6595061 = r6595046 / r6595051;
double r6595062 = r6595061 / r6595049;
double r6595063 = 1.166300044269929e-272;
bool r6595064 = r6595046 <= r6595063;
double r6595065 = 1.3143600279928167e+180;
bool r6595066 = r6595046 <= r6595065;
double r6595067 = r6595066 ? r6595062 : r6595058;
double r6595068 = r6595064 ? r6595058 : r6595067;
double r6595069 = r6595060 ? r6595062 : r6595068;
double r6595070 = r6595048 ? r6595058 : r6595069;
return r6595070;
}




Bits error versus a1




Bits error versus a2




Bits error versus b1




Bits error versus b2
Results
| Original | 11.0 |
|---|---|
| Target | 11.0 |
| Herbie | 4.6 |
if (* a1 a2) < -5.5026396274140615e+75 or -2.116765585551356e-143 < (* a1 a2) < 1.166300044269929e-272 or 1.3143600279928167e+180 < (* a1 a2) Initial program 18.2
rmApplied associate-/l*11.3
rmApplied div-inv11.5
Simplified8.7
rmApplied add-cube-cbrt9.2
Applied add-cube-cbrt9.4
Applied *-un-lft-identity9.4
Applied times-frac9.4
Applied times-frac7.4
Applied associate-*r*5.4
Simplified5.5
if -5.5026396274140615e+75 < (* a1 a2) < -2.116765585551356e-143 or 1.166300044269929e-272 < (* a1 a2) < 1.3143600279928167e+180Initial program 4.2
rmApplied associate-/r*3.7
Final simplification4.6
herbie shell --seed 2019139
(FPCore (a1 a2 b1 b2)
:name "Quotient of products"
:herbie-target
(* (/ a1 b1) (/ a2 b2))
(/ (* a1 a2) (* b1 b2)))