Average Error: 31.8 → 0.4
Time: 11.6s
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 r96115 = im;
        double r96116 = re;
        double r96117 = atan2(r96115, r96116);
        double r96118 = base;
        double r96119 = log(r96118);
        double r96120 = r96117 * r96119;
        double r96121 = r96116 * r96116;
        double r96122 = r96115 * r96115;
        double r96123 = r96121 + r96122;
        double r96124 = sqrt(r96123);
        double r96125 = log(r96124);
        double r96126 = 0.0;
        double r96127 = r96125 * r96126;
        double r96128 = r96120 - r96127;
        double r96129 = r96119 * r96119;
        double r96130 = r96126 * r96126;
        double r96131 = r96129 + r96130;
        double r96132 = r96128 / r96131;
        return r96132;
}

double f(double re, double im, double base) {
        double r96133 = im;
        double r96134 = re;
        double r96135 = atan2(r96133, r96134);
        double r96136 = -1.0;
        double r96137 = base;
        double r96138 = log(r96137);
        double r96139 = r96136 / r96138;
        double r96140 = r96135 * r96139;
        double r96141 = -r96140;
        return r96141;
}

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.8

    \[\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(\tan^{-1}_* \frac{im}{re}, \log base, -0.0 \cdot \log \left(\mathsf{hypot}\left(re, im\right)\right)\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}{\tan^{-1}_* \frac{im}{re} \cdot \frac{1}{-\log base}}\]
  7. Simplified0.4

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

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

Reproduce

herbie shell --seed 2020046 +o rules:numerics
(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))))