Average Error: 32.1 → 0.4
Time: 42.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{1}{\log base} \cdot \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}{\log base} \cdot \tan^{-1}_* \frac{im}{re}
double f(double re, double im, double base) {
        double r1398142 = im;
        double r1398143 = re;
        double r1398144 = atan2(r1398142, r1398143);
        double r1398145 = base;
        double r1398146 = log(r1398145);
        double r1398147 = r1398144 * r1398146;
        double r1398148 = r1398143 * r1398143;
        double r1398149 = r1398142 * r1398142;
        double r1398150 = r1398148 + r1398149;
        double r1398151 = sqrt(r1398150);
        double r1398152 = log(r1398151);
        double r1398153 = 0.0;
        double r1398154 = r1398152 * r1398153;
        double r1398155 = r1398147 - r1398154;
        double r1398156 = r1398146 * r1398146;
        double r1398157 = r1398153 * r1398153;
        double r1398158 = r1398156 + r1398157;
        double r1398159 = r1398155 / r1398158;
        return r1398159;
}

double f(double re, double im, double base) {
        double r1398160 = 1.0;
        double r1398161 = base;
        double r1398162 = log(r1398161);
        double r1398163 = r1398160 / r1398162;
        double r1398164 = im;
        double r1398165 = re;
        double r1398166 = atan2(r1398164, r1398165);
        double r1398167 = r1398163 * r1398166;
        return r1398167;
}

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

    \[\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. Simplified0.4

    \[\leadsto \color{blue}{\frac{\log base \cdot \tan^{-1}_* \frac{im}{re} - \log \left(\mathsf{hypot}\left(re, im\right)\right) \cdot 0.0}{\mathsf{fma}\left(\log base, \log base, 0.0 \cdot 0.0\right)}}\]
  3. Taylor expanded around 0 0.3

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

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

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

Reproduce

herbie shell --seed 2019165 +o rules:numerics
(FPCore (re im base)
  :name "math.log/2 on complex, imaginary part"
  (/ (- (* (atan2 im re) (log base)) (* (log (sqrt (+ (* re re) (* im im)))) 0.0)) (+ (* (log base) (log base)) (* 0.0 0.0))))