Average Error: 31.5 → 13.1
Time: 9.8s
Precision: 64
Internal precision: 384
\[\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\log 10}\]
\[\begin{array}{l} \mathbf{if}\;re \le -1.3055268278777005 \cdot 10^{+74}:\\ \;\;\;\;\frac{\log \left(-re\right)}{\log 10}\\ \mathbf{if}\;re \le -2.321564696919607 \cdot 10^{-245}:\\ \;\;\;\;\frac{3}{\frac{\log 10}{\log \left(\sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right)}}\\ \mathbf{if}\;re \le -2.837848394186995 \cdot 10^{-306}:\\ \;\;\;\;\frac{3}{\frac{\log 10}{\log \left(\sqrt[3]{im}\right)}}\\ \mathbf{if}\;re \le 5.33721959222845 \cdot 10^{+135}:\\ \;\;\;\;\frac{3}{1} \cdot \frac{\log \left(\sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right)}{\log 10}\\ \mathbf{else}:\\ \;\;\;\;\frac{\log re}{\log 10}\\ \end{array}\]

Error

Bits error versus re

Bits error versus im

Derivation

  1. Split input into 5 regimes.
  2. if re < -1.3055268278777005e+74

    1. Initial program 47.6

      \[\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\log 10}\]
    2. Applied taylor 0.6

      \[\leadsto \frac{\log \left(-1 \cdot re\right)}{\log 10}\]
    3. Taylor expanded around -inf 0.6

      \[\leadsto \frac{\log \color{blue}{\left(-1 \cdot re\right)}}{\log 10}\]
    4. Applied simplify 0.6

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

    if -1.3055268278777005e+74 < re < -2.321564696919607e-245

    1. Initial program 19.3

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

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

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

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

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

    if -2.321564696919607e-245 < re < -2.837848394186995e-306

    1. Initial program 32.4

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

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

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

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

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

      \[\leadsto \frac{3}{\frac{\log 10}{\log \left(\sqrt[3]{im}\right)}}\]
    9. Taylor expanded around 0 0.6

      \[\leadsto \frac{3}{\frac{\log 10}{\log \left(\sqrt[3]{\color{blue}{im}}\right)}}\]

    if -2.837848394186995e-306 < re < 5.33721959222845e+135

    1. Initial program 21.3

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

      \[\leadsto \frac{\log \color{blue}{\left({\left(\sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right)}^3\right)}}{\log 10}\]
    4. Using strategy rm
    5. Applied *-un-lft-identity 21.3

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

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

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

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

    if 5.33721959222845e+135 < re

    1. Initial program 57.4

      \[\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\log 10}\]
    2. Applied taylor 0.6

      \[\leadsto \frac{\log re}{\log 10}\]
    3. Taylor expanded around inf 0.6

      \[\leadsto \frac{\log \color{blue}{re}}{\log 10}\]
  3. Recombined 5 regimes into one program.
  4. Removed slow pow expressions

Runtime

Time bar (total: 9.8s) Debug logProfile

Please include this information when filing a bug report:

herbie shell --seed '#(1064524629 4159152179 2999149171 575749698 4006532819 692958815)'
(FPCore (re im)
  :name "math.log10 on complex, real part"
  (/ (log (sqrt (+ (* re re) (* im im)))) (log 10)))