Average Error: 26.0 → 10.8
Time: 18.2s
Precision: binary64
Cost: 20560
\[\frac{a \cdot c + b \cdot d}{c \cdot c + d \cdot d} \]
\[\begin{array}{l} t_0 := \mathsf{fma}\left(d, d, c \cdot c\right)\\ \mathbf{if}\;d \leq -1.0949182900745738 \cdot 10^{+85}:\\ \;\;\;\;\frac{b}{d} + \frac{\frac{a}{d}}{\frac{d}{c}}\\ \mathbf{elif}\;d \leq -2.146933016982573 \cdot 10^{-71}:\\ \;\;\;\;\mathsf{fma}\left(\frac{c}{t_0}, a, d \cdot \frac{b}{t_0}\right)\\ \mathbf{elif}\;d \leq 2 \cdot 10^{-121}:\\ \;\;\;\;\frac{a}{c} + \frac{b - d \cdot \frac{a}{c}}{\frac{c}{\frac{d}{c}}}\\ \mathbf{elif}\;d \leq 1.2320390717440114 \cdot 10^{+132}:\\ \;\;\;\;\frac{1}{\mathsf{hypot}\left(c, d\right)} \cdot \frac{\mathsf{fma}\left(a, c, d \cdot b\right)}{\mathsf{hypot}\left(c, d\right)}\\ \mathbf{else}:\\ \;\;\;\;\frac{b}{d} + \frac{\frac{c}{d}}{\frac{d}{a}}\\ \end{array} \]
(FPCore (a b c d)
 :precision binary64
 (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))))
(FPCore (a b c d)
 :precision binary64
 (let* ((t_0 (fma d d (* c c))))
   (if (<= d -1.0949182900745738e+85)
     (+ (/ b d) (/ (/ a d) (/ d c)))
     (if (<= d -2.146933016982573e-71)
       (fma (/ c t_0) a (* d (/ b t_0)))
       (if (<= d 2e-121)
         (+ (/ a c) (/ (- b (* d (/ a c))) (/ c (/ d c))))
         (if (<= d 1.2320390717440114e+132)
           (* (/ 1.0 (hypot c d)) (/ (fma a c (* d b)) (hypot c d)))
           (+ (/ b d) (/ (/ c d) (/ d a)))))))))
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 t_0 = fma(d, d, (c * c));
	double tmp;
	if (d <= -1.0949182900745738e+85) {
		tmp = (b / d) + ((a / d) / (d / c));
	} else if (d <= -2.146933016982573e-71) {
		tmp = fma((c / t_0), a, (d * (b / t_0)));
	} else if (d <= 2e-121) {
		tmp = (a / c) + ((b - (d * (a / c))) / (c / (d / c)));
	} else if (d <= 1.2320390717440114e+132) {
		tmp = (1.0 / hypot(c, d)) * (fma(a, c, (d * b)) / hypot(c, d));
	} else {
		tmp = (b / d) + ((c / d) / (d / a));
	}
	return tmp;
}
function code(a, b, c, d)
	return Float64(Float64(Float64(a * c) + Float64(b * d)) / Float64(Float64(c * c) + Float64(d * d)))
end
function code(a, b, c, d)
	t_0 = fma(d, d, Float64(c * c))
	tmp = 0.0
	if (d <= -1.0949182900745738e+85)
		tmp = Float64(Float64(b / d) + Float64(Float64(a / d) / Float64(d / c)));
	elseif (d <= -2.146933016982573e-71)
		tmp = fma(Float64(c / t_0), a, Float64(d * Float64(b / t_0)));
	elseif (d <= 2e-121)
		tmp = Float64(Float64(a / c) + Float64(Float64(b - Float64(d * Float64(a / c))) / Float64(c / Float64(d / c))));
	elseif (d <= 1.2320390717440114e+132)
		tmp = Float64(Float64(1.0 / hypot(c, d)) * Float64(fma(a, c, Float64(d * b)) / hypot(c, d)));
	else
		tmp = Float64(Float64(b / d) + Float64(Float64(c / d) / Float64(d / a)));
	end
	return tmp
end
code[a_, b_, c_, d_] := N[(N[(N[(a * c), $MachinePrecision] + N[(b * d), $MachinePrecision]), $MachinePrecision] / N[(N[(c * c), $MachinePrecision] + N[(d * d), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
code[a_, b_, c_, d_] := Block[{t$95$0 = N[(d * d + N[(c * c), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[d, -1.0949182900745738e+85], N[(N[(b / d), $MachinePrecision] + N[(N[(a / d), $MachinePrecision] / N[(d / c), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[d, -2.146933016982573e-71], N[(N[(c / t$95$0), $MachinePrecision] * a + N[(d * N[(b / t$95$0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[d, 2e-121], N[(N[(a / c), $MachinePrecision] + N[(N[(b - N[(d * N[(a / c), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(c / N[(d / c), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[d, 1.2320390717440114e+132], N[(N[(1.0 / N[Sqrt[c ^ 2 + d ^ 2], $MachinePrecision]), $MachinePrecision] * N[(N[(a * c + N[(d * b), $MachinePrecision]), $MachinePrecision] / N[Sqrt[c ^ 2 + d ^ 2], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(b / d), $MachinePrecision] + N[(N[(c / d), $MachinePrecision] / N[(d / a), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]
\frac{a \cdot c + b \cdot d}{c \cdot c + d \cdot d}
\begin{array}{l}
t_0 := \mathsf{fma}\left(d, d, c \cdot c\right)\\
\mathbf{if}\;d \leq -1.0949182900745738 \cdot 10^{+85}:\\
\;\;\;\;\frac{b}{d} + \frac{\frac{a}{d}}{\frac{d}{c}}\\

\mathbf{elif}\;d \leq -2.146933016982573 \cdot 10^{-71}:\\
\;\;\;\;\mathsf{fma}\left(\frac{c}{t_0}, a, d \cdot \frac{b}{t_0}\right)\\

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

\mathbf{elif}\;d \leq 1.2320390717440114 \cdot 10^{+132}:\\
\;\;\;\;\frac{1}{\mathsf{hypot}\left(c, d\right)} \cdot \frac{\mathsf{fma}\left(a, c, d \cdot b\right)}{\mathsf{hypot}\left(c, d\right)}\\

\mathbf{else}:\\
\;\;\;\;\frac{b}{d} + \frac{\frac{c}{d}}{\frac{d}{a}}\\


\end{array}

Error

Target

Original26.0
Target0.4
Herbie10.8
\[\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} \]

Derivation

  1. Split input into 5 regimes
  2. if d < -1.09491829007457385e85

    1. Initial program 38.0

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

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

      \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{c}{d}, \frac{a}{d}, \frac{b}{d}\right)} \]
      Proof
      (fma.f64 (/.f64 c d) (/.f64 a d) (/.f64 b d)): 0 points increase in error, 0 points decrease in error
      (Rewrite<= fma-def_binary64 (+.f64 (*.f64 (/.f64 c d) (/.f64 a d)) (/.f64 b d))): 2 points increase in error, 0 points decrease in error
      (+.f64 (Rewrite<= times-frac_binary64 (/.f64 (*.f64 c a) (*.f64 d d))) (/.f64 b d)): 43 points increase in error, 12 points decrease in error
      (+.f64 (/.f64 (*.f64 c a) (Rewrite<= unpow2_binary64 (pow.f64 d 2))) (/.f64 b d)): 0 points increase in error, 0 points decrease in error
      (Rewrite<= +-commutative_binary64 (+.f64 (/.f64 b d) (/.f64 (*.f64 c a) (pow.f64 d 2)))): 0 points increase in error, 0 points decrease in error
    4. Applied egg-rr11.3

      \[\leadsto \color{blue}{\frac{b}{d} + \frac{c}{d} \cdot \frac{a}{d}} \]
    5. Applied egg-rr11.3

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

    if -1.09491829007457385e85 < d < -2.14693301698257294e-71

    1. Initial program 15.2

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

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

      \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{c}{\mathsf{fma}\left(d, d, c \cdot c\right)}, a, d \cdot \frac{b}{\mathsf{fma}\left(d, d, c \cdot c\right)}\right)} \]
      Proof
      (fma.f64 (/.f64 c (fma.f64 d d (*.f64 c c))) a (*.f64 d (/.f64 b (fma.f64 d d (*.f64 c c))))): 0 points increase in error, 0 points decrease in error
      (fma.f64 (/.f64 c (fma.f64 d d (Rewrite<= unpow2_binary64 (pow.f64 c 2)))) a (*.f64 d (/.f64 b (fma.f64 d d (*.f64 c c))))): 0 points increase in error, 0 points decrease in error
      (fma.f64 (/.f64 c (Rewrite<= fma-def_binary64 (+.f64 (*.f64 d d) (pow.f64 c 2)))) a (*.f64 d (/.f64 b (fma.f64 d d (*.f64 c c))))): 0 points increase in error, 0 points decrease in error
      (fma.f64 (/.f64 c (+.f64 (Rewrite<= unpow2_binary64 (pow.f64 d 2)) (pow.f64 c 2))) a (*.f64 d (/.f64 b (fma.f64 d d (*.f64 c c))))): 0 points increase in error, 0 points decrease in error
      (fma.f64 (/.f64 c (+.f64 (pow.f64 d 2) (pow.f64 c 2))) a (*.f64 d (/.f64 b (fma.f64 d d (Rewrite<= unpow2_binary64 (pow.f64 c 2)))))): 0 points increase in error, 0 points decrease in error
      (fma.f64 (/.f64 c (+.f64 (pow.f64 d 2) (pow.f64 c 2))) a (*.f64 d (/.f64 b (Rewrite<= fma-def_binary64 (+.f64 (*.f64 d d) (pow.f64 c 2)))))): 0 points increase in error, 0 points decrease in error
      (fma.f64 (/.f64 c (+.f64 (pow.f64 d 2) (pow.f64 c 2))) a (*.f64 d (/.f64 b (+.f64 (Rewrite<= unpow2_binary64 (pow.f64 d 2)) (pow.f64 c 2))))): 0 points increase in error, 0 points decrease in error
      (fma.f64 (/.f64 c (+.f64 (pow.f64 d 2) (pow.f64 c 2))) a (Rewrite<= *-commutative_binary64 (*.f64 (/.f64 b (+.f64 (pow.f64 d 2) (pow.f64 c 2))) d))): 0 points increase in error, 0 points decrease in error
      (fma.f64 (/.f64 c (+.f64 (pow.f64 d 2) (pow.f64 c 2))) a (Rewrite<= associate-/r/_binary64 (/.f64 b (/.f64 (+.f64 (pow.f64 d 2) (pow.f64 c 2)) d)))): 4 points increase in error, 21 points decrease in error
      (fma.f64 (/.f64 c (+.f64 (pow.f64 d 2) (pow.f64 c 2))) a (Rewrite<= associate-/l*_binary64 (/.f64 (*.f64 b d) (+.f64 (pow.f64 d 2) (pow.f64 c 2))))): 50 points increase in error, 4 points decrease in error
      (fma.f64 (/.f64 c (+.f64 (pow.f64 d 2) (pow.f64 c 2))) a (/.f64 (Rewrite<= *-commutative_binary64 (*.f64 d b)) (+.f64 (pow.f64 d 2) (pow.f64 c 2)))): 0 points increase in error, 0 points decrease in error
      (Rewrite<= fma-def_binary64 (+.f64 (*.f64 (/.f64 c (+.f64 (pow.f64 d 2) (pow.f64 c 2))) a) (/.f64 (*.f64 d b) (+.f64 (pow.f64 d 2) (pow.f64 c 2))))): 0 points increase in error, 0 points decrease in error
      (+.f64 (Rewrite=> associate-*l/_binary64 (/.f64 (*.f64 c a) (+.f64 (pow.f64 d 2) (pow.f64 c 2)))) (/.f64 (*.f64 d b) (+.f64 (pow.f64 d 2) (pow.f64 c 2)))): 47 points increase in error, 16 points decrease in error
      (Rewrite<= +-commutative_binary64 (+.f64 (/.f64 (*.f64 d b) (+.f64 (pow.f64 d 2) (pow.f64 c 2))) (/.f64 (*.f64 c a) (+.f64 (pow.f64 d 2) (pow.f64 c 2))))): 0 points increase in error, 0 points decrease in error

    if -2.14693301698257294e-71 < d < 2e-121

    1. Initial program 21.2

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

      \[\leadsto \color{blue}{\frac{a}{c} + \left(-1 \cdot \frac{a \cdot {d}^{2}}{{c}^{3}} + \frac{d \cdot b}{{c}^{2}}\right)} \]
    3. Simplified12.3

      \[\leadsto \color{blue}{\frac{a}{c} + \frac{d}{c \cdot c} \cdot \left(b - \frac{d \cdot a}{c}\right)} \]
      Proof
      (+.f64 (/.f64 a c) (*.f64 (/.f64 d (*.f64 c c)) (-.f64 b (/.f64 (*.f64 d a) c)))): 0 points increase in error, 0 points decrease in error
      (+.f64 (/.f64 a c) (*.f64 (/.f64 d (Rewrite<= unpow2_binary64 (pow.f64 c 2))) (-.f64 b (/.f64 (*.f64 d a) c)))): 0 points increase in error, 0 points decrease in error
      (+.f64 (/.f64 a c) (*.f64 (/.f64 d (pow.f64 c 2)) (-.f64 b (/.f64 (Rewrite=> *-commutative_binary64 (*.f64 a d)) c)))): 0 points increase in error, 0 points decrease in error
      (+.f64 (/.f64 a c) (Rewrite<= distribute-rgt-out--_binary64 (-.f64 (*.f64 b (/.f64 d (pow.f64 c 2))) (*.f64 (/.f64 (*.f64 a d) c) (/.f64 d (pow.f64 c 2)))))): 2 points increase in error, 0 points decrease in error
      (+.f64 (/.f64 a c) (-.f64 (Rewrite<= *-commutative_binary64 (*.f64 (/.f64 d (pow.f64 c 2)) b)) (*.f64 (/.f64 (*.f64 a d) c) (/.f64 d (pow.f64 c 2))))): 0 points increase in error, 0 points decrease in error
      (+.f64 (/.f64 a c) (-.f64 (Rewrite=> associate-*l/_binary64 (/.f64 (*.f64 d b) (pow.f64 c 2))) (*.f64 (/.f64 (*.f64 a d) c) (/.f64 d (pow.f64 c 2))))): 13 points increase in error, 3 points decrease in error
      (+.f64 (/.f64 a c) (-.f64 (/.f64 (*.f64 d b) (pow.f64 c 2)) (Rewrite<= times-frac_binary64 (/.f64 (*.f64 (*.f64 a d) d) (*.f64 c (pow.f64 c 2)))))): 22 points increase in error, 4 points decrease in error
      (+.f64 (/.f64 a c) (-.f64 (/.f64 (*.f64 d b) (pow.f64 c 2)) (/.f64 (Rewrite<= associate-*r*_binary64 (*.f64 a (*.f64 d d))) (*.f64 c (pow.f64 c 2))))): 8 points increase in error, 0 points decrease in error
      (+.f64 (/.f64 a c) (-.f64 (/.f64 (*.f64 d b) (pow.f64 c 2)) (/.f64 (*.f64 a (Rewrite<= unpow2_binary64 (pow.f64 d 2))) (*.f64 c (pow.f64 c 2))))): 0 points increase in error, 0 points decrease in error
      (+.f64 (/.f64 a c) (-.f64 (/.f64 (*.f64 d b) (pow.f64 c 2)) (/.f64 (*.f64 a (pow.f64 d 2)) (*.f64 c (Rewrite=> unpow2_binary64 (*.f64 c c)))))): 0 points increase in error, 0 points decrease in error
      (+.f64 (/.f64 a c) (-.f64 (/.f64 (*.f64 d b) (pow.f64 c 2)) (/.f64 (*.f64 a (pow.f64 d 2)) (Rewrite<= cube-mult_binary64 (pow.f64 c 3))))): 0 points increase in error, 0 points decrease in error
      (+.f64 (/.f64 a c) (Rewrite<= unsub-neg_binary64 (+.f64 (/.f64 (*.f64 d b) (pow.f64 c 2)) (neg.f64 (/.f64 (*.f64 a (pow.f64 d 2)) (pow.f64 c 3)))))): 0 points increase in error, 0 points decrease in error
      (+.f64 (/.f64 a c) (+.f64 (/.f64 (*.f64 d b) (pow.f64 c 2)) (Rewrite<= mul-1-neg_binary64 (*.f64 -1 (/.f64 (*.f64 a (pow.f64 d 2)) (pow.f64 c 3)))))): 0 points increase in error, 0 points decrease in error
      (+.f64 (/.f64 a c) (Rewrite<= +-commutative_binary64 (+.f64 (*.f64 -1 (/.f64 (*.f64 a (pow.f64 d 2)) (pow.f64 c 3))) (/.f64 (*.f64 d b) (pow.f64 c 2))))): 0 points increase in error, 0 points decrease in error
    4. Applied egg-rr9.4

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

    if 2e-121 < d < 1.2320390717440114e132

    1. Initial program 17.5

      \[\frac{a \cdot c + b \cdot d}{c \cdot c + d \cdot d} \]
    2. Applied egg-rr12.9

      \[\leadsto \color{blue}{\frac{1}{\mathsf{hypot}\left(c, d\right)} \cdot \frac{\mathsf{fma}\left(a, c, b \cdot d\right)}{\mathsf{hypot}\left(c, d\right)}} \]

    if 1.2320390717440114e132 < d

    1. Initial program 42.1

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

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

      \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{c}{d}, \frac{a}{d}, \frac{b}{d}\right)} \]
      Proof
      (fma.f64 (/.f64 c d) (/.f64 a d) (/.f64 b d)): 0 points increase in error, 0 points decrease in error
      (Rewrite<= fma-def_binary64 (+.f64 (*.f64 (/.f64 c d) (/.f64 a d)) (/.f64 b d))): 2 points increase in error, 0 points decrease in error
      (+.f64 (Rewrite<= times-frac_binary64 (/.f64 (*.f64 c a) (*.f64 d d))) (/.f64 b d)): 43 points increase in error, 12 points decrease in error
      (+.f64 (/.f64 (*.f64 c a) (Rewrite<= unpow2_binary64 (pow.f64 d 2))) (/.f64 b d)): 0 points increase in error, 0 points decrease in error
      (Rewrite<= +-commutative_binary64 (+.f64 (/.f64 b d) (/.f64 (*.f64 c a) (pow.f64 d 2)))): 0 points increase in error, 0 points decrease in error
    4. Applied egg-rr8.3

      \[\leadsto \color{blue}{\frac{b}{d} + \frac{c}{d} \cdot \frac{a}{d}} \]
    5. Applied egg-rr8.3

      \[\leadsto \frac{b}{d} + \color{blue}{\frac{\frac{c}{d}}{\frac{d}{a}}} \]
  3. Recombined 5 regimes into one program.
  4. Final simplification10.8

    \[\leadsto \begin{array}{l} \mathbf{if}\;d \leq -1.0949182900745738 \cdot 10^{+85}:\\ \;\;\;\;\frac{b}{d} + \frac{\frac{a}{d}}{\frac{d}{c}}\\ \mathbf{elif}\;d \leq -2.146933016982573 \cdot 10^{-71}:\\ \;\;\;\;\mathsf{fma}\left(\frac{c}{\mathsf{fma}\left(d, d, c \cdot c\right)}, a, d \cdot \frac{b}{\mathsf{fma}\left(d, d, c \cdot c\right)}\right)\\ \mathbf{elif}\;d \leq 2 \cdot 10^{-121}:\\ \;\;\;\;\frac{a}{c} + \frac{b - d \cdot \frac{a}{c}}{\frac{c}{\frac{d}{c}}}\\ \mathbf{elif}\;d \leq 1.2320390717440114 \cdot 10^{+132}:\\ \;\;\;\;\frac{1}{\mathsf{hypot}\left(c, d\right)} \cdot \frac{\mathsf{fma}\left(a, c, d \cdot b\right)}{\mathsf{hypot}\left(c, d\right)}\\ \mathbf{else}:\\ \;\;\;\;\frac{b}{d} + \frac{\frac{c}{d}}{\frac{d}{a}}\\ \end{array} \]

Alternatives

Alternative 1
Error10.6
Cost20560
\[\begin{array}{l} t_0 := \frac{1}{\mathsf{hypot}\left(c, d\right)} \cdot \frac{\mathsf{fma}\left(a, c, d \cdot b\right)}{\mathsf{hypot}\left(c, d\right)}\\ \mathbf{if}\;c \leq -2.0068511289131843 \cdot 10^{+124}:\\ \;\;\;\;\frac{a}{c} + \frac{d \cdot \frac{b}{c}}{c}\\ \mathbf{elif}\;c \leq -1 \cdot 10^{-200}:\\ \;\;\;\;t_0\\ \mathbf{elif}\;c \leq 4.6926259780825635 \cdot 10^{-76}:\\ \;\;\;\;\mathsf{fma}\left(\frac{c}{d}, \frac{a}{d}, \frac{b}{d}\right)\\ \mathbf{elif}\;c \leq 3.482515939733231 \cdot 10^{+75}:\\ \;\;\;\;t_0\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\frac{d}{c}, \frac{b}{c}, \frac{a}{c}\right)\\ \end{array} \]
Alternative 2
Error16.4
Cost1560
\[\begin{array}{l} t_0 := \frac{a}{c} + \frac{d \cdot \frac{b}{c}}{c}\\ \mathbf{if}\;c \leq -2.0068511289131843 \cdot 10^{+124}:\\ \;\;\;\;t_0\\ \mathbf{elif}\;c \leq -1.946233597391624 \cdot 10^{+86}:\\ \;\;\;\;\frac{b}{d} + \frac{a}{d} \cdot \frac{c}{d}\\ \mathbf{elif}\;c \leq -1.2298125846985904 \cdot 10^{-11}:\\ \;\;\;\;t_0\\ \mathbf{elif}\;c \leq -7.080983159766232 \cdot 10^{-112}:\\ \;\;\;\;\frac{b}{d} + \frac{\frac{c}{d}}{\frac{d}{a}}\\ \mathbf{elif}\;c \leq -2.35 \cdot 10^{-151}:\\ \;\;\;\;\frac{a \cdot c}{c \cdot c + d \cdot d}\\ \mathbf{elif}\;c \leq 4.293590831195469 \cdot 10^{-10}:\\ \;\;\;\;\frac{b}{d} - \frac{a \cdot \frac{c}{d}}{-d}\\ \mathbf{else}:\\ \;\;\;\;t_0\\ \end{array} \]
Alternative 3
Error20.9
Cost1496
\[\begin{array}{l} t_0 := \frac{b}{d} + a \cdot \frac{\frac{c}{d}}{d}\\ \mathbf{if}\;c \leq -2.0068511289131843 \cdot 10^{+124}:\\ \;\;\;\;\frac{a}{c}\\ \mathbf{elif}\;c \leq -1.946233597391624 \cdot 10^{+86}:\\ \;\;\;\;t_0\\ \mathbf{elif}\;c \leq -9.915289969042209 \cdot 10^{+29}:\\ \;\;\;\;\frac{a}{c}\\ \mathbf{elif}\;c \leq -7.080983159766232 \cdot 10^{-112}:\\ \;\;\;\;t_0\\ \mathbf{elif}\;c \leq -1.9 \cdot 10^{-145}:\\ \;\;\;\;\frac{a}{c}\\ \mathbf{elif}\;c \leq 4.293590831195469 \cdot 10^{-10}:\\ \;\;\;\;t_0\\ \mathbf{else}:\\ \;\;\;\;\frac{a}{c}\\ \end{array} \]
Alternative 4
Error16.8
Cost1496
\[\begin{array}{l} t_0 := \frac{b}{d} + a \cdot \frac{\frac{c}{d}}{d}\\ t_1 := \frac{a}{c} + \frac{d \cdot \frac{b}{c}}{c}\\ \mathbf{if}\;c \leq -2.0068511289131843 \cdot 10^{+124}:\\ \;\;\;\;t_1\\ \mathbf{elif}\;c \leq -8.630568195952071 \cdot 10^{+90}:\\ \;\;\;\;t_0\\ \mathbf{elif}\;c \leq -1.2298125846985904 \cdot 10^{-11}:\\ \;\;\;\;t_1\\ \mathbf{elif}\;c \leq -7.080983159766232 \cdot 10^{-112}:\\ \;\;\;\;\frac{b}{d} + \frac{a \cdot c}{d \cdot d}\\ \mathbf{elif}\;c \leq -1 \cdot 10^{-140}:\\ \;\;\;\;t_1\\ \mathbf{elif}\;c \leq 4.293590831195469 \cdot 10^{-10}:\\ \;\;\;\;t_0\\ \mathbf{else}:\\ \;\;\;\;t_1\\ \end{array} \]
Alternative 5
Error16.6
Cost1496
\[\begin{array}{l} t_0 := \frac{b}{d} + \frac{\frac{c}{d}}{\frac{d}{a}}\\ t_1 := \frac{a}{c} + \frac{d \cdot \frac{b}{c}}{c}\\ \mathbf{if}\;c \leq -2.0068511289131843 \cdot 10^{+124}:\\ \;\;\;\;t_1\\ \mathbf{elif}\;c \leq -8.630568195952071 \cdot 10^{+90}:\\ \;\;\;\;t_0\\ \mathbf{elif}\;c \leq -1.2298125846985904 \cdot 10^{-11}:\\ \;\;\;\;t_1\\ \mathbf{elif}\;c \leq -7.080983159766232 \cdot 10^{-112}:\\ \;\;\;\;t_0\\ \mathbf{elif}\;c \leq -1 \cdot 10^{-140}:\\ \;\;\;\;t_1\\ \mathbf{elif}\;c \leq 4.293590831195469 \cdot 10^{-10}:\\ \;\;\;\;\frac{b}{d} + a \cdot \frac{\frac{c}{d}}{d}\\ \mathbf{else}:\\ \;\;\;\;t_1\\ \end{array} \]
Alternative 6
Error16.7
Cost1496
\[\begin{array}{l} t_0 := \frac{a}{c} + \frac{d \cdot \frac{b}{c}}{c}\\ \mathbf{if}\;c \leq -2.0068511289131843 \cdot 10^{+124}:\\ \;\;\;\;t_0\\ \mathbf{elif}\;c \leq -1.946233597391624 \cdot 10^{+86}:\\ \;\;\;\;\frac{b}{d} + \frac{\frac{a}{d}}{\frac{d}{c}}\\ \mathbf{elif}\;c \leq -1.2298125846985904 \cdot 10^{-11}:\\ \;\;\;\;t_0\\ \mathbf{elif}\;c \leq -7.080983159766232 \cdot 10^{-112}:\\ \;\;\;\;\frac{b}{d} + \frac{\frac{c}{d}}{\frac{d}{a}}\\ \mathbf{elif}\;c \leq -1 \cdot 10^{-140}:\\ \;\;\;\;t_0\\ \mathbf{elif}\;c \leq 4.293590831195469 \cdot 10^{-10}:\\ \;\;\;\;\frac{b}{d} + a \cdot \frac{\frac{c}{d}}{d}\\ \mathbf{else}:\\ \;\;\;\;t_0\\ \end{array} \]
Alternative 7
Error16.7
Cost1496
\[\begin{array}{l} t_0 := \frac{a}{c} + \frac{d \cdot \frac{b}{c}}{c}\\ \mathbf{if}\;c \leq -2.0068511289131843 \cdot 10^{+124}:\\ \;\;\;\;t_0\\ \mathbf{elif}\;c \leq -1.946233597391624 \cdot 10^{+86}:\\ \;\;\;\;\frac{b}{d} + \frac{a}{d} \cdot \frac{c}{d}\\ \mathbf{elif}\;c \leq -1.2298125846985904 \cdot 10^{-11}:\\ \;\;\;\;t_0\\ \mathbf{elif}\;c \leq -7.080983159766232 \cdot 10^{-112}:\\ \;\;\;\;\frac{b}{d} + \frac{\frac{c}{d}}{\frac{d}{a}}\\ \mathbf{elif}\;c \leq -1 \cdot 10^{-140}:\\ \;\;\;\;t_0\\ \mathbf{elif}\;c \leq 4.293590831195469 \cdot 10^{-10}:\\ \;\;\;\;\frac{b}{d} + a \cdot \frac{\frac{c}{d}}{d}\\ \mathbf{else}:\\ \;\;\;\;t_0\\ \end{array} \]
Alternative 8
Error16.8
Cost1496
\[\begin{array}{l} t_0 := \frac{a}{c} + \frac{d \cdot \frac{b}{c}}{c}\\ \mathbf{if}\;c \leq -2.0068511289131843 \cdot 10^{+124}:\\ \;\;\;\;t_0\\ \mathbf{elif}\;c \leq -1.946233597391624 \cdot 10^{+86}:\\ \;\;\;\;\frac{b}{d} + \frac{a}{d} \cdot \frac{c}{d}\\ \mathbf{elif}\;c \leq -1.2298125846985904 \cdot 10^{-11}:\\ \;\;\;\;t_0\\ \mathbf{elif}\;c \leq -7.080983159766232 \cdot 10^{-112}:\\ \;\;\;\;\frac{b}{d} + \frac{\frac{c}{d}}{\frac{d}{a}}\\ \mathbf{elif}\;c \leq -2.35 \cdot 10^{-151}:\\ \;\;\;\;\frac{a \cdot c}{c \cdot c + d \cdot d}\\ \mathbf{elif}\;c \leq 4.293590831195469 \cdot 10^{-10}:\\ \;\;\;\;\frac{b}{d} + a \cdot \frac{\frac{c}{d}}{d}\\ \mathbf{else}:\\ \;\;\;\;t_0\\ \end{array} \]
Alternative 9
Error14.2
Cost1356
\[\begin{array}{l} \mathbf{if}\;d \leq -4.083455114343713 \cdot 10^{+83}:\\ \;\;\;\;\frac{b}{d} + \frac{\frac{a}{d}}{\frac{d}{c}}\\ \mathbf{elif}\;d \leq 2 \cdot 10^{-121}:\\ \;\;\;\;\frac{a}{c} + \frac{d \cdot \frac{b}{c}}{c}\\ \mathbf{elif}\;d \leq 1.2320390717440114 \cdot 10^{+132}:\\ \;\;\;\;\frac{d \cdot b + a \cdot c}{c \cdot c + d \cdot d}\\ \mathbf{else}:\\ \;\;\;\;\frac{b}{d} + \frac{\frac{c}{d}}{\frac{d}{a}}\\ \end{array} \]
Alternative 10
Error14.5
Cost1356
\[\begin{array}{l} \mathbf{if}\;d \leq -4.083455114343713 \cdot 10^{+83}:\\ \;\;\;\;\frac{b}{d} + \frac{\frac{a}{d}}{\frac{d}{c}}\\ \mathbf{elif}\;d \leq 2 \cdot 10^{-121}:\\ \;\;\;\;\frac{a}{c} + \frac{b - d \cdot \frac{a}{c}}{\frac{c}{\frac{d}{c}}}\\ \mathbf{elif}\;d \leq 1.2320390717440114 \cdot 10^{+132}:\\ \;\;\;\;\frac{d \cdot b + a \cdot c}{c \cdot c + d \cdot d}\\ \mathbf{else}:\\ \;\;\;\;\frac{b}{d} + \frac{\frac{c}{d}}{\frac{d}{a}}\\ \end{array} \]
Alternative 11
Error13.9
Cost1356
\[\begin{array}{l} \mathbf{if}\;d \leq -4.083455114343713 \cdot 10^{+83}:\\ \;\;\;\;\frac{b}{d} + \frac{\frac{a}{d}}{\frac{d}{c}}\\ \mathbf{elif}\;d \leq 2 \cdot 10^{-121}:\\ \;\;\;\;\frac{a}{c} + \frac{\frac{d}{c} \cdot \left(b - d \cdot \frac{a}{c}\right)}{c}\\ \mathbf{elif}\;d \leq 1.2320390717440114 \cdot 10^{+132}:\\ \;\;\;\;\frac{d \cdot b + a \cdot c}{c \cdot c + d \cdot d}\\ \mathbf{else}:\\ \;\;\;\;\frac{b}{d} + \frac{\frac{c}{d}}{\frac{d}{a}}\\ \end{array} \]
Alternative 12
Error24.6
Cost984
\[\begin{array}{l} \mathbf{if}\;c \leq -2.0068511289131843 \cdot 10^{+124}:\\ \;\;\;\;\frac{a}{c}\\ \mathbf{elif}\;c \leq -2.353915732253755 \cdot 10^{+90}:\\ \;\;\;\;\frac{b}{d}\\ \mathbf{elif}\;c \leq -9.915289969042209 \cdot 10^{+29}:\\ \;\;\;\;\frac{a}{c}\\ \mathbf{elif}\;c \leq -7.080983159766232 \cdot 10^{-112}:\\ \;\;\;\;\frac{b}{d}\\ \mathbf{elif}\;c \leq -1.22 \cdot 10^{-147}:\\ \;\;\;\;\frac{a}{c}\\ \mathbf{elif}\;c \leq 7.245367067430426 \cdot 10^{-18}:\\ \;\;\;\;\frac{b}{d}\\ \mathbf{else}:\\ \;\;\;\;\frac{a}{c}\\ \end{array} \]
Alternative 13
Error37.6
Cost192
\[\frac{b}{d} \]

Error

Reproduce

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