Average Error: 31.7 → 0.3
Time: 4.0s
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 r89063 = im;
        double r89064 = re;
        double r89065 = atan2(r89063, r89064);
        double r89066 = base;
        double r89067 = log(r89066);
        double r89068 = r89065 * r89067;
        double r89069 = r89064 * r89064;
        double r89070 = r89063 * r89063;
        double r89071 = r89069 + r89070;
        double r89072 = sqrt(r89071);
        double r89073 = log(r89072);
        double r89074 = 0.0;
        double r89075 = r89073 * r89074;
        double r89076 = r89068 - r89075;
        double r89077 = r89067 * r89067;
        double r89078 = r89074 * r89074;
        double r89079 = r89077 + r89078;
        double r89080 = r89076 / r89079;
        return r89080;
}

double f(double re, double im, double base) {
        double r89081 = im;
        double r89082 = re;
        double r89083 = atan2(r89081, r89082);
        double r89084 = base;
        double r89085 = log(r89084);
        double r89086 = r89083 / r89085;
        return r89086;
}

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