Average Error: 31.6 → 0.4
Time: 18.1s
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}\]
\[\frac{-1}{-\log base} \cdot \tan^{-1}_* \frac{im}{re}\]
\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{-1}{-\log base} \cdot \tan^{-1}_* \frac{im}{re}
double f(double re, double im, double base) {
        double r47145 = im;
        double r47146 = re;
        double r47147 = atan2(r47145, r47146);
        double r47148 = base;
        double r47149 = log(r47148);
        double r47150 = r47147 * r47149;
        double r47151 = r47146 * r47146;
        double r47152 = r47145 * r47145;
        double r47153 = r47151 + r47152;
        double r47154 = sqrt(r47153);
        double r47155 = log(r47154);
        double r47156 = 0.0;
        double r47157 = r47155 * r47156;
        double r47158 = r47150 - r47157;
        double r47159 = r47149 * r47149;
        double r47160 = r47156 * r47156;
        double r47161 = r47159 + r47160;
        double r47162 = r47158 / r47161;
        return r47162;
}

double f(double re, double im, double base) {
        double r47163 = -1.0;
        double r47164 = base;
        double r47165 = log(r47164);
        double r47166 = -r47165;
        double r47167 = r47163 / r47166;
        double r47168 = im;
        double r47169 = re;
        double r47170 = atan2(r47168, r47169);
        double r47171 = r47167 * r47170;
        return r47171;
}

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 31.6

    \[\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. Simplified0.4

    \[\leadsto \color{blue}{\frac{\mathsf{fma}\left(-0.0, \log \left(\mathsf{hypot}\left(im, re\right)\right), \log base \cdot \tan^{-1}_* \frac{im}{re}\right)}{\mathsf{fma}\left(\log base, \log base, 0.0 \cdot 0.0\right)}}\]
  3. Taylor expanded around inf 0.3

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

    \[\leadsto \color{blue}{\frac{-\tan^{-1}_* \frac{im}{re}}{-\log base}}\]
  5. Using strategy rm
  6. Applied div-inv0.4

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

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

Reproduce

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