Average Error: 31.9 → 0.5
Time: 14.7s
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 r30789 = im;
        double r30790 = re;
        double r30791 = atan2(r30789, r30790);
        double r30792 = base;
        double r30793 = log(r30792);
        double r30794 = r30791 * r30793;
        double r30795 = r30790 * r30790;
        double r30796 = r30789 * r30789;
        double r30797 = r30795 + r30796;
        double r30798 = sqrt(r30797);
        double r30799 = log(r30798);
        double r30800 = 0.0;
        double r30801 = r30799 * r30800;
        double r30802 = r30794 - r30801;
        double r30803 = r30793 * r30793;
        double r30804 = r30800 * r30800;
        double r30805 = r30803 + r30804;
        double r30806 = r30802 / r30805;
        return r30806;
}

double f(double re, double im, double base) {
        double r30807 = 1.0;
        double r30808 = base;
        double r30809 = log(r30808);
        double r30810 = im;
        double r30811 = re;
        double r30812 = atan2(r30810, r30811);
        double r30813 = r30809 / r30812;
        double r30814 = r30807 / r30813;
        return r30814;
}

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

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

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

Reproduce

herbie shell --seed 2019291 
(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))))