Average Error: 28.7 → 0.3
Time: 46.1s
Precision: binary64
Cost: 28168
\[\left(\left(1.0536712127723509 \cdot 10^{-8} < a \land a < 94906265.62425156\right) \land \left(1.0536712127723509 \cdot 10^{-8} < b \land b < 94906265.62425156\right)\right) \land \left(1.0536712127723509 \cdot 10^{-8} < c \land c < 94906265.62425156\right)\]
\[\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a} \]
\[\begin{array}{l} t_0 := 0 + \frac{c}{a}\\ t_1 := \sqrt{\mathsf{fma}\left(b, b, \left(c \cdot -4\right) \cdot a\right)}\\ t_2 := \sqrt{\mathsf{fma}\left(b, b, a \cdot \left(c \cdot -4\right)\right)} + b\\ \mathbf{if}\;\frac{0.5}{a} \cdot t_1 - \frac{0.5}{a} \cdot \left(-b\right) \ne 0:\\ \;\;\;\;\begin{array}{l} \mathbf{if}\;a \ne 0:\\ \;\;\;\;\frac{t_0 \cdot a}{-0.5 \cdot t_2}\\ \mathbf{else}:\\ \;\;\;\;\frac{t_0}{\frac{-0.5}{a} \cdot t_2}\\ \end{array}\\ \mathbf{else}:\\ \;\;\;\;\left(t_1 - b\right) \cdot \frac{0.5}{a}\\ \end{array} \]
(FPCore (a b c)
 :precision binary64
 (/ (+ (- b) (sqrt (- (* b b) (* (* 4.0 a) c)))) (* 2.0 a)))
(FPCore (a b c)
 :precision binary64
 (let* ((t_0 (+ 0.0 (/ c a)))
        (t_1 (sqrt (fma b b (* (* c -4.0) a))))
        (t_2 (+ (sqrt (fma b b (* a (* c -4.0)))) b)))
   (if (!= (- (* (/ 0.5 a) t_1) (* (/ 0.5 a) (- b))) 0.0)
     (if (!= a 0.0) (/ (* t_0 a) (* -0.5 t_2)) (/ t_0 (* (/ -0.5 a) t_2)))
     (* (- t_1 b) (/ 0.5 a)))))
double code(double a, double b, double c) {
	return (-b + sqrt(((b * b) - ((4.0 * a) * c)))) / (2.0 * a);
}
double code(double a, double b, double c) {
	double t_0 = 0.0 + (c / a);
	double t_1 = sqrt(fma(b, b, ((c * -4.0) * a)));
	double t_2 = sqrt(fma(b, b, (a * (c * -4.0)))) + b;
	double tmp_1;
	if ((((0.5 / a) * t_1) - ((0.5 / a) * -b)) != 0.0) {
		double tmp_2;
		if (a != 0.0) {
			tmp_2 = (t_0 * a) / (-0.5 * t_2);
		} else {
			tmp_2 = t_0 / ((-0.5 / a) * t_2);
		}
		tmp_1 = tmp_2;
	} else {
		tmp_1 = (t_1 - b) * (0.5 / a);
	}
	return tmp_1;
}
function code(a, b, c)
	return Float64(Float64(Float64(-b) + sqrt(Float64(Float64(b * b) - Float64(Float64(4.0 * a) * c)))) / Float64(2.0 * a))
end
function code(a, b, c)
	t_0 = Float64(0.0 + Float64(c / a))
	t_1 = sqrt(fma(b, b, Float64(Float64(c * -4.0) * a)))
	t_2 = Float64(sqrt(fma(b, b, Float64(a * Float64(c * -4.0)))) + b)
	tmp_1 = 0.0
	if (Float64(Float64(Float64(0.5 / a) * t_1) - Float64(Float64(0.5 / a) * Float64(-b))) != 0.0)
		tmp_2 = 0.0
		if (a != 0.0)
			tmp_2 = Float64(Float64(t_0 * a) / Float64(-0.5 * t_2));
		else
			tmp_2 = Float64(t_0 / Float64(Float64(-0.5 / a) * t_2));
		end
		tmp_1 = tmp_2;
	else
		tmp_1 = Float64(Float64(t_1 - b) * Float64(0.5 / a));
	end
	return tmp_1
end
code[a_, b_, c_] := N[(N[((-b) + N[Sqrt[N[(N[(b * b), $MachinePrecision] - N[(N[(4.0 * a), $MachinePrecision] * c), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / N[(2.0 * a), $MachinePrecision]), $MachinePrecision]
code[a_, b_, c_] := Block[{t$95$0 = N[(0.0 + N[(c / a), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[Sqrt[N[(b * b + N[(N[(c * -4.0), $MachinePrecision] * a), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$2 = N[(N[Sqrt[N[(b * b + N[(a * N[(c * -4.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] + b), $MachinePrecision]}, If[Unequal[N[(N[(N[(0.5 / a), $MachinePrecision] * t$95$1), $MachinePrecision] - N[(N[(0.5 / a), $MachinePrecision] * (-b)), $MachinePrecision]), $MachinePrecision], 0.0], If[Unequal[a, 0.0], N[(N[(t$95$0 * a), $MachinePrecision] / N[(-0.5 * t$95$2), $MachinePrecision]), $MachinePrecision], N[(t$95$0 / N[(N[(-0.5 / a), $MachinePrecision] * t$95$2), $MachinePrecision]), $MachinePrecision]], N[(N[(t$95$1 - b), $MachinePrecision] * N[(0.5 / a), $MachinePrecision]), $MachinePrecision]]]]]
\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}
\begin{array}{l}
t_0 := 0 + \frac{c}{a}\\
t_1 := \sqrt{\mathsf{fma}\left(b, b, \left(c \cdot -4\right) \cdot a\right)}\\
t_2 := \sqrt{\mathsf{fma}\left(b, b, a \cdot \left(c \cdot -4\right)\right)} + b\\
\mathbf{if}\;\frac{0.5}{a} \cdot t_1 - \frac{0.5}{a} \cdot \left(-b\right) \ne 0:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;a \ne 0:\\
\;\;\;\;\frac{t_0 \cdot a}{-0.5 \cdot t_2}\\

\mathbf{else}:\\
\;\;\;\;\frac{t_0}{\frac{-0.5}{a} \cdot t_2}\\


\end{array}\\

\mathbf{else}:\\
\;\;\;\;\left(t_1 - b\right) \cdot \frac{0.5}{a}\\


\end{array}

Error

Derivation

  1. Initial program 28.7

    \[\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a} \]
  2. Simplified28.7

    \[\leadsto \color{blue}{\left(\sqrt{\mathsf{fma}\left(b, b, \left(-4 \cdot a\right) \cdot c\right)} - b\right) \cdot \frac{0.5}{a}} \]
    Proof
  3. Applied egg-rr29.3

    \[\leadsto \color{blue}{\begin{array}{l} \color{blue}{\mathbf{if}\;\frac{0.5}{a} \cdot \sqrt{\mathsf{fma}\left(b, b, \left(c \cdot -4\right) \cdot a\right)} - \frac{0.5}{a} \cdot \left(-b\right) \ne 0:\\ \;\;\;\;\frac{\left(\frac{0.5}{a} \cdot \sqrt{\mathsf{fma}\left(b, b, \left(c \cdot -4\right) \cdot a\right)}\right) \cdot \left(\frac{0.5}{a} \cdot \sqrt{\mathsf{fma}\left(b, b, \left(c \cdot -4\right) \cdot a\right)}\right) - \left(\frac{0.5}{a} \cdot \left(-b\right)\right) \cdot \left(\frac{0.5}{a} \cdot \left(-b\right)\right)}{\frac{0.5}{a} \cdot \sqrt{\mathsf{fma}\left(b, b, \left(c \cdot -4\right) \cdot a\right)} - \frac{0.5}{a} \cdot \left(-b\right)}\\ \mathbf{else}:\\ \;\;\;\;\left(\sqrt{\mathsf{fma}\left(b, b, \left(c \cdot -4\right) \cdot a\right)} - b\right) \cdot \frac{0.5}{a}\\ } \end{array}} \]
  4. Taylor expanded in a around 0 0.5

    \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{0.5}{a} \cdot \sqrt{\mathsf{fma}\left(b, b, \left(c \cdot -4\right) \cdot a\right)} - \frac{0.5}{a} \cdot \left(-b\right) \ne 0:\\ \;\;\;\;\frac{\color{blue}{-1 \cdot \frac{c}{a} + \left(0.25 \cdot {\left(\sqrt{{b}^{2}}\right)}^{2} - 0.25 \cdot {b}^{2}\right) \cdot {a}^{-2}}}{\frac{0.5}{a} \cdot \sqrt{\mathsf{fma}\left(b, b, \left(c \cdot -4\right) \cdot a\right)} - \frac{0.5}{a} \cdot \left(-b\right)}\\ \mathbf{else}:\\ \;\;\;\;\left(\sqrt{\mathsf{fma}\left(b, b, \left(c \cdot -4\right) \cdot a\right)} - b\right) \cdot \frac{0.5}{a}\\ \end{array} \]
  5. Simplified0.5

    \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{0.5}{a} \cdot \sqrt{\mathsf{fma}\left(b, b, \left(c \cdot -4\right) \cdot a\right)} - \frac{0.5}{a} \cdot \left(-b\right) \ne 0:\\ \;\;\;\;\frac{\color{blue}{\left(-\frac{c}{a}\right) + \left(0.25 \cdot \left({\left(\sqrt{b \cdot b}\right)}^{2} - b \cdot b\right)\right) \cdot {a}^{-2}}}{\frac{0.5}{a} \cdot \sqrt{\mathsf{fma}\left(b, b, \left(c \cdot -4\right) \cdot a\right)} - \frac{0.5}{a} \cdot \left(-b\right)}\\ \mathbf{else}:\\ \;\;\;\;\left(\sqrt{\mathsf{fma}\left(b, b, \left(c \cdot -4\right) \cdot a\right)} - b\right) \cdot \frac{0.5}{a}\\ \end{array} \]
    Proof
  6. Applied egg-rr0.4

    \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{0.5}{a} \cdot \sqrt{\mathsf{fma}\left(b, b, \left(c \cdot -4\right) \cdot a\right)} - \frac{0.5}{a} \cdot \left(-b\right) \ne 0:\\ \;\;\;\;\color{blue}{\begin{array}{l} \color{blue}{\mathbf{if}\;a \ne 0:\\ \;\;\;\;\frac{\mathsf{fma}\left(0 \cdot 0.25, {a}^{-2}, \frac{c}{a}\right)}{-0.5 \cdot \left(\sqrt{\mathsf{fma}\left(b, b, \left(c \cdot -4\right) \cdot a\right)} + b\right)} \cdot a\\ \mathbf{else}:\\ \;\;\;\;\frac{\mathsf{fma}\left(0 \cdot 0.25, {a}^{-2}, \frac{c}{a}\right)}{\frac{-0.5}{a} \cdot \left(\sqrt{\mathsf{fma}\left(b, b, \left(c \cdot -4\right) \cdot a\right)} + b\right)}\\ } \end{array}}\\ \mathbf{else}:\\ \;\;\;\;\left(\sqrt{\mathsf{fma}\left(b, b, \left(c \cdot -4\right) \cdot a\right)} - b\right) \cdot \frac{0.5}{a}\\ \end{array} \]
  7. Simplified0.3

    \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{0.5}{a} \cdot \sqrt{\mathsf{fma}\left(b, b, \left(c \cdot -4\right) \cdot a\right)} - \frac{0.5}{a} \cdot \left(-b\right) \ne 0:\\ \;\;\;\;\color{blue}{\begin{array}{l} \color{blue}{\mathbf{if}\;a \ne 0:\\ \;\;\;\;\frac{\left(0 + \frac{c}{a}\right) \cdot a}{-0.5 \cdot \left(\sqrt{\mathsf{fma}\left(b, b, a \cdot \left(c \cdot -4\right)\right)} + b\right)}\\ \mathbf{else}:\\ \;\;\;\;\frac{0 + \frac{c}{a}}{\frac{-0.5}{a} \cdot \left(\sqrt{\mathsf{fma}\left(b, b, a \cdot \left(c \cdot -4\right)\right)} + b\right)}\\ } \end{array}}\\ \mathbf{else}:\\ \;\;\;\;\left(\sqrt{\mathsf{fma}\left(b, b, \left(c \cdot -4\right) \cdot a\right)} - b\right) \cdot \frac{0.5}{a}\\ \end{array} \]
    Proof

Alternatives

Alternative 1
Error6.7
Cost35460
\[\begin{array}{l} t_0 := {\left(-2 \cdot \left(c \cdot a\right)\right)}^{2}\\ \mathbf{if}\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a} \leq -0.22:\\ \;\;\;\;\frac{1}{a \cdot \sqrt[3]{2}} \cdot \frac{\sqrt{\mathsf{fma}\left(b, b, \left(-4 \cdot a\right) \cdot c\right)} - b}{\sqrt[3]{4}}\\ \mathbf{else}:\\ \;\;\;\;-1 \cdot \frac{c}{b} + \left(-0.5 \cdot \left(c \cdot \left({\left(\frac{1}{b}\right)}^{5} \cdot t_0\right)\right) + -0.25 \cdot \frac{{\left(\frac{1}{b}\right)}^{3} \cdot t_0}{a}\right)\\ \end{array} \]
Alternative 2
Error9.4
Cost34180
\[\begin{array}{l} \mathbf{if}\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a} \leq -0.0175:\\ \;\;\;\;\frac{1}{a \cdot \sqrt[3]{2}} \cdot \frac{\sqrt{\mathsf{fma}\left(b, b, \left(-4 \cdot a\right) \cdot c\right)} - b}{\sqrt[3]{4}}\\ \mathbf{else}:\\ \;\;\;\;\left(-\frac{c}{b}\right) + \frac{-0.25 \cdot \left({\left(\frac{1}{b}\right)}^{3} \cdot {\left(-2 \cdot \left(c \cdot a\right)\right)}^{2}\right)}{a}\\ \end{array} \]
Alternative 3
Error9.4
Cost33988
\[\begin{array}{l} \mathbf{if}\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a} \leq -0.0175:\\ \;\;\;\;{\left(\sqrt[3]{\sqrt{\mathsf{fma}\left(b, b, \left(c \cdot -4\right) \cdot a\right)} - b}\right)}^{3} \cdot \frac{0.5}{a}\\ \mathbf{else}:\\ \;\;\;\;\left(-\frac{c}{b}\right) + \frac{-0.25 \cdot \left({\left(\frac{1}{b}\right)}^{3} \cdot {\left(-2 \cdot \left(c \cdot a\right)\right)}^{2}\right)}{a}\\ \end{array} \]
Alternative 4
Error9.4
Cost33988
\[\begin{array}{l} \mathbf{if}\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a} \leq -0.0175:\\ \;\;\;\;\frac{{\left(\sqrt[3]{\sqrt{\mathsf{fma}\left(b, b, \left(-4 \cdot a\right) \cdot c\right)} - b}\right)}^{3}}{2 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;\left(-\frac{c}{b}\right) + \frac{-0.25 \cdot \left({\left(\frac{1}{b}\right)}^{3} \cdot {\left(-2 \cdot \left(c \cdot a\right)\right)}^{2}\right)}{a}\\ \end{array} \]
Alternative 5
Error0.5
Cost28164
\[\begin{array}{l} t_0 := \sqrt{\mathsf{fma}\left(b, b, \left(c \cdot -4\right) \cdot a\right)}\\ \mathbf{if}\;\frac{0.5}{a} \cdot t_0 - \frac{0.5}{a} \cdot \left(-b\right) \ne 0:\\ \;\;\;\;\frac{-\frac{0 + \frac{c}{a}}{\frac{-0.5}{a}}}{\left(-b\right) - \sqrt{\mathsf{fma}\left(b, b, a \cdot \left(c \cdot -4\right)\right)}}\\ \mathbf{else}:\\ \;\;\;\;\left(t_0 - b\right) \cdot \frac{0.5}{a}\\ \end{array} \]
Alternative 6
Error0.4
Cost28100
\[\begin{array}{l} t_0 := \sqrt{\mathsf{fma}\left(b, b, \left(c \cdot -4\right) \cdot a\right)}\\ \mathbf{if}\;\frac{0.5}{a} \cdot t_0 - \frac{0.5}{a} \cdot \left(-b\right) \ne 0:\\ \;\;\;\;\frac{\frac{0 + \left(-\frac{c}{a}\right)}{0.5}}{\frac{\sqrt{\mathsf{fma}\left(b, b, a \cdot \left(c \cdot -4\right)\right)} + b}{a}}\\ \mathbf{else}:\\ \;\;\;\;\left(t_0 - b\right) \cdot \frac{0.5}{a}\\ \end{array} \]
Alternative 7
Error0.5
Cost27972
\[\begin{array}{l} t_0 := \sqrt{\mathsf{fma}\left(b, b, \left(c \cdot -4\right) \cdot a\right)}\\ \mathbf{if}\;\frac{0.5}{a} \cdot t_0 - \frac{0.5}{a} \cdot \left(-b\right) \ne 0:\\ \;\;\;\;\frac{-\frac{c}{a}}{\frac{0.5}{a} \cdot \left(\sqrt{\mathsf{fma}\left(b, b, a \cdot \left(c \cdot -4\right)\right)} + b\right)}\\ \mathbf{else}:\\ \;\;\;\;\left(t_0 - b\right) \cdot \frac{0.5}{a}\\ \end{array} \]
Alternative 8
Error9.4
Cost21572
\[\begin{array}{l} \mathbf{if}\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a} \leq -0.0175:\\ \;\;\;\;1 - \left(1 + \frac{0.5}{a} \cdot \left(b - \sqrt{\mathsf{fma}\left(b, b, \left(-4 \cdot a\right) \cdot c\right)}\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\left(-\frac{c}{b}\right) + \frac{-0.25 \cdot \left({\left(\frac{1}{b}\right)}^{3} \cdot {\left(-2 \cdot \left(c \cdot a\right)\right)}^{2}\right)}{a}\\ \end{array} \]
Alternative 9
Error15.3
Cost21124
\[\begin{array}{l} \mathbf{if}\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a} \leq -1.5 \cdot 10^{-5}:\\ \;\;\;\;\left(\sqrt{\mathsf{fma}\left(b, b, \left(-4 \cdot a\right) \cdot c\right)} - b\right) \cdot \frac{0.5}{a}\\ \mathbf{else}:\\ \;\;\;\;-\frac{c}{b}\\ \end{array} \]
Alternative 10
Error15.3
Cost14916
\[\begin{array}{l} t_0 := \frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\ \mathbf{if}\;t_0 \leq -1.5 \cdot 10^{-5}:\\ \;\;\;\;t_0\\ \mathbf{else}:\\ \;\;\;\;-\frac{c}{b}\\ \end{array} \]
Alternative 11
Error16.9
Cost7492
\[\begin{array}{l} \mathbf{if}\;b \leq 5600:\\ \;\;\;\;\left(\sqrt{\left(c \cdot -4\right) \cdot a + b \cdot b} - b\right) \cdot \frac{0.5}{a}\\ \mathbf{else}:\\ \;\;\;\;-\frac{c}{b}\\ \end{array} \]
Alternative 12
Error22.5
Cost256
\[-\frac{c}{b} \]

Error

Reproduce

herbie shell --seed 2023010 
(FPCore (a b c)
  :name "Quadratic roots, narrow range"
  :precision binary64
  :pre (and (and (and (< 1.0536712127723509e-8 a) (< a 94906265.62425156)) (and (< 1.0536712127723509e-8 b) (< b 94906265.62425156))) (and (< 1.0536712127723509e-8 c) (< c 94906265.62425156)))
  (/ (+ (- b) (sqrt (- (* b b) (* (* 4.0 a) c)))) (* 2.0 a)))