Average Error: 32.0 → 0.3
Time: 12.6s
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 r85505 = im;
        double r85506 = re;
        double r85507 = atan2(r85505, r85506);
        double r85508 = base;
        double r85509 = log(r85508);
        double r85510 = r85507 * r85509;
        double r85511 = r85506 * r85506;
        double r85512 = r85505 * r85505;
        double r85513 = r85511 + r85512;
        double r85514 = sqrt(r85513);
        double r85515 = log(r85514);
        double r85516 = 0.0;
        double r85517 = r85515 * r85516;
        double r85518 = r85510 - r85517;
        double r85519 = r85509 * r85509;
        double r85520 = r85516 * r85516;
        double r85521 = r85519 + r85520;
        double r85522 = r85518 / r85521;
        return r85522;
}

double f(double re, double im, double base) {
        double r85523 = im;
        double r85524 = re;
        double r85525 = atan2(r85523, r85524);
        double r85526 = base;
        double r85527 = log(r85526);
        double r85528 = r85525 / r85527;
        return r85528;
}

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.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 2019351 +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))))