Average Error: 26.2 → 15.8
Time: 13.1s
Precision: 64
\[\frac{b \cdot c - a \cdot d}{c \cdot c + d \cdot d}\]
\[\frac{\frac{c}{c \cdot c + d \cdot d}}{\frac{1}{b}} - \frac{a}{d + \frac{c \cdot c}{d}}\]
\frac{b \cdot c - a \cdot d}{c \cdot c + d \cdot d}
\frac{\frac{c}{c \cdot c + d \cdot d}}{\frac{1}{b}} - \frac{a}{d + \frac{c \cdot c}{d}}
double f(double a, double b, double c, double d) {
        double r4693423 = b;
        double r4693424 = c;
        double r4693425 = r4693423 * r4693424;
        double r4693426 = a;
        double r4693427 = d;
        double r4693428 = r4693426 * r4693427;
        double r4693429 = r4693425 - r4693428;
        double r4693430 = r4693424 * r4693424;
        double r4693431 = r4693427 * r4693427;
        double r4693432 = r4693430 + r4693431;
        double r4693433 = r4693429 / r4693432;
        return r4693433;
}

double f(double a, double b, double c, double d) {
        double r4693434 = c;
        double r4693435 = r4693434 * r4693434;
        double r4693436 = d;
        double r4693437 = r4693436 * r4693436;
        double r4693438 = r4693435 + r4693437;
        double r4693439 = r4693434 / r4693438;
        double r4693440 = 1.0;
        double r4693441 = b;
        double r4693442 = r4693440 / r4693441;
        double r4693443 = r4693439 / r4693442;
        double r4693444 = a;
        double r4693445 = r4693435 / r4693436;
        double r4693446 = r4693436 + r4693445;
        double r4693447 = r4693444 / r4693446;
        double r4693448 = r4693443 - r4693447;
        return r4693448;
}

Error

Bits error versus a

Bits error versus b

Bits error versus c

Bits error versus d

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original26.2
Target0.4
Herbie15.8
\[\begin{array}{l} \mathbf{if}\;\left|d\right| \lt \left|c\right|:\\ \;\;\;\;\frac{b - a \cdot \frac{d}{c}}{c + d \cdot \frac{d}{c}}\\ \mathbf{else}:\\ \;\;\;\;\frac{\left(-a\right) + b \cdot \frac{c}{d}}{d + c \cdot \frac{c}{d}}\\ \end{array}\]

Derivation

  1. Initial program 26.2

    \[\frac{b \cdot c - a \cdot d}{c \cdot c + d \cdot d}\]
  2. Using strategy rm
  3. Applied add-sqr-sqrt26.2

    \[\leadsto \frac{b \cdot c - a \cdot d}{\color{blue}{\sqrt{c \cdot c + d \cdot d} \cdot \sqrt{c \cdot c + d \cdot d}}}\]
  4. Applied associate-/r*26.1

    \[\leadsto \color{blue}{\frac{\frac{b \cdot c - a \cdot d}{\sqrt{c \cdot c + d \cdot d}}}{\sqrt{c \cdot c + d \cdot d}}}\]
  5. Using strategy rm
  6. Applied div-sub26.1

    \[\leadsto \frac{\color{blue}{\frac{b \cdot c}{\sqrt{c \cdot c + d \cdot d}} - \frac{a \cdot d}{\sqrt{c \cdot c + d \cdot d}}}}{\sqrt{c \cdot c + d \cdot d}}\]
  7. Applied div-sub26.1

    \[\leadsto \color{blue}{\frac{\frac{b \cdot c}{\sqrt{c \cdot c + d \cdot d}}}{\sqrt{c \cdot c + d \cdot d}} - \frac{\frac{a \cdot d}{\sqrt{c \cdot c + d \cdot d}}}{\sqrt{c \cdot c + d \cdot d}}}\]
  8. Simplified26.8

    \[\leadsto \color{blue}{\frac{c}{\frac{c \cdot c + d \cdot d}{b}}} - \frac{\frac{a \cdot d}{\sqrt{c \cdot c + d \cdot d}}}{\sqrt{c \cdot c + d \cdot d}}\]
  9. Simplified25.3

    \[\leadsto \frac{c}{\frac{c \cdot c + d \cdot d}{b}} - \color{blue}{\frac{a}{\frac{c \cdot c + d \cdot d}{d}}}\]
  10. Taylor expanded around 0 17.9

    \[\leadsto \frac{c}{\frac{c \cdot c + d \cdot d}{b}} - \frac{a}{\color{blue}{\frac{{c}^{2}}{d} + d}}\]
  11. Simplified17.9

    \[\leadsto \frac{c}{\frac{c \cdot c + d \cdot d}{b}} - \frac{a}{\color{blue}{d + \frac{c \cdot c}{d}}}\]
  12. Using strategy rm
  13. Applied div-inv17.9

    \[\leadsto \frac{c}{\color{blue}{\left(c \cdot c + d \cdot d\right) \cdot \frac{1}{b}}} - \frac{a}{d + \frac{c \cdot c}{d}}\]
  14. Applied associate-/r*15.8

    \[\leadsto \color{blue}{\frac{\frac{c}{c \cdot c + d \cdot d}}{\frac{1}{b}}} - \frac{a}{d + \frac{c \cdot c}{d}}\]
  15. Final simplification15.8

    \[\leadsto \frac{\frac{c}{c \cdot c + d \cdot d}}{\frac{1}{b}} - \frac{a}{d + \frac{c \cdot c}{d}}\]

Reproduce

herbie shell --seed 2019169 
(FPCore (a b c d)
  :name "Complex division, imag part"

  :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))))