Average Error: 31.7 → 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 r37364 = im;
        double r37365 = re;
        double r37366 = atan2(r37364, r37365);
        double r37367 = base;
        double r37368 = log(r37367);
        double r37369 = r37366 * r37368;
        double r37370 = r37365 * r37365;
        double r37371 = r37364 * r37364;
        double r37372 = r37370 + r37371;
        double r37373 = sqrt(r37372);
        double r37374 = log(r37373);
        double r37375 = 0.0;
        double r37376 = r37374 * r37375;
        double r37377 = r37369 - r37376;
        double r37378 = r37368 * r37368;
        double r37379 = r37375 * r37375;
        double r37380 = r37378 + r37379;
        double r37381 = r37377 / r37380;
        return r37381;
}

double f(double re, double im, double base) {
        double r37382 = im;
        double r37383 = re;
        double r37384 = atan2(r37382, r37383);
        double r37385 = base;
        double r37386 = log(r37385);
        double r37387 = r37384 / r37386;
        return r37387;
}

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

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