Average Error: 26.2 → 15.3
Time: 9.3s
Precision: binary64
Cost: 16519
\[\frac{a \cdot c + b \cdot d}{c \cdot c + d \cdot d}\]
\[\begin{array}{l} \mathbf{if}\;c \leq -1.266447775026859 \cdot 10^{+143}:\\ \;\;\;\;\frac{a}{c}\\ \mathbf{elif}\;c \leq -4.7218745403061054 \cdot 10^{+135}:\\ \;\;\;\;\frac{b}{d} + \frac{c \cdot a}{d \cdot d}\\ \mathbf{elif}\;c \leq -2.2148262768226444 \cdot 10^{+22}:\\ \;\;\;\;\frac{1}{\sqrt{d \cdot d + c \cdot c}} \cdot \frac{c \cdot a + b \cdot d}{\sqrt{d \cdot d + c \cdot c}}\\ \mathbf{elif}\;c \leq -3084.182004279282:\\ \;\;\;\;\frac{b}{d} + \frac{c \cdot a}{d \cdot d}\\ \mathbf{elif}\;c \leq -9.83945259871375 \cdot 10^{-91}:\\ \;\;\;\;\frac{\frac{c \cdot a + b \cdot d}{\sqrt{d \cdot d + c \cdot c}}}{\sqrt{d \cdot d + c \cdot c}}\\ \mathbf{elif}\;c \leq 1.9690354844540234 \cdot 10^{-126}:\\ \;\;\;\;\frac{b}{d} + \frac{c \cdot a}{d \cdot d}\\ \mathbf{elif}\;c \leq 1.4163550870851477 \cdot 10^{+142}:\\ \;\;\;\;\frac{\frac{c \cdot a + b \cdot d}{\sqrt{d \cdot d + c \cdot c}}}{\sqrt{d \cdot d + c \cdot c}}\\ \mathbf{else}:\\ \;\;\;\;\frac{a}{c}\\ \end{array}\]
\frac{a \cdot c + b \cdot d}{c \cdot c + d \cdot d}
\begin{array}{l}
\mathbf{if}\;c \leq -1.266447775026859 \cdot 10^{+143}:\\
\;\;\;\;\frac{a}{c}\\

\mathbf{elif}\;c \leq -4.7218745403061054 \cdot 10^{+135}:\\
\;\;\;\;\frac{b}{d} + \frac{c \cdot a}{d \cdot d}\\

\mathbf{elif}\;c \leq -2.2148262768226444 \cdot 10^{+22}:\\
\;\;\;\;\frac{1}{\sqrt{d \cdot d + c \cdot c}} \cdot \frac{c \cdot a + b \cdot d}{\sqrt{d \cdot d + c \cdot c}}\\

\mathbf{elif}\;c \leq -3084.182004279282:\\
\;\;\;\;\frac{b}{d} + \frac{c \cdot a}{d \cdot d}\\

\mathbf{elif}\;c \leq -9.83945259871375 \cdot 10^{-91}:\\
\;\;\;\;\frac{\frac{c \cdot a + b \cdot d}{\sqrt{d \cdot d + c \cdot c}}}{\sqrt{d \cdot d + c \cdot c}}\\

\mathbf{elif}\;c \leq 1.9690354844540234 \cdot 10^{-126}:\\
\;\;\;\;\frac{b}{d} + \frac{c \cdot a}{d \cdot d}\\

\mathbf{elif}\;c \leq 1.4163550870851477 \cdot 10^{+142}:\\
\;\;\;\;\frac{\frac{c \cdot a + b \cdot d}{\sqrt{d \cdot d + c \cdot c}}}{\sqrt{d \cdot d + c \cdot c}}\\

\mathbf{else}:\\
\;\;\;\;\frac{a}{c}\\

\end{array}
(FPCore (a b c d)
 :precision binary64
 (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))))
(FPCore (a b c d)
 :precision binary64
 (if (<= c -1.266447775026859e+143)
   (/ a c)
   (if (<= c -4.7218745403061054e+135)
     (+ (/ b d) (/ (* c a) (* d d)))
     (if (<= c -2.2148262768226444e+22)
       (*
        (/ 1.0 (sqrt (+ (* d d) (* c c))))
        (/ (+ (* c a) (* b d)) (sqrt (+ (* d d) (* c c)))))
       (if (<= c -3084.182004279282)
         (+ (/ b d) (/ (* c a) (* d d)))
         (if (<= c -9.83945259871375e-91)
           (/
            (/ (+ (* c a) (* b d)) (sqrt (+ (* d d) (* c c))))
            (sqrt (+ (* d d) (* c c))))
           (if (<= c 1.9690354844540234e-126)
             (+ (/ b d) (/ (* c a) (* d d)))
             (if (<= c 1.4163550870851477e+142)
               (/
                (/ (+ (* c a) (* b d)) (sqrt (+ (* d d) (* c c))))
                (sqrt (+ (* d d) (* c c))))
               (/ a c)))))))))
double code(double a, double b, double c, double d) {
	return ((a * c) + (b * d)) / ((c * c) + (d * d));
}
double code(double a, double b, double c, double d) {
	double tmp;
	if (c <= -1.266447775026859e+143) {
		tmp = a / c;
	} else if (c <= -4.7218745403061054e+135) {
		tmp = (b / d) + ((c * a) / (d * d));
	} else if (c <= -2.2148262768226444e+22) {
		tmp = (1.0 / sqrt((d * d) + (c * c))) * (((c * a) + (b * d)) / sqrt((d * d) + (c * c)));
	} else if (c <= -3084.182004279282) {
		tmp = (b / d) + ((c * a) / (d * d));
	} else if (c <= -9.83945259871375e-91) {
		tmp = (((c * a) + (b * d)) / sqrt((d * d) + (c * c))) / sqrt((d * d) + (c * c));
	} else if (c <= 1.9690354844540234e-126) {
		tmp = (b / d) + ((c * a) / (d * d));
	} else if (c <= 1.4163550870851477e+142) {
		tmp = (((c * a) + (b * d)) / sqrt((d * d) + (c * c))) / sqrt((d * d) + (c * c));
	} else {
		tmp = a / c;
	}
	return tmp;
}

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.3
\[\begin{array}{l} \mathbf{if}\;\left|d\right| < \left|c\right|:\\ \;\;\;\;\frac{a + b \cdot \frac{d}{c}}{c + d \cdot \frac{d}{c}}\\ \mathbf{else}:\\ \;\;\;\;\frac{b + a \cdot \frac{c}{d}}{d + c \cdot \frac{c}{d}}\\ \end{array}\]

Alternatives

Alternative 1
Error26.8
Cost41408
\[\frac{\sqrt[3]{a \cdot c + b \cdot d} \cdot \sqrt[3]{a \cdot c + b \cdot d}}{\sqrt[3]{d \cdot d + c \cdot c} \cdot \sqrt[3]{d \cdot d + c \cdot c}} \cdot \frac{\sqrt[3]{a \cdot c + b \cdot d}}{\sqrt[3]{d \cdot d + c \cdot c}}\]
Alternative 2
Error44.3
Cost34496
\[\frac{\sqrt{a \cdot c + b \cdot d}}{\sqrt[3]{d \cdot d + c \cdot c} \cdot \sqrt[3]{d \cdot d + c \cdot c}} \cdot \frac{\sqrt{a \cdot c + b \cdot d}}{\sqrt[3]{d \cdot d + c \cdot c}}\]
Alternative 3
Error26.7
Cost34496
\[\frac{\sqrt[3]{a \cdot c + b \cdot d} \cdot \sqrt[3]{a \cdot c + b \cdot d}}{\sqrt{d \cdot d + c \cdot c}} \cdot \frac{\sqrt[3]{a \cdot c + b \cdot d}}{\sqrt{d \cdot d + c \cdot c}}\]
Alternative 4
Error46.3
Cost28224
\[\frac{\sqrt[3]{a \cdot c + b \cdot d} \cdot \sqrt[3]{a \cdot c + b \cdot d}}{\sqrt{d \cdot d + c \cdot c}} \cdot \frac{\sqrt[3]{a \cdot c + b \cdot d}}{d + 0.5 \cdot \frac{c \cdot c}{d}}\]
Alternative 5
Error26.7
Cost22208
\[\sqrt[3]{\frac{a \cdot c + b \cdot d}{d \cdot d + c \cdot c}} \cdot \left(\sqrt[3]{\frac{a \cdot c + b \cdot d}{d \cdot d + c \cdot c}} \cdot \sqrt[3]{\frac{a \cdot c + b \cdot d}{d \cdot d + c \cdot c}}\right)\]
Alternative 6
Error26.7
Cost21312
\[\frac{1}{\sqrt[3]{d \cdot d + c \cdot c} \cdot \sqrt[3]{d \cdot d + c \cdot c}} \cdot \frac{a \cdot c + b \cdot d}{\sqrt[3]{d \cdot d + c \cdot c}}\]
Alternative 7
Error26.7
Cost21184
\[\left(\sqrt[3]{a \cdot c + b \cdot d} \cdot \sqrt[3]{a \cdot c + b \cdot d}\right) \cdot \frac{\sqrt[3]{a \cdot c + b \cdot d}}{d \cdot d + c \cdot c}\]
Alternative 8
Error26.7
Cost21184
\[\frac{\frac{a \cdot c + b \cdot d}{\sqrt[3]{d \cdot d + c \cdot c} \cdot \sqrt[3]{d \cdot d + c \cdot c}}}{\sqrt[3]{d \cdot d + c \cdot c}}\]
Alternative 9
Error48.0
Cost15168
\[\frac{{\left(a \cdot c\right)}^{3} + {\left(b \cdot d\right)}^{3}}{\left(d \cdot d + c \cdot c\right) \cdot \left(\left(a \cdot c\right) \cdot \left(a \cdot c\right) + b \cdot \left(d \cdot \left(b \cdot d - a \cdot c\right)\right)\right)}\]
Alternative 10
Error55.0
Cost15168
\[\frac{a \cdot c + b \cdot d}{{c}^{6} + {d}^{6}} \cdot \left(\left(c \cdot c\right) \cdot \left(c \cdot c\right) + \left(\left(d \cdot d\right) \cdot \left(d \cdot d\right) - \left(d \cdot d\right) \cdot \left(c \cdot c\right)\right)\right)\]
Alternative 11
Error39.4
Cost14784
\[\sqrt{\frac{a \cdot c + b \cdot d}{d \cdot d + c \cdot c}} \cdot \sqrt{\frac{a \cdot c + b \cdot d}{d \cdot d + c \cdot c}}\]
Alternative 12
Error26.2
Cost14400
\[\frac{1}{\sqrt{d \cdot d + c \cdot c}} \cdot \frac{a \cdot c + b \cdot d}{\sqrt{d \cdot d + c \cdot c}}\]
Alternative 13
Error44.2
Cost14272
\[\sqrt{a \cdot c + b \cdot d} \cdot \frac{\sqrt{a \cdot c + b \cdot d}}{d \cdot d + c \cdot c}\]
Alternative 14
Error26.2
Cost14272
\[\frac{\frac{a \cdot c + b \cdot d}{\sqrt{d \cdot d + c \cdot c}}}{\sqrt{d \cdot d + c \cdot c}}\]
Alternative 15
Error44.2
Cost14272
\[\frac{\sqrt{a \cdot c + b \cdot d}}{\frac{d \cdot d + c \cdot c}{\sqrt{a \cdot c + b \cdot d}}}\]
Alternative 16
Error47.0
Cost14144
\[\frac{a \cdot c + b \cdot d}{\frac{{c}^{4} - {d}^{4}}{c \cdot c - d \cdot d}}\]
Alternative 17
Error49.1
Cost14144
\[\left(c \cdot c - d \cdot d\right) \cdot \frac{a \cdot c + b \cdot d}{{c}^{4} - {d}^{4}}\]
Alternative 18
Error45.0
Cost13824
\[\frac{\sqrt[3]{{\left(a \cdot c + b \cdot d\right)}^{3}}}{d \cdot d + c \cdot c}\]
Alternative 19
Error41.8
Cost13824
\[\sqrt[3]{{\left(\frac{a \cdot c + b \cdot d}{d \cdot d + c \cdot c}\right)}^{3}}\]
Alternative 20
Error28.5
Cost13760
\[\frac{a \cdot c + b \cdot d}{e^{\log \left(d \cdot d + c \cdot c\right)}}\]
Alternative 21
Error45.2
Cost13760
\[\frac{e^{\log \left(a \cdot c + b \cdot d\right)}}{d \cdot d + c \cdot c}\]
Alternative 22
Error40.4
Cost13760
\[e^{\log \left(\frac{a \cdot c + b \cdot d}{d \cdot d + c \cdot c}\right)}\]
Alternative 23
Error47.3
Cost6976
\[\frac{a}{\sqrt{d \cdot d + c \cdot c}}\]
Alternative 24
Error41.1
Cost1984
\[\frac{\left(a \cdot c\right) \cdot \left(a \cdot c\right) - \left(b \cdot d\right) \cdot \left(b \cdot d\right)}{\left(d \cdot d + c \cdot c\right) \cdot \left(a \cdot c - b \cdot d\right)}\]
Alternative 25
Error26.2
Cost1472
\[\frac{a \cdot c}{d \cdot d + c \cdot c} + \frac{b \cdot d}{d \cdot d + c \cdot c}\]
Alternative 26
Error26.4
Cost1088
\[\left(a \cdot c + b \cdot d\right) \cdot \frac{1}{d \cdot d + c \cdot c}\]
Alternative 27
Error26.3
Cost1088
\[\frac{1}{\frac{d \cdot d + c \cdot c}{a \cdot c + b \cdot d}}\]
Alternative 28
Error26.2
Cost960
\[\frac{a \cdot c + b \cdot d}{d \cdot d + c \cdot c}\]
Alternative 29
Error34.8
Cost704
\[\frac{b}{d} + \frac{a \cdot c}{d \cdot d}\]
Alternative 30
Error43.9
Cost704
\[\frac{a \cdot c + b \cdot d}{c \cdot c}\]
Alternative 31
Error39.2
Cost704
\[\frac{a \cdot c}{d \cdot d + c \cdot c}\]
Alternative 32
Error39.5
Cost704
\[\frac{b \cdot d}{d \cdot d + c \cdot c}\]
Alternative 33
Error34.7
Cost704
\[\frac{a}{c} + \frac{b \cdot d}{c \cdot c}\]
Alternative 34
Error37.4
Cost192
\[\frac{b}{d}\]
Alternative 35
Error37.6
Cost192
\[\frac{a}{c}\]
Alternative 36
Error61.6
Cost64
\[1\]
Alternative 37
Error52.0
Cost64
\[0\]
Alternative 38
Error61.7
Cost64
\[-1\]

Error

Derivation

  1. Split input into 4 regimes
  2. if c < -1.2664477750268591e143 or 1.41635508708514771e142 < c

    1. Initial program 42.6

      \[\frac{a \cdot c + b \cdot d}{c \cdot c + d \cdot d}\]
    2. Taylor expanded around inf 14.5

      \[\leadsto \color{blue}{\frac{a}{c}}\]
    3. Simplified14.5

      \[\leadsto \color{blue}{\frac{a}{c}}\]

    if -1.2664477750268591e143 < c < -4.7218745403061054e135 or -2.2148262768226444e22 < c < -3084.18200427928195 or -9.8394525987137508e-91 < c < 1.9690354844540234e-126

    1. Initial program 22.4

      \[\frac{a \cdot c + b \cdot d}{c \cdot c + d \cdot d}\]
    2. Taylor expanded around 0 12.9

      \[\leadsto \color{blue}{\frac{b}{d} + \frac{a \cdot c}{{d}^{2}}}\]
    3. Simplified12.9

      \[\leadsto \color{blue}{\frac{b}{d} + \frac{a \cdot c}{d \cdot d}}\]
    4. Simplified12.9

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

    if -4.7218745403061054e135 < c < -2.2148262768226444e22

    1. Initial program 22.1

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

      \[\leadsto \frac{a \cdot c + b \cdot d}{\color{blue}{\sqrt{c \cdot c + d \cdot d} \cdot \sqrt{c \cdot c + d \cdot d}}}\]
    4. Applied *-un-lft-identity_binary64_173622.1

      \[\leadsto \frac{\color{blue}{1 \cdot \left(a \cdot c + b \cdot d\right)}}{\sqrt{c \cdot c + d \cdot d} \cdot \sqrt{c \cdot c + d \cdot d}}\]
    5. Applied times-frac_binary64_174222.1

      \[\leadsto \color{blue}{\frac{1}{\sqrt{c \cdot c + d \cdot d}} \cdot \frac{a \cdot c + b \cdot d}{\sqrt{c \cdot c + d \cdot d}}}\]
    6. Simplified22.1

      \[\leadsto \color{blue}{\frac{1}{\sqrt{d \cdot d + c \cdot c}} \cdot \frac{a \cdot c + b \cdot d}{\sqrt{d \cdot d + c \cdot c}}}\]

    if -3084.18200427928195 < c < -9.8394525987137508e-91 or 1.9690354844540234e-126 < c < 1.41635508708514771e142

    1. Initial program 16.3

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

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

      \[\leadsto \color{blue}{\frac{\frac{a \cdot c + b \cdot d}{\sqrt{c \cdot c + d \cdot d}}}{\sqrt{c \cdot c + d \cdot d}}}\]
    5. Simplified16.2

      \[\leadsto \color{blue}{\frac{\frac{a \cdot c + b \cdot d}{\sqrt{d \cdot d + c \cdot c}}}{\sqrt{d \cdot d + c \cdot c}}}\]
  3. Recombined 4 regimes into one program.
  4. Final simplification15.3

    \[\leadsto \begin{array}{l} \mathbf{if}\;c \leq -1.266447775026859 \cdot 10^{+143}:\\ \;\;\;\;\frac{a}{c}\\ \mathbf{elif}\;c \leq -4.7218745403061054 \cdot 10^{+135}:\\ \;\;\;\;\frac{b}{d} + \frac{c \cdot a}{d \cdot d}\\ \mathbf{elif}\;c \leq -2.2148262768226444 \cdot 10^{+22}:\\ \;\;\;\;\frac{1}{\sqrt{d \cdot d + c \cdot c}} \cdot \frac{c \cdot a + b \cdot d}{\sqrt{d \cdot d + c \cdot c}}\\ \mathbf{elif}\;c \leq -3084.182004279282:\\ \;\;\;\;\frac{b}{d} + \frac{c \cdot a}{d \cdot d}\\ \mathbf{elif}\;c \leq -9.83945259871375 \cdot 10^{-91}:\\ \;\;\;\;\frac{\frac{c \cdot a + b \cdot d}{\sqrt{d \cdot d + c \cdot c}}}{\sqrt{d \cdot d + c \cdot c}}\\ \mathbf{elif}\;c \leq 1.9690354844540234 \cdot 10^{-126}:\\ \;\;\;\;\frac{b}{d} + \frac{c \cdot a}{d \cdot d}\\ \mathbf{elif}\;c \leq 1.4163550870851477 \cdot 10^{+142}:\\ \;\;\;\;\frac{\frac{c \cdot a + b \cdot d}{\sqrt{d \cdot d + c \cdot c}}}{\sqrt{d \cdot d + c \cdot c}}\\ \mathbf{else}:\\ \;\;\;\;\frac{a}{c}\\ \end{array}\]

Reproduce

herbie shell --seed 2021042 
(FPCore (a b c d)
  :name "Complex division, real part"
  :precision binary64

  :herbie-target
  (if (< (fabs d) (fabs c)) (/ (+ a (* b (/ d c))) (+ c (* d (/ d c)))) (/ (+ b (* a (/ c d))) (+ d (* c (/ c d)))))

  (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))))