Average Error: 31.8 → 0.6
Time: 4.2s
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{1}{\frac{\log base}{\tan^{-1}_* \frac{im}{re}}}\]
\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{1}{\frac{\log base}{\tan^{-1}_* \frac{im}{re}}}
double f(double re, double im, double base) {
        double r78429 = im;
        double r78430 = re;
        double r78431 = atan2(r78429, r78430);
        double r78432 = base;
        double r78433 = log(r78432);
        double r78434 = r78431 * r78433;
        double r78435 = r78430 * r78430;
        double r78436 = r78429 * r78429;
        double r78437 = r78435 + r78436;
        double r78438 = sqrt(r78437);
        double r78439 = log(r78438);
        double r78440 = 0.0;
        double r78441 = r78439 * r78440;
        double r78442 = r78434 - r78441;
        double r78443 = r78433 * r78433;
        double r78444 = r78440 * r78440;
        double r78445 = r78443 + r78444;
        double r78446 = r78442 / r78445;
        return r78446;
}

double f(double re, double im, double base) {
        double r78447 = 1.0;
        double r78448 = base;
        double r78449 = log(r78448);
        double r78450 = im;
        double r78451 = re;
        double r78452 = atan2(r78450, r78451);
        double r78453 = r78449 / r78452;
        double r78454 = r78447 / r78453;
        return r78454;
}

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

    \[\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. Taylor expanded around 0 0.3

    \[\leadsto \color{blue}{\frac{\tan^{-1}_* \frac{im}{re}}{\log base}}\]
  3. Using strategy rm
  4. Applied clear-num0.6

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

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

Reproduce

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