Average Error: 32.0 → 0.3
Time: 4.2s
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 r89658 = im;
        double r89659 = re;
        double r89660 = atan2(r89658, r89659);
        double r89661 = base;
        double r89662 = log(r89661);
        double r89663 = r89660 * r89662;
        double r89664 = r89659 * r89659;
        double r89665 = r89658 * r89658;
        double r89666 = r89664 + r89665;
        double r89667 = sqrt(r89666);
        double r89668 = log(r89667);
        double r89669 = 0.0;
        double r89670 = r89668 * r89669;
        double r89671 = r89663 - r89670;
        double r89672 = r89662 * r89662;
        double r89673 = r89669 * r89669;
        double r89674 = r89672 + r89673;
        double r89675 = r89671 / r89674;
        return r89675;
}

double f(double re, double im, double base) {
        double r89676 = im;
        double r89677 = re;
        double r89678 = atan2(r89676, r89677);
        double r89679 = base;
        double r89680 = log(r89679);
        double r89681 = r89678 / r89680;
        return r89681;
}

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 32.0

    \[\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 2019344 
(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))))