\frac{a1 \cdot a2}{b1 \cdot b2}\begin{array}{l}
\mathbf{if}\;a1 \cdot a2 \le -1.4413717353503713 \cdot 10^{+166}:\\
\;\;\;\;\frac{a1}{b1} \cdot \frac{a2}{b2}\\
\mathbf{elif}\;a1 \cdot a2 \le -7.442078385181948 \cdot 10^{-96}:\\
\;\;\;\;\frac{a1 \cdot a2}{b1} \cdot \frac{1}{b2}\\
\mathbf{elif}\;a1 \cdot a2 \le 0.0:\\
\;\;\;\;\frac{a1}{\frac{b2 \cdot b1}{a2}}\\
\mathbf{elif}\;a1 \cdot a2 \le 4.15369418345865 \cdot 10^{+157}:\\
\;\;\;\;\frac{a1 \cdot a2}{b1} \cdot \frac{1}{b2}\\
\mathbf{else}:\\
\;\;\;\;\frac{a1}{\frac{b2 \cdot b1}{a2}}\\
\end{array}double f(double a1, double a2, double b1, double b2) {
double r24578107 = a1;
double r24578108 = a2;
double r24578109 = r24578107 * r24578108;
double r24578110 = b1;
double r24578111 = b2;
double r24578112 = r24578110 * r24578111;
double r24578113 = r24578109 / r24578112;
return r24578113;
}
double f(double a1, double a2, double b1, double b2) {
double r24578114 = a1;
double r24578115 = a2;
double r24578116 = r24578114 * r24578115;
double r24578117 = -1.4413717353503713e+166;
bool r24578118 = r24578116 <= r24578117;
double r24578119 = b1;
double r24578120 = r24578114 / r24578119;
double r24578121 = b2;
double r24578122 = r24578115 / r24578121;
double r24578123 = r24578120 * r24578122;
double r24578124 = -7.442078385181948e-96;
bool r24578125 = r24578116 <= r24578124;
double r24578126 = r24578116 / r24578119;
double r24578127 = 1.0;
double r24578128 = r24578127 / r24578121;
double r24578129 = r24578126 * r24578128;
double r24578130 = 0.0;
bool r24578131 = r24578116 <= r24578130;
double r24578132 = r24578121 * r24578119;
double r24578133 = r24578132 / r24578115;
double r24578134 = r24578114 / r24578133;
double r24578135 = 4.15369418345865e+157;
bool r24578136 = r24578116 <= r24578135;
double r24578137 = r24578136 ? r24578129 : r24578134;
double r24578138 = r24578131 ? r24578134 : r24578137;
double r24578139 = r24578125 ? r24578129 : r24578138;
double r24578140 = r24578118 ? r24578123 : r24578139;
return r24578140;
}




Bits error versus a1




Bits error versus a2




Bits error versus b1




Bits error versus b2
Results
| Original | 10.5 |
|---|---|
| Target | 11.4 |
| Herbie | 6.8 |
if (* a1 a2) < -1.4413717353503713e+166Initial program 28.4
rmApplied times-frac11.5
if -1.4413717353503713e+166 < (* a1 a2) < -7.442078385181948e-96 or 0.0 < (* a1 a2) < 4.15369418345865e+157Initial program 4.3
rmApplied associate-/r*4.3
Taylor expanded around 0 4.3
rmApplied div-inv4.4
if -7.442078385181948e-96 < (* a1 a2) < 0.0 or 4.15369418345865e+157 < (* a1 a2) Initial program 15.7
rmApplied associate-/l*9.2
Final simplification6.8
herbie shell --seed 2019104
(FPCore (a1 a2 b1 b2)
:name "Quotient of products"
:herbie-target
(* (/ a1 b1) (/ a2 b2))
(/ (* a1 a2) (* b1 b2)))