\[0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} + re\right)}
\]
↓
\[\begin{array}{l}
\mathbf{if}\;re \leq -3.6 \cdot 10^{+196}:\\
\;\;\;\;0.5 \cdot \sqrt{\frac{im}{re} \cdot \left(-im\right)}\\
\mathbf{elif}\;re \leq -4 \cdot 10^{+101}:\\
\;\;\;\;0.5 \cdot {\left(\frac{\sqrt[3]{im \cdot \left(-im\right)}}{\sqrt[3]{re}}\right)}^{1.5}\\
\mathbf{elif}\;re \leq -950:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \mathsf{fma}\left(\frac{im}{\frac{re}{im}}, -0.5, \left(\frac{im \cdot im}{re \cdot re} \cdot \left(im \cdot \frac{im}{re}\right)\right) \cdot 0.125\right)}\\
\mathbf{else}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \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
(if (<= re -3.6e+196)
(* 0.5 (sqrt (* (/ im re) (- im))))
(if (<= re -4e+101)
(* 0.5 (pow (/ (cbrt (* im (- im))) (cbrt re)) 1.5))
(if (<= re -950.0)
(*
0.5
(sqrt
(*
2.0
(fma
(/ im (/ re im))
-0.5
(* (* (/ (* im im) (* re re)) (* im (/ im re))) 0.125)))))
(* 0.5 (sqrt (* 2.0 (+ 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 tmp;
if (re <= -3.6e+196) {
tmp = 0.5 * sqrt(((im / re) * -im));
} else if (re <= -4e+101) {
tmp = 0.5 * pow((cbrt((im * -im)) / cbrt(re)), 1.5);
} else if (re <= -950.0) {
tmp = 0.5 * sqrt((2.0 * fma((im / (re / im)), -0.5, ((((im * im) / (re * re)) * (im * (im / re))) * 0.125))));
} else {
tmp = 0.5 * sqrt((2.0 * (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)
tmp = 0.0
if (re <= -3.6e+196)
tmp = Float64(0.5 * sqrt(Float64(Float64(im / re) * Float64(-im))));
elseif (re <= -4e+101)
tmp = Float64(0.5 * (Float64(cbrt(Float64(im * Float64(-im))) / cbrt(re)) ^ 1.5));
elseif (re <= -950.0)
tmp = Float64(0.5 * sqrt(Float64(2.0 * fma(Float64(im / Float64(re / im)), -0.5, Float64(Float64(Float64(Float64(im * im) / Float64(re * re)) * Float64(im * Float64(im / re))) * 0.125)))));
else
tmp = Float64(0.5 * sqrt(Float64(2.0 * 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_] := If[LessEqual[re, -3.6e+196], N[(0.5 * N[Sqrt[N[(N[(im / re), $MachinePrecision] * (-im)), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], If[LessEqual[re, -4e+101], N[(0.5 * N[Power[N[(N[Power[N[(im * (-im)), $MachinePrecision], 1/3], $MachinePrecision] / N[Power[re, 1/3], $MachinePrecision]), $MachinePrecision], 1.5], $MachinePrecision]), $MachinePrecision], If[LessEqual[re, -950.0], N[(0.5 * N[Sqrt[N[(2.0 * N[(N[(im / N[(re / im), $MachinePrecision]), $MachinePrecision] * -0.5 + N[(N[(N[(N[(im * im), $MachinePrecision] / N[(re * re), $MachinePrecision]), $MachinePrecision] * N[(im * N[(im / re), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * 0.125), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], N[(0.5 * N[Sqrt[N[(2.0 * N[(re + N[Sqrt[re ^ 2 + im ^ 2], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]]]]
0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} + re\right)}
↓
\begin{array}{l}
\mathbf{if}\;re \leq -3.6 \cdot 10^{+196}:\\
\;\;\;\;0.5 \cdot \sqrt{\frac{im}{re} \cdot \left(-im\right)}\\
\mathbf{elif}\;re \leq -4 \cdot 10^{+101}:\\
\;\;\;\;0.5 \cdot {\left(\frac{\sqrt[3]{im \cdot \left(-im\right)}}{\sqrt[3]{re}}\right)}^{1.5}\\
\mathbf{elif}\;re \leq -950:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \mathsf{fma}\left(\frac{im}{\frac{re}{im}}, -0.5, \left(\frac{im \cdot im}{re \cdot re} \cdot \left(im \cdot \frac{im}{re}\right)\right) \cdot 0.125\right)}\\
\mathbf{else}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(re + \mathsf{hypot}\left(re, im\right)\right)}\\
\end{array}