Simplified61.9
\[\leadsto \color{blue}{\begin{array}{l}
\color{blue}{\mathbf{if}\;b \geq 0:\\
\;\;\;\;\left(b + \sqrt{\mathsf{fma}\left(c, a \cdot -4, b \cdot b\right)}\right) \cdot \frac{-0.5}{a}\\
\mathbf{else}:\\
\;\;\;\;-2 \cdot \frac{c}{b - \sqrt{\mathsf{fma}\left(c, a \cdot -4, b \cdot b\right)}}\\
}
\end{array}}
\]
Proof
(if (>=.f64 b 0) (*.f64 (+.f64 b (sqrt.f64 (fma.f64 c (*.f64 a -4) (*.f64 b b)))) (/.f64 -1/2 a)) (*.f64 -2 (/.f64 c (-.f64 b (sqrt.f64 (fma.f64 c (*.f64 a -4) (*.f64 b b))))))): 0 points increase in error, 0 points decrease in error
(if (>=.f64 b 0) (*.f64 (+.f64 b (sqrt.f64 (fma.f64 c (*.f64 a (Rewrite<= metadata-eval (neg.f64 4))) (*.f64 b b)))) (/.f64 -1/2 a)) (*.f64 -2 (/.f64 c (-.f64 b (sqrt.f64 (fma.f64 c (*.f64 a -4) (*.f64 b b))))))): 0 points increase in error, 0 points decrease in error
(if (>=.f64 b 0) (*.f64 (+.f64 b (sqrt.f64 (fma.f64 c (Rewrite<= distribute-rgt-neg-in_binary64 (neg.f64 (*.f64 a 4))) (*.f64 b b)))) (/.f64 -1/2 a)) (*.f64 -2 (/.f64 c (-.f64 b (sqrt.f64 (fma.f64 c (*.f64 a -4) (*.f64 b b))))))): 0 points increase in error, 0 points decrease in error
(if (>=.f64 b 0) (*.f64 (+.f64 b (sqrt.f64 (fma.f64 c (neg.f64 (Rewrite<= *-commutative_binary64 (*.f64 4 a))) (*.f64 b b)))) (/.f64 -1/2 a)) (*.f64 -2 (/.f64 c (-.f64 b (sqrt.f64 (fma.f64 c (*.f64 a -4) (*.f64 b b))))))): 0 points increase in error, 0 points decrease in error
(if (>=.f64 b 0) (*.f64 (+.f64 b (sqrt.f64 (Rewrite<= fma-def_binary64 (+.f64 (*.f64 c (neg.f64 (*.f64 4 a))) (*.f64 b b))))) (/.f64 -1/2 a)) (*.f64 -2 (/.f64 c (-.f64 b (sqrt.f64 (fma.f64 c (*.f64 a -4) (*.f64 b b))))))): 0 points increase in error, 0 points decrease in error
(if (>=.f64 b 0) (*.f64 (+.f64 b (sqrt.f64 (+.f64 (Rewrite<= *-commutative_binary64 (*.f64 (neg.f64 (*.f64 4 a)) c)) (*.f64 b b)))) (/.f64 -1/2 a)) (*.f64 -2 (/.f64 c (-.f64 b (sqrt.f64 (fma.f64 c (*.f64 a -4) (*.f64 b b))))))): 0 points increase in error, 0 points decrease in error
(if (>=.f64 b 0) (*.f64 (+.f64 b (sqrt.f64 (Rewrite<= +-commutative_binary64 (+.f64 (*.f64 b b) (*.f64 (neg.f64 (*.f64 4 a)) c))))) (/.f64 -1/2 a)) (*.f64 -2 (/.f64 c (-.f64 b (sqrt.f64 (fma.f64 c (*.f64 a -4) (*.f64 b b))))))): 0 points increase in error, 0 points decrease in error
(if (>=.f64 b 0) (*.f64 (+.f64 b (sqrt.f64 (Rewrite<= cancel-sign-sub-inv_binary64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c))))) (/.f64 -1/2 a)) (*.f64 -2 (/.f64 c (-.f64 b (sqrt.f64 (fma.f64 c (*.f64 a -4) (*.f64 b b))))))): 0 points increase in error, 0 points decrease in error
(if (>=.f64 b 0) (*.f64 (+.f64 b (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c)))) (/.f64 (Rewrite<= metadata-eval (/.f64 -1 2)) a)) (*.f64 -2 (/.f64 c (-.f64 b (sqrt.f64 (fma.f64 c (*.f64 a -4) (*.f64 b b))))))): 0 points increase in error, 0 points decrease in error
(if (>=.f64 b 0) (*.f64 (+.f64 b (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c)))) (Rewrite<= associate-/r*_binary64 (/.f64 -1 (*.f64 2 a)))) (*.f64 -2 (/.f64 c (-.f64 b (sqrt.f64 (fma.f64 c (*.f64 a -4) (*.f64 b b))))))): 0 points increase in error, 0 points decrease in error
(if (>=.f64 b 0) (Rewrite=> associate-*r/_binary64 (/.f64 (*.f64 (+.f64 b (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c)))) -1) (*.f64 2 a))) (*.f64 -2 (/.f64 c (-.f64 b (sqrt.f64 (fma.f64 c (*.f64 a -4) (*.f64 b b))))))): 3 points increase in error, 22 points decrease in error
(if (>=.f64 b 0) (/.f64 (Rewrite<= *-commutative_binary64 (*.f64 -1 (+.f64 b (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c)))))) (*.f64 2 a)) (*.f64 -2 (/.f64 c (-.f64 b (sqrt.f64 (fma.f64 c (*.f64 a -4) (*.f64 b b))))))): 0 points increase in error, 0 points decrease in error
(if (>=.f64 b 0) (/.f64 (Rewrite<= neg-mul-1_binary64 (neg.f64 (+.f64 b (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c)))))) (*.f64 2 a)) (*.f64 -2 (/.f64 c (-.f64 b (sqrt.f64 (fma.f64 c (*.f64 a -4) (*.f64 b b))))))): 0 points increase in error, 0 points decrease in error
(if (>=.f64 b 0) (/.f64 (Rewrite<= distribute-neg-out_binary64 (+.f64 (neg.f64 b) (neg.f64 (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c)))))) (*.f64 2 a)) (*.f64 -2 (/.f64 c (-.f64 b (sqrt.f64 (fma.f64 c (*.f64 a -4) (*.f64 b b))))))): 0 points increase in error, 0 points decrease in error
(if (>=.f64 b 0) (/.f64 (Rewrite<= sub-neg_binary64 (-.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c))))) (*.f64 2 a)) (*.f64 -2 (/.f64 c (-.f64 b (sqrt.f64 (fma.f64 c (*.f64 a -4) (*.f64 b b))))))): 0 points increase in error, 0 points decrease in error
(if (>=.f64 b 0) (/.f64 (-.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c)))) (*.f64 2 a)) (*.f64 (Rewrite<= metadata-eval (/.f64 2 -1)) (/.f64 c (-.f64 b (sqrt.f64 (fma.f64 c (*.f64 a -4) (*.f64 b b))))))): 0 points increase in error, 0 points decrease in error
(if (>=.f64 b 0) (/.f64 (-.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c)))) (*.f64 2 a)) (*.f64 (/.f64 2 -1) (/.f64 (Rewrite<= /-rgt-identity_binary64 (/.f64 c 1)) (-.f64 b (sqrt.f64 (fma.f64 c (*.f64 a -4) (*.f64 b b))))))): 0 points increase in error, 0 points decrease in error
(if (>=.f64 b 0) (/.f64 (-.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c)))) (*.f64 2 a)) (*.f64 (/.f64 2 -1) (/.f64 (/.f64 c (Rewrite<= metadata-eval (*.f64 -1 -1))) (-.f64 b (sqrt.f64 (fma.f64 c (*.f64 a -4) (*.f64 b b))))))): 0 points increase in error, 0 points decrease in error
(if (>=.f64 b 0) (/.f64 (-.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c)))) (*.f64 2 a)) (*.f64 (/.f64 2 -1) (/.f64 (Rewrite<= associate-/l/_binary64 (/.f64 (/.f64 c -1) -1)) (-.f64 b (sqrt.f64 (fma.f64 c (*.f64 a -4) (*.f64 b b))))))): 0 points increase in error, 0 points decrease in error
(if (>=.f64 b 0) (/.f64 (-.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c)))) (*.f64 2 a)) (*.f64 (/.f64 2 -1) (/.f64 (/.f64 (/.f64 c -1) -1) (-.f64 b (sqrt.f64 (fma.f64 c (*.f64 a (Rewrite<= metadata-eval (neg.f64 4))) (*.f64 b b))))))): 0 points increase in error, 0 points decrease in error
(if (>=.f64 b 0) (/.f64 (-.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c)))) (*.f64 2 a)) (*.f64 (/.f64 2 -1) (/.f64 (/.f64 (/.f64 c -1) -1) (-.f64 b (sqrt.f64 (fma.f64 c (Rewrite<= distribute-rgt-neg-in_binary64 (neg.f64 (*.f64 a 4))) (*.f64 b b))))))): 0 points increase in error, 0 points decrease in error
(if (>=.f64 b 0) (/.f64 (-.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c)))) (*.f64 2 a)) (*.f64 (/.f64 2 -1) (/.f64 (/.f64 (/.f64 c -1) -1) (-.f64 b (sqrt.f64 (fma.f64 c (neg.f64 (Rewrite<= *-commutative_binary64 (*.f64 4 a))) (*.f64 b b))))))): 0 points increase in error, 0 points decrease in error
(if (>=.f64 b 0) (/.f64 (-.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c)))) (*.f64 2 a)) (*.f64 (/.f64 2 -1) (/.f64 (/.f64 (/.f64 c -1) -1) (-.f64 b (sqrt.f64 (Rewrite<= fma-def_binary64 (+.f64 (*.f64 c (neg.f64 (*.f64 4 a))) (*.f64 b b)))))))): 1 points increase in error, 0 points decrease in error
(if (>=.f64 b 0) (/.f64 (-.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c)))) (*.f64 2 a)) (*.f64 (/.f64 2 -1) (/.f64 (/.f64 (/.f64 c -1) -1) (-.f64 b (sqrt.f64 (+.f64 (Rewrite<= *-commutative_binary64 (*.f64 (neg.f64 (*.f64 4 a)) c)) (*.f64 b b))))))): 0 points increase in error, 0 points decrease in error
(if (>=.f64 b 0) (/.f64 (-.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c)))) (*.f64 2 a)) (*.f64 (/.f64 2 -1) (/.f64 (/.f64 (/.f64 c -1) -1) (-.f64 b (sqrt.f64 (Rewrite<= +-commutative_binary64 (+.f64 (*.f64 b b) (*.f64 (neg.f64 (*.f64 4 a)) c)))))))): 0 points increase in error, 0 points decrease in error
(if (>=.f64 b 0) (/.f64 (-.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c)))) (*.f64 2 a)) (*.f64 (/.f64 2 -1) (/.f64 (/.f64 (/.f64 c -1) -1) (-.f64 b (sqrt.f64 (Rewrite<= cancel-sign-sub-inv_binary64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c)))))))): 0 points increase in error, 0 points decrease in error
(if (>=.f64 b 0) (/.f64 (-.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c)))) (*.f64 2 a)) (*.f64 (/.f64 2 -1) (Rewrite=> associate-/l/_binary64 (/.f64 (/.f64 c -1) (*.f64 (-.f64 b (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c)))) -1))))): 0 points increase in error, 0 points decrease in error
(if (>=.f64 b 0) (/.f64 (-.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c)))) (*.f64 2 a)) (*.f64 (/.f64 2 -1) (/.f64 (/.f64 c -1) (Rewrite<= *-commutative_binary64 (*.f64 -1 (-.f64 b (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c))))))))): 0 points increase in error, 0 points decrease in error
(if (>=.f64 b 0) (/.f64 (-.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c)))) (*.f64 2 a)) (*.f64 (/.f64 2 -1) (/.f64 (/.f64 c -1) (Rewrite<= neg-mul-1_binary64 (neg.f64 (-.f64 b (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c))))))))): 0 points increase in error, 0 points decrease in error
(if (>=.f64 b 0) (/.f64 (-.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c)))) (*.f64 2 a)) (*.f64 (/.f64 2 -1) (/.f64 (/.f64 c -1) (Rewrite<= sub0-neg_binary64 (-.f64 0 (-.f64 b (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c))))))))): 0 points increase in error, 0 points decrease in error
(if (>=.f64 b 0) (/.f64 (-.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c)))) (*.f64 2 a)) (*.f64 (/.f64 2 -1) (/.f64 (/.f64 c -1) (Rewrite<= associate-+l-_binary64 (+.f64 (-.f64 0 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c)))))))): 0 points increase in error, 0 points decrease in error
(if (>=.f64 b 0) (/.f64 (-.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c)))) (*.f64 2 a)) (*.f64 (/.f64 2 -1) (/.f64 (/.f64 c -1) (+.f64 (Rewrite<= neg-sub0_binary64 (neg.f64 b)) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c))))))): 0 points increase in error, 0 points decrease in error
(if (>=.f64 b 0) (/.f64 (-.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c)))) (*.f64 2 a)) (Rewrite<= times-frac_binary64 (/.f64 (*.f64 2 (/.f64 c -1)) (*.f64 -1 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c)))))))): 0 points increase in error, 0 points decrease in error
(if (>=.f64 b 0) (/.f64 (-.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c)))) (*.f64 2 a)) (/.f64 (Rewrite=> associate-*r/_binary64 (/.f64 (*.f64 2 c) -1)) (*.f64 -1 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c))))))): 0 points increase in error, 0 points decrease in error
(if (>=.f64 b 0) (/.f64 (-.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c)))) (*.f64 2 a)) (/.f64 (Rewrite=> associate-/l*_binary64 (/.f64 2 (/.f64 -1 c))) (*.f64 -1 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c))))))): 10 points increase in error, 0 points decrease in error
(if (>=.f64 b 0) (/.f64 (-.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c)))) (*.f64 2 a)) (/.f64 (Rewrite=> associate-/r/_binary64 (*.f64 (/.f64 2 -1) c)) (*.f64 -1 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c))))))): 0 points increase in error, 10 points decrease in error
(if (>=.f64 b 0) (/.f64 (-.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c)))) (*.f64 2 a)) (Rewrite=> times-frac_binary64 (*.f64 (/.f64 (/.f64 2 -1) -1) (/.f64 c (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c)))))))): 0 points increase in error, 0 points decrease in error
(if (>=.f64 b 0) (/.f64 (-.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c)))) (*.f64 2 a)) (*.f64 (/.f64 (Rewrite=> metadata-eval -2) -1) (/.f64 c (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c))))))): 0 points increase in error, 0 points decrease in error
(if (>=.f64 b 0) (/.f64 (-.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c)))) (*.f64 2 a)) (*.f64 (Rewrite=> metadata-eval 2) (/.f64 c (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c))))))): 0 points increase in error, 0 points decrease in error
(if (>=.f64 b 0) (/.f64 (-.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c)))) (*.f64 2 a)) (Rewrite=> associate-*r/_binary64 (/.f64 (*.f64 2 c) (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c))))))): 0 points increase in error, 0 points decrease in error