Average Error: 31.4 → 0.4
Time: 5.0m
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 r1291439 = re;
        double r1291440 = r1291439 * r1291439;
        double r1291441 = im;
        double r1291442 = r1291441 * r1291441;
        double r1291443 = r1291440 + r1291442;
        double r1291444 = sqrt(r1291443);
        double r1291445 = log(r1291444);
        double r1291446 = base;
        double r1291447 = log(r1291446);
        double r1291448 = r1291445 * r1291447;
        double r1291449 = atan2(r1291441, r1291439);
        double r1291450 = 0.0;
        double r1291451 = r1291449 * r1291450;
        double r1291452 = r1291448 + r1291451;
        double r1291453 = r1291447 * r1291447;
        double r1291454 = r1291450 * r1291450;
        double r1291455 = r1291453 + r1291454;
        double r1291456 = r1291452 / r1291455;
        return r1291456;
}

double f(double re, double im, double base) {
        double r1291457 = re;
        double r1291458 = im;
        double r1291459 = hypot(r1291457, r1291458);
        double r1291460 = log(r1291459);
        double r1291461 = 1.0;
        double r1291462 = base;
        double r1291463 = log(r1291462);
        double r1291464 = r1291461 / r1291463;
        double r1291465 = r1291460 * r1291464;
        return r1291465;
}

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

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

    \[\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 2019129 +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))))