Average Error: 32.0 → 0.3
Time: 22.8s
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 r2708851 = im;
        double r2708852 = re;
        double r2708853 = atan2(r2708851, r2708852);
        double r2708854 = base;
        double r2708855 = log(r2708854);
        double r2708856 = r2708853 * r2708855;
        double r2708857 = r2708852 * r2708852;
        double r2708858 = r2708851 * r2708851;
        double r2708859 = r2708857 + r2708858;
        double r2708860 = sqrt(r2708859);
        double r2708861 = log(r2708860);
        double r2708862 = 0.0;
        double r2708863 = r2708861 * r2708862;
        double r2708864 = r2708856 - r2708863;
        double r2708865 = r2708855 * r2708855;
        double r2708866 = r2708862 * r2708862;
        double r2708867 = r2708865 + r2708866;
        double r2708868 = r2708864 / r2708867;
        return r2708868;
}

double f(double re, double im, double base) {
        double r2708869 = im;
        double r2708870 = re;
        double r2708871 = atan2(r2708869, r2708870);
        double r2708872 = base;
        double r2708873 = log(r2708872);
        double r2708874 = r2708871 / r2708873;
        return r2708874;
}

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. 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 2019169 +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))))