Average Error: 30.4 → 0.4
Time: 31.6s
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}{\log base} \cdot \log \left(\left(\sqrt{\sqrt{\mathsf{hypot}\left(re, im\right)}} \cdot \sqrt{\sqrt{\mathsf{hypot}\left(re, im\right)}}\right) \cdot \left(\sqrt{\sqrt{\mathsf{hypot}\left(re, im\right)}} \cdot \sqrt{\sqrt{\mathsf{hypot}\left(re, im\right)}}\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}{\log base} \cdot \log \left(\left(\sqrt{\sqrt{\mathsf{hypot}\left(re, im\right)}} \cdot \sqrt{\sqrt{\mathsf{hypot}\left(re, im\right)}}\right) \cdot \left(\sqrt{\sqrt{\mathsf{hypot}\left(re, im\right)}} \cdot \sqrt{\sqrt{\mathsf{hypot}\left(re, im\right)}}\right)\right)
double f(double re, double im, double base) {
        double r1293885 = re;
        double r1293886 = r1293885 * r1293885;
        double r1293887 = im;
        double r1293888 = r1293887 * r1293887;
        double r1293889 = r1293886 + r1293888;
        double r1293890 = sqrt(r1293889);
        double r1293891 = log(r1293890);
        double r1293892 = base;
        double r1293893 = log(r1293892);
        double r1293894 = r1293891 * r1293893;
        double r1293895 = atan2(r1293887, r1293885);
        double r1293896 = 0.0;
        double r1293897 = r1293895 * r1293896;
        double r1293898 = r1293894 + r1293897;
        double r1293899 = r1293893 * r1293893;
        double r1293900 = r1293896 * r1293896;
        double r1293901 = r1293899 + r1293900;
        double r1293902 = r1293898 / r1293901;
        return r1293902;
}

double f(double re, double im, double base) {
        double r1293903 = 1.0;
        double r1293904 = base;
        double r1293905 = log(r1293904);
        double r1293906 = r1293903 / r1293905;
        double r1293907 = re;
        double r1293908 = im;
        double r1293909 = hypot(r1293907, r1293908);
        double r1293910 = sqrt(r1293909);
        double r1293911 = sqrt(r1293910);
        double r1293912 = r1293911 * r1293911;
        double r1293913 = r1293912 * r1293912;
        double r1293914 = log(r1293913);
        double r1293915 = r1293906 * r1293914;
        return r1293915;
}

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

    \[\leadsto \color{blue}{\frac{\log \left(\mathsf{hypot}\left(re, im\right)\right)}{\log base}}\]
  3. Using strategy rm
  4. Applied add-sqr-sqrt0.4

    \[\leadsto \frac{\log \color{blue}{\left(\sqrt{\mathsf{hypot}\left(re, im\right)} \cdot \sqrt{\mathsf{hypot}\left(re, im\right)}\right)}}{\log base}\]
  5. Using strategy rm
  6. Applied add-sqr-sqrt0.4

    \[\leadsto \frac{\log \left(\sqrt{\mathsf{hypot}\left(re, im\right)} \cdot \sqrt{\color{blue}{\sqrt{\mathsf{hypot}\left(re, im\right)} \cdot \sqrt{\mathsf{hypot}\left(re, im\right)}}}\right)}{\log base}\]
  7. Applied sqrt-prod0.4

    \[\leadsto \frac{\log \left(\sqrt{\mathsf{hypot}\left(re, im\right)} \cdot \color{blue}{\left(\sqrt{\sqrt{\mathsf{hypot}\left(re, im\right)}} \cdot \sqrt{\sqrt{\mathsf{hypot}\left(re, im\right)}}\right)}\right)}{\log base}\]
  8. Applied add-sqr-sqrt0.4

    \[\leadsto \frac{\log \left(\sqrt{\color{blue}{\sqrt{\mathsf{hypot}\left(re, im\right)} \cdot \sqrt{\mathsf{hypot}\left(re, im\right)}}} \cdot \left(\sqrt{\sqrt{\mathsf{hypot}\left(re, im\right)}} \cdot \sqrt{\sqrt{\mathsf{hypot}\left(re, im\right)}}\right)\right)}{\log base}\]
  9. Applied sqrt-prod0.4

    \[\leadsto \frac{\log \left(\color{blue}{\left(\sqrt{\sqrt{\mathsf{hypot}\left(re, im\right)}} \cdot \sqrt{\sqrt{\mathsf{hypot}\left(re, im\right)}}\right)} \cdot \left(\sqrt{\sqrt{\mathsf{hypot}\left(re, im\right)}} \cdot \sqrt{\sqrt{\mathsf{hypot}\left(re, im\right)}}\right)\right)}{\log base}\]
  10. Applied swap-sqr0.4

    \[\leadsto \frac{\log \color{blue}{\left(\left(\sqrt{\sqrt{\mathsf{hypot}\left(re, im\right)}} \cdot \sqrt{\sqrt{\mathsf{hypot}\left(re, im\right)}}\right) \cdot \left(\sqrt{\sqrt{\mathsf{hypot}\left(re, im\right)}} \cdot \sqrt{\sqrt{\mathsf{hypot}\left(re, im\right)}}\right)\right)}}{\log base}\]
  11. Using strategy rm
  12. Applied div-inv0.4

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

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

Reproduce

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