\frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + C\right) - \sqrt{{\left(A - C\right)}^{2} + {B}^{2}}\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C}\begin{array}{l}
\mathbf{if}\;C \leq -1.3732001585011064 \cdot 10^{+135}:\\
\;\;\;\;-0.25 \cdot \frac{\sqrt{\left(A \cdot F\right) \cdot -16}}{A}\\
\mathbf{elif}\;C \leq -1.144330577806148 \cdot 10^{-163}:\\
\;\;\;\;\frac{-\sqrt{\left(2 \cdot \left(F \cdot \left({B}^{2} - C \cdot \left(A \cdot 4\right)\right)\right)\right) \cdot \left(\left(C + A\right) - \left|\sqrt[3]{{\left(A - C\right)}^{2} + B \cdot B}\right| \cdot \sqrt{\sqrt[3]{{\left(A - C\right)}^{2} + B \cdot B}}\right)}}{{B}^{2} - C \cdot \left(A \cdot 4\right)}\\
\mathbf{elif}\;C \leq 2.5219005088762548 \cdot 10^{-262}:\\
\;\;\;\;-0.25 \cdot \frac{\sqrt{\left(A \cdot F\right) \cdot -16}}{A}\\
\mathbf{elif}\;C \leq 4.4863525056193624 \cdot 10^{-18}:\\
\;\;\;\;\frac{-\sqrt{\left(2 \cdot \left(F \cdot \left({B}^{2} - C \cdot \left(A \cdot 4\right)\right)\right)\right) \cdot \left(\left(C + A\right) - \left(\sqrt{B \cdot B + C \cdot C} - \left(C \cdot A\right) \cdot \sqrt{\frac{1}{B \cdot B + C \cdot C}}\right)\right)}}{{B}^{2} - C \cdot \left(A \cdot 4\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{-1}{\frac{\sqrt{-2 \cdot \frac{C}{F}}}{\sqrt{2}}}\\
\end{array}(FPCore (A B C F)
:precision binary64
(/
(-
(sqrt
(*
(* 2.0 (* (- (pow B 2.0) (* (* 4.0 A) C)) F))
(- (+ A C) (sqrt (+ (pow (- A C) 2.0) (pow B 2.0)))))))
(- (pow B 2.0) (* (* 4.0 A) C))))(FPCore (A B C F)
:precision binary64
(if (<= C -1.3732001585011064e+135)
(* -0.25 (/ (sqrt (* (* A F) -16.0)) A))
(if (<= C -1.144330577806148e-163)
(/
(-
(sqrt
(*
(* 2.0 (* F (- (pow B 2.0) (* C (* A 4.0)))))
(-
(+ C A)
(*
(fabs (cbrt (+ (pow (- A C) 2.0) (* B B))))
(sqrt (cbrt (+ (pow (- A C) 2.0) (* B B)))))))))
(- (pow B 2.0) (* C (* A 4.0))))
(if (<= C 2.5219005088762548e-262)
(* -0.25 (/ (sqrt (* (* A F) -16.0)) A))
(if (<= C 4.4863525056193624e-18)
(/
(-
(sqrt
(*
(* 2.0 (* F (- (pow B 2.0) (* C (* A 4.0)))))
(-
(+ C A)
(-
(sqrt (+ (* B B) (* C C)))
(* (* C A) (sqrt (/ 1.0 (+ (* B B) (* C C))))))))))
(- (pow B 2.0) (* C (* A 4.0))))
(/ -1.0 (/ (sqrt (* -2.0 (/ C F))) (sqrt 2.0))))))))double code(double A, double B, double C, double F) {
return -sqrt((2.0 * ((pow(B, 2.0) - ((4.0 * A) * C)) * F)) * ((A + C) - sqrt(pow((A - C), 2.0) + pow(B, 2.0)))) / (pow(B, 2.0) - ((4.0 * A) * C));
}
double code(double A, double B, double C, double F) {
double tmp;
if (C <= -1.3732001585011064e+135) {
tmp = -0.25 * (sqrt((A * F) * -16.0) / A);
} else if (C <= -1.144330577806148e-163) {
tmp = -sqrt((2.0 * (F * (pow(B, 2.0) - (C * (A * 4.0))))) * ((C + A) - (fabs(cbrt(pow((A - C), 2.0) + (B * B))) * sqrt(cbrt(pow((A - C), 2.0) + (B * B)))))) / (pow(B, 2.0) - (C * (A * 4.0)));
} else if (C <= 2.5219005088762548e-262) {
tmp = -0.25 * (sqrt((A * F) * -16.0) / A);
} else if (C <= 4.4863525056193624e-18) {
tmp = -sqrt((2.0 * (F * (pow(B, 2.0) - (C * (A * 4.0))))) * ((C + A) - (sqrt((B * B) + (C * C)) - ((C * A) * sqrt(1.0 / ((B * B) + (C * C))))))) / (pow(B, 2.0) - (C * (A * 4.0)));
} else {
tmp = -1.0 / (sqrt(-2.0 * (C / F)) / sqrt(2.0));
}
return tmp;
}



Bits error versus A



Bits error versus B



Bits error versus C



Bits error versus F
Results
if C < -1.37320015850110637e135 or -1.144330577806148e-163 < C < 2.5219005088762548e-262Initial program 54.5
rmApplied associate--l+_binary64_308454.5
Applied distribute-rgt-in_binary64_309754.5
Simplified54.5
Simplified54.5
Taylor expanded around -inf 42.7
Simplified42.7
if -1.37320015850110637e135 < C < -1.144330577806148e-163Initial program 42.9
rmApplied add-cube-cbrt_binary64_318243.0
Applied sqrt-prod_binary64_316343.0
Simplified43.0
Simplified43.0
if 2.5219005088762548e-262 < C < 4.4863525056193624e-18Initial program 48.0
Taylor expanded around 0 49.8
Simplified49.8
if 4.4863525056193624e-18 < C Initial program 60.6
rmApplied neg-mul-1_binary64_314360.6
Applied associate-/l*_binary64_309260.6
Simplified60.6
Taylor expanded around -inf 41.6
Final simplification43.9
herbie shell --seed 2020353
(FPCore (A B C F)
:name "ABCF->ab-angle b"
:precision binary64
(/ (- (sqrt (* (* 2.0 (* (- (pow B 2.0) (* (* 4.0 A) C)) F)) (- (+ A C) (sqrt (+ (pow (- A C) 2.0) (pow B 2.0))))))) (- (pow B 2.0) (* (* 4.0 A) C))))