Average Error: 32.2 → 0.4
Time: 5.6s
Precision: binary64
\[\frac{\tan^{-1}_* \frac{im}{re} \cdot \log base - \log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot 0.0}{\log base \cdot \log base + 0.0 \cdot 0.0}\]
\[\frac{-\tan^{-1}_* \frac{im}{re}}{2 \cdot \log \left(\sqrt[3]{\frac{1}{base}}\right) + \log \left(\sqrt[3]{\frac{1}{base}}\right)}\]

Error

Bits error versus re

Bits error versus im

Bits error versus base

Derivation

  1. Initial program 32.2

    \[\frac{\tan^{-1}_* \frac{im}{re} \cdot \log base - \log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot 0.0}{\log base \cdot \log base + 0.0 \cdot 0.0}\]
  2. Taylor expanded around 0 0.3

    \[\leadsto \color{blue}{\frac{\tan^{-1}_* \frac{im}{re}}{\log 1 + \log base}}\]
  3. Simplified0.3

    \[\leadsto \color{blue}{\frac{\tan^{-1}_* \frac{im}{re}}{\frac{0 + \log base}{1}}}\]
  4. Using strategy rm
  5. Applied frac-2neg0.3

    \[\leadsto \color{blue}{\frac{-\tan^{-1}_* \frac{im}{re}}{-\frac{0 + \log base}{1}}}\]
  6. Simplified0.3

    \[\leadsto \frac{-\tan^{-1}_* \frac{im}{re}}{\color{blue}{\log \left(\frac{1}{base}\right)}}\]
  7. Using strategy rm
  8. Applied add-cube-cbrt0.3

    \[\leadsto \frac{-\tan^{-1}_* \frac{im}{re}}{\log \color{blue}{\left(\left(\sqrt[3]{\frac{1}{base}} \cdot \sqrt[3]{\frac{1}{base}}\right) \cdot \sqrt[3]{\frac{1}{base}}\right)}}\]
  9. Applied log-prod0.4

    \[\leadsto \frac{-\tan^{-1}_* \frac{im}{re}}{\color{blue}{\log \left(\sqrt[3]{\frac{1}{base}} \cdot \sqrt[3]{\frac{1}{base}}\right) + \log \left(\sqrt[3]{\frac{1}{base}}\right)}}\]
  10. Simplified0.4

    \[\leadsto \frac{-\tan^{-1}_* \frac{im}{re}}{\color{blue}{2 \cdot \log \left(\sqrt[3]{\frac{1}{base}}\right)} + \log \left(\sqrt[3]{\frac{1}{base}}\right)}\]
  11. Final simplification0.4

    \[\leadsto \frac{-\tan^{-1}_* \frac{im}{re}}{2 \cdot \log \left(\sqrt[3]{\frac{1}{base}}\right) + \log \left(\sqrt[3]{\frac{1}{base}}\right)}\]

Reproduce

herbie shell --seed 2020161 
(FPCore (re im base)
  :name "math.log/2 on complex, imaginary part"
  :precision binary64
  (/ (- (* (atan2 im re) (log base)) (* (log (sqrt (+ (* re re) (* im im)))) 0.0)) (+ (* (log base) (log base)) (* 0.0 0.0))))