\frac{a1 \cdot a2}{b1 \cdot b2}\begin{array}{l}
\mathbf{if}\;b1 \le -5.383202245290986 \cdot 10^{-156}:\\
\;\;\;\;a1 \cdot \frac{a2}{b2 \cdot b1}\\
\mathbf{elif}\;b1 \le 6.891101720226247 \cdot 10^{-295}:\\
\;\;\;\;\frac{\frac{a1}{b1} \cdot a2}{b2}\\
\mathbf{elif}\;b1 \le 3.3978834778078136 \cdot 10^{-255}:\\
\;\;\;\;a1 \cdot \frac{a2}{b2 \cdot b1}\\
\mathbf{elif}\;b1 \le 2.5097248616828304 \cdot 10^{-195}:\\
\;\;\;\;\frac{a1 \cdot \frac{a2}{b2}}{b1}\\
\mathbf{elif}\;b1 \le 153.50401013691055:\\
\;\;\;\;\frac{\frac{a1}{b1} \cdot a2}{b2}\\
\mathbf{else}:\\
\;\;\;\;\frac{a1 \cdot \frac{a2}{b2}}{b1}\\
\end{array}double f(double a1, double a2, double b1, double b2) {
double r2470147 = a1;
double r2470148 = a2;
double r2470149 = r2470147 * r2470148;
double r2470150 = b1;
double r2470151 = b2;
double r2470152 = r2470150 * r2470151;
double r2470153 = r2470149 / r2470152;
return r2470153;
}
double f(double a1, double a2, double b1, double b2) {
double r2470154 = b1;
double r2470155 = -5.383202245290986e-156;
bool r2470156 = r2470154 <= r2470155;
double r2470157 = a1;
double r2470158 = a2;
double r2470159 = b2;
double r2470160 = r2470159 * r2470154;
double r2470161 = r2470158 / r2470160;
double r2470162 = r2470157 * r2470161;
double r2470163 = 6.891101720226247e-295;
bool r2470164 = r2470154 <= r2470163;
double r2470165 = r2470157 / r2470154;
double r2470166 = r2470165 * r2470158;
double r2470167 = r2470166 / r2470159;
double r2470168 = 3.3978834778078136e-255;
bool r2470169 = r2470154 <= r2470168;
double r2470170 = 2.5097248616828304e-195;
bool r2470171 = r2470154 <= r2470170;
double r2470172 = r2470158 / r2470159;
double r2470173 = r2470157 * r2470172;
double r2470174 = r2470173 / r2470154;
double r2470175 = 153.50401013691055;
bool r2470176 = r2470154 <= r2470175;
double r2470177 = r2470176 ? r2470167 : r2470174;
double r2470178 = r2470171 ? r2470174 : r2470177;
double r2470179 = r2470169 ? r2470162 : r2470178;
double r2470180 = r2470164 ? r2470167 : r2470179;
double r2470181 = r2470156 ? r2470162 : r2470180;
return r2470181;
}




Bits error versus a1




Bits error versus a2




Bits error versus b1




Bits error versus b2
Results
| Original | 11.4 |
|---|---|
| Target | 11.4 |
| Herbie | 11.1 |
if b1 < -5.383202245290986e-156 or 6.891101720226247e-295 < b1 < 3.3978834778078136e-255Initial program 10.5
rmApplied times-frac10.5
rmApplied div-inv10.5
Applied associate-*l*9.9
Simplified10.1
rmApplied associate-/l/10.6
if -5.383202245290986e-156 < b1 < 6.891101720226247e-295 or 2.5097248616828304e-195 < b1 < 153.50401013691055Initial program 13.5
rmApplied times-frac14.3
rmApplied associate-*r/13.1
if 3.3978834778078136e-255 < b1 < 2.5097248616828304e-195 or 153.50401013691055 < b1 Initial program 10.8
rmApplied times-frac10.3
rmApplied associate-*l/10.2
Final simplification11.1
herbie shell --seed 2019156
(FPCore (a1 a2 b1 b2)
:name "Quotient of products"
:herbie-target
(* (/ a1 b1) (/ a2 b2))
(/ (* a1 a2) (* b1 b2)))