Average Error: 31.6 → 0.4
Time: 4.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 r26470 = im;
        double r26471 = re;
        double r26472 = atan2(r26470, r26471);
        double r26473 = base;
        double r26474 = log(r26473);
        double r26475 = r26472 * r26474;
        double r26476 = r26471 * r26471;
        double r26477 = r26470 * r26470;
        double r26478 = r26476 + r26477;
        double r26479 = sqrt(r26478);
        double r26480 = log(r26479);
        double r26481 = 0.0;
        double r26482 = r26480 * r26481;
        double r26483 = r26475 - r26482;
        double r26484 = r26474 * r26474;
        double r26485 = r26481 * r26481;
        double r26486 = r26484 + r26485;
        double r26487 = r26483 / r26486;
        return r26487;
}

double f(double re, double im, double base) {
        double r26488 = im;
        double r26489 = re;
        double r26490 = atan2(r26488, r26489);
        double r26491 = 1.0;
        double r26492 = base;
        double r26493 = log(r26492);
        double r26494 = r26491 / r26493;
        double r26495 = r26490 * r26494;
        return r26495;
}

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. Taylor expanded around 0 0.3

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

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

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

Reproduce

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