Average Error: 32.1 → 0.3
Time: 19.0s
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 r86260 = im;
        double r86261 = re;
        double r86262 = atan2(r86260, r86261);
        double r86263 = base;
        double r86264 = log(r86263);
        double r86265 = r86262 * r86264;
        double r86266 = r86261 * r86261;
        double r86267 = r86260 * r86260;
        double r86268 = r86266 + r86267;
        double r86269 = sqrt(r86268);
        double r86270 = log(r86269);
        double r86271 = 0.0;
        double r86272 = r86270 * r86271;
        double r86273 = r86265 - r86272;
        double r86274 = r86264 * r86264;
        double r86275 = r86271 * r86271;
        double r86276 = r86274 + r86275;
        double r86277 = r86273 / r86276;
        return r86277;
}

double f(double re, double im, double base) {
        double r86278 = im;
        double r86279 = re;
        double r86280 = atan2(r86278, r86279);
        double r86281 = base;
        double r86282 = log(r86281);
        double r86283 = r86280 / r86282;
        return r86283;
}

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

    \[\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 -inf 64.0

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

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

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

Reproduce

herbie shell --seed 2019198 +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))))