(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
(let* ((t_0 (- (sqrt (/ (- F) C))))
(t_1 (* F (* B B)))
(t_2 (- (sqrt 2.0)))
(t_3 (hypot B (- A C)))
(t_4 (fma B B (- (* C C) (* C C))))
(t_5 (fma B B (* C (* A -4.0))))
(t_6 (* 2.0 (+ A (- C t_3))))
(t_7 (- (/ (pow (* (pow t_5 0.25) (pow (* F t_6) 0.25)) 2.0) t_5))))
(if (<= A -1.9e+94)
(*
(pow (pow (* t_5 (* (* F 2.0) (- (+ A C) t_3))) 0.25) 2.0)
(/ -1.0 t_5))
(if (<= A -5.2e-53)
t_0
(if (<= A -1.06e-116)
(/ (- (sqrt (* (* t_5 F) t_6))) t_5)
(if (<= A -1.8e-150)
(* (sqrt (* (/ F C) -0.5)) t_2)
(if (<= A -8.8e-244)
t_7
(if (<= A -6.3e-308)
t_0
(if (<= A 1.4e-251)
(* (sqrt (* F (- C (hypot C B)))) (/ t_2 B))
(if (<= A 9.2e-39)
t_7
(if (<= A 2.25e+117)
(-
(sqrt
(*
-0.5
(/
F
(/
A
(+ 1.0 (* A (sqrt (/ 1.0 (fma A A (* B B)))))))))))
(if (<= A 1.02e+185)
(/
(-
(sqrt
(fma
2.0
(/
(fma
2.0
(* (* F (* C C)) t_4)
(* -0.5 (* t_4 t_1)))
A)
(fma
2.0
(fma 2.0 (* t_4 (* C F)) (* t_1 (+ C C)))
(* -8.0 (* (* C F) (* A (+ C C))))))))
t_5)
(- (sqrt (/ (- F) A)))))))))))))))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 t_0 = -sqrt((-F / C));
double t_1 = F * (B * B);
double t_2 = -sqrt(2.0);
double t_3 = hypot(B, (A - C));
double t_4 = fma(B, B, ((C * C) - (C * C)));
double t_5 = fma(B, B, (C * (A * -4.0)));
double t_6 = 2.0 * (A + (C - t_3));
double t_7 = -(pow((pow(t_5, 0.25) * pow((F * t_6), 0.25)), 2.0) / t_5);
double tmp;
if (A <= -1.9e+94) {
tmp = pow(pow((t_5 * ((F * 2.0) * ((A + C) - t_3))), 0.25), 2.0) * (-1.0 / t_5);
} else if (A <= -5.2e-53) {
tmp = t_0;
} else if (A <= -1.06e-116) {
tmp = -sqrt(((t_5 * F) * t_6)) / t_5;
} else if (A <= -1.8e-150) {
tmp = sqrt(((F / C) * -0.5)) * t_2;
} else if (A <= -8.8e-244) {
tmp = t_7;
} else if (A <= -6.3e-308) {
tmp = t_0;
} else if (A <= 1.4e-251) {
tmp = sqrt((F * (C - hypot(C, B)))) * (t_2 / B);
} else if (A <= 9.2e-39) {
tmp = t_7;
} else if (A <= 2.25e+117) {
tmp = -sqrt((-0.5 * (F / (A / (1.0 + (A * sqrt((1.0 / fma(A, A, (B * B))))))))));
} else if (A <= 1.02e+185) {
tmp = -sqrt(fma(2.0, (fma(2.0, ((F * (C * C)) * t_4), (-0.5 * (t_4 * t_1))) / A), fma(2.0, fma(2.0, (t_4 * (C * F)), (t_1 * (C + C))), (-8.0 * ((C * F) * (A * (C + C))))))) / t_5;
} else {
tmp = -sqrt((-F / A));
}
return tmp;
}
function code(A, B, C, F) return Float64(Float64(-sqrt(Float64(Float64(2.0 * Float64(Float64((B ^ 2.0) - Float64(Float64(4.0 * A) * C)) * F)) * Float64(Float64(A + C) - sqrt(Float64((Float64(A - C) ^ 2.0) + (B ^ 2.0))))))) / Float64((B ^ 2.0) - Float64(Float64(4.0 * A) * C))) end
function code(A, B, C, F) t_0 = Float64(-sqrt(Float64(Float64(-F) / C))) t_1 = Float64(F * Float64(B * B)) t_2 = Float64(-sqrt(2.0)) t_3 = hypot(B, Float64(A - C)) t_4 = fma(B, B, Float64(Float64(C * C) - Float64(C * C))) t_5 = fma(B, B, Float64(C * Float64(A * -4.0))) t_6 = Float64(2.0 * Float64(A + Float64(C - t_3))) t_7 = Float64(-Float64((Float64((t_5 ^ 0.25) * (Float64(F * t_6) ^ 0.25)) ^ 2.0) / t_5)) tmp = 0.0 if (A <= -1.9e+94) tmp = Float64(((Float64(t_5 * Float64(Float64(F * 2.0) * Float64(Float64(A + C) - t_3))) ^ 0.25) ^ 2.0) * Float64(-1.0 / t_5)); elseif (A <= -5.2e-53) tmp = t_0; elseif (A <= -1.06e-116) tmp = Float64(Float64(-sqrt(Float64(Float64(t_5 * F) * t_6))) / t_5); elseif (A <= -1.8e-150) tmp = Float64(sqrt(Float64(Float64(F / C) * -0.5)) * t_2); elseif (A <= -8.8e-244) tmp = t_7; elseif (A <= -6.3e-308) tmp = t_0; elseif (A <= 1.4e-251) tmp = Float64(sqrt(Float64(F * Float64(C - hypot(C, B)))) * Float64(t_2 / B)); elseif (A <= 9.2e-39) tmp = t_7; elseif (A <= 2.25e+117) tmp = Float64(-sqrt(Float64(-0.5 * Float64(F / Float64(A / Float64(1.0 + Float64(A * sqrt(Float64(1.0 / fma(A, A, Float64(B * B))))))))))); elseif (A <= 1.02e+185) tmp = Float64(Float64(-sqrt(fma(2.0, Float64(fma(2.0, Float64(Float64(F * Float64(C * C)) * t_4), Float64(-0.5 * Float64(t_4 * t_1))) / A), fma(2.0, fma(2.0, Float64(t_4 * Float64(C * F)), Float64(t_1 * Float64(C + C))), Float64(-8.0 * Float64(Float64(C * F) * Float64(A * Float64(C + C)))))))) / t_5); else tmp = Float64(-sqrt(Float64(Float64(-F) / A))); end return tmp end
code[A_, B_, C_, F_] := N[((-N[Sqrt[N[(N[(2.0 * N[(N[(N[Power[B, 2.0], $MachinePrecision] - N[(N[(4.0 * A), $MachinePrecision] * C), $MachinePrecision]), $MachinePrecision] * F), $MachinePrecision]), $MachinePrecision] * N[(N[(A + C), $MachinePrecision] - N[Sqrt[N[(N[Power[N[(A - C), $MachinePrecision], 2.0], $MachinePrecision] + N[Power[B, 2.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]) / N[(N[Power[B, 2.0], $MachinePrecision] - N[(N[(4.0 * A), $MachinePrecision] * C), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
code[A_, B_, C_, F_] := Block[{t$95$0 = (-N[Sqrt[N[((-F) / C), $MachinePrecision]], $MachinePrecision])}, Block[{t$95$1 = N[(F * N[(B * B), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = (-N[Sqrt[2.0], $MachinePrecision])}, Block[{t$95$3 = N[Sqrt[B ^ 2 + N[(A - C), $MachinePrecision] ^ 2], $MachinePrecision]}, Block[{t$95$4 = N[(B * B + N[(N[(C * C), $MachinePrecision] - N[(C * C), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$5 = N[(B * B + N[(C * N[(A * -4.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$6 = N[(2.0 * N[(A + N[(C - t$95$3), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$7 = (-N[(N[Power[N[(N[Power[t$95$5, 0.25], $MachinePrecision] * N[Power[N[(F * t$95$6), $MachinePrecision], 0.25], $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision] / t$95$5), $MachinePrecision])}, If[LessEqual[A, -1.9e+94], N[(N[Power[N[Power[N[(t$95$5 * N[(N[(F * 2.0), $MachinePrecision] * N[(N[(A + C), $MachinePrecision] - t$95$3), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], 0.25], $MachinePrecision], 2.0], $MachinePrecision] * N[(-1.0 / t$95$5), $MachinePrecision]), $MachinePrecision], If[LessEqual[A, -5.2e-53], t$95$0, If[LessEqual[A, -1.06e-116], N[((-N[Sqrt[N[(N[(t$95$5 * F), $MachinePrecision] * t$95$6), $MachinePrecision]], $MachinePrecision]) / t$95$5), $MachinePrecision], If[LessEqual[A, -1.8e-150], N[(N[Sqrt[N[(N[(F / C), $MachinePrecision] * -0.5), $MachinePrecision]], $MachinePrecision] * t$95$2), $MachinePrecision], If[LessEqual[A, -8.8e-244], t$95$7, If[LessEqual[A, -6.3e-308], t$95$0, If[LessEqual[A, 1.4e-251], N[(N[Sqrt[N[(F * N[(C - N[Sqrt[C ^ 2 + B ^ 2], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] * N[(t$95$2 / B), $MachinePrecision]), $MachinePrecision], If[LessEqual[A, 9.2e-39], t$95$7, If[LessEqual[A, 2.25e+117], (-N[Sqrt[N[(-0.5 * N[(F / N[(A / N[(1.0 + N[(A * N[Sqrt[N[(1.0 / N[(A * A + N[(B * B), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), If[LessEqual[A, 1.02e+185], N[((-N[Sqrt[N[(2.0 * N[(N[(2.0 * N[(N[(F * N[(C * C), $MachinePrecision]), $MachinePrecision] * t$95$4), $MachinePrecision] + N[(-0.5 * N[(t$95$4 * t$95$1), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / A), $MachinePrecision] + N[(2.0 * N[(2.0 * N[(t$95$4 * N[(C * F), $MachinePrecision]), $MachinePrecision] + N[(t$95$1 * N[(C + C), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(-8.0 * N[(N[(C * F), $MachinePrecision] * N[(A * N[(C + C), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]) / t$95$5), $MachinePrecision], (-N[Sqrt[N[((-F) / A), $MachinePrecision]], $MachinePrecision])]]]]]]]]]]]]]]]]]]
\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}
t_0 := -\sqrt{\frac{-F}{C}}\\
t_1 := F \cdot \left(B \cdot B\right)\\
t_2 := -\sqrt{2}\\
t_3 := \mathsf{hypot}\left(B, A - C\right)\\
t_4 := \mathsf{fma}\left(B, B, C \cdot C - C \cdot C\right)\\
t_5 := \mathsf{fma}\left(B, B, C \cdot \left(A \cdot -4\right)\right)\\
t_6 := 2 \cdot \left(A + \left(C - t_3\right)\right)\\
t_7 := -\frac{{\left({t_5}^{0.25} \cdot {\left(F \cdot t_6\right)}^{0.25}\right)}^{2}}{t_5}\\
\mathbf{if}\;A \leq -1.9 \cdot 10^{+94}:\\
\;\;\;\;{\left({\left(t_5 \cdot \left(\left(F \cdot 2\right) \cdot \left(\left(A + C\right) - t_3\right)\right)\right)}^{0.25}\right)}^{2} \cdot \frac{-1}{t_5}\\
\mathbf{elif}\;A \leq -5.2 \cdot 10^{-53}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;A \leq -1.06 \cdot 10^{-116}:\\
\;\;\;\;\frac{-\sqrt{\left(t_5 \cdot F\right) \cdot t_6}}{t_5}\\
\mathbf{elif}\;A \leq -1.8 \cdot 10^{-150}:\\
\;\;\;\;\sqrt{\frac{F}{C} \cdot -0.5} \cdot t_2\\
\mathbf{elif}\;A \leq -8.8 \cdot 10^{-244}:\\
\;\;\;\;t_7\\
\mathbf{elif}\;A \leq -6.3 \cdot 10^{-308}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;A \leq 1.4 \cdot 10^{-251}:\\
\;\;\;\;\sqrt{F \cdot \left(C - \mathsf{hypot}\left(C, B\right)\right)} \cdot \frac{t_2}{B}\\
\mathbf{elif}\;A \leq 9.2 \cdot 10^{-39}:\\
\;\;\;\;t_7\\
\mathbf{elif}\;A \leq 2.25 \cdot 10^{+117}:\\
\;\;\;\;-\sqrt{-0.5 \cdot \frac{F}{\frac{A}{1 + A \cdot \sqrt{\frac{1}{\mathsf{fma}\left(A, A, B \cdot B\right)}}}}}\\
\mathbf{elif}\;A \leq 1.02 \cdot 10^{+185}:\\
\;\;\;\;\frac{-\sqrt{\mathsf{fma}\left(2, \frac{\mathsf{fma}\left(2, \left(F \cdot \left(C \cdot C\right)\right) \cdot t_4, -0.5 \cdot \left(t_4 \cdot t_1\right)\right)}{A}, \mathsf{fma}\left(2, \mathsf{fma}\left(2, t_4 \cdot \left(C \cdot F\right), t_1 \cdot \left(C + C\right)\right), -8 \cdot \left(\left(C \cdot F\right) \cdot \left(A \cdot \left(C + C\right)\right)\right)\right)\right)}}{t_5}\\
\mathbf{else}:\\
\;\;\;\;-\sqrt{\frac{-F}{A}}\\
\end{array}
if A < -1.8999999999999998e94Initial program 58.3
Simplified50.3
Applied egg-rr50.4
Applied egg-rr51.6
Applied egg-rr50.1
if -1.8999999999999998e94 < A < -5.19999999999999993e-53 or -8.79999999999999939e-244 < A < -6.2999999999999995e-308Initial program 43.4
Simplified40.7
Applied egg-rr41.5
Applied egg-rr44.0
Taylor expanded in A around -inf 49.5
Simplified49.5
if -5.19999999999999993e-53 < A < -1.05999999999999997e-116Initial program 44.2
Simplified41.5
if -1.05999999999999997e-116 < A < -1.8000000000000001e-150Initial program 45.9
Simplified42.1
Taylor expanded in A around -inf 50.5
Simplified50.5
if -1.8000000000000001e-150 < A < -8.79999999999999939e-244 or 1.39999999999999994e-251 < A < 9.20000000000000033e-39Initial program 48.5
Simplified44.6
Applied egg-rr45.6
Applied egg-rr41.4
if -6.2999999999999995e-308 < A < 1.39999999999999994e-251Initial program 49.3
Simplified43.7
Applied egg-rr44.1
Applied egg-rr38.4
Taylor expanded in A around 0 55.0
Simplified47.7
if 9.20000000000000033e-39 < A < 2.25e117Initial program 56.3
Simplified54.8
Applied egg-rr55.4
Applied egg-rr51.5
Taylor expanded in C around 0 52.6
Simplified52.6
Taylor expanded in C around inf 43.3
Simplified43.3
if 2.25e117 < A < 1.0200000000000001e185Initial program 62.8
Simplified61.9
Taylor expanded in A around inf 48.2
Simplified45.1
if 1.0200000000000001e185 < A Initial program 64.0
Simplified62.8
Applied egg-rr62.8
Taylor expanded in B around 0 40.6
Simplified40.6
Final simplification45.2
herbie shell --seed 2022206
(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))))