\[\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)\]
(FPCore (a b c)
:precision binary64
(/ (+ (- b) (sqrt (- (* b b) (* (* 4.0 a) c)))) (* 2.0 a)))
↓
(FPCore (a b c)
:precision binary64
(-
(fma
-2.0
(* (* (/ a (/ (pow b 5.0) a)) c) (* c c))
(/ -0.25 (/ b (* (* c (pow (* a c) 3.0)) (/ 20.0 (pow b 6.0))))))
(+ (/ c b) (* a (/ (* c c) (pow b 3.0))))))
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) {
return fma(-2.0, (((a / (pow(b, 5.0) / a)) * c) * (c * c)), (-0.25 / (b / ((c * pow((a * c), 3.0)) * (20.0 / pow(b, 6.0)))))) - ((c / b) + (a * ((c * c) / pow(b, 3.0))));
}
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)
return Float64(fma(-2.0, Float64(Float64(Float64(a / Float64((b ^ 5.0) / a)) * c) * Float64(c * c)), Float64(-0.25 / Float64(b / Float64(Float64(c * (Float64(a * c) ^ 3.0)) * Float64(20.0 / (b ^ 6.0)))))) - Float64(Float64(c / b) + Float64(a * Float64(Float64(c * c) / (b ^ 3.0)))))
end
\[\begin{array}{l}
t_0 := \frac{\sqrt{b \cdot b + c \cdot \left(a \cdot -4\right)} - b}{a \cdot 2}\\
\mathbf{if}\;t_0 \leq -0.00172:\\
\;\;\;\;t_0\\
\mathbf{else}:\\
\;\;\;\;\frac{-c}{b} - a \cdot \frac{c \cdot c}{{b}^{3}}\\
\end{array}
\]
Alternative 6
Error
10.3
Cost
7492
\[\begin{array}{l}
\mathbf{if}\;b \leq 235:\\
\;\;\;\;\frac{0.5}{a} \cdot \left(\sqrt{b \cdot b + a \cdot \left(c \cdot -4\right)} - b\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{-c}{b} - a \cdot \frac{c \cdot c}{{b}^{3}}\\
\end{array}
\]
Alternative 7
Error
11.7
Cost
7232
\[\frac{-c}{b} - a \cdot \frac{c \cdot c}{{b}^{3}}
\]
Alternative 8
Error
11.8
Cost
7168
\[c \cdot \left(\frac{-1}{b} - a \cdot \frac{c}{{b}^{3}}\right)
\]
Alternative 9
Error
22.8
Cost
256
\[\frac{-c}{b}
\]
Error
Reproduce
herbie shell --seed 2022217
(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)))