Average Error: 30.7 → 0.5
Time: 2.6m
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{\frac{1}{\log base}}{\frac{1}{\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{\frac{1}{\log base}}{\frac{1}{\log \left(\mathsf{hypot}\left(re, im\right)\right)}}
double f(double re, double im, double base) {
        double r1098705 = re;
        double r1098706 = r1098705 * r1098705;
        double r1098707 = im;
        double r1098708 = r1098707 * r1098707;
        double r1098709 = r1098706 + r1098708;
        double r1098710 = sqrt(r1098709);
        double r1098711 = log(r1098710);
        double r1098712 = base;
        double r1098713 = log(r1098712);
        double r1098714 = r1098711 * r1098713;
        double r1098715 = atan2(r1098707, r1098705);
        double r1098716 = 0.0;
        double r1098717 = r1098715 * r1098716;
        double r1098718 = r1098714 + r1098717;
        double r1098719 = r1098713 * r1098713;
        double r1098720 = r1098716 * r1098716;
        double r1098721 = r1098719 + r1098720;
        double r1098722 = r1098718 / r1098721;
        return r1098722;
}

double f(double re, double im, double base) {
        double r1098723 = 1.0;
        double r1098724 = base;
        double r1098725 = log(r1098724);
        double r1098726 = r1098723 / r1098725;
        double r1098727 = re;
        double r1098728 = im;
        double r1098729 = hypot(r1098727, r1098728);
        double r1098730 = log(r1098729);
        double r1098731 = r1098723 / r1098730;
        double r1098732 = r1098726 / r1098731;
        return r1098732;
}

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

    \[\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. Using strategy rm
  6. Applied div-inv0.5

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

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

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

Reproduce

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