Average Error: 32.0 → 0.3
Time: 4.2s
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 \cdot \tan^{-1}_* \frac{im}{re}}{\log \left(\frac{1}{base}\right)}\]
\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 \cdot \tan^{-1}_* \frac{im}{re}}{\log \left(\frac{1}{base}\right)}
double f(double re, double im, double base) {
        double r27016 = im;
        double r27017 = re;
        double r27018 = atan2(r27016, r27017);
        double r27019 = base;
        double r27020 = log(r27019);
        double r27021 = r27018 * r27020;
        double r27022 = r27017 * r27017;
        double r27023 = r27016 * r27016;
        double r27024 = r27022 + r27023;
        double r27025 = sqrt(r27024);
        double r27026 = log(r27025);
        double r27027 = 0.0;
        double r27028 = r27026 * r27027;
        double r27029 = r27021 - r27028;
        double r27030 = r27020 * r27020;
        double r27031 = r27027 * r27027;
        double r27032 = r27030 + r27031;
        double r27033 = r27029 / r27032;
        return r27033;
}

double f(double re, double im, double base) {
        double r27034 = -1.0;
        double r27035 = im;
        double r27036 = re;
        double r27037 = atan2(r27035, r27036);
        double r27038 = r27034 * r27037;
        double r27039 = 1.0;
        double r27040 = base;
        double r27041 = r27039 / r27040;
        double r27042 = log(r27041);
        double r27043 = r27038 / r27042;
        return r27043;
}

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

    \[\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 frac-2neg0.3

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

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

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

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

Reproduce

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