\[\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)\]
\[\begin{array}{l}
t_0 := \mathsf{fma}\left(a, c \cdot -3, b \cdot b\right)\\
\frac{\frac{\mathsf{fma}\left(6, c \cdot \left(a \cdot \left(b \cdot b\right)\right), c \cdot \left(c \cdot \left(a \cdot \left(a \cdot -9\right)\right)\right)\right)}{\left(a \cdot -3\right) \cdot \sqrt{t_0} + b \cdot \left(a \cdot -3\right)}}{\mathsf{fma}\left(b, b, t_0\right)}
\end{array}
\]
(FPCore (a b c)
:precision binary64
(/ (+ (- b) (sqrt (- (* b b) (* (* 3.0 a) c)))) (* 3.0 a)))
↓
(FPCore (a b c)
:precision binary64
(let* ((t_0 (fma a (* c -3.0) (* b b))))
(/
(/
(fma 6.0 (* c (* a (* b b))) (* c (* c (* a (* a -9.0)))))
(+ (* (* a -3.0) (sqrt t_0)) (* b (* a -3.0))))
(fma b b t_0))))
double code(double a, double b, double c) {
return (-b + sqrt(((b * b) - ((3.0 * a) * c)))) / (3.0 * a);
}
↓
double code(double a, double b, double c) {
double t_0 = fma(a, (c * -3.0), (b * b));
return (fma(6.0, (c * (a * (b * b))), (c * (c * (a * (a * -9.0))))) / (((a * -3.0) * sqrt(t_0)) + (b * (a * -3.0)))) / fma(b, b, t_0);
}
function code(a, b, c)
return Float64(Float64(Float64(-b) + sqrt(Float64(Float64(b * b) - Float64(Float64(3.0 * a) * c)))) / Float64(3.0 * a))
end
\[\leadsto \color{blue}{\frac{\left({b}^{4} - {\left(\mathsf{fma}\left(a, c \cdot -3, b \cdot b\right)\right)}^{2}\right) \cdot \frac{1}{b + \sqrt{\mathsf{fma}\left(a, c \cdot -3, b \cdot b\right)}}}{b \cdot b + \mathsf{fma}\left(a, c \cdot -3, b \cdot b\right)}} \cdot \frac{-0.3333333333333333}{a}
\]
Taylor expanded in b around 0 0.8
\[\leadsto \frac{\color{blue}{\left(6 \cdot \left(c \cdot \left(a \cdot {b}^{2}\right)\right) + -9 \cdot \left({c}^{2} \cdot {a}^{2}\right)\right)} \cdot \frac{1}{b + \sqrt{\mathsf{fma}\left(a, c \cdot -3, b \cdot b\right)}}}{b \cdot b + \mathsf{fma}\left(a, c \cdot -3, b \cdot b\right)} \cdot \frac{-0.3333333333333333}{a}
\]
Simplified0.8
\[\leadsto \frac{\color{blue}{\mathsf{fma}\left(6, c \cdot \left(a \cdot \left(b \cdot b\right)\right), \left(c \cdot c\right) \cdot \left(\left(a \cdot a\right) \cdot -9\right)\right)} \cdot \frac{1}{b + \sqrt{\mathsf{fma}\left(a, c \cdot -3, b \cdot b\right)}}}{b \cdot b + \mathsf{fma}\left(a, c \cdot -3, b \cdot b\right)} \cdot \frac{-0.3333333333333333}{a}
\]
Proof
[Start]0.8
\[ \frac{\left(6 \cdot \left(c \cdot \left(a \cdot {b}^{2}\right)\right) + -9 \cdot \left({c}^{2} \cdot {a}^{2}\right)\right) \cdot \frac{1}{b + \sqrt{\mathsf{fma}\left(a, c \cdot -3, b \cdot b\right)}}}{b \cdot b + \mathsf{fma}\left(a, c \cdot -3, b \cdot b\right)} \cdot \frac{-0.3333333333333333}{a}
\]
fma-def [=>]0.8
\[ \frac{\color{blue}{\mathsf{fma}\left(6, c \cdot \left(a \cdot {b}^{2}\right), -9 \cdot \left({c}^{2} \cdot {a}^{2}\right)\right)} \cdot \frac{1}{b + \sqrt{\mathsf{fma}\left(a, c \cdot -3, b \cdot b\right)}}}{b \cdot b + \mathsf{fma}\left(a, c \cdot -3, b \cdot b\right)} \cdot \frac{-0.3333333333333333}{a}
\]
unpow2 [=>]0.8
\[ \frac{\mathsf{fma}\left(6, c \cdot \left(a \cdot \color{blue}{\left(b \cdot b\right)}\right), -9 \cdot \left({c}^{2} \cdot {a}^{2}\right)\right) \cdot \frac{1}{b + \sqrt{\mathsf{fma}\left(a, c \cdot -3, b \cdot b\right)}}}{b \cdot b + \mathsf{fma}\left(a, c \cdot -3, b \cdot b\right)} \cdot \frac{-0.3333333333333333}{a}
\]
*-commutative [=>]0.8
\[ \frac{\mathsf{fma}\left(6, c \cdot \left(a \cdot \left(b \cdot b\right)\right), \color{blue}{\left({c}^{2} \cdot {a}^{2}\right) \cdot -9}\right) \cdot \frac{1}{b + \sqrt{\mathsf{fma}\left(a, c \cdot -3, b \cdot b\right)}}}{b \cdot b + \mathsf{fma}\left(a, c \cdot -3, b \cdot b\right)} \cdot \frac{-0.3333333333333333}{a}
\]
associate-*l* [=>]0.8
\[ \frac{\mathsf{fma}\left(6, c \cdot \left(a \cdot \left(b \cdot b\right)\right), \color{blue}{{c}^{2} \cdot \left({a}^{2} \cdot -9\right)}\right) \cdot \frac{1}{b + \sqrt{\mathsf{fma}\left(a, c \cdot -3, b \cdot b\right)}}}{b \cdot b + \mathsf{fma}\left(a, c \cdot -3, b \cdot b\right)} \cdot \frac{-0.3333333333333333}{a}
\]
unpow2 [=>]0.8
\[ \frac{\mathsf{fma}\left(6, c \cdot \left(a \cdot \left(b \cdot b\right)\right), \color{blue}{\left(c \cdot c\right)} \cdot \left({a}^{2} \cdot -9\right)\right) \cdot \frac{1}{b + \sqrt{\mathsf{fma}\left(a, c \cdot -3, b \cdot b\right)}}}{b \cdot b + \mathsf{fma}\left(a, c \cdot -3, b \cdot b\right)} \cdot \frac{-0.3333333333333333}{a}
\]
unpow2 [=>]0.8
\[ \frac{\mathsf{fma}\left(6, c \cdot \left(a \cdot \left(b \cdot b\right)\right), \left(c \cdot c\right) \cdot \left(\color{blue}{\left(a \cdot a\right)} \cdot -9\right)\right) \cdot \frac{1}{b + \sqrt{\mathsf{fma}\left(a, c \cdot -3, b \cdot b\right)}}}{b \cdot b + \mathsf{fma}\left(a, c \cdot -3, b \cdot b\right)} \cdot \frac{-0.3333333333333333}{a}
\]
Applied egg-rr0.7
\[\leadsto \color{blue}{\frac{\frac{\mathsf{fma}\left(6, c \cdot \left(a \cdot \left(b \cdot b\right)\right), c \cdot \left(c \cdot \left(a \cdot \left(a \cdot -9\right)\right)\right)\right)}{\left(b + \sqrt{\mathsf{fma}\left(a, c \cdot -3, b \cdot b\right)}\right) \cdot \left(a \cdot -3\right)}}{\mathsf{fma}\left(b, b, \mathsf{fma}\left(a, c \cdot -3, b \cdot b\right)\right)}}
\]
Applied egg-rr0.7
\[\leadsto \frac{\frac{\mathsf{fma}\left(6, c \cdot \left(a \cdot \left(b \cdot b\right)\right), c \cdot \left(c \cdot \left(a \cdot \left(a \cdot -9\right)\right)\right)\right)}{\color{blue}{\left(a \cdot -3\right) \cdot \sqrt{\mathsf{fma}\left(a, c \cdot -3, b \cdot b\right)} + \left(a \cdot -3\right) \cdot b}}}{\mathsf{fma}\left(b, b, \mathsf{fma}\left(a, c \cdot -3, b \cdot b\right)\right)}
\]
Final simplification0.7
\[\leadsto \frac{\frac{\mathsf{fma}\left(6, c \cdot \left(a \cdot \left(b \cdot b\right)\right), c \cdot \left(c \cdot \left(a \cdot \left(a \cdot -9\right)\right)\right)\right)}{\left(a \cdot -3\right) \cdot \sqrt{\mathsf{fma}\left(a, c \cdot -3, b \cdot b\right)} + b \cdot \left(a \cdot -3\right)}}{\mathsf{fma}\left(b, b, \mathsf{fma}\left(a, c \cdot -3, b \cdot b\right)\right)}
\]
Alternatives
Alternative 1
Error
0.7
Cost
34624
\[\begin{array}{l}
t_0 := \mathsf{fma}\left(a, c \cdot -3, b \cdot b\right)\\
\frac{\frac{\mathsf{fma}\left(6, c \cdot \left(a \cdot \left(b \cdot b\right)\right), c \cdot \left(c \cdot \left(a \cdot \left(a \cdot -9\right)\right)\right)\right)}{a \cdot \left(-3 \cdot \left(b + \sqrt{t_0}\right)\right)}}{\mathsf{fma}\left(b, b, t_0\right)}
\end{array}
\]
Alternative 2
Error
0.7
Cost
34624
\[\begin{array}{l}
t_0 := \mathsf{fma}\left(a, c \cdot -3, b \cdot b\right)\\
\frac{\frac{\mathsf{fma}\left(6, c \cdot \left(a \cdot \left(b \cdot b\right)\right), c \cdot \left(c \cdot \left(a \cdot \left(a \cdot -9\right)\right)\right)\right)}{\left(a \cdot -3\right) \cdot \left(b + \sqrt{t_0}\right)}}{\mathsf{fma}\left(b, b, t_0\right)}
\end{array}
\]
Alternative 3
Error
6.3
Cost
28356
\[\begin{array}{l}
t_0 := \mathsf{fma}\left(a, c \cdot -3, b \cdot b\right)\\
\mathbf{if}\;\frac{\sqrt{b \cdot b + c \cdot \left(a \cdot -3\right)} - b}{a \cdot 3} \leq -50:\\
\;\;\;\;\frac{b \cdot b - t_0}{\frac{a \cdot -3}{\frac{1}{b + \sqrt{t_0}}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{0.75 \cdot \left(c \cdot \left(c \cdot a\right)\right)}{b} - c \cdot b}{\mathsf{fma}\left(b, b, t_0\right)}\\
\end{array}
\]
Alternative 4
Error
0.7
Cost
28352
\[\begin{array}{l}
t_0 := \mathsf{fma}\left(a, c \cdot -3, b \cdot b\right)\\
\frac{\frac{\mathsf{fma}\left(6, c \cdot \left(a \cdot \left(b \cdot b\right)\right), c \cdot \left(\left(a \cdot a\right) \cdot \left(c \cdot -9\right)\right)\right)}{b + \sqrt{t_0}}}{b \cdot b + t_0} \cdot \frac{-0.3333333333333333}{a}
\end{array}
\]
Alternative 5
Error
6.3
Cost
28228
\[\begin{array}{l}
t_0 := \mathsf{fma}\left(a, c \cdot -3, b \cdot b\right)\\
\mathbf{if}\;\frac{\sqrt{b \cdot b + c \cdot \left(a \cdot -3\right)} - b}{a \cdot 3} \leq -50:\\
\;\;\;\;-0.3333333333333333 \cdot \frac{\frac{b \cdot b - t_0}{a}}{b + \sqrt{t_0}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{0.75 \cdot \left(c \cdot \left(c \cdot a\right)\right)}{b} - c \cdot b}{\mathsf{fma}\left(b, b, t_0\right)}\\
\end{array}
\]
Alternative 6
Error
6.3
Cost
28228
\[\begin{array}{l}
t_0 := \mathsf{fma}\left(a, c \cdot -3, b \cdot b\right)\\
\mathbf{if}\;\frac{\sqrt{b \cdot b + c \cdot \left(a \cdot -3\right)} - b}{a \cdot 3} \leq -50:\\
\;\;\;\;\left(b \cdot b - t_0\right) \cdot \frac{\frac{-0.3333333333333333}{b + \sqrt{t_0}}}{a}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{0.75 \cdot \left(c \cdot \left(c \cdot a\right)\right)}{b} - c \cdot b}{\mathsf{fma}\left(b, b, t_0\right)}\\
\end{array}
\]
Alternative 7
Error
6.3
Cost
28228
\[\begin{array}{l}
t_0 := \mathsf{fma}\left(a, c \cdot -3, b \cdot b\right)\\
\mathbf{if}\;\frac{\sqrt{b \cdot b + c \cdot \left(a \cdot -3\right)} - b}{a \cdot 3} \leq -50:\\
\;\;\;\;\frac{b \cdot b - t_0}{a} \cdot \frac{-0.3333333333333333}{b + \sqrt{t_0}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{0.75 \cdot \left(c \cdot \left(c \cdot a\right)\right)}{b} - c \cdot b}{\mathsf{fma}\left(b, b, t_0\right)}\\
\end{array}
\]
Alternative 8
Error
6.3
Cost
28228
\[\begin{array}{l}
t_0 := \mathsf{fma}\left(a, c \cdot -3, b \cdot b\right)\\
\mathbf{if}\;\frac{\sqrt{b \cdot b + c \cdot \left(a \cdot -3\right)} - b}{a \cdot 3} \leq -50:\\
\;\;\;\;\frac{-0.3333333333333333}{a} \cdot \frac{b \cdot b - t_0}{b + \sqrt{t_0}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{0.75 \cdot \left(c \cdot \left(c \cdot a\right)\right)}{b} - c \cdot b}{\mathsf{fma}\left(b, b, t_0\right)}\\
\end{array}
\]
Alternative 9
Error
6.4
Cost
21700
\[\begin{array}{l}
t_0 := \mathsf{fma}\left(a, c \cdot -3, b \cdot b\right)\\
\mathbf{if}\;\frac{\sqrt{b \cdot b + c \cdot \left(a \cdot -3\right)} - b}{a \cdot 3} \leq -50:\\
\;\;\;\;\frac{1}{\frac{a \cdot -3}{b - \sqrt{t_0}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{0.75 \cdot \left(c \cdot \left(c \cdot a\right)\right)}{b} - c \cdot b}{\mathsf{fma}\left(b, b, t_0\right)}\\
\end{array}
\]
herbie shell --seed 2023025
(FPCore (a b c)
:name "Cubic critical, 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) (* (* 3.0 a) c)))) (* 3.0 a)))