Average Error: 31.9 → 0.3
Time: 4.5s
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{\tan^{-1}_* \frac{im}{re}}{\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}
\frac{\tan^{-1}_* \frac{im}{re}}{\log base}
double f(double re, double im, double base) {
        double r90528 = im;
        double r90529 = re;
        double r90530 = atan2(r90528, r90529);
        double r90531 = base;
        double r90532 = log(r90531);
        double r90533 = r90530 * r90532;
        double r90534 = r90529 * r90529;
        double r90535 = r90528 * r90528;
        double r90536 = r90534 + r90535;
        double r90537 = sqrt(r90536);
        double r90538 = log(r90537);
        double r90539 = 0.0;
        double r90540 = r90538 * r90539;
        double r90541 = r90533 - r90540;
        double r90542 = r90532 * r90532;
        double r90543 = r90539 * r90539;
        double r90544 = r90542 + r90543;
        double r90545 = r90541 / r90544;
        return r90545;
}

double f(double re, double im, double base) {
        double r90546 = im;
        double r90547 = re;
        double r90548 = atan2(r90546, r90547);
        double r90549 = base;
        double r90550 = log(r90549);
        double r90551 = r90548 / r90550;
        return r90551;
}

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

    \[\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. Final simplification0.3

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

Reproduce

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