Average Error: 30.8 → 0.4
Time: 2.5m
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 r1764308 = re;
        double r1764309 = r1764308 * r1764308;
        double r1764310 = im;
        double r1764311 = r1764310 * r1764310;
        double r1764312 = r1764309 + r1764311;
        double r1764313 = sqrt(r1764312);
        double r1764314 = log(r1764313);
        double r1764315 = base;
        double r1764316 = log(r1764315);
        double r1764317 = r1764314 * r1764316;
        double r1764318 = atan2(r1764310, r1764308);
        double r1764319 = 0.0;
        double r1764320 = r1764318 * r1764319;
        double r1764321 = r1764317 + r1764320;
        double r1764322 = r1764316 * r1764316;
        double r1764323 = r1764319 * r1764319;
        double r1764324 = r1764322 + r1764323;
        double r1764325 = r1764321 / r1764324;
        return r1764325;
}

double f(double re, double im, double base) {
        double r1764326 = 1.0;
        double r1764327 = base;
        double r1764328 = log(r1764327);
        double r1764329 = re;
        double r1764330 = im;
        double r1764331 = hypot(r1764329, r1764330);
        double r1764332 = log(r1764331);
        double r1764333 = r1764328 / r1764332;
        double r1764334 = r1764326 / r1764333;
        return r1764334;
}

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 30.8

    \[\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 *-un-lft-identity0.4

    \[\leadsto \frac{\color{blue}{1 \cdot \log \left(\mathsf{hypot}\left(re, im\right)\right)}}{\log base}\]
  5. Applied associate-/l*0.4

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

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

Reproduce

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