\frac{b \cdot c - a \cdot d}{c \cdot c + d \cdot d}\frac{\frac{b \cdot c - a \cdot d}{\sqrt{c \cdot c + d \cdot d}}}{\sqrt{c \cdot c + d \cdot d}}double f(double a, double b, double c, double d) {
double r115700 = b;
double r115701 = c;
double r115702 = r115700 * r115701;
double r115703 = a;
double r115704 = d;
double r115705 = r115703 * r115704;
double r115706 = r115702 - r115705;
double r115707 = r115701 * r115701;
double r115708 = r115704 * r115704;
double r115709 = r115707 + r115708;
double r115710 = r115706 / r115709;
return r115710;
}
double f(double a, double b, double c, double d) {
double r115711 = b;
double r115712 = c;
double r115713 = r115711 * r115712;
double r115714 = a;
double r115715 = d;
double r115716 = r115714 * r115715;
double r115717 = r115713 - r115716;
double r115718 = r115712 * r115712;
double r115719 = r115715 * r115715;
double r115720 = r115718 + r115719;
double r115721 = sqrt(r115720);
double r115722 = r115717 / r115721;
double r115723 = r115722 / r115721;
return r115723;
}




Bits error versus a




Bits error versus b




Bits error versus c




Bits error versus d
Results
| Original | 25.7 |
|---|---|
| Target | 0.5 |
| Herbie | 25.7 |
Initial program 25.7
rmApplied add-sqr-sqrt25.7
Applied associate-/r*25.7
Final simplification25.7
herbie shell --seed 2020047
(FPCore (a b c d)
:name "Complex division, imag part"
:precision binary64
:herbie-target
(if (< (fabs d) (fabs c)) (/ (- b (* a (/ d c))) (+ c (* d (/ d c)))) (/ (+ (- a) (* b (/ c d))) (+ d (* c (/ c d)))))
(/ (- (* b c) (* a d)) (+ (* c c) (* d d))))