Average Error: 31.3 → 0.4
Time: 20.9s
Precision: 64
\[\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0}{\log base \cdot \log base + 0 \cdot 0}\]
\[\frac{1}{\frac{\log base}{\log \left(\mathsf{hypot}\left(re, im\right)\right)}}\]
\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0}{\log base \cdot \log base + 0 \cdot 0}
\frac{1}{\frac{\log base}{\log \left(\mathsf{hypot}\left(re, im\right)\right)}}
double f(double re, double im, double base) {
        double r1579286 = re;
        double r1579287 = r1579286 * r1579286;
        double r1579288 = im;
        double r1579289 = r1579288 * r1579288;
        double r1579290 = r1579287 + r1579289;
        double r1579291 = sqrt(r1579290);
        double r1579292 = log(r1579291);
        double r1579293 = base;
        double r1579294 = log(r1579293);
        double r1579295 = r1579292 * r1579294;
        double r1579296 = atan2(r1579288, r1579286);
        double r1579297 = 0.0;
        double r1579298 = r1579296 * r1579297;
        double r1579299 = r1579295 + r1579298;
        double r1579300 = r1579294 * r1579294;
        double r1579301 = r1579297 * r1579297;
        double r1579302 = r1579300 + r1579301;
        double r1579303 = r1579299 / r1579302;
        return r1579303;
}

double f(double re, double im, double base) {
        double r1579304 = 1.0;
        double r1579305 = base;
        double r1579306 = log(r1579305);
        double r1579307 = re;
        double r1579308 = im;
        double r1579309 = hypot(r1579307, r1579308);
        double r1579310 = log(r1579309);
        double r1579311 = r1579306 / r1579310;
        double r1579312 = r1579304 / r1579311;
        return r1579312;
}

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

    \[\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0}{\log base \cdot \log base + 0 \cdot 0}\]
  2. Simplified0.4

    \[\leadsto \color{blue}{\frac{\log \left(\mathsf{hypot}\left(re, im\right)\right)}{\log base}}\]
  3. Using strategy rm
  4. Applied clear-num0.4

    \[\leadsto \color{blue}{\frac{1}{\frac{\log base}{\log \left(\mathsf{hypot}\left(re, im\right)\right)}}}\]
  5. Final simplification0.4

    \[\leadsto \frac{1}{\frac{\log base}{\log \left(\mathsf{hypot}\left(re, im\right)\right)}}\]

Reproduce

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