(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 (* 2.0 (* (* -0.5 F) (/ 1.0 C)))))
(t_1 (sqrt (* -0.5 F)))
(t_2 (hypot B (- A C)))
(t_3 (* (sqrt (* F (- A (hypot A B)))) (/ (- (sqrt 2.0)) B)))
(t_4 (sqrt (* 2.0 (/ (* -0.5 F) C))))
(t_5 (sqrt (* F (* C -8.0))))
(t_6 (- t_1))
(t_7 (* (sqrt 2.0) (* (pow C -0.25) (/ t_6 (pow C 0.25)))))
(t_8 (fma B B (* C (* A -4.0))))
(t_9 (* F t_8))
(t_10 (/ (- (sqrt (* 2.0 (* t_9 (+ A (- C t_2)))))) t_8))
(t_11 (/ (- (sqrt (* 2.0 (* t_9 (+ A A))))) t_8))
(t_12 (/ (* (sqrt 2.0) t_6) (sqrt C))))
(if (<= B -1e+40)
(* (sqrt 2.0) (/ t_6 (sqrt C)))
(if (<= B -7e-41)
t_10
(if (<= B -3.5e-116)
t_4
(if (<= B -1e-280)
(* (sqrt 2.0) (* t_1 (- (pow C -0.5))))
(if (<= B -1.25e-306)
t_4
(if (<= B 5.2e-235)
t_11
(if (<= B 1.85e-225)
t_0
(if (<= B 6.5e-222)
t_11
(if (<= B 1.75e-202)
t_12
(if (<= B 2.1e-141)
t_0
(if (<= B 3.8e-125)
(/
(+
(* (/ (sqrt 2.0) t_5) (* F (* B B)))
(* (sqrt 2.0) (* A t_5)))
t_8)
(if (<= B 5.6e-118)
t_3
(if (<= B 1e-46)
t_10
(if (<= B 1e-30)
t_7
(if (<= B 100000.0)
(*
(sqrt (* 2.0 (* t_8 (* F (- (+ C A) t_2)))))
(/ 1.0 (- t_8)))
(if (<= B 4.8e+70)
t_12
(if (<= B 2.2e+101)
t_3
(if (<= B 1e+165)
t_7
t_3))))))))))))))))))))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((2.0 * ((-0.5 * F) * (1.0 / C))));
double t_1 = sqrt((-0.5 * F));
double t_2 = hypot(B, (A - C));
double t_3 = sqrt((F * (A - hypot(A, B)))) * (-sqrt(2.0) / B);
double t_4 = sqrt((2.0 * ((-0.5 * F) / C)));
double t_5 = sqrt((F * (C * -8.0)));
double t_6 = -t_1;
double t_7 = sqrt(2.0) * (pow(C, -0.25) * (t_6 / pow(C, 0.25)));
double t_8 = fma(B, B, (C * (A * -4.0)));
double t_9 = F * t_8;
double t_10 = -sqrt((2.0 * (t_9 * (A + (C - t_2))))) / t_8;
double t_11 = -sqrt((2.0 * (t_9 * (A + A)))) / t_8;
double t_12 = (sqrt(2.0) * t_6) / sqrt(C);
double tmp;
if (B <= -1e+40) {
tmp = sqrt(2.0) * (t_6 / sqrt(C));
} else if (B <= -7e-41) {
tmp = t_10;
} else if (B <= -3.5e-116) {
tmp = t_4;
} else if (B <= -1e-280) {
tmp = sqrt(2.0) * (t_1 * -pow(C, -0.5));
} else if (B <= -1.25e-306) {
tmp = t_4;
} else if (B <= 5.2e-235) {
tmp = t_11;
} else if (B <= 1.85e-225) {
tmp = t_0;
} else if (B <= 6.5e-222) {
tmp = t_11;
} else if (B <= 1.75e-202) {
tmp = t_12;
} else if (B <= 2.1e-141) {
tmp = t_0;
} else if (B <= 3.8e-125) {
tmp = (((sqrt(2.0) / t_5) * (F * (B * B))) + (sqrt(2.0) * (A * t_5))) / t_8;
} else if (B <= 5.6e-118) {
tmp = t_3;
} else if (B <= 1e-46) {
tmp = t_10;
} else if (B <= 1e-30) {
tmp = t_7;
} else if (B <= 100000.0) {
tmp = sqrt((2.0 * (t_8 * (F * ((C + A) - t_2))))) * (1.0 / -t_8);
} else if (B <= 4.8e+70) {
tmp = t_12;
} else if (B <= 2.2e+101) {
tmp = t_3;
} else if (B <= 1e+165) {
tmp = t_7;
} else {
tmp = t_3;
}
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 = sqrt(Float64(2.0 * Float64(Float64(-0.5 * F) * Float64(1.0 / C)))) t_1 = sqrt(Float64(-0.5 * F)) t_2 = hypot(B, Float64(A - C)) t_3 = Float64(sqrt(Float64(F * Float64(A - hypot(A, B)))) * Float64(Float64(-sqrt(2.0)) / B)) t_4 = sqrt(Float64(2.0 * Float64(Float64(-0.5 * F) / C))) t_5 = sqrt(Float64(F * Float64(C * -8.0))) t_6 = Float64(-t_1) t_7 = Float64(sqrt(2.0) * Float64((C ^ -0.25) * Float64(t_6 / (C ^ 0.25)))) t_8 = fma(B, B, Float64(C * Float64(A * -4.0))) t_9 = Float64(F * t_8) t_10 = Float64(Float64(-sqrt(Float64(2.0 * Float64(t_9 * Float64(A + Float64(C - t_2)))))) / t_8) t_11 = Float64(Float64(-sqrt(Float64(2.0 * Float64(t_9 * Float64(A + A))))) / t_8) t_12 = Float64(Float64(sqrt(2.0) * t_6) / sqrt(C)) tmp = 0.0 if (B <= -1e+40) tmp = Float64(sqrt(2.0) * Float64(t_6 / sqrt(C))); elseif (B <= -7e-41) tmp = t_10; elseif (B <= -3.5e-116) tmp = t_4; elseif (B <= -1e-280) tmp = Float64(sqrt(2.0) * Float64(t_1 * Float64(-(C ^ -0.5)))); elseif (B <= -1.25e-306) tmp = t_4; elseif (B <= 5.2e-235) tmp = t_11; elseif (B <= 1.85e-225) tmp = t_0; elseif (B <= 6.5e-222) tmp = t_11; elseif (B <= 1.75e-202) tmp = t_12; elseif (B <= 2.1e-141) tmp = t_0; elseif (B <= 3.8e-125) tmp = Float64(Float64(Float64(Float64(sqrt(2.0) / t_5) * Float64(F * Float64(B * B))) + Float64(sqrt(2.0) * Float64(A * t_5))) / t_8); elseif (B <= 5.6e-118) tmp = t_3; elseif (B <= 1e-46) tmp = t_10; elseif (B <= 1e-30) tmp = t_7; elseif (B <= 100000.0) tmp = Float64(sqrt(Float64(2.0 * Float64(t_8 * Float64(F * Float64(Float64(C + A) - t_2))))) * Float64(1.0 / Float64(-t_8))); elseif (B <= 4.8e+70) tmp = t_12; elseif (B <= 2.2e+101) tmp = t_3; elseif (B <= 1e+165) tmp = t_7; else tmp = t_3; 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[(2.0 * N[(N[(-0.5 * F), $MachinePrecision] * N[(1.0 / C), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$1 = N[Sqrt[N[(-0.5 * F), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$2 = N[Sqrt[B ^ 2 + N[(A - C), $MachinePrecision] ^ 2], $MachinePrecision]}, Block[{t$95$3 = N[(N[Sqrt[N[(F * N[(A - N[Sqrt[A ^ 2 + B ^ 2], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] * N[((-N[Sqrt[2.0], $MachinePrecision]) / B), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$4 = N[Sqrt[N[(2.0 * N[(N[(-0.5 * F), $MachinePrecision] / C), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$5 = N[Sqrt[N[(F * N[(C * -8.0), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$6 = (-t$95$1)}, Block[{t$95$7 = N[(N[Sqrt[2.0], $MachinePrecision] * N[(N[Power[C, -0.25], $MachinePrecision] * N[(t$95$6 / N[Power[C, 0.25], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$8 = N[(B * B + N[(C * N[(A * -4.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$9 = N[(F * t$95$8), $MachinePrecision]}, Block[{t$95$10 = N[((-N[Sqrt[N[(2.0 * N[(t$95$9 * N[(A + N[(C - t$95$2), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]) / t$95$8), $MachinePrecision]}, Block[{t$95$11 = N[((-N[Sqrt[N[(2.0 * N[(t$95$9 * N[(A + A), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]) / t$95$8), $MachinePrecision]}, Block[{t$95$12 = N[(N[(N[Sqrt[2.0], $MachinePrecision] * t$95$6), $MachinePrecision] / N[Sqrt[C], $MachinePrecision]), $MachinePrecision]}, If[LessEqual[B, -1e+40], N[(N[Sqrt[2.0], $MachinePrecision] * N[(t$95$6 / N[Sqrt[C], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[B, -7e-41], t$95$10, If[LessEqual[B, -3.5e-116], t$95$4, If[LessEqual[B, -1e-280], N[(N[Sqrt[2.0], $MachinePrecision] * N[(t$95$1 * (-N[Power[C, -0.5], $MachinePrecision])), $MachinePrecision]), $MachinePrecision], If[LessEqual[B, -1.25e-306], t$95$4, If[LessEqual[B, 5.2e-235], t$95$11, If[LessEqual[B, 1.85e-225], t$95$0, If[LessEqual[B, 6.5e-222], t$95$11, If[LessEqual[B, 1.75e-202], t$95$12, If[LessEqual[B, 2.1e-141], t$95$0, If[LessEqual[B, 3.8e-125], N[(N[(N[(N[(N[Sqrt[2.0], $MachinePrecision] / t$95$5), $MachinePrecision] * N[(F * N[(B * B), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(N[Sqrt[2.0], $MachinePrecision] * N[(A * t$95$5), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / t$95$8), $MachinePrecision], If[LessEqual[B, 5.6e-118], t$95$3, If[LessEqual[B, 1e-46], t$95$10, If[LessEqual[B, 1e-30], t$95$7, If[LessEqual[B, 100000.0], N[(N[Sqrt[N[(2.0 * N[(t$95$8 * N[(F * N[(N[(C + A), $MachinePrecision] - t$95$2), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] * N[(1.0 / (-t$95$8)), $MachinePrecision]), $MachinePrecision], If[LessEqual[B, 4.8e+70], t$95$12, If[LessEqual[B, 2.2e+101], t$95$3, If[LessEqual[B, 1e+165], t$95$7, t$95$3]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
\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{2 \cdot \left(\left(-0.5 \cdot F\right) \cdot \frac{1}{C}\right)}\\
t_1 := \sqrt{-0.5 \cdot F}\\
t_2 := \mathsf{hypot}\left(B, A - C\right)\\
t_3 := \sqrt{F \cdot \left(A - \mathsf{hypot}\left(A, B\right)\right)} \cdot \frac{-\sqrt{2}}{B}\\
t_4 := \sqrt{2 \cdot \frac{-0.5 \cdot F}{C}}\\
t_5 := \sqrt{F \cdot \left(C \cdot -8\right)}\\
t_6 := -t_1\\
t_7 := \sqrt{2} \cdot \left({C}^{-0.25} \cdot \frac{t_6}{{C}^{0.25}}\right)\\
t_8 := \mathsf{fma}\left(B, B, C \cdot \left(A \cdot -4\right)\right)\\
t_9 := F \cdot t_8\\
t_10 := \frac{-\sqrt{2 \cdot \left(t_9 \cdot \left(A + \left(C - t_2\right)\right)\right)}}{t_8}\\
t_11 := \frac{-\sqrt{2 \cdot \left(t_9 \cdot \left(A + A\right)\right)}}{t_8}\\
t_12 := \frac{\sqrt{2} \cdot t_6}{\sqrt{C}}\\
\mathbf{if}\;B \leq -1 \cdot 10^{+40}:\\
\;\;\;\;\sqrt{2} \cdot \frac{t_6}{\sqrt{C}}\\
\mathbf{elif}\;B \leq -7 \cdot 10^{-41}:\\
\;\;\;\;t_10\\
\mathbf{elif}\;B \leq -3.5 \cdot 10^{-116}:\\
\;\;\;\;t_4\\
\mathbf{elif}\;B \leq -1 \cdot 10^{-280}:\\
\;\;\;\;\sqrt{2} \cdot \left(t_1 \cdot \left(-{C}^{-0.5}\right)\right)\\
\mathbf{elif}\;B \leq -1.25 \cdot 10^{-306}:\\
\;\;\;\;t_4\\
\mathbf{elif}\;B \leq 5.2 \cdot 10^{-235}:\\
\;\;\;\;t_11\\
\mathbf{elif}\;B \leq 1.85 \cdot 10^{-225}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;B \leq 6.5 \cdot 10^{-222}:\\
\;\;\;\;t_11\\
\mathbf{elif}\;B \leq 1.75 \cdot 10^{-202}:\\
\;\;\;\;t_12\\
\mathbf{elif}\;B \leq 2.1 \cdot 10^{-141}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;B \leq 3.8 \cdot 10^{-125}:\\
\;\;\;\;\frac{\frac{\sqrt{2}}{t_5} \cdot \left(F \cdot \left(B \cdot B\right)\right) + \sqrt{2} \cdot \left(A \cdot t_5\right)}{t_8}\\
\mathbf{elif}\;B \leq 5.6 \cdot 10^{-118}:\\
\;\;\;\;t_3\\
\mathbf{elif}\;B \leq 10^{-46}:\\
\;\;\;\;t_10\\
\mathbf{elif}\;B \leq 10^{-30}:\\
\;\;\;\;t_7\\
\mathbf{elif}\;B \leq 100000:\\
\;\;\;\;\sqrt{2 \cdot \left(t_8 \cdot \left(F \cdot \left(\left(C + A\right) - t_2\right)\right)\right)} \cdot \frac{1}{-t_8}\\
\mathbf{elif}\;B \leq 4.8 \cdot 10^{+70}:\\
\;\;\;\;t_12\\
\mathbf{elif}\;B \leq 2.2 \cdot 10^{+101}:\\
\;\;\;\;t_3\\
\mathbf{elif}\;B \leq 10^{+165}:\\
\;\;\;\;t_7\\
\mathbf{else}:\\
\;\;\;\;t_3\\
\end{array}
if B < -1.00000000000000003e40Initial program 56.9
Simplified55.5
Taylor expanded in A around -inf 54.6
Simplified54.6
Applied egg-rr51.0
if -1.00000000000000003e40 < B < -6.9999999999999999e-41 or 5.6e-118 < B < 1.00000000000000002e-46Initial program 43.8
Simplified37.4
if -6.9999999999999999e-41 < B < -3.49999999999999984e-116 or -9.9999999999999996e-281 < B < -1.25e-306Initial program 48.5
Simplified41.7
Taylor expanded in A around -inf 40.0
Simplified40.0
Applied egg-rr43.3
if -3.49999999999999984e-116 < B < -9.9999999999999996e-281Initial program 53.3
Simplified46.4
Taylor expanded in A around -inf 39.1
Simplified39.1
Applied egg-rr32.4
Applied egg-rr32.4
if -1.25e-306 < B < 5.2000000000000001e-235 or 1.84999999999999994e-225 < B < 6.5000000000000005e-222Initial program 52.0
Simplified44.8
Taylor expanded in C around inf 34.5
if 5.2000000000000001e-235 < B < 1.84999999999999994e-225 or 1.75e-202 < B < 2.0999999999999999e-141Initial program 51.5
Simplified44.3
Taylor expanded in A around -inf 38.3
Simplified38.3
Applied egg-rr30.0
Applied egg-rr30.0
Applied egg-rr42.6
if 6.5000000000000005e-222 < B < 1.75e-202 or 1e5 < B < 4.79999999999999974e70Initial program 45.8
Simplified40.2
Taylor expanded in A around -inf 45.0
Simplified45.0
Applied egg-rr39.8
Applied egg-rr39.8
if 2.0999999999999999e-141 < B < 3.8000000000000001e-125Initial program 47.5
Simplified38.8
Taylor expanded in A around -inf 35.0
Simplified34.9
if 3.8000000000000001e-125 < B < 5.6e-118 or 4.79999999999999974e70 < B < 2.2000000000000001e101 or 9.99999999999999899e164 < B Initial program 59.8
Simplified58.9
Taylor expanded in C around 0 58.8
Simplified31.3
if 1.00000000000000002e-46 < B < 1e-30 or 2.2000000000000001e101 < B < 9.99999999999999899e164Initial program 50.4
Simplified47.5
Taylor expanded in A around -inf 52.9
Simplified52.9
Applied egg-rr48.2
Applied egg-rr48.2
if 1e-30 < B < 1e5Initial program 44.9
Simplified36.7
Applied egg-rr38.5
Final simplification40.4
herbie shell --seed 2022210
(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))))