Average Error: 32.0 → 0.3
Time: 4.1s
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 r28163 = im;
        double r28164 = re;
        double r28165 = atan2(r28163, r28164);
        double r28166 = base;
        double r28167 = log(r28166);
        double r28168 = r28165 * r28167;
        double r28169 = r28164 * r28164;
        double r28170 = r28163 * r28163;
        double r28171 = r28169 + r28170;
        double r28172 = sqrt(r28171);
        double r28173 = log(r28172);
        double r28174 = 0.0;
        double r28175 = r28173 * r28174;
        double r28176 = r28168 - r28175;
        double r28177 = r28167 * r28167;
        double r28178 = r28174 * r28174;
        double r28179 = r28177 + r28178;
        double r28180 = r28176 / r28179;
        return r28180;
}

double f(double re, double im, double base) {
        double r28181 = im;
        double r28182 = re;
        double r28183 = atan2(r28181, r28182);
        double r28184 = base;
        double r28185 = log(r28184);
        double r28186 = r28183 / r28185;
        return r28186;
}

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

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

    \[\leadsto \color{blue}{\tan^{-1}_* \frac{im}{re} \cdot \frac{1}{\log base}}\]
  5. Using strategy rm
  6. Applied *-un-lft-identity0.4

    \[\leadsto \color{blue}{\left(1 \cdot \tan^{-1}_* \frac{im}{re}\right)} \cdot \frac{1}{\log base}\]
  7. Applied associate-*l*0.4

    \[\leadsto \color{blue}{1 \cdot \left(\tan^{-1}_* \frac{im}{re} \cdot \frac{1}{\log base}\right)}\]
  8. Simplified0.3

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

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

Reproduce

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