\frac{x.im \cdot y.re - x.re \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\begin{array}{l}
\mathbf{if}\;y.re \le -7.846283352613039 \cdot 10^{+90}:\\
\;\;\;\;-\frac{x.im}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\\
\mathbf{elif}\;y.re \le 5.2422713568197025 \cdot 10^{+36}:\\
\;\;\;\;\frac{\frac{x.im \cdot y.re - x.re \cdot y.im}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\\
\mathbf{else}:\\
\;\;\;\;\frac{x.im}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\\
\end{array}double f(double x_re, double x_im, double y_re, double y_im) {
double r2818428 = x_im;
double r2818429 = y_re;
double r2818430 = r2818428 * r2818429;
double r2818431 = x_re;
double r2818432 = y_im;
double r2818433 = r2818431 * r2818432;
double r2818434 = r2818430 - r2818433;
double r2818435 = r2818429 * r2818429;
double r2818436 = r2818432 * r2818432;
double r2818437 = r2818435 + r2818436;
double r2818438 = r2818434 / r2818437;
return r2818438;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r2818439 = y_re;
double r2818440 = -7.846283352613039e+90;
bool r2818441 = r2818439 <= r2818440;
double r2818442 = x_im;
double r2818443 = r2818439 * r2818439;
double r2818444 = y_im;
double r2818445 = r2818444 * r2818444;
double r2818446 = r2818443 + r2818445;
double r2818447 = sqrt(r2818446);
double r2818448 = r2818442 / r2818447;
double r2818449 = -r2818448;
double r2818450 = 5.2422713568197025e+36;
bool r2818451 = r2818439 <= r2818450;
double r2818452 = r2818442 * r2818439;
double r2818453 = x_re;
double r2818454 = r2818453 * r2818444;
double r2818455 = r2818452 - r2818454;
double r2818456 = r2818455 / r2818447;
double r2818457 = r2818456 / r2818447;
double r2818458 = r2818451 ? r2818457 : r2818448;
double r2818459 = r2818441 ? r2818449 : r2818458;
return r2818459;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
if y.re < -7.846283352613039e+90Initial program 39.2
rmApplied add-sqr-sqrt39.2
Applied associate-/r*39.2
Taylor expanded around -inf 38.1
Simplified38.1
if -7.846283352613039e+90 < y.re < 5.2422713568197025e+36Initial program 18.9
rmApplied add-sqr-sqrt18.9
Applied associate-/r*18.8
if 5.2422713568197025e+36 < y.re Initial program 35.0
rmApplied add-sqr-sqrt35.0
Applied associate-/r*35.0
Taylor expanded around inf 36.1
Final simplification26.5
herbie shell --seed 2019165
(FPCore (x.re x.im y.re y.im)
:name "_divideComplex, imaginary part"
(/ (- (* x.im y.re) (* x.re y.im)) (+ (* y.re y.re) (* y.im y.im))))