| Alternative 1 | |
|---|---|
| Error | 7.6 |
| Cost | 26500 |
(FPCore (re im) :precision binary64 (/ (log (sqrt (+ (* re re) (* im im)))) (log 10.0)))
(FPCore (re im)
:precision binary64
(let* ((t_0 (log (- re))))
(if (<= re -8.6e+80)
(/ (/ t_0 (log 10.0)) (* t_0 (/ 1.0 t_0)))
(if (<= re -3.15e-145)
(* (/ (log (+ (* re re) (* im im))) (log 10.0)) 0.5)
(log (pow im (/ (log im) (* (log im) (log 10.0)))))))))double code(double re, double im) {
return log(sqrt(((re * re) + (im * im)))) / log(10.0);
}
double code(double re, double im) {
double t_0 = log(-re);
double tmp;
if (re <= -8.6e+80) {
tmp = (t_0 / log(10.0)) / (t_0 * (1.0 / t_0));
} else if (re <= -3.15e-145) {
tmp = (log(((re * re) + (im * im))) / log(10.0)) * 0.5;
} else {
tmp = log(pow(im, (log(im) / (log(im) * log(10.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) :: t_0
real(8) :: tmp
t_0 = log(-re)
if (re <= (-8.6d+80)) then
tmp = (t_0 / log(10.0d0)) / (t_0 * (1.0d0 / t_0))
else if (re <= (-3.15d-145)) then
tmp = (log(((re * re) + (im * im))) / log(10.0d0)) * 0.5d0
else
tmp = log((im ** (log(im) / (log(im) * log(10.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 t_0 = Math.log(-re);
double tmp;
if (re <= -8.6e+80) {
tmp = (t_0 / Math.log(10.0)) / (t_0 * (1.0 / t_0));
} else if (re <= -3.15e-145) {
tmp = (Math.log(((re * re) + (im * im))) / Math.log(10.0)) * 0.5;
} else {
tmp = Math.log(Math.pow(im, (Math.log(im) / (Math.log(im) * Math.log(10.0)))));
}
return tmp;
}
def code(re, im): return math.log(math.sqrt(((re * re) + (im * im)))) / math.log(10.0)
def code(re, im): t_0 = math.log(-re) tmp = 0 if re <= -8.6e+80: tmp = (t_0 / math.log(10.0)) / (t_0 * (1.0 / t_0)) elif re <= -3.15e-145: tmp = (math.log(((re * re) + (im * im))) / math.log(10.0)) * 0.5 else: tmp = math.log(math.pow(im, (math.log(im) / (math.log(im) * math.log(10.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) t_0 = log(Float64(-re)) tmp = 0.0 if (re <= -8.6e+80) tmp = Float64(Float64(t_0 / log(10.0)) / Float64(t_0 * Float64(1.0 / t_0))); elseif (re <= -3.15e-145) tmp = Float64(Float64(log(Float64(Float64(re * re) + Float64(im * im))) / log(10.0)) * 0.5); else tmp = log((im ^ Float64(log(im) / Float64(log(im) * log(10.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) t_0 = log(-re); tmp = 0.0; if (re <= -8.6e+80) tmp = (t_0 / log(10.0)) / (t_0 * (1.0 / t_0)); elseif (re <= -3.15e-145) tmp = (log(((re * re) + (im * im))) / log(10.0)) * 0.5; else tmp = log((im ^ (log(im) / (log(im) * log(10.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_] := Block[{t$95$0 = N[Log[(-re)], $MachinePrecision]}, If[LessEqual[re, -8.6e+80], N[(N[(t$95$0 / N[Log[10.0], $MachinePrecision]), $MachinePrecision] / N[(t$95$0 * N[(1.0 / t$95$0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[re, -3.15e-145], N[(N[(N[Log[N[(N[(re * re), $MachinePrecision] + N[(im * im), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / N[Log[10.0], $MachinePrecision]), $MachinePrecision] * 0.5), $MachinePrecision], N[Log[N[Power[im, N[(N[Log[im], $MachinePrecision] / N[(N[Log[im], $MachinePrecision] * N[Log[10.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]], $MachinePrecision]]]]
\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\log 10}
\begin{array}{l}
t_0 := \log \left(-re\right)\\
\mathbf{if}\;re \leq -8.6 \cdot 10^{+80}:\\
\;\;\;\;\frac{\frac{t_0}{\log 10}}{t_0 \cdot \frac{1}{t_0}}\\
\mathbf{elif}\;re \leq -3.15 \cdot 10^{-145}:\\
\;\;\;\;\frac{\log \left(re \cdot re + im \cdot im\right)}{\log 10} \cdot 0.5\\
\mathbf{else}:\\
\;\;\;\;\log \left({im}^{\left(\frac{\log im}{\log im \cdot \log 10}\right)}\right)\\
\end{array}
Results
if re < -8.60000000000000008e80Initial program 48.5
Taylor expanded in re around -inf 5.9
Simplified5.9
[Start]5.9 | \[ \frac{\log \left(-1 \cdot re\right)}{\log 10}
\] |
|---|---|
rational.json-simplify-2 [=>]5.9 | \[ \frac{\log \color{blue}{\left(re \cdot -1\right)}}{\log 10}
\] |
rational.json-simplify-9 [=>]5.9 | \[ \frac{\log \color{blue}{\left(-re\right)}}{\log 10}
\] |
Applied egg-rr6.0
Simplified6.0
[Start]6.0 | \[ \left(\log 10 \cdot \frac{2}{\log \left(-re\right)}\right) \cdot \frac{1}{\frac{\log 10}{\log \left(-re\right)} \cdot \left(\log 10 \cdot \frac{2}{\log \left(-re\right)}\right)}
\] |
|---|---|
rational.json-simplify-2 [=>]6.0 | \[ \color{blue}{\frac{1}{\frac{\log 10}{\log \left(-re\right)} \cdot \left(\log 10 \cdot \frac{2}{\log \left(-re\right)}\right)} \cdot \left(\log 10 \cdot \frac{2}{\log \left(-re\right)}\right)}
\] |
rational.json-simplify-43 [<=]6.1 | \[ \color{blue}{\frac{2}{\log \left(-re\right)} \cdot \left(\frac{1}{\frac{\log 10}{\log \left(-re\right)} \cdot \left(\log 10 \cdot \frac{2}{\log \left(-re\right)}\right)} \cdot \log 10\right)}
\] |
rational.json-simplify-7 [<=]6.1 | \[ \frac{2}{\log \left(-re\right)} \cdot \left(\frac{1}{\frac{\log 10}{\log \left(-re\right)} \cdot \left(\log 10 \cdot \frac{2}{\log \left(-re\right)}\right)} \cdot \color{blue}{\frac{\log 10}{1}}\right)
\] |
rational.json-simplify-55 [=>]6.0 | \[ \frac{2}{\log \left(-re\right)} \cdot \color{blue}{\frac{\frac{\log 10}{1}}{\frac{\frac{\log 10}{\log \left(-re\right)} \cdot \left(\log 10 \cdot \frac{2}{\log \left(-re\right)}\right)}{1}}}
\] |
rational.json-simplify-7 [=>]6.0 | \[ \frac{2}{\log \left(-re\right)} \cdot \frac{\color{blue}{\log 10}}{\frac{\frac{\log 10}{\log \left(-re\right)} \cdot \left(\log 10 \cdot \frac{2}{\log \left(-re\right)}\right)}{1}}
\] |
rational.json-simplify-7 [=>]6.0 | \[ \frac{2}{\log \left(-re\right)} \cdot \frac{\log 10}{\color{blue}{\frac{\log 10}{\log \left(-re\right)} \cdot \left(\log 10 \cdot \frac{2}{\log \left(-re\right)}\right)}}
\] |
rational.json-simplify-46 [=>]6.0 | \[ \frac{2}{\log \left(-re\right)} \cdot \color{blue}{\frac{\frac{\log 10}{\frac{\log 10}{\log \left(-re\right)}}}{\log 10 \cdot \frac{2}{\log \left(-re\right)}}}
\] |
rational.json-simplify-46 [=>]6.0 | \[ \frac{2}{\log \left(-re\right)} \cdot \color{blue}{\frac{\frac{\frac{\log 10}{\frac{\log 10}{\log \left(-re\right)}}}{\log 10}}{\frac{2}{\log \left(-re\right)}}}
\] |
rational.json-simplify-61 [=>]6.0 | \[ \frac{2}{\log \left(-re\right)} \cdot \color{blue}{\frac{\log \left(-re\right)}{\frac{2}{\frac{\frac{\log 10}{\frac{\log 10}{\log \left(-re\right)}}}{\log 10}}}}
\] |
Applied egg-rr5.9
if -8.60000000000000008e80 < re < -3.15e-145Initial program 11.5
Applied egg-rr11.5
if -3.15e-145 < re Initial program 32.4
Taylor expanded in re around 0 6.5
Applied egg-rr6.6
Simplified6.5
[Start]6.6 | \[ \frac{2}{\log im} \cdot \frac{\log 10}{\frac{\log 10}{\log im} \cdot \left(2 \cdot \frac{\log 10}{\log im}\right)}
\] |
|---|---|
rational.json-simplify-46 [=>]6.6 | \[ \frac{2}{\log im} \cdot \color{blue}{\frac{\frac{\log 10}{\frac{\log 10}{\log im}}}{2 \cdot \frac{\log 10}{\log im}}}
\] |
rational.json-simplify-2 [=>]6.6 | \[ \frac{2}{\log im} \cdot \frac{\frac{\log 10}{\frac{\log 10}{\log im}}}{\color{blue}{\frac{\log 10}{\log im} \cdot 2}}
\] |
rational.json-simplify-46 [=>]6.6 | \[ \frac{2}{\log im} \cdot \color{blue}{\frac{\frac{\frac{\log 10}{\frac{\log 10}{\log im}}}{\frac{\log 10}{\log im}}}{2}}
\] |
rational.json-simplify-61 [=>]6.5 | \[ \frac{2}{\log im} \cdot \frac{\frac{\color{blue}{\frac{\log im}{\frac{\log 10}{\log 10}}}}{\frac{\log 10}{\log im}}}{2}
\] |
rational.json-simplify-60 [=>]6.5 | \[ \frac{2}{\log im} \cdot \frac{\frac{\color{blue}{\log im}}{\frac{\log 10}{\log im}}}{2}
\] |
Applied egg-rr6.6
Simplified6.6
[Start]6.6 | \[ \frac{\frac{2}{\log im}}{\frac{\log 10}{\log im \cdot \log \left(\sqrt{im}\right)}}
\] |
|---|---|
rational.json-simplify-44 [=>]6.6 | \[ \color{blue}{\frac{\frac{2}{\frac{\log 10}{\log im \cdot \log \left(\sqrt{im}\right)}}}{\log im}}
\] |
rational.json-simplify-35 [=>]6.6 | \[ \frac{\frac{2}{\color{blue}{\frac{\log 10 + \log 10}{\log im \cdot \log \left(\sqrt{im}\right) + \log im \cdot \log \left(\sqrt{im}\right)}}}}{\log im}
\] |
rational.json-simplify-61 [=>]6.6 | \[ \frac{\color{blue}{\frac{\log im \cdot \log \left(\sqrt{im}\right) + \log im \cdot \log \left(\sqrt{im}\right)}{\frac{\log 10 + \log 10}{2}}}}{\log im}
\] |
rational.json-simplify-2 [=>]6.6 | \[ \frac{\frac{\log im \cdot \log \left(\sqrt{im}\right) + \color{blue}{\log \left(\sqrt{im}\right) \cdot \log im}}{\frac{\log 10 + \log 10}{2}}}{\log im}
\] |
rational.json-simplify-51 [=>]6.6 | \[ \frac{\frac{\color{blue}{\log im \cdot \left(\log \left(\sqrt{im}\right) + \log \left(\sqrt{im}\right)\right)}}{\frac{\log 10 + \log 10}{2}}}{\log im}
\] |
exponential.json-simplify-12 [=>]6.6 | \[ \frac{\frac{\log im \cdot \left(\color{blue}{0.5 \cdot \log im} + \log \left(\sqrt{im}\right)\right)}{\frac{\log 10 + \log 10}{2}}}{\log im}
\] |
rational.json-simplify-2 [=>]6.6 | \[ \frac{\frac{\log im \cdot \left(\color{blue}{\log im \cdot 0.5} + \log \left(\sqrt{im}\right)\right)}{\frac{\log 10 + \log 10}{2}}}{\log im}
\] |
exponential.json-simplify-12 [=>]6.6 | \[ \frac{\frac{\log im \cdot \left(\log im \cdot 0.5 + \color{blue}{0.5 \cdot \log im}\right)}{\frac{\log 10 + \log 10}{2}}}{\log im}
\] |
rational.json-simplify-51 [=>]6.6 | \[ \frac{\frac{\log im \cdot \color{blue}{\left(\log im \cdot \left(0.5 + 0.5\right)\right)}}{\frac{\log 10 + \log 10}{2}}}{\log im}
\] |
metadata-eval [=>]6.6 | \[ \frac{\frac{\log im \cdot \left(\log im \cdot \color{blue}{1}\right)}{\frac{\log 10 + \log 10}{2}}}{\log im}
\] |
metadata-eval [<=]6.6 | \[ \frac{\frac{\log im \cdot \left(\log im \cdot 1\right)}{\frac{\log 10 + \log 10}{\color{blue}{1 + 1}}}}{\log im}
\] |
rational.json-simplify-35 [<=]6.6 | \[ \frac{\frac{\log im \cdot \left(\log im \cdot 1\right)}{\color{blue}{\frac{\log 10}{1}}}}{\log im}
\] |
rational.json-simplify-7 [=>]6.6 | \[ \frac{\frac{\log im \cdot \left(\log im \cdot 1\right)}{\color{blue}{\log 10}}}{\log im}
\] |
Applied egg-rr62.1
Simplified6.5
[Start]62.1 | \[ \log \left({\left({im}^{\log im}\right)}^{\left(\frac{\frac{1}{\log 10}}{\log im}\right)}\right)
\] |
|---|---|
exponential.json-simplify-32 [=>]6.8 | \[ \log \color{blue}{\left({im}^{\left(\log im \cdot \frac{\frac{1}{\log 10}}{\log im}\right)}\right)}
\] |
rational.json-simplify-2 [=>]6.8 | \[ \log \left({im}^{\color{blue}{\left(\frac{\frac{1}{\log 10}}{\log im} \cdot \log im\right)}}\right)
\] |
rational.json-simplify-47 [=>]6.5 | \[ \log \left({im}^{\left(\color{blue}{\frac{1}{\log 10 \cdot \log im}} \cdot \log im\right)}\right)
\] |
rational.json-simplify-2 [<=]6.5 | \[ \log \left({im}^{\left(\frac{1}{\color{blue}{\log im \cdot \log 10}} \cdot \log im\right)}\right)
\] |
rational.json-simplify-7 [<=]6.5 | \[ \log \left({im}^{\left(\frac{1}{\log im \cdot \log 10} \cdot \color{blue}{\frac{\log im}{1}}\right)}\right)
\] |
rational.json-simplify-55 [=>]6.5 | \[ \log \left({im}^{\color{blue}{\left(\frac{\frac{\log im}{1}}{\frac{\log im \cdot \log 10}{1}}\right)}}\right)
\] |
rational.json-simplify-7 [=>]6.5 | \[ \log \left({im}^{\left(\frac{\color{blue}{\log im}}{\frac{\log im \cdot \log 10}{1}}\right)}\right)
\] |
rational.json-simplify-7 [=>]6.5 | \[ \log \left({im}^{\left(\frac{\log im}{\color{blue}{\log im \cdot \log 10}}\right)}\right)
\] |
Final simplification7.6
| Alternative 1 | |
|---|---|
| Error | 7.6 |
| Cost | 26500 |
| Alternative 2 | |
|---|---|
| Error | 7.5 |
| Cost | 26440 |
| Alternative 3 | |
|---|---|
| Error | 7.5 |
| Cost | 13768 |
| Alternative 4 | |
|---|---|
| Error | 10.6 |
| Cost | 13188 |
| Alternative 5 | |
|---|---|
| Error | 31.2 |
| Cost | 12992 |
herbie shell --seed 2023073
(FPCore (re im)
:name "math.log10 on complex, real part"
:precision binary64
(/ (log (sqrt (+ (* re re) (* im im)))) (log 10.0)))