Math FPCore C Julia Wolfram TeX \[0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} + re\right)}
\]
↓
\[\begin{array}{l}
t_0 := {\left({\left(im \cdot im\right)}^{0.25} \cdot {\left(\frac{-1}{re}\right)}^{0.25}\right)}^{2}\\
\mathbf{if}\;re \leq -1.26 \cdot 10^{+128}:\\
\;\;\;\;0.5 \cdot \mathsf{fma}\left(-0.125, \frac{im \cdot im}{re} \cdot \frac{t_0}{re}, t_0\right)\\
\mathbf{else}:\\
\;\;\;\;\sqrt{0.5 \cdot \left(re + \mathsf{hypot}\left(re, im\right)\right)}\\
\end{array}
\]
(FPCore (re im)
:precision binary64
(* 0.5 (sqrt (* 2.0 (+ (sqrt (+ (* re re) (* im im))) re))))) ↓
(FPCore (re im)
:precision binary64
(let* ((t_0 (pow (* (pow (* im im) 0.25) (pow (/ -1.0 re) 0.25)) 2.0)))
(if (<= re -1.26e+128)
(* 0.5 (fma -0.125 (* (/ (* im im) re) (/ t_0 re)) t_0))
(sqrt (* 0.5 (+ re (hypot re im))))))) double code(double re, double im) {
return 0.5 * sqrt((2.0 * (sqrt(((re * re) + (im * im))) + re)));
}
↓
double code(double re, double im) {
double t_0 = pow((pow((im * im), 0.25) * pow((-1.0 / re), 0.25)), 2.0);
double tmp;
if (re <= -1.26e+128) {
tmp = 0.5 * fma(-0.125, (((im * im) / re) * (t_0 / re)), t_0);
} else {
tmp = sqrt((0.5 * (re + hypot(re, im))));
}
return tmp;
}
function code(re, im)
return Float64(0.5 * sqrt(Float64(2.0 * Float64(sqrt(Float64(Float64(re * re) + Float64(im * im))) + re))))
end
↓
function code(re, im)
t_0 = Float64((Float64(im * im) ^ 0.25) * (Float64(-1.0 / re) ^ 0.25)) ^ 2.0
tmp = 0.0
if (re <= -1.26e+128)
tmp = Float64(0.5 * fma(-0.125, Float64(Float64(Float64(im * im) / re) * Float64(t_0 / re)), t_0));
else
tmp = sqrt(Float64(0.5 * Float64(re + hypot(re, im))));
end
return tmp
end
code[re_, im_] := N[(0.5 * N[Sqrt[N[(2.0 * N[(N[Sqrt[N[(N[(re * re), $MachinePrecision] + N[(im * im), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] + re), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]
↓
code[re_, im_] := Block[{t$95$0 = N[Power[N[(N[Power[N[(im * im), $MachinePrecision], 0.25], $MachinePrecision] * N[Power[N[(-1.0 / re), $MachinePrecision], 0.25], $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision]}, If[LessEqual[re, -1.26e+128], N[(0.5 * N[(-0.125 * N[(N[(N[(im * im), $MachinePrecision] / re), $MachinePrecision] * N[(t$95$0 / re), $MachinePrecision]), $MachinePrecision] + t$95$0), $MachinePrecision]), $MachinePrecision], N[Sqrt[N[(0.5 * N[(re + N[Sqrt[re ^ 2 + im ^ 2], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]]]
0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} + re\right)}
↓
\begin{array}{l}
t_0 := {\left({\left(im \cdot im\right)}^{0.25} \cdot {\left(\frac{-1}{re}\right)}^{0.25}\right)}^{2}\\
\mathbf{if}\;re \leq -1.26 \cdot 10^{+128}:\\
\;\;\;\;0.5 \cdot \mathsf{fma}\left(-0.125, \frac{im \cdot im}{re} \cdot \frac{t_0}{re}, t_0\right)\\
\mathbf{else}:\\
\;\;\;\;\sqrt{0.5 \cdot \left(re + \mathsf{hypot}\left(re, im\right)\right)}\\
\end{array}
Alternatives Alternative 1 Accuracy 84.0% Cost 46916
\[\begin{array}{l}
t_0 := {\left({\left(im \cdot im\right)}^{0.25} \cdot {\left(\frac{-1}{re}\right)}^{0.25}\right)}^{2}\\
\mathbf{if}\;re \leq -1.26 \cdot 10^{+128}:\\
\;\;\;\;0.5 \cdot \mathsf{fma}\left(-0.125, \frac{im \cdot im}{re} \cdot \frac{t_0}{re}, t_0\right)\\
\mathbf{else}:\\
\;\;\;\;\sqrt{0.5 \cdot \left(re + \mathsf{hypot}\left(re, im\right)\right)}\\
\end{array}
\]
Alternative 2 Accuracy 84.3% Cost 20100
\[\begin{array}{l}
\mathbf{if}\;re \leq -1.95 \cdot 10^{+101}:\\
\;\;\;\;0.5 \cdot {\left({\left(im \cdot im\right)}^{0.25} \cdot {\left(\frac{-1}{re}\right)}^{0.25}\right)}^{2}\\
\mathbf{else}:\\
\;\;\;\;\sqrt{0.5 \cdot \left(re + \mathsf{hypot}\left(re, im\right)\right)}\\
\end{array}
\]
Alternative 3 Accuracy 82.8% Cost 13316
\[\begin{array}{l}
\mathbf{if}\;re \leq -5 \cdot 10^{+99}:\\
\;\;\;\;0.5 \cdot \sqrt{\left(-im\right) \cdot \frac{im}{re}}\\
\mathbf{else}:\\
\;\;\;\;\sqrt{0.5 \cdot \left(re + \mathsf{hypot}\left(re, im\right)\right)}\\
\end{array}
\]
Alternative 4 Accuracy 57.9% Cost 7512
\[\begin{array}{l}
t_0 := 0.5 \cdot \sqrt{im \cdot -2}\\
\mathbf{if}\;im \leq -4.5 \cdot 10^{+16}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;im \leq -1.55 \cdot 10^{-38}:\\
\;\;\;\;\sqrt{re}\\
\mathbf{elif}\;im \leq -1.6 \cdot 10^{-120}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;im \leq -8.5 \cdot 10^{-287}:\\
\;\;\;\;\sqrt{re}\\
\mathbf{elif}\;im \leq 1.05 \cdot 10^{-264}:\\
\;\;\;\;0.5 \cdot \frac{im}{\sqrt{-re}}\\
\mathbf{elif}\;im \leq 5.5 \cdot 10^{-153}:\\
\;\;\;\;\sqrt{re}\\
\mathbf{else}:\\
\;\;\;\;0.5 \cdot \sqrt{im \cdot 2}\\
\end{array}
\]
Alternative 5 Accuracy 59.8% Cost 7376
\[\begin{array}{l}
\mathbf{if}\;im \leq -1.16 \cdot 10^{-121}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(re - im\right)}\\
\mathbf{elif}\;im \leq -8 \cdot 10^{-287}:\\
\;\;\;\;\sqrt{re}\\
\mathbf{elif}\;im \leq 1.5 \cdot 10^{-265}:\\
\;\;\;\;0.5 \cdot \frac{im}{\sqrt{-re}}\\
\mathbf{elif}\;im \leq 5.8 \cdot 10^{-153}:\\
\;\;\;\;\sqrt{re}\\
\mathbf{else}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(re + im\right)}\\
\end{array}
\]
Alternative 6 Accuracy 58.8% Cost 7248
\[\begin{array}{l}
t_0 := 0.5 \cdot \sqrt{im \cdot -2}\\
\mathbf{if}\;im \leq -5.2 \cdot 10^{+17}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;im \leq -6 \cdot 10^{-41}:\\
\;\;\;\;\sqrt{re}\\
\mathbf{elif}\;im \leq -5.5 \cdot 10^{-122}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;im \leq 5.8 \cdot 10^{-153}:\\
\;\;\;\;\sqrt{re}\\
\mathbf{else}:\\
\;\;\;\;0.5 \cdot \sqrt{im \cdot 2}\\
\end{array}
\]
Alternative 7 Accuracy 59.3% Cost 7248
\[\begin{array}{l}
\mathbf{if}\;im \leq -2.35 \cdot 10^{-122}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(re - im\right)}\\
\mathbf{elif}\;im \leq -8 \cdot 10^{-287}:\\
\;\;\;\;\sqrt{re}\\
\mathbf{elif}\;im \leq 2.3 \cdot 10^{-263}:\\
\;\;\;\;0.5 \cdot \frac{im}{\sqrt{-re}}\\
\mathbf{elif}\;im \leq 5.8 \cdot 10^{-153}:\\
\;\;\;\;\sqrt{re}\\
\mathbf{else}:\\
\;\;\;\;0.5 \cdot \sqrt{im \cdot 2}\\
\end{array}
\]
Alternative 8 Accuracy 42.6% Cost 6852
\[\begin{array}{l}
\mathbf{if}\;re \leq 4.5 \cdot 10^{-96}:\\
\;\;\;\;0.5 \cdot \sqrt{im \cdot -2}\\
\mathbf{else}:\\
\;\;\;\;\sqrt{re}\\
\end{array}
\]
Alternative 9 Accuracy 26.2% Cost 6464
\[\sqrt{re}
\]