Average Error: 31.9 → 0.3
Time: 16.2s
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 r106770 = im;
        double r106771 = re;
        double r106772 = atan2(r106770, r106771);
        double r106773 = base;
        double r106774 = log(r106773);
        double r106775 = r106772 * r106774;
        double r106776 = r106771 * r106771;
        double r106777 = r106770 * r106770;
        double r106778 = r106776 + r106777;
        double r106779 = sqrt(r106778);
        double r106780 = log(r106779);
        double r106781 = 0.0;
        double r106782 = r106780 * r106781;
        double r106783 = r106775 - r106782;
        double r106784 = r106774 * r106774;
        double r106785 = r106781 * r106781;
        double r106786 = r106784 + r106785;
        double r106787 = r106783 / r106786;
        return r106787;
}

double f(double re, double im, double base) {
        double r106788 = im;
        double r106789 = re;
        double r106790 = atan2(r106788, r106789);
        double r106791 = base;
        double r106792 = log(r106791);
        double r106793 = r106790 / r106792;
        return r106793;
}

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