Average Error: 31.5 → 0.3
Time: 18.7s
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 r78076 = im;
        double r78077 = re;
        double r78078 = atan2(r78076, r78077);
        double r78079 = base;
        double r78080 = log(r78079);
        double r78081 = r78078 * r78080;
        double r78082 = r78077 * r78077;
        double r78083 = r78076 * r78076;
        double r78084 = r78082 + r78083;
        double r78085 = sqrt(r78084);
        double r78086 = log(r78085);
        double r78087 = 0.0;
        double r78088 = r78086 * r78087;
        double r78089 = r78081 - r78088;
        double r78090 = r78080 * r78080;
        double r78091 = r78087 * r78087;
        double r78092 = r78090 + r78091;
        double r78093 = r78089 / r78092;
        return r78093;
}

double f(double re, double im, double base) {
        double r78094 = im;
        double r78095 = re;
        double r78096 = atan2(r78094, r78095);
        double r78097 = base;
        double r78098 = log(r78097);
        double r78099 = r78096 / r78098;
        return r78099;
}

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

    \[\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{\tan^{-1}_* \frac{im}{re} \cdot \log base - 0.0 \cdot \log \left(\mathsf{hypot}\left(re, im\right)\right)}{\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. Using strategy rm
  7. Applied un-div-inv0.3

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

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

Reproduce

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