Average Error: 31.5 → 0.3
Time: 5.9s
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 r29707 = im;
        double r29708 = re;
        double r29709 = atan2(r29707, r29708);
        double r29710 = base;
        double r29711 = log(r29710);
        double r29712 = r29709 * r29711;
        double r29713 = r29708 * r29708;
        double r29714 = r29707 * r29707;
        double r29715 = r29713 + r29714;
        double r29716 = sqrt(r29715);
        double r29717 = log(r29716);
        double r29718 = 0.0;
        double r29719 = r29717 * r29718;
        double r29720 = r29712 - r29719;
        double r29721 = r29711 * r29711;
        double r29722 = r29718 * r29718;
        double r29723 = r29721 + r29722;
        double r29724 = r29720 / r29723;
        return r29724;
}

double f(double re, double im, double base) {
        double r29725 = im;
        double r29726 = re;
        double r29727 = atan2(r29725, r29726);
        double r29728 = base;
        double r29729 = log(r29728);
        double r29730 = r29727 / r29729;
        return r29730;
}

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

    \[\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 2020036 +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))))