Average Error: 31.1 → 0.3
Time: 2.2m
Precision: 64
\[\frac{\tan^{-1}_* \frac{im}{re} \cdot \log base - \log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot 0}{\log base \cdot \log base + 0 \cdot 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}{\log base \cdot \log base + 0 \cdot 0}
\frac{\tan^{-1}_* \frac{im}{re}}{\log base}
double f(double re, double im, double base) {
        double r2023731 = im;
        double r2023732 = re;
        double r2023733 = atan2(r2023731, r2023732);
        double r2023734 = base;
        double r2023735 = log(r2023734);
        double r2023736 = r2023733 * r2023735;
        double r2023737 = r2023732 * r2023732;
        double r2023738 = r2023731 * r2023731;
        double r2023739 = r2023737 + r2023738;
        double r2023740 = sqrt(r2023739);
        double r2023741 = log(r2023740);
        double r2023742 = 0.0;
        double r2023743 = r2023741 * r2023742;
        double r2023744 = r2023736 - r2023743;
        double r2023745 = r2023735 * r2023735;
        double r2023746 = r2023742 * r2023742;
        double r2023747 = r2023745 + r2023746;
        double r2023748 = r2023744 / r2023747;
        return r2023748;
}

double f(double re, double im, double base) {
        double r2023749 = im;
        double r2023750 = re;
        double r2023751 = atan2(r2023749, r2023750);
        double r2023752 = base;
        double r2023753 = log(r2023752);
        double r2023754 = r2023751 / r2023753;
        return r2023754;
}

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

    \[\frac{\tan^{-1}_* \frac{im}{re} \cdot \log base - \log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot 0}{\log base \cdot \log base + 0 \cdot 0}\]
  2. Simplified0.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. Using strategy rm
  6. Applied *-un-lft-identity0.4

    \[\leadsto \color{blue}{\left(1 \cdot \tan^{-1}_* \frac{im}{re}\right)} \cdot \frac{1}{\log base}\]
  7. Applied associate-*l*0.4

    \[\leadsto \color{blue}{1 \cdot \left(\tan^{-1}_* \frac{im}{re} \cdot \frac{1}{\log base}\right)}\]
  8. Simplified0.3

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

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

Reproduce

herbie shell --seed 2019146 +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)) (+ (* (log base) (log base)) (* 0 0))))