Average Error: 31.9 → 0.3
Time: 10.4s
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 r92380 = im;
        double r92381 = re;
        double r92382 = atan2(r92380, r92381);
        double r92383 = base;
        double r92384 = log(r92383);
        double r92385 = r92382 * r92384;
        double r92386 = r92381 * r92381;
        double r92387 = r92380 * r92380;
        double r92388 = r92386 + r92387;
        double r92389 = sqrt(r92388);
        double r92390 = log(r92389);
        double r92391 = 0.0;
        double r92392 = r92390 * r92391;
        double r92393 = r92385 - r92392;
        double r92394 = r92384 * r92384;
        double r92395 = r92391 * r92391;
        double r92396 = r92394 + r92395;
        double r92397 = r92393 / r92396;
        return r92397;
}

double f(double re, double im, double base) {
        double r92398 = im;
        double r92399 = re;
        double r92400 = atan2(r92398, r92399);
        double r92401 = base;
        double r92402 = log(r92401);
        double r92403 = r92400 / r92402;
        return r92403;
}

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. Using strategy rm
  4. Applied div-inv0.5

    \[\leadsto \color{blue}{\mathsf{fma}\left(\tan^{-1}_* \frac{im}{re}, \log base, -0.0 \cdot \log \left(\mathsf{hypot}\left(re, im\right)\right)\right) \cdot \frac{1}{\mathsf{fma}\left(\log base, \log base, 0.0 \cdot 0.0\right)}}\]
  5. Simplified0.5

    \[\leadsto \mathsf{fma}\left(\tan^{-1}_* \frac{im}{re}, \log base, -0.0 \cdot \log \left(\mathsf{hypot}\left(re, im\right)\right)\right) \cdot \color{blue}{\frac{1}{\mathsf{fma}\left(0.0, 0.0, {\left(\log base\right)}^{2}\right)}}\]
  6. Taylor expanded around 0 0.3

    \[\leadsto \color{blue}{\frac{\tan^{-1}_* \frac{im}{re}}{\log base}}\]
  7. 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))))