Average Error: 31.7 → 0.4
Time: 23.7s
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 r30177 = im;
        double r30178 = re;
        double r30179 = atan2(r30177, r30178);
        double r30180 = base;
        double r30181 = log(r30180);
        double r30182 = r30179 * r30181;
        double r30183 = r30178 * r30178;
        double r30184 = r30177 * r30177;
        double r30185 = r30183 + r30184;
        double r30186 = sqrt(r30185);
        double r30187 = log(r30186);
        double r30188 = 0.0;
        double r30189 = r30187 * r30188;
        double r30190 = r30182 - r30189;
        double r30191 = r30181 * r30181;
        double r30192 = r30188 * r30188;
        double r30193 = r30191 + r30192;
        double r30194 = r30190 / r30193;
        return r30194;
}

double f(double re, double im, double base) {
        double r30195 = 1.0;
        double r30196 = base;
        double r30197 = log(r30196);
        double r30198 = r30195 / r30197;
        double r30199 = im;
        double r30200 = re;
        double r30201 = atan2(r30199, r30200);
        double r30202 = r30198 * r30201;
        return r30202;
}

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

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

Reproduce

herbie shell --seed 2019304 +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))))