Average Error: 26.0 → 24.5
Time: 38.6s
Precision: 64
\[\frac{b \cdot c - a \cdot d}{c \cdot c + d \cdot d}\]
\[\frac{b \cdot c}{c \cdot c + d \cdot d} - \frac{a}{\frac{c \cdot c + d \cdot d}{d}}\]
\frac{b \cdot c - a \cdot d}{c \cdot c + d \cdot d}
\frac{b \cdot c}{c \cdot c + d \cdot d} - \frac{a}{\frac{c \cdot c + d \cdot d}{d}}
double f(double a, double b, double c, double d) {
        double r28103567 = b;
        double r28103568 = c;
        double r28103569 = r28103567 * r28103568;
        double r28103570 = a;
        double r28103571 = d;
        double r28103572 = r28103570 * r28103571;
        double r28103573 = r28103569 - r28103572;
        double r28103574 = r28103568 * r28103568;
        double r28103575 = r28103571 * r28103571;
        double r28103576 = r28103574 + r28103575;
        double r28103577 = r28103573 / r28103576;
        return r28103577;
}

double f(double a, double b, double c, double d) {
        double r28103578 = b;
        double r28103579 = c;
        double r28103580 = r28103578 * r28103579;
        double r28103581 = r28103579 * r28103579;
        double r28103582 = d;
        double r28103583 = r28103582 * r28103582;
        double r28103584 = r28103581 + r28103583;
        double r28103585 = r28103580 / r28103584;
        double r28103586 = a;
        double r28103587 = r28103584 / r28103582;
        double r28103588 = r28103586 / r28103587;
        double r28103589 = r28103585 - r28103588;
        return r28103589;
}

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.0
Target0.4
Herbie24.5
\[\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.0

    \[\frac{b \cdot c - a \cdot d}{c \cdot c + d \cdot d}\]
  2. Using strategy rm
  3. Applied div-sub26.0

    \[\leadsto \color{blue}{\frac{b \cdot c}{c \cdot c + d \cdot d} - \frac{a \cdot d}{c \cdot c + d \cdot d}}\]
  4. Using strategy rm
  5. Applied associate-/l*24.5

    \[\leadsto \frac{b \cdot c}{c \cdot c + d \cdot d} - \color{blue}{\frac{a}{\frac{c \cdot c + d \cdot d}{d}}}\]
  6. Final simplification24.5

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

Reproduce

herbie shell --seed 2019128 
(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))))