Average Error: 31.8 → 0.4
Time: 22.4s
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 r29396 = im;
        double r29397 = re;
        double r29398 = atan2(r29396, r29397);
        double r29399 = base;
        double r29400 = log(r29399);
        double r29401 = r29398 * r29400;
        double r29402 = r29397 * r29397;
        double r29403 = r29396 * r29396;
        double r29404 = r29402 + r29403;
        double r29405 = sqrt(r29404);
        double r29406 = log(r29405);
        double r29407 = 0.0;
        double r29408 = r29406 * r29407;
        double r29409 = r29401 - r29408;
        double r29410 = r29400 * r29400;
        double r29411 = r29407 * r29407;
        double r29412 = r29410 + r29411;
        double r29413 = r29409 / r29412;
        return r29413;
}

double f(double re, double im, double base) {
        double r29414 = 1.0;
        double r29415 = base;
        double r29416 = log(r29415);
        double r29417 = r29414 / r29416;
        double r29418 = im;
        double r29419 = re;
        double r29420 = atan2(r29418, r29419);
        double r29421 = r29417 * r29420;
        return r29421;
}

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{\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 2019323 +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))))