Average Error: 31.2 → 0.3
Time: 3.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{\log \left(\mathsf{hypot}\left(re, im\right)\right)}{\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}
\frac{\log \left(\mathsf{hypot}\left(re, im\right)\right)}{\log base}
double f(double re, double im, double base) {
        double r1151844 = re;
        double r1151845 = r1151844 * r1151844;
        double r1151846 = im;
        double r1151847 = r1151846 * r1151846;
        double r1151848 = r1151845 + r1151847;
        double r1151849 = sqrt(r1151848);
        double r1151850 = log(r1151849);
        double r1151851 = base;
        double r1151852 = log(r1151851);
        double r1151853 = r1151850 * r1151852;
        double r1151854 = atan2(r1151846, r1151844);
        double r1151855 = 0.0;
        double r1151856 = r1151854 * r1151855;
        double r1151857 = r1151853 + r1151856;
        double r1151858 = r1151852 * r1151852;
        double r1151859 = r1151855 * r1151855;
        double r1151860 = r1151858 + r1151859;
        double r1151861 = r1151857 / r1151860;
        return r1151861;
}

double f(double re, double im, double base) {
        double r1151862 = re;
        double r1151863 = im;
        double r1151864 = hypot(r1151862, r1151863);
        double r1151865 = log(r1151864);
        double r1151866 = base;
        double r1151867 = log(r1151866);
        double r1151868 = r1151865 / r1151867;
        return r1151868;
}

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

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

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

Reproduce

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