Average Error: 30.9 → 0.4
Time: 1.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}\]
\[\log \left(\mathsf{hypot}\left(re, im\right)\right) \cdot \frac{1}{\log base}\]
\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}
\log \left(\mathsf{hypot}\left(re, im\right)\right) \cdot \frac{1}{\log base}
double f(double re, double im, double base) {
        double r1256519 = re;
        double r1256520 = r1256519 * r1256519;
        double r1256521 = im;
        double r1256522 = r1256521 * r1256521;
        double r1256523 = r1256520 + r1256522;
        double r1256524 = sqrt(r1256523);
        double r1256525 = log(r1256524);
        double r1256526 = base;
        double r1256527 = log(r1256526);
        double r1256528 = r1256525 * r1256527;
        double r1256529 = atan2(r1256521, r1256519);
        double r1256530 = 0.0;
        double r1256531 = r1256529 * r1256530;
        double r1256532 = r1256528 + r1256531;
        double r1256533 = r1256527 * r1256527;
        double r1256534 = r1256530 * r1256530;
        double r1256535 = r1256533 + r1256534;
        double r1256536 = r1256532 / r1256535;
        return r1256536;
}

double f(double re, double im, double base) {
        double r1256537 = re;
        double r1256538 = im;
        double r1256539 = hypot(r1256537, r1256538);
        double r1256540 = log(r1256539);
        double r1256541 = 1.0;
        double r1256542 = base;
        double r1256543 = log(r1256542);
        double r1256544 = r1256541 / r1256543;
        double r1256545 = r1256540 * r1256544;
        return r1256545;
}

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

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

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

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

Reproduce

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