Average Error: 31.7 → 0.3
Time: 21.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 r3373736 = im;
        double r3373737 = re;
        double r3373738 = atan2(r3373736, r3373737);
        double r3373739 = base;
        double r3373740 = log(r3373739);
        double r3373741 = r3373738 * r3373740;
        double r3373742 = r3373737 * r3373737;
        double r3373743 = r3373736 * r3373736;
        double r3373744 = r3373742 + r3373743;
        double r3373745 = sqrt(r3373744);
        double r3373746 = log(r3373745);
        double r3373747 = 0.0;
        double r3373748 = r3373746 * r3373747;
        double r3373749 = r3373741 - r3373748;
        double r3373750 = r3373740 * r3373740;
        double r3373751 = r3373747 * r3373747;
        double r3373752 = r3373750 + r3373751;
        double r3373753 = r3373749 / r3373752;
        return r3373753;
}

double f(double re, double im, double base) {
        double r3373754 = im;
        double r3373755 = re;
        double r3373756 = atan2(r3373754, r3373755);
        double r3373757 = base;
        double r3373758 = log(r3373757);
        double r3373759 = r3373756 / r3373758;
        return r3373759;
}

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

    \[\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. Simplified0.4

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

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

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

Reproduce

herbie shell --seed 2019170 +o rules:numerics
(FPCore (re im base)
  :name "math.log/2 on complex, imaginary part"
  (/ (- (* (atan2 im re) (log base)) (* (log (sqrt (+ (* re re) (* im im)))) 0.0)) (+ (* (log base) (log base)) (* 0.0 0.0))))