| Alternative 1 | |
|---|---|
| Error | 34.8 |
| Cost | 34592 |
(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 (+ C (+ A (hypot (- A C) B)))))
(t_1 (/ (sqrt 2.0) B))
(t_2 (fma B B (* -4.0 (* C A))))
(t_3 (* t_0 (/ -1.0 t_2)))
(t_4 (fma B B (* A (* C -4.0)))))
(if (<= B -1e+154)
(* (sqrt (* F (+ C (hypot C B)))) t_1)
(if (<= B -4.3e-10)
(* (* t_0 (/ 1.0 t_2)) (* (sqrt 2.0) (* B (sqrt F))))
(if (<= B -7e-159)
(- (/ (sqrt (* 2.0 (* (* F t_4) (+ C C)))) t_4))
(if (<= B -6.2e-246)
(sqrt (- (/ F A)))
(if (<= B 1.45e-127)
(*
(sqrt (* 2.0 (- (* F (* B B)) (* F (* (* C A) 4.0)))))
(* (* (/ (sqrt 2.0) A) (sqrt (/ 1.0 C))) 0.25))
(if (<= B 3.3e-35)
(* (sqrt (* 2.0 (* F t_2))) t_3)
(if (<= B 5.5e+35)
(/
(-
(sqrt
(*
t_4
(* 2.0 (* F (- (* C 2.0) (* (/ (pow B 2.0) A) 0.5)))))))
t_4)
(if (<= B 1e+150)
(* (* (sqrt F) (* B (sqrt 2.0))) t_3)
(if (<= B 9e+230)
(* t_1 (- (sqrt (* F (+ C (hypot B C))))))
(* (sqrt (/ F B)) (- (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 t_0 = sqrt((C + (A + hypot((A - C), B))));
double t_1 = sqrt(2.0) / B;
double t_2 = fma(B, B, (-4.0 * (C * A)));
double t_3 = t_0 * (-1.0 / t_2);
double t_4 = fma(B, B, (A * (C * -4.0)));
double tmp;
if (B <= -1e+154) {
tmp = sqrt((F * (C + hypot(C, B)))) * t_1;
} else if (B <= -4.3e-10) {
tmp = (t_0 * (1.0 / t_2)) * (sqrt(2.0) * (B * sqrt(F)));
} else if (B <= -7e-159) {
tmp = -(sqrt((2.0 * ((F * t_4) * (C + C)))) / t_4);
} else if (B <= -6.2e-246) {
tmp = sqrt(-(F / A));
} else if (B <= 1.45e-127) {
tmp = sqrt((2.0 * ((F * (B * B)) - (F * ((C * A) * 4.0))))) * (((sqrt(2.0) / A) * sqrt((1.0 / C))) * 0.25);
} else if (B <= 3.3e-35) {
tmp = sqrt((2.0 * (F * t_2))) * t_3;
} else if (B <= 5.5e+35) {
tmp = -sqrt((t_4 * (2.0 * (F * ((C * 2.0) - ((pow(B, 2.0) / A) * 0.5)))))) / t_4;
} else if (B <= 1e+150) {
tmp = (sqrt(F) * (B * sqrt(2.0))) * t_3;
} else if (B <= 9e+230) {
tmp = t_1 * -sqrt((F * (C + hypot(B, C))));
} else {
tmp = sqrt((F / B)) * -sqrt(2.0);
}
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(C + Float64(A + hypot(Float64(A - C), B)))) t_1 = Float64(sqrt(2.0) / B) t_2 = fma(B, B, Float64(-4.0 * Float64(C * A))) t_3 = Float64(t_0 * Float64(-1.0 / t_2)) t_4 = fma(B, B, Float64(A * Float64(C * -4.0))) tmp = 0.0 if (B <= -1e+154) tmp = Float64(sqrt(Float64(F * Float64(C + hypot(C, B)))) * t_1); elseif (B <= -4.3e-10) tmp = Float64(Float64(t_0 * Float64(1.0 / t_2)) * Float64(sqrt(2.0) * Float64(B * sqrt(F)))); elseif (B <= -7e-159) tmp = Float64(-Float64(sqrt(Float64(2.0 * Float64(Float64(F * t_4) * Float64(C + C)))) / t_4)); elseif (B <= -6.2e-246) tmp = sqrt(Float64(-Float64(F / A))); elseif (B <= 1.45e-127) tmp = Float64(sqrt(Float64(2.0 * Float64(Float64(F * Float64(B * B)) - Float64(F * Float64(Float64(C * A) * 4.0))))) * Float64(Float64(Float64(sqrt(2.0) / A) * sqrt(Float64(1.0 / C))) * 0.25)); elseif (B <= 3.3e-35) tmp = Float64(sqrt(Float64(2.0 * Float64(F * t_2))) * t_3); elseif (B <= 5.5e+35) tmp = Float64(Float64(-sqrt(Float64(t_4 * Float64(2.0 * Float64(F * Float64(Float64(C * 2.0) - Float64(Float64((B ^ 2.0) / A) * 0.5))))))) / t_4); elseif (B <= 1e+150) tmp = Float64(Float64(sqrt(F) * Float64(B * sqrt(2.0))) * t_3); elseif (B <= 9e+230) tmp = Float64(t_1 * Float64(-sqrt(Float64(F * Float64(C + hypot(B, C)))))); else tmp = Float64(sqrt(Float64(F / B)) * Float64(-sqrt(2.0))); 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[(C + N[(A + N[Sqrt[N[(A - C), $MachinePrecision] ^ 2 + B ^ 2], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$1 = N[(N[Sqrt[2.0], $MachinePrecision] / B), $MachinePrecision]}, Block[{t$95$2 = N[(B * B + N[(-4.0 * N[(C * A), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(t$95$0 * N[(-1.0 / t$95$2), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$4 = N[(B * B + N[(A * N[(C * -4.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[B, -1e+154], N[(N[Sqrt[N[(F * N[(C + N[Sqrt[C ^ 2 + B ^ 2], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] * t$95$1), $MachinePrecision], If[LessEqual[B, -4.3e-10], N[(N[(t$95$0 * N[(1.0 / t$95$2), $MachinePrecision]), $MachinePrecision] * N[(N[Sqrt[2.0], $MachinePrecision] * N[(B * N[Sqrt[F], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[B, -7e-159], (-N[(N[Sqrt[N[(2.0 * N[(N[(F * t$95$4), $MachinePrecision] * N[(C + C), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / t$95$4), $MachinePrecision]), If[LessEqual[B, -6.2e-246], N[Sqrt[(-N[(F / A), $MachinePrecision])], $MachinePrecision], If[LessEqual[B, 1.45e-127], N[(N[Sqrt[N[(2.0 * N[(N[(F * N[(B * B), $MachinePrecision]), $MachinePrecision] - N[(F * N[(N[(C * A), $MachinePrecision] * 4.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] * N[(N[(N[(N[Sqrt[2.0], $MachinePrecision] / A), $MachinePrecision] * N[Sqrt[N[(1.0 / C), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] * 0.25), $MachinePrecision]), $MachinePrecision], If[LessEqual[B, 3.3e-35], N[(N[Sqrt[N[(2.0 * N[(F * t$95$2), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] * t$95$3), $MachinePrecision], If[LessEqual[B, 5.5e+35], N[((-N[Sqrt[N[(t$95$4 * N[(2.0 * N[(F * N[(N[(C * 2.0), $MachinePrecision] - N[(N[(N[Power[B, 2.0], $MachinePrecision] / A), $MachinePrecision] * 0.5), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]) / t$95$4), $MachinePrecision], If[LessEqual[B, 1e+150], N[(N[(N[Sqrt[F], $MachinePrecision] * N[(B * N[Sqrt[2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * t$95$3), $MachinePrecision], If[LessEqual[B, 9e+230], N[(t$95$1 * (-N[Sqrt[N[(F * N[(C + N[Sqrt[B ^ 2 + C ^ 2], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision])), $MachinePrecision], N[(N[Sqrt[N[(F / B), $MachinePrecision]], $MachinePrecision] * (-N[Sqrt[2.0], $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{C + \left(A + \mathsf{hypot}\left(A - C, B\right)\right)}\\
t_1 := \frac{\sqrt{2}}{B}\\
t_2 := \mathsf{fma}\left(B, B, -4 \cdot \left(C \cdot A\right)\right)\\
t_3 := t_0 \cdot \frac{-1}{t_2}\\
t_4 := \mathsf{fma}\left(B, B, A \cdot \left(C \cdot -4\right)\right)\\
\mathbf{if}\;B \leq -1 \cdot 10^{+154}:\\
\;\;\;\;\sqrt{F \cdot \left(C + \mathsf{hypot}\left(C, B\right)\right)} \cdot t_1\\
\mathbf{elif}\;B \leq -4.3 \cdot 10^{-10}:\\
\;\;\;\;\left(t_0 \cdot \frac{1}{t_2}\right) \cdot \left(\sqrt{2} \cdot \left(B \cdot \sqrt{F}\right)\right)\\
\mathbf{elif}\;B \leq -7 \cdot 10^{-159}:\\
\;\;\;\;-\frac{\sqrt{2 \cdot \left(\left(F \cdot t_4\right) \cdot \left(C + C\right)\right)}}{t_4}\\
\mathbf{elif}\;B \leq -6.2 \cdot 10^{-246}:\\
\;\;\;\;\sqrt{-\frac{F}{A}}\\
\mathbf{elif}\;B \leq 1.45 \cdot 10^{-127}:\\
\;\;\;\;\sqrt{2 \cdot \left(F \cdot \left(B \cdot B\right) - F \cdot \left(\left(C \cdot A\right) \cdot 4\right)\right)} \cdot \left(\left(\frac{\sqrt{2}}{A} \cdot \sqrt{\frac{1}{C}}\right) \cdot 0.25\right)\\
\mathbf{elif}\;B \leq 3.3 \cdot 10^{-35}:\\
\;\;\;\;\sqrt{2 \cdot \left(F \cdot t_2\right)} \cdot t_3\\
\mathbf{elif}\;B \leq 5.5 \cdot 10^{+35}:\\
\;\;\;\;\frac{-\sqrt{t_4 \cdot \left(2 \cdot \left(F \cdot \left(C \cdot 2 - \frac{{B}^{2}}{A} \cdot 0.5\right)\right)\right)}}{t_4}\\
\mathbf{elif}\;B \leq 10^{+150}:\\
\;\;\;\;\left(\sqrt{F} \cdot \left(B \cdot \sqrt{2}\right)\right) \cdot t_3\\
\mathbf{elif}\;B \leq 9 \cdot 10^{+230}:\\
\;\;\;\;t_1 \cdot \left(-\sqrt{F \cdot \left(C + \mathsf{hypot}\left(B, C\right)\right)}\right)\\
\mathbf{else}:\\
\;\;\;\;\sqrt{\frac{F}{B}} \cdot \left(-\sqrt{2}\right)\\
\end{array}
if B < -1.00000000000000004e154Initial program 64.0
Applied egg-rr64.0
Taylor expanded in A around 0 64.0
Simplified31.3
if -1.00000000000000004e154 < B < -4.30000000000000014e-10Initial program 45.0
Applied egg-rr33.0
Applied egg-rr33.0
Applied egg-rr33.0
Taylor expanded in B around -inf 26.7
Simplified26.7
if -4.30000000000000014e-10 < B < -7.00000000000000005e-159Initial program 47.4
Simplified41.0
Taylor expanded in A around -inf 36.6
if -7.00000000000000005e-159 < B < -6.2000000000000001e-246Initial program 53.1
Applied egg-rr58.3
Taylor expanded in A around -inf 39.8
Simplified39.8
if -6.2000000000000001e-246 < B < 1.45e-127Initial program 52.8
Applied egg-rr42.6
Applied egg-rr42.8
Applied egg-rr42.8
Taylor expanded in A around -inf 36.0
if 1.45e-127 < B < 3.3e-35Initial program 47.9
Applied egg-rr36.9
Applied egg-rr36.9
if 3.3e-35 < B < 5.50000000000000001e35Initial program 43.4
Simplified38.1
Applied egg-rr39.1
Taylor expanded in A around -inf 44.3
if 5.50000000000000001e35 < B < 9.99999999999999981e149Initial program 48.9
Applied egg-rr36.3
Applied egg-rr36.4
Taylor expanded in B around inf 27.5
if 9.99999999999999981e149 < B < 8.9999999999999998e230Initial program 63.6
Simplified63.6
Applied egg-rr63.6
Taylor expanded in A around 0 63.6
Simplified63.6
Taylor expanded in A around 0 62.3
Simplified28.2
if 8.9999999999999998e230 < B Initial program 64.0
Simplified64.0
Applied egg-rr64.0
Taylor expanded in A around 0 64.0
Simplified64.0
Taylor expanded in C around 0 29.6
Final simplification33.3
| Alternative 1 | |
|---|---|
| Error | 34.8 |
| Cost | 34592 |
| Alternative 2 | |
|---|---|
| Error | 34.0 |
| Cost | 33800 |
| Alternative 3 | |
|---|---|
| Error | 35.0 |
| Cost | 28636 |
| Alternative 4 | |
|---|---|
| Error | 35.1 |
| Cost | 28508 |
| Alternative 5 | |
|---|---|
| Error | 35.4 |
| Cost | 28124 |
| Alternative 6 | |
|---|---|
| Error | 35.1 |
| Cost | 22104 |
| Alternative 7 | |
|---|---|
| Error | 35.2 |
| Cost | 21660 |
| Alternative 8 | |
|---|---|
| Error | 35.2 |
| Cost | 21660 |
| Alternative 9 | |
|---|---|
| Error | 34.7 |
| Cost | 21264 |
| Alternative 10 | |
|---|---|
| Error | 34.6 |
| Cost | 21264 |
| Alternative 11 | |
|---|---|
| Error | 37.4 |
| Cost | 20300 |
| Alternative 12 | |
|---|---|
| Error | 38.3 |
| Cost | 19972 |
| Alternative 13 | |
|---|---|
| Error | 44.0 |
| Cost | 14348 |
| Alternative 14 | |
|---|---|
| Error | 45.9 |
| Cost | 13448 |
| Alternative 15 | |
|---|---|
| Error | 48.8 |
| Cost | 13188 |
| Alternative 16 | |
|---|---|
| Error | 50.6 |
| Cost | 6980 |
| Alternative 17 | |
|---|---|
| Error | 63.1 |
| Cost | 6656 |
| Alternative 18 | |
|---|---|
| Error | 51.3 |
| Cost | 6656 |

herbie shell --seed 2022283
(FPCore (A B C F)
:name "ABCF->ab-angle a"
: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))))