Average Error: 31.7 → 0.4
Time: 4.3s
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}\]
\[\tan^{-1}_* \frac{im}{re} \cdot \frac{1}{\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}
\tan^{-1}_* \frac{im}{re} \cdot \frac{1}{\log base}
double f(double re, double im, double base) {
        double r89193 = im;
        double r89194 = re;
        double r89195 = atan2(r89193, r89194);
        double r89196 = base;
        double r89197 = log(r89196);
        double r89198 = r89195 * r89197;
        double r89199 = r89194 * r89194;
        double r89200 = r89193 * r89193;
        double r89201 = r89199 + r89200;
        double r89202 = sqrt(r89201);
        double r89203 = log(r89202);
        double r89204 = 0.0;
        double r89205 = r89203 * r89204;
        double r89206 = r89198 - r89205;
        double r89207 = r89197 * r89197;
        double r89208 = r89204 * r89204;
        double r89209 = r89207 + r89208;
        double r89210 = r89206 / r89209;
        return r89210;
}

double f(double re, double im, double base) {
        double r89211 = im;
        double r89212 = re;
        double r89213 = atan2(r89211, r89212);
        double r89214 = 1.0;
        double r89215 = base;
        double r89216 = log(r89215);
        double r89217 = r89214 / r89216;
        double r89218 = r89213 * r89217;
        return r89218;
}

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. Final simplification0.4

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

Reproduce

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