Average Error: 31.4 → 0.3
Time: 6.3s
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}\]
\[-1 \cdot \frac{\tan^{-1}_* \frac{im}{re}}{\log \left(\frac{1}{base}\right)}\]
\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}
-1 \cdot \frac{\tan^{-1}_* \frac{im}{re}}{\log \left(\frac{1}{base}\right)}
double f(double re, double im, double base) {
        double r42342 = im;
        double r42343 = re;
        double r42344 = atan2(r42342, r42343);
        double r42345 = base;
        double r42346 = log(r42345);
        double r42347 = r42344 * r42346;
        double r42348 = r42343 * r42343;
        double r42349 = r42342 * r42342;
        double r42350 = r42348 + r42349;
        double r42351 = sqrt(r42350);
        double r42352 = log(r42351);
        double r42353 = 0.0;
        double r42354 = r42352 * r42353;
        double r42355 = r42347 - r42354;
        double r42356 = r42346 * r42346;
        double r42357 = r42353 * r42353;
        double r42358 = r42356 + r42357;
        double r42359 = r42355 / r42358;
        return r42359;
}

double f(double re, double im, double base) {
        double r42360 = -1.0;
        double r42361 = im;
        double r42362 = re;
        double r42363 = atan2(r42361, r42362);
        double r42364 = 1.0;
        double r42365 = base;
        double r42366 = r42364 / r42365;
        double r42367 = log(r42366);
        double r42368 = r42363 / r42367;
        double r42369 = r42360 * r42368;
        return r42369;
}

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

    \[\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. Using strategy rm
  3. Applied *-un-lft-identity31.4

    \[\leadsto \frac{\tan^{-1}_* \frac{im}{re} \cdot \log base - \log \left(\sqrt{\color{blue}{1 \cdot \left(re \cdot re + im \cdot im\right)}}\right) \cdot 0.0}{\log base \cdot \log base + 0.0 \cdot 0.0}\]
  4. Applied sqrt-prod31.4

    \[\leadsto \frac{\tan^{-1}_* \frac{im}{re} \cdot \log base - \log \color{blue}{\left(\sqrt{1} \cdot \sqrt{re \cdot re + im \cdot im}\right)} \cdot 0.0}{\log base \cdot \log base + 0.0 \cdot 0.0}\]
  5. Simplified31.4

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

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

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

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

Reproduce

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