Initial program 37.2
\[\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}
\]
Simplified37.2
\[\leadsto \color{blue}{\frac{-0.5}{a} \cdot \left(b + \sqrt{\mathsf{fma}\left(a \cdot c, -4, b \cdot b\right)}\right)}
\]
Proof
(*.f64 (/.f64 -1/2 a) (+.f64 b (sqrt.f64 (fma.f64 (*.f64 a c) -4 (*.f64 b b))))): 0 points increase in error, 0 points decrease in error
(*.f64 (/.f64 (Rewrite<= metadata-eval (/.f64 -1 2)) a) (+.f64 b (sqrt.f64 (fma.f64 (*.f64 a c) -4 (*.f64 b b))))): 0 points increase in error, 0 points decrease in error
(*.f64 (Rewrite<= associate-/r*_binary64 (/.f64 -1 (*.f64 2 a))) (+.f64 b (sqrt.f64 (fma.f64 (*.f64 a c) -4 (*.f64 b b))))): 0 points increase in error, 0 points decrease in error
(*.f64 (/.f64 -1 (*.f64 2 a)) (+.f64 b (sqrt.f64 (fma.f64 (*.f64 a c) (Rewrite<= metadata-eval (neg.f64 4)) (*.f64 b b))))): 0 points increase in error, 0 points decrease in error
(*.f64 (/.f64 -1 (*.f64 2 a)) (+.f64 b (sqrt.f64 (Rewrite<= fma-def_binary64 (+.f64 (*.f64 (*.f64 a c) (neg.f64 4)) (*.f64 b b)))))): 0 points increase in error, 0 points decrease in error
(*.f64 (/.f64 -1 (*.f64 2 a)) (+.f64 b (sqrt.f64 (+.f64 (Rewrite<= distribute-rgt-neg-in_binary64 (neg.f64 (*.f64 (*.f64 a c) 4))) (*.f64 b b))))): 0 points increase in error, 0 points decrease in error
(*.f64 (/.f64 -1 (*.f64 2 a)) (+.f64 b (sqrt.f64 (+.f64 (neg.f64 (Rewrite<= *-commutative_binary64 (*.f64 4 (*.f64 a c)))) (*.f64 b b))))): 0 points increase in error, 0 points decrease in error
(*.f64 (/.f64 -1 (*.f64 2 a)) (+.f64 b (sqrt.f64 (Rewrite<= +-commutative_binary64 (+.f64 (*.f64 b b) (neg.f64 (*.f64 4 (*.f64 a c)))))))): 0 points increase in error, 0 points decrease in error
(*.f64 (/.f64 -1 (*.f64 2 a)) (+.f64 b (sqrt.f64 (Rewrite<= sub-neg_binary64 (-.f64 (*.f64 b b) (*.f64 4 (*.f64 a c))))))): 0 points increase in error, 0 points decrease in error
(*.f64 (/.f64 -1 (*.f64 2 a)) (+.f64 b (Rewrite<= remove-double-neg_binary64 (neg.f64 (neg.f64 (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 4 (*.f64 a c))))))))): 0 points increase in error, 0 points decrease in error
(*.f64 (/.f64 -1 (*.f64 2 a)) (Rewrite<= sub-neg_binary64 (-.f64 b (neg.f64 (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 4 (*.f64 a c)))))))): 0 points increase in error, 0 points decrease in error
(*.f64 (/.f64 -1 (*.f64 2 a)) (Rewrite=> sub-neg_binary64 (+.f64 b (neg.f64 (neg.f64 (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 4 (*.f64 a c))))))))): 0 points increase in error, 0 points decrease in error
(*.f64 (/.f64 -1 (*.f64 2 a)) (+.f64 b (Rewrite=> remove-double-neg_binary64 (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 4 (*.f64 a c))))))): 0 points increase in error, 0 points decrease in error
(Rewrite=> associate-*l/_binary64 (/.f64 (*.f64 -1 (+.f64 b (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 4 (*.f64 a c)))))) (*.f64 2 a))): 9 points increase in error, 25 points decrease in error
(/.f64 (Rewrite<= neg-mul-1_binary64 (neg.f64 (+.f64 b (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 4 (*.f64 a c))))))) (*.f64 2 a)): 0 points increase in error, 0 points decrease in error
(/.f64 (Rewrite<= distribute-neg-out_binary64 (+.f64 (neg.f64 b) (neg.f64 (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 4 (*.f64 a c))))))) (*.f64 2 a)): 0 points increase in error, 0 points decrease in error
(/.f64 (Rewrite<= sub-neg_binary64 (-.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 4 (*.f64 a c)))))) (*.f64 2 a)): 0 points increase in error, 0 points decrease in error
Applied egg-rr37.2
\[\leadsto \frac{-0.5}{a} \cdot \left(b + \sqrt{\color{blue}{\left(a \cdot c\right) \cdot -4 + b \cdot b}}\right)
\]
Initial program 28.9
\[\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}
\]
Simplified29.0
\[\leadsto \color{blue}{\frac{-0.5}{a} \cdot \left(b + \sqrt{\mathsf{fma}\left(a \cdot c, -4, b \cdot b\right)}\right)}
\]
Proof
(*.f64 (/.f64 -1/2 a) (+.f64 b (sqrt.f64 (fma.f64 (*.f64 a c) -4 (*.f64 b b))))): 0 points increase in error, 0 points decrease in error
(*.f64 (/.f64 (Rewrite<= metadata-eval (/.f64 -1 2)) a) (+.f64 b (sqrt.f64 (fma.f64 (*.f64 a c) -4 (*.f64 b b))))): 0 points increase in error, 0 points decrease in error
(*.f64 (Rewrite<= associate-/r*_binary64 (/.f64 -1 (*.f64 2 a))) (+.f64 b (sqrt.f64 (fma.f64 (*.f64 a c) -4 (*.f64 b b))))): 0 points increase in error, 0 points decrease in error
(*.f64 (/.f64 -1 (*.f64 2 a)) (+.f64 b (sqrt.f64 (fma.f64 (*.f64 a c) (Rewrite<= metadata-eval (neg.f64 4)) (*.f64 b b))))): 0 points increase in error, 0 points decrease in error
(*.f64 (/.f64 -1 (*.f64 2 a)) (+.f64 b (sqrt.f64 (Rewrite<= fma-def_binary64 (+.f64 (*.f64 (*.f64 a c) (neg.f64 4)) (*.f64 b b)))))): 0 points increase in error, 0 points decrease in error
(*.f64 (/.f64 -1 (*.f64 2 a)) (+.f64 b (sqrt.f64 (+.f64 (Rewrite<= distribute-rgt-neg-in_binary64 (neg.f64 (*.f64 (*.f64 a c) 4))) (*.f64 b b))))): 0 points increase in error, 0 points decrease in error
(*.f64 (/.f64 -1 (*.f64 2 a)) (+.f64 b (sqrt.f64 (+.f64 (neg.f64 (Rewrite<= *-commutative_binary64 (*.f64 4 (*.f64 a c)))) (*.f64 b b))))): 0 points increase in error, 0 points decrease in error
(*.f64 (/.f64 -1 (*.f64 2 a)) (+.f64 b (sqrt.f64 (Rewrite<= +-commutative_binary64 (+.f64 (*.f64 b b) (neg.f64 (*.f64 4 (*.f64 a c)))))))): 0 points increase in error, 0 points decrease in error
(*.f64 (/.f64 -1 (*.f64 2 a)) (+.f64 b (sqrt.f64 (Rewrite<= sub-neg_binary64 (-.f64 (*.f64 b b) (*.f64 4 (*.f64 a c))))))): 0 points increase in error, 0 points decrease in error
(*.f64 (/.f64 -1 (*.f64 2 a)) (+.f64 b (Rewrite<= remove-double-neg_binary64 (neg.f64 (neg.f64 (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 4 (*.f64 a c))))))))): 0 points increase in error, 0 points decrease in error
(*.f64 (/.f64 -1 (*.f64 2 a)) (Rewrite<= sub-neg_binary64 (-.f64 b (neg.f64 (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 4 (*.f64 a c)))))))): 0 points increase in error, 0 points decrease in error
(*.f64 (/.f64 -1 (*.f64 2 a)) (Rewrite=> sub-neg_binary64 (+.f64 b (neg.f64 (neg.f64 (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 4 (*.f64 a c))))))))): 0 points increase in error, 0 points decrease in error
(*.f64 (/.f64 -1 (*.f64 2 a)) (+.f64 b (Rewrite=> remove-double-neg_binary64 (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 4 (*.f64 a c))))))): 0 points increase in error, 0 points decrease in error
(Rewrite=> associate-*l/_binary64 (/.f64 (*.f64 -1 (+.f64 b (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 4 (*.f64 a c)))))) (*.f64 2 a))): 9 points increase in error, 25 points decrease in error
(/.f64 (Rewrite<= neg-mul-1_binary64 (neg.f64 (+.f64 b (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 4 (*.f64 a c))))))) (*.f64 2 a)): 0 points increase in error, 0 points decrease in error
(/.f64 (Rewrite<= distribute-neg-out_binary64 (+.f64 (neg.f64 b) (neg.f64 (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 4 (*.f64 a c))))))) (*.f64 2 a)): 0 points increase in error, 0 points decrease in error
(/.f64 (Rewrite<= sub-neg_binary64 (-.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 4 (*.f64 a c)))))) (*.f64 2 a)): 0 points increase in error, 0 points decrease in error
Applied egg-rr29.7
\[\leadsto \color{blue}{\frac{-0.5}{\frac{a}{b + \mathsf{hypot}\left(b, \sqrt{\left(a \cdot c\right) \cdot -4}\right)}}}
\]
Taylor expanded in b around -inf 64.0
\[\leadsto \frac{-0.5}{\color{blue}{-2 \cdot \frac{b}{c \cdot {\left(\sqrt{-4}\right)}^{2}} + -0.5 \cdot \frac{a}{b}}}
\]
Simplified38.2
\[\leadsto \frac{-0.5}{\color{blue}{\mathsf{fma}\left(-0.5, \frac{a}{b}, 0.5 \cdot \frac{b}{c}\right)}}
\]
Proof
(fma.f64 -1/2 (/.f64 a b) (*.f64 1/2 (/.f64 b c))): 0 points increase in error, 0 points decrease in error
(fma.f64 -1/2 (/.f64 a b) (*.f64 (Rewrite<= metadata-eval (/.f64 -2 -4)) (/.f64 b c))): 0 points increase in error, 0 points decrease in error
(fma.f64 -1/2 (/.f64 a b) (*.f64 (/.f64 -2 (Rewrite<= rem-square-sqrt_binary64 (*.f64 (sqrt.f64 -4) (sqrt.f64 -4)))) (/.f64 b c))): 182 points increase in error, 0 points decrease in error
(fma.f64 -1/2 (/.f64 a b) (*.f64 (/.f64 -2 (Rewrite<= unpow2_binary64 (pow.f64 (sqrt.f64 -4) 2))) (/.f64 b c))): 0 points increase in error, 0 points decrease in error
(fma.f64 -1/2 (/.f64 a b) (Rewrite<= times-frac_binary64 (/.f64 (*.f64 -2 b) (*.f64 (pow.f64 (sqrt.f64 -4) 2) c)))): 0 points increase in error, 0 points decrease in error
(fma.f64 -1/2 (/.f64 a b) (/.f64 (*.f64 -2 b) (Rewrite<= *-commutative_binary64 (*.f64 c (pow.f64 (sqrt.f64 -4) 2))))): 0 points increase in error, 0 points decrease in error
(fma.f64 -1/2 (/.f64 a b) (Rewrite<= associate-*r/_binary64 (*.f64 -2 (/.f64 b (*.f64 c (pow.f64 (sqrt.f64 -4) 2)))))): 0 points increase in error, 0 points decrease in error
(Rewrite<= fma-def_binary64 (+.f64 (*.f64 -1/2 (/.f64 a b)) (*.f64 -2 (/.f64 b (*.f64 c (pow.f64 (sqrt.f64 -4) 2)))))): 0 points increase in error, 0 points decrease in error
(Rewrite<= +-commutative_binary64 (+.f64 (*.f64 -2 (/.f64 b (*.f64 c (pow.f64 (sqrt.f64 -4) 2)))) (*.f64 -1/2 (/.f64 a b)))): 0 points increase in error, 0 points decrease in error
Applied egg-rr38.2
\[\leadsto \color{blue}{0 + \frac{-0.5}{\mathsf{fma}\left(0.5, \frac{b}{c}, \frac{-0.5 \cdot a}{b}\right)}}
\]
Simplified38.2
\[\leadsto \color{blue}{\frac{0.5}{0.5 \cdot \left(\frac{a}{b} - \frac{b}{c}\right)}}
\]
Proof
(/.f64 1/2 (*.f64 1/2 (-.f64 (/.f64 a b) (/.f64 b c)))): 0 points increase in error, 0 points decrease in error
(/.f64 1/2 (Rewrite<= distribute-lft-out--_binary64 (-.f64 (*.f64 1/2 (/.f64 a b)) (*.f64 1/2 (/.f64 b c))))): 0 points increase in error, 0 points decrease in error
(/.f64 1/2 (-.f64 (*.f64 (Rewrite<= metadata-eval (neg.f64 -1/2)) (/.f64 a b)) (*.f64 1/2 (/.f64 b c)))): 0 points increase in error, 0 points decrease in error
(/.f64 1/2 (-.f64 (Rewrite<= distribute-lft-neg-in_binary64 (neg.f64 (*.f64 -1/2 (/.f64 a b)))) (*.f64 1/2 (/.f64 b c)))): 0 points increase in error, 0 points decrease in error
(/.f64 1/2 (-.f64 (neg.f64 (Rewrite=> associate-*r/_binary64 (/.f64 (*.f64 -1/2 a) b))) (*.f64 1/2 (/.f64 b c)))): 0 points increase in error, 0 points decrease in error
(/.f64 1/2 (Rewrite<= unsub-neg_binary64 (+.f64 (neg.f64 (/.f64 (*.f64 -1/2 a) b)) (neg.f64 (*.f64 1/2 (/.f64 b c)))))): 0 points increase in error, 0 points decrease in error
(/.f64 1/2 (Rewrite<= distribute-neg-in_binary64 (neg.f64 (+.f64 (/.f64 (*.f64 -1/2 a) b) (*.f64 1/2 (/.f64 b c)))))): 0 points increase in error, 0 points decrease in error
(/.f64 1/2 (neg.f64 (Rewrite<= +-commutative_binary64 (+.f64 (*.f64 1/2 (/.f64 b c)) (/.f64 (*.f64 -1/2 a) b))))): 0 points increase in error, 0 points decrease in error
(/.f64 1/2 (neg.f64 (Rewrite<= fma-udef_binary64 (fma.f64 1/2 (/.f64 b c) (/.f64 (*.f64 -1/2 a) b))))): 0 points increase in error, 0 points decrease in error
(/.f64 1/2 (Rewrite=> neg-mul-1_binary64 (*.f64 -1 (fma.f64 1/2 (/.f64 b c) (/.f64 (*.f64 -1/2 a) b))))): 0 points increase in error, 0 points decrease in error
(Rewrite=> associate-/r*_binary64 (/.f64 (/.f64 1/2 -1) (fma.f64 1/2 (/.f64 b c) (/.f64 (*.f64 -1/2 a) b)))): 0 points increase in error, 0 points decrease in error
(/.f64 (Rewrite=> metadata-eval -1/2) (fma.f64 1/2 (/.f64 b c) (/.f64 (*.f64 -1/2 a) b))): 0 points increase in error, 0 points decrease in error
(Rewrite<= +-lft-identity_binary64 (+.f64 0 (/.f64 -1/2 (fma.f64 1/2 (/.f64 b c) (/.f64 (*.f64 -1/2 a) b))))): 0 points increase in error, 0 points decrease in error
Initial program 37.5
\[\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}
\]
Simplified37.6
\[\leadsto \color{blue}{\frac{-0.5}{a} \cdot \left(b + \sqrt{\mathsf{fma}\left(a \cdot c, -4, b \cdot b\right)}\right)}
\]
Proof
(*.f64 (/.f64 -1/2 a) (+.f64 b (sqrt.f64 (fma.f64 (*.f64 a c) -4 (*.f64 b b))))): 0 points increase in error, 0 points decrease in error
(*.f64 (/.f64 (Rewrite<= metadata-eval (/.f64 -1 2)) a) (+.f64 b (sqrt.f64 (fma.f64 (*.f64 a c) -4 (*.f64 b b))))): 0 points increase in error, 0 points decrease in error
(*.f64 (Rewrite<= associate-/r*_binary64 (/.f64 -1 (*.f64 2 a))) (+.f64 b (sqrt.f64 (fma.f64 (*.f64 a c) -4 (*.f64 b b))))): 0 points increase in error, 0 points decrease in error
(*.f64 (/.f64 -1 (*.f64 2 a)) (+.f64 b (sqrt.f64 (fma.f64 (*.f64 a c) (Rewrite<= metadata-eval (neg.f64 4)) (*.f64 b b))))): 0 points increase in error, 0 points decrease in error
(*.f64 (/.f64 -1 (*.f64 2 a)) (+.f64 b (sqrt.f64 (Rewrite<= fma-def_binary64 (+.f64 (*.f64 (*.f64 a c) (neg.f64 4)) (*.f64 b b)))))): 0 points increase in error, 0 points decrease in error
(*.f64 (/.f64 -1 (*.f64 2 a)) (+.f64 b (sqrt.f64 (+.f64 (Rewrite<= distribute-rgt-neg-in_binary64 (neg.f64 (*.f64 (*.f64 a c) 4))) (*.f64 b b))))): 0 points increase in error, 0 points decrease in error
(*.f64 (/.f64 -1 (*.f64 2 a)) (+.f64 b (sqrt.f64 (+.f64 (neg.f64 (Rewrite<= *-commutative_binary64 (*.f64 4 (*.f64 a c)))) (*.f64 b b))))): 0 points increase in error, 0 points decrease in error
(*.f64 (/.f64 -1 (*.f64 2 a)) (+.f64 b (sqrt.f64 (Rewrite<= +-commutative_binary64 (+.f64 (*.f64 b b) (neg.f64 (*.f64 4 (*.f64 a c)))))))): 0 points increase in error, 0 points decrease in error
(*.f64 (/.f64 -1 (*.f64 2 a)) (+.f64 b (sqrt.f64 (Rewrite<= sub-neg_binary64 (-.f64 (*.f64 b b) (*.f64 4 (*.f64 a c))))))): 0 points increase in error, 0 points decrease in error
(*.f64 (/.f64 -1 (*.f64 2 a)) (+.f64 b (Rewrite<= remove-double-neg_binary64 (neg.f64 (neg.f64 (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 4 (*.f64 a c))))))))): 0 points increase in error, 0 points decrease in error
(*.f64 (/.f64 -1 (*.f64 2 a)) (Rewrite<= sub-neg_binary64 (-.f64 b (neg.f64 (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 4 (*.f64 a c)))))))): 0 points increase in error, 0 points decrease in error
(*.f64 (/.f64 -1 (*.f64 2 a)) (Rewrite=> sub-neg_binary64 (+.f64 b (neg.f64 (neg.f64 (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 4 (*.f64 a c))))))))): 0 points increase in error, 0 points decrease in error
(*.f64 (/.f64 -1 (*.f64 2 a)) (+.f64 b (Rewrite=> remove-double-neg_binary64 (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 4 (*.f64 a c))))))): 0 points increase in error, 0 points decrease in error
(Rewrite=> associate-*l/_binary64 (/.f64 (*.f64 -1 (+.f64 b (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 4 (*.f64 a c)))))) (*.f64 2 a))): 9 points increase in error, 25 points decrease in error
(/.f64 (Rewrite<= neg-mul-1_binary64 (neg.f64 (+.f64 b (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 4 (*.f64 a c))))))) (*.f64 2 a)): 0 points increase in error, 0 points decrease in error
(/.f64 (Rewrite<= distribute-neg-out_binary64 (+.f64 (neg.f64 b) (neg.f64 (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 4 (*.f64 a c))))))) (*.f64 2 a)): 0 points increase in error, 0 points decrease in error
(/.f64 (Rewrite<= sub-neg_binary64 (-.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 4 (*.f64 a c)))))) (*.f64 2 a)): 0 points increase in error, 0 points decrease in error
Taylor expanded in a around 0 6.3
\[\leadsto \color{blue}{\frac{c}{b} + -1 \cdot \frac{b}{a}}
\]
Simplified6.3
\[\leadsto \color{blue}{\frac{c}{b} - \frac{b}{a}}
\]
Proof
(-.f64 (/.f64 c b) (/.f64 b a)): 0 points increase in error, 0 points decrease in error
(Rewrite<= unsub-neg_binary64 (+.f64 (/.f64 c b) (neg.f64 (/.f64 b a)))): 0 points increase in error, 0 points decrease in error
(+.f64 (/.f64 c b) (Rewrite<= mul-1-neg_binary64 (*.f64 -1 (/.f64 b a)))): 0 points increase in error, 0 points decrease in error