Average Error: 31.7 → 0.3
Time: 3.9s
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 r40435 = im;
        double r40436 = re;
        double r40437 = atan2(r40435, r40436);
        double r40438 = base;
        double r40439 = log(r40438);
        double r40440 = r40437 * r40439;
        double r40441 = r40436 * r40436;
        double r40442 = r40435 * r40435;
        double r40443 = r40441 + r40442;
        double r40444 = sqrt(r40443);
        double r40445 = log(r40444);
        double r40446 = 0.0;
        double r40447 = r40445 * r40446;
        double r40448 = r40440 - r40447;
        double r40449 = r40439 * r40439;
        double r40450 = r40446 * r40446;
        double r40451 = r40449 + r40450;
        double r40452 = r40448 / r40451;
        return r40452;
}

double f(double re, double im, double base) {
        double r40453 = im;
        double r40454 = re;
        double r40455 = atan2(r40453, r40454);
        double r40456 = base;
        double r40457 = log(r40456);
        double r40458 = r40455 / r40457;
        return r40458;
}

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

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

    \[\leadsto \color{blue}{{\left(\tan^{-1}_* \frac{im}{re}\right)}^{1}} \cdot {\left(\frac{1}{\log base}\right)}^{1}\]
  8. Applied pow-prod-down0.4

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

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

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

Reproduce

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