Average Error: 31.6 → 0.3
Time: 20.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 r89009 = im;
        double r89010 = re;
        double r89011 = atan2(r89009, r89010);
        double r89012 = base;
        double r89013 = log(r89012);
        double r89014 = r89011 * r89013;
        double r89015 = r89010 * r89010;
        double r89016 = r89009 * r89009;
        double r89017 = r89015 + r89016;
        double r89018 = sqrt(r89017);
        double r89019 = log(r89018);
        double r89020 = 0.0;
        double r89021 = r89019 * r89020;
        double r89022 = r89014 - r89021;
        double r89023 = r89013 * r89013;
        double r89024 = r89020 * r89020;
        double r89025 = r89023 + r89024;
        double r89026 = r89022 / r89025;
        return r89026;
}

double f(double re, double im, double base) {
        double r89027 = im;
        double r89028 = re;
        double r89029 = atan2(r89027, r89028);
        double r89030 = base;
        double r89031 = log(r89030);
        double r89032 = r89029 / r89031;
        return r89032;
}

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

    \[\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{\tan^{-1}_* \frac{im}{re} \cdot \log base - 0.0 \cdot \log \left(\mathsf{hypot}\left(re, im\right)\right)}{\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 2019347 +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))))