Average Error: 31.0 → 0.3
Time: 16.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 r40462 = im;
        double r40463 = re;
        double r40464 = atan2(r40462, r40463);
        double r40465 = base;
        double r40466 = log(r40465);
        double r40467 = r40464 * r40466;
        double r40468 = r40463 * r40463;
        double r40469 = r40462 * r40462;
        double r40470 = r40468 + r40469;
        double r40471 = sqrt(r40470);
        double r40472 = log(r40471);
        double r40473 = 0.0;
        double r40474 = r40472 * r40473;
        double r40475 = r40467 - r40474;
        double r40476 = r40466 * r40466;
        double r40477 = r40473 * r40473;
        double r40478 = r40476 + r40477;
        double r40479 = r40475 / r40478;
        return r40479;
}

double f(double re, double im, double base) {
        double r40480 = im;
        double r40481 = re;
        double r40482 = atan2(r40480, r40481);
        double r40483 = base;
        double r40484 = log(r40483);
        double r40485 = r40482 / r40484;
        return r40485;
}

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

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