Average Error: 30.9 → 0.3
Time: 18.7s
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 r24853 = im;
        double r24854 = re;
        double r24855 = atan2(r24853, r24854);
        double r24856 = base;
        double r24857 = log(r24856);
        double r24858 = r24855 * r24857;
        double r24859 = r24854 * r24854;
        double r24860 = r24853 * r24853;
        double r24861 = r24859 + r24860;
        double r24862 = sqrt(r24861);
        double r24863 = log(r24862);
        double r24864 = 0.0;
        double r24865 = r24863 * r24864;
        double r24866 = r24858 - r24865;
        double r24867 = r24857 * r24857;
        double r24868 = r24864 * r24864;
        double r24869 = r24867 + r24868;
        double r24870 = r24866 / r24869;
        return r24870;
}

double f(double re, double im, double base) {
        double r24871 = im;
        double r24872 = re;
        double r24873 = atan2(r24871, r24872);
        double r24874 = base;
        double r24875 = log(r24874);
        double r24876 = r24873 / r24875;
        return r24876;
}

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 30.9

    \[\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 2019303 +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))))