Average Error: 32.4 → 17.6
Time: 5.5s
Precision: binary64
\[\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\log 10}\]
\[\begin{array}{l} \mathbf{if}\;re \leq -2.8827138647577603 \cdot 10^{+149}:\\ \;\;\;\;\frac{0.5}{\frac{\log 10}{\log \left(\frac{-1}{re}\right) \cdot -2}}\\ \mathbf{elif}\;re \leq 1.5818348111842102 \cdot 10^{-202}:\\ \;\;\;\;\frac{\sqrt{0.5}}{\frac{\log 10}{\sqrt{0.5} \cdot \log \left(re \cdot re + im \cdot im\right)}}\\ \mathbf{elif}\;re \leq 8.96470249214571 \cdot 10^{-167}:\\ \;\;\;\;\frac{\log re}{\log 10}\\ \mathbf{elif}\;re \leq 8.602806491746828 \cdot 10^{+130}:\\ \;\;\;\;\sqrt{0.5} \cdot \frac{\sqrt{0.5}}{\frac{\log 10}{\log \left(re \cdot re + im \cdot im\right)}}\\ \mathbf{else}:\\ \;\;\;\;3 \cdot \frac{\log \left(\sqrt[3]{re}\right)}{\log 10}\\ \end{array}\]
\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\log 10}
\begin{array}{l}
\mathbf{if}\;re \leq -2.8827138647577603 \cdot 10^{+149}:\\
\;\;\;\;\frac{0.5}{\frac{\log 10}{\log \left(\frac{-1}{re}\right) \cdot -2}}\\

\mathbf{elif}\;re \leq 1.5818348111842102 \cdot 10^{-202}:\\
\;\;\;\;\frac{\sqrt{0.5}}{\frac{\log 10}{\sqrt{0.5} \cdot \log \left(re \cdot re + im \cdot im\right)}}\\

\mathbf{elif}\;re \leq 8.96470249214571 \cdot 10^{-167}:\\
\;\;\;\;\frac{\log re}{\log 10}\\

\mathbf{elif}\;re \leq 8.602806491746828 \cdot 10^{+130}:\\
\;\;\;\;\sqrt{0.5} \cdot \frac{\sqrt{0.5}}{\frac{\log 10}{\log \left(re \cdot re + im \cdot im\right)}}\\

\mathbf{else}:\\
\;\;\;\;3 \cdot \frac{\log \left(\sqrt[3]{re}\right)}{\log 10}\\

\end{array}
(FPCore (re im)
 :precision binary64
 (/ (log (sqrt (+ (* re re) (* im im)))) (log 10.0)))
(FPCore (re im)
 :precision binary64
 (if (<= re -2.8827138647577603e+149)
   (/ 0.5 (/ (log 10.0) (* (log (/ -1.0 re)) -2.0)))
   (if (<= re 1.5818348111842102e-202)
     (/ (sqrt 0.5) (/ (log 10.0) (* (sqrt 0.5) (log (+ (* re re) (* im im))))))
     (if (<= re 8.96470249214571e-167)
       (/ (log re) (log 10.0))
       (if (<= re 8.602806491746828e+130)
         (*
          (sqrt 0.5)
          (/ (sqrt 0.5) (/ (log 10.0) (log (+ (* re re) (* im im))))))
         (* 3.0 (/ (log (cbrt re)) (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 tmp;
	if (re <= -2.8827138647577603e+149) {
		tmp = 0.5 / (log(10.0) / (log(-1.0 / re) * -2.0));
	} else if (re <= 1.5818348111842102e-202) {
		tmp = sqrt(0.5) / (log(10.0) / (sqrt(0.5) * log((re * re) + (im * im))));
	} else if (re <= 8.96470249214571e-167) {
		tmp = log(re) / log(10.0);
	} else if (re <= 8.602806491746828e+130) {
		tmp = sqrt(0.5) * (sqrt(0.5) / (log(10.0) / log((re * re) + (im * im))));
	} else {
		tmp = 3.0 * (log(cbrt(re)) / log(10.0));
	}
	return tmp;
}

Error

Bits error versus re

Bits error versus im

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Split input into 5 regimes
  2. if re < -2.8827138647577603e149

    1. Initial program 62.8

      \[\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\log 10}\]
    2. Using strategy rm
    3. Applied pow1/2_binary64_84762.8

      \[\leadsto \frac{\log \color{blue}{\left({\left(re \cdot re + im \cdot im\right)}^{0.5}\right)}}{\log 10}\]
    4. Applied log-pow_binary64_85662.8

      \[\leadsto \frac{\color{blue}{0.5 \cdot \log \left(re \cdot re + im \cdot im\right)}}{\log 10}\]
    5. Applied associate-/l*_binary64_71262.8

      \[\leadsto \color{blue}{\frac{0.5}{\frac{\log 10}{\log \left(re \cdot re + im \cdot im\right)}}}\]
    6. Taylor expanded around -inf 7.2

      \[\leadsto \frac{0.5}{\frac{\log 10}{\color{blue}{-2 \cdot \log \left(\frac{-1}{re}\right)}}}\]
    7. Simplified7.2

      \[\leadsto \frac{0.5}{\frac{\log 10}{\color{blue}{\log \left(\frac{-1}{re}\right) \cdot -2}}}\]

    if -2.8827138647577603e149 < re < 1.5818348111842102e-202

    1. Initial program 22.9

      \[\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\log 10}\]
    2. Using strategy rm
    3. Applied pow1/2_binary64_84722.9

      \[\leadsto \frac{\log \color{blue}{\left({\left(re \cdot re + im \cdot im\right)}^{0.5}\right)}}{\log 10}\]
    4. Applied log-pow_binary64_85622.9

      \[\leadsto \frac{\color{blue}{0.5 \cdot \log \left(re \cdot re + im \cdot im\right)}}{\log 10}\]
    5. Applied associate-/l*_binary64_71222.9

      \[\leadsto \color{blue}{\frac{0.5}{\frac{\log 10}{\log \left(re \cdot re + im \cdot im\right)}}}\]
    6. Using strategy rm
    7. Applied add-sqr-sqrt_binary64_78923.0

      \[\leadsto \frac{\color{blue}{\sqrt{0.5} \cdot \sqrt{0.5}}}{\frac{\log 10}{\log \left(re \cdot re + im \cdot im\right)}}\]
    8. Applied associate-/l*_binary64_71222.8

      \[\leadsto \color{blue}{\frac{\sqrt{0.5}}{\frac{\frac{\log 10}{\log \left(re \cdot re + im \cdot im\right)}}{\sqrt{0.5}}}}\]
    9. Simplified22.8

      \[\leadsto \frac{\sqrt{0.5}}{\color{blue}{\frac{\log 10}{\log \left(re \cdot re + im \cdot im\right) \cdot \sqrt{0.5}}}}\]

    if 1.5818348111842102e-202 < re < 8.9647024921457103e-167

    1. Initial program 32.9

      \[\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\log 10}\]
    2. Taylor expanded around inf 46.4

      \[\leadsto \frac{\log \color{blue}{re}}{\log 10}\]

    if 8.9647024921457103e-167 < re < 8.6028064917468283e130

    1. Initial program 16.1

      \[\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\log 10}\]
    2. Using strategy rm
    3. Applied pow1/2_binary64_84716.1

      \[\leadsto \frac{\log \color{blue}{\left({\left(re \cdot re + im \cdot im\right)}^{0.5}\right)}}{\log 10}\]
    4. Applied log-pow_binary64_85616.1

      \[\leadsto \frac{\color{blue}{0.5 \cdot \log \left(re \cdot re + im \cdot im\right)}}{\log 10}\]
    5. Applied associate-/l*_binary64_71216.1

      \[\leadsto \color{blue}{\frac{0.5}{\frac{\log 10}{\log \left(re \cdot re + im \cdot im\right)}}}\]
    6. Using strategy rm
    7. Applied pow1_binary64_82816.1

      \[\leadsto \frac{0.5}{\frac{\log 10}{\log \color{blue}{\left({\left(re \cdot re + im \cdot im\right)}^{1}\right)}}}\]
    8. Applied log-pow_binary64_85616.1

      \[\leadsto \frac{0.5}{\frac{\log 10}{\color{blue}{1 \cdot \log \left(re \cdot re + im \cdot im\right)}}}\]
    9. Applied pow1_binary64_82816.1

      \[\leadsto \frac{0.5}{\frac{\log \color{blue}{\left({10}^{1}\right)}}{1 \cdot \log \left(re \cdot re + im \cdot im\right)}}\]
    10. Applied log-pow_binary64_85616.1

      \[\leadsto \frac{0.5}{\frac{\color{blue}{1 \cdot \log 10}}{1 \cdot \log \left(re \cdot re + im \cdot im\right)}}\]
    11. Applied times-frac_binary64_77316.1

      \[\leadsto \frac{0.5}{\color{blue}{\frac{1}{1} \cdot \frac{\log 10}{\log \left(re \cdot re + im \cdot im\right)}}}\]
    12. Applied add-sqr-sqrt_binary64_78916.2

      \[\leadsto \frac{\color{blue}{\sqrt{0.5} \cdot \sqrt{0.5}}}{\frac{1}{1} \cdot \frac{\log 10}{\log \left(re \cdot re + im \cdot im\right)}}\]
    13. Applied times-frac_binary64_77316.0

      \[\leadsto \color{blue}{\frac{\sqrt{0.5}}{\frac{1}{1}} \cdot \frac{\sqrt{0.5}}{\frac{\log 10}{\log \left(re \cdot re + im \cdot im\right)}}}\]
    14. Simplified16.0

      \[\leadsto \color{blue}{\sqrt{0.5}} \cdot \frac{\sqrt{0.5}}{\frac{\log 10}{\log \left(re \cdot re + im \cdot im\right)}}\]

    if 8.6028064917468283e130 < re

    1. Initial program 58.8

      \[\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\log 10}\]
    2. Using strategy rm
    3. Applied add-cube-cbrt_binary64_80258.8

      \[\leadsto \frac{\log \color{blue}{\left(\left(\sqrt[3]{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right) \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right)}}{\log 10}\]
    4. Using strategy rm
    5. Applied pow1_binary64_82858.8

      \[\leadsto \frac{\log \left(\left(\sqrt[3]{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right) \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right)}{\log \color{blue}{\left({10}^{1}\right)}}\]
    6. Applied log-pow_binary64_85658.8

      \[\leadsto \frac{\log \left(\left(\sqrt[3]{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right) \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right)}{\color{blue}{1 \cdot \log 10}}\]
    7. Applied pow3_binary64_85058.8

      \[\leadsto \frac{\log \color{blue}{\left({\left(\sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right)}^{3}\right)}}{1 \cdot \log 10}\]
    8. Applied log-pow_binary64_85658.8

      \[\leadsto \frac{\color{blue}{3 \cdot \log \left(\sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right)}}{1 \cdot \log 10}\]
    9. Applied times-frac_binary64_77358.8

      \[\leadsto \color{blue}{\frac{3}{1} \cdot \frac{\log \left(\sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right)}{\log 10}}\]
    10. Simplified58.8

      \[\leadsto \color{blue}{3} \cdot \frac{\log \left(\sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right)}{\log 10}\]
    11. Taylor expanded around inf 8.6

      \[\leadsto 3 \cdot \frac{\log \left(\sqrt[3]{\color{blue}{re}}\right)}{\log 10}\]
  3. Recombined 5 regimes into one program.
  4. Final simplification17.6

    \[\leadsto \begin{array}{l} \mathbf{if}\;re \leq -2.8827138647577603 \cdot 10^{+149}:\\ \;\;\;\;\frac{0.5}{\frac{\log 10}{\log \left(\frac{-1}{re}\right) \cdot -2}}\\ \mathbf{elif}\;re \leq 1.5818348111842102 \cdot 10^{-202}:\\ \;\;\;\;\frac{\sqrt{0.5}}{\frac{\log 10}{\sqrt{0.5} \cdot \log \left(re \cdot re + im \cdot im\right)}}\\ \mathbf{elif}\;re \leq 8.96470249214571 \cdot 10^{-167}:\\ \;\;\;\;\frac{\log re}{\log 10}\\ \mathbf{elif}\;re \leq 8.602806491746828 \cdot 10^{+130}:\\ \;\;\;\;\sqrt{0.5} \cdot \frac{\sqrt{0.5}}{\frac{\log 10}{\log \left(re \cdot re + im \cdot im\right)}}\\ \mathbf{else}:\\ \;\;\;\;3 \cdot \frac{\log \left(\sqrt[3]{re}\right)}{\log 10}\\ \end{array}\]

Reproduce

herbie shell --seed 2020292 
(FPCore (re im)
  :name "math.log10 on complex, real part"
  :precision binary64
  (/ (log (sqrt (+ (* re re) (* im im)))) (log 10.0)))