\[ \begin{array}{c}[re, im] = \mathsf{sort}([re, im])\\ \end{array} \]
\[\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\log 10}
\]
↓
\[\begin{array}{l}
\mathbf{if}\;re \leq -4.4 \cdot 10^{+77}:\\
\;\;\;\;\frac{\frac{\log \left(-re\right)}{\log 10} \cdot 2}{\frac{1}{\log 10} \cdot \left(\log 10 \cdot 2\right)}\\
\mathbf{elif}\;re \leq -1.02 \cdot 10^{-157}:\\
\;\;\;\;\frac{\frac{\log \left(re \cdot re + im \cdot im\right) \cdot 4}{\log 10}}{\log 10 \cdot \frac{8}{\log 10}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\log im \cdot 3}{\log 10 \cdot 4} - \frac{\log im}{\log 10 \cdot -4}\\
\end{array}
\]
(FPCore (re im)
:precision binary64
(/ (log (sqrt (+ (* re re) (* im im)))) (log 10.0)))
↓
(FPCore (re im)
:precision binary64
(if (<= re -4.4e+77)
(/
(* (/ (log (- re)) (log 10.0)) 2.0)
(* (/ 1.0 (log 10.0)) (* (log 10.0) 2.0)))
(if (<= re -1.02e-157)
(/
(/ (* (log (+ (* re re) (* im im))) 4.0) (log 10.0))
(* (log 10.0) (/ 8.0 (log 10.0))))
(-
(/ (* (log im) 3.0) (* (log 10.0) 4.0))
(/ (log im) (* (log 10.0) -4.0))))))double code(double re, double im) {
return log(sqrt(((re * re) + (im * im)))) / log(10.0);
}
↓
double code(double re, double im) {
double tmp;
if (re <= -4.4e+77) {
tmp = ((log(-re) / log(10.0)) * 2.0) / ((1.0 / log(10.0)) * (log(10.0) * 2.0));
} else if (re <= -1.02e-157) {
tmp = ((log(((re * re) + (im * im))) * 4.0) / log(10.0)) / (log(10.0) * (8.0 / log(10.0)));
} else {
tmp = ((log(im) * 3.0) / (log(10.0) * 4.0)) - (log(im) / (log(10.0) * -4.0));
}
return tmp;
}
real(8) function code(re, im)
real(8), intent (in) :: re
real(8), intent (in) :: im
code = log(sqrt(((re * re) + (im * im)))) / log(10.0d0)
end function
↓
real(8) function code(re, im)
real(8), intent (in) :: re
real(8), intent (in) :: im
real(8) :: tmp
if (re <= (-4.4d+77)) then
tmp = ((log(-re) / log(10.0d0)) * 2.0d0) / ((1.0d0 / log(10.0d0)) * (log(10.0d0) * 2.0d0))
else if (re <= (-1.02d-157)) then
tmp = ((log(((re * re) + (im * im))) * 4.0d0) / log(10.0d0)) / (log(10.0d0) * (8.0d0 / log(10.0d0)))
else
tmp = ((log(im) * 3.0d0) / (log(10.0d0) * 4.0d0)) - (log(im) / (log(10.0d0) * (-4.0d0)))
end if
code = tmp
end function
public static double code(double re, double im) {
return Math.log(Math.sqrt(((re * re) + (im * im)))) / Math.log(10.0);
}
↓
public static double code(double re, double im) {
double tmp;
if (re <= -4.4e+77) {
tmp = ((Math.log(-re) / Math.log(10.0)) * 2.0) / ((1.0 / Math.log(10.0)) * (Math.log(10.0) * 2.0));
} else if (re <= -1.02e-157) {
tmp = ((Math.log(((re * re) + (im * im))) * 4.0) / Math.log(10.0)) / (Math.log(10.0) * (8.0 / Math.log(10.0)));
} else {
tmp = ((Math.log(im) * 3.0) / (Math.log(10.0) * 4.0)) - (Math.log(im) / (Math.log(10.0) * -4.0));
}
return tmp;
}
def code(re, im):
return math.log(math.sqrt(((re * re) + (im * im)))) / math.log(10.0)
↓
def code(re, im):
tmp = 0
if re <= -4.4e+77:
tmp = ((math.log(-re) / math.log(10.0)) * 2.0) / ((1.0 / math.log(10.0)) * (math.log(10.0) * 2.0))
elif re <= -1.02e-157:
tmp = ((math.log(((re * re) + (im * im))) * 4.0) / math.log(10.0)) / (math.log(10.0) * (8.0 / math.log(10.0)))
else:
tmp = ((math.log(im) * 3.0) / (math.log(10.0) * 4.0)) - (math.log(im) / (math.log(10.0) * -4.0))
return tmp
function code(re, im)
return Float64(log(sqrt(Float64(Float64(re * re) + Float64(im * im)))) / log(10.0))
end
↓
function code(re, im)
tmp = 0.0
if (re <= -4.4e+77)
tmp = Float64(Float64(Float64(log(Float64(-re)) / log(10.0)) * 2.0) / Float64(Float64(1.0 / log(10.0)) * Float64(log(10.0) * 2.0)));
elseif (re <= -1.02e-157)
tmp = Float64(Float64(Float64(log(Float64(Float64(re * re) + Float64(im * im))) * 4.0) / log(10.0)) / Float64(log(10.0) * Float64(8.0 / log(10.0))));
else
tmp = Float64(Float64(Float64(log(im) * 3.0) / Float64(log(10.0) * 4.0)) - Float64(log(im) / Float64(log(10.0) * -4.0)));
end
return tmp
end
function tmp = code(re, im)
tmp = log(sqrt(((re * re) + (im * im)))) / log(10.0);
end
↓
function tmp_2 = code(re, im)
tmp = 0.0;
if (re <= -4.4e+77)
tmp = ((log(-re) / log(10.0)) * 2.0) / ((1.0 / log(10.0)) * (log(10.0) * 2.0));
elseif (re <= -1.02e-157)
tmp = ((log(((re * re) + (im * im))) * 4.0) / log(10.0)) / (log(10.0) * (8.0 / log(10.0)));
else
tmp = ((log(im) * 3.0) / (log(10.0) * 4.0)) - (log(im) / (log(10.0) * -4.0));
end
tmp_2 = tmp;
end
code[re_, im_] := N[(N[Log[N[Sqrt[N[(N[(re * re), $MachinePrecision] + N[(im * im), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]], $MachinePrecision] / N[Log[10.0], $MachinePrecision]), $MachinePrecision]
↓
code[re_, im_] := If[LessEqual[re, -4.4e+77], N[(N[(N[(N[Log[(-re)], $MachinePrecision] / N[Log[10.0], $MachinePrecision]), $MachinePrecision] * 2.0), $MachinePrecision] / N[(N[(1.0 / N[Log[10.0], $MachinePrecision]), $MachinePrecision] * N[(N[Log[10.0], $MachinePrecision] * 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[re, -1.02e-157], N[(N[(N[(N[Log[N[(N[(re * re), $MachinePrecision] + N[(im * im), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] * 4.0), $MachinePrecision] / N[Log[10.0], $MachinePrecision]), $MachinePrecision] / N[(N[Log[10.0], $MachinePrecision] * N[(8.0 / N[Log[10.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(N[(N[Log[im], $MachinePrecision] * 3.0), $MachinePrecision] / N[(N[Log[10.0], $MachinePrecision] * 4.0), $MachinePrecision]), $MachinePrecision] - N[(N[Log[im], $MachinePrecision] / N[(N[Log[10.0], $MachinePrecision] * -4.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\log 10}
↓
\begin{array}{l}
\mathbf{if}\;re \leq -4.4 \cdot 10^{+77}:\\
\;\;\;\;\frac{\frac{\log \left(-re\right)}{\log 10} \cdot 2}{\frac{1}{\log 10} \cdot \left(\log 10 \cdot 2\right)}\\
\mathbf{elif}\;re \leq -1.02 \cdot 10^{-157}:\\
\;\;\;\;\frac{\frac{\log \left(re \cdot re + im \cdot im\right) \cdot 4}{\log 10}}{\log 10 \cdot \frac{8}{\log 10}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\log im \cdot 3}{\log 10 \cdot 4} - \frac{\log im}{\log 10 \cdot -4}\\
\end{array}