Average Error: 32.0 → 0.4
Time: 4.8s
Precision: 64
\[\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}\]
\[\tan^{-1}_* \frac{im}{re} \cdot \frac{1}{\log base}\]
\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}
\tan^{-1}_* \frac{im}{re} \cdot \frac{1}{\log base}
double f(double re, double im, double base) {
        double r97896 = im;
        double r97897 = re;
        double r97898 = atan2(r97896, r97897);
        double r97899 = base;
        double r97900 = log(r97899);
        double r97901 = r97898 * r97900;
        double r97902 = r97897 * r97897;
        double r97903 = r97896 * r97896;
        double r97904 = r97902 + r97903;
        double r97905 = sqrt(r97904);
        double r97906 = log(r97905);
        double r97907 = 0.0;
        double r97908 = r97906 * r97907;
        double r97909 = r97901 - r97908;
        double r97910 = r97900 * r97900;
        double r97911 = r97907 * r97907;
        double r97912 = r97910 + r97911;
        double r97913 = r97909 / r97912;
        return r97913;
}

double f(double re, double im, double base) {
        double r97914 = im;
        double r97915 = re;
        double r97916 = atan2(r97914, r97915);
        double r97917 = 1.0;
        double r97918 = base;
        double r97919 = log(r97918);
        double r97920 = r97917 / r97919;
        double r97921 = r97916 * r97920;
        return r97921;
}

Error

Bits error versus re

Bits error versus im

Bits error versus base

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Initial program 32.0

    \[\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 base}}\]
  3. Using strategy rm
  4. Applied div-inv0.4

    \[\leadsto \color{blue}{\tan^{-1}_* \frac{im}{re} \cdot \frac{1}{\log base}}\]
  5. Final simplification0.4

    \[\leadsto \tan^{-1}_* \frac{im}{re} \cdot \frac{1}{\log base}\]

Reproduce

herbie shell --seed 2020089 
(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))))