Average Error: 30.9 → 0.4
Time: 1.7m
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 r1645671 = re;
        double r1645672 = r1645671 * r1645671;
        double r1645673 = im;
        double r1645674 = r1645673 * r1645673;
        double r1645675 = r1645672 + r1645674;
        double r1645676 = sqrt(r1645675);
        double r1645677 = log(r1645676);
        double r1645678 = base;
        double r1645679 = log(r1645678);
        double r1645680 = r1645677 * r1645679;
        double r1645681 = atan2(r1645673, r1645671);
        double r1645682 = 0.0;
        double r1645683 = r1645681 * r1645682;
        double r1645684 = r1645680 + r1645683;
        double r1645685 = r1645679 * r1645679;
        double r1645686 = r1645682 * r1645682;
        double r1645687 = r1645685 + r1645686;
        double r1645688 = r1645684 / r1645687;
        return r1645688;
}

double f(double re, double im, double base) {
        double r1645689 = 1.0;
        double r1645690 = base;
        double r1645691 = log(r1645690);
        double r1645692 = re;
        double r1645693 = im;
        double r1645694 = hypot(r1645692, r1645693);
        double r1645695 = log(r1645694);
        double r1645696 = r1645691 / r1645695;
        double r1645697 = r1645689 / r1645696;
        return r1645697;
}

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 *-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 2019138 +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))))