Average Error: 30.5 → 0.4
Time: 2.4m
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(\left(\sqrt[3]{\sqrt{\mathsf{hypot}\left(re, im\right)}} \cdot \sqrt[3]{\sqrt{\mathsf{hypot}\left(re, im\right)}}\right) \cdot \left(\sqrt{\mathsf{hypot}\left(re, im\right)} \cdot \sqrt[3]{\sqrt{\mathsf{hypot}\left(re, im\right)}}\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(\left(\sqrt[3]{\sqrt{\mathsf{hypot}\left(re, im\right)}} \cdot \sqrt[3]{\sqrt{\mathsf{hypot}\left(re, im\right)}}\right) \cdot \left(\sqrt{\mathsf{hypot}\left(re, im\right)} \cdot \sqrt[3]{\sqrt{\mathsf{hypot}\left(re, im\right)}}\right)\right)}{\log base}
double f(double re, double im, double base) {
        double r1291969 = re;
        double r1291970 = r1291969 * r1291969;
        double r1291971 = im;
        double r1291972 = r1291971 * r1291971;
        double r1291973 = r1291970 + r1291972;
        double r1291974 = sqrt(r1291973);
        double r1291975 = log(r1291974);
        double r1291976 = base;
        double r1291977 = log(r1291976);
        double r1291978 = r1291975 * r1291977;
        double r1291979 = atan2(r1291971, r1291969);
        double r1291980 = 0.0;
        double r1291981 = r1291979 * r1291980;
        double r1291982 = r1291978 + r1291981;
        double r1291983 = r1291977 * r1291977;
        double r1291984 = r1291980 * r1291980;
        double r1291985 = r1291983 + r1291984;
        double r1291986 = r1291982 / r1291985;
        return r1291986;
}

double f(double re, double im, double base) {
        double r1291987 = re;
        double r1291988 = im;
        double r1291989 = hypot(r1291987, r1291988);
        double r1291990 = sqrt(r1291989);
        double r1291991 = cbrt(r1291990);
        double r1291992 = r1291991 * r1291991;
        double r1291993 = r1291990 * r1291991;
        double r1291994 = r1291992 * r1291993;
        double r1291995 = log(r1291994);
        double r1291996 = base;
        double r1291997 = log(r1291996);
        double r1291998 = r1291995 / r1291997;
        return r1291998;
}

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

    \[\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-cube-cbrt0.4

    \[\leadsto \frac{\log \left(\color{blue}{\left(\left(\sqrt[3]{\sqrt{\mathsf{hypot}\left(re, im\right)}} \cdot \sqrt[3]{\sqrt{\mathsf{hypot}\left(re, im\right)}}\right) \cdot \sqrt[3]{\sqrt{\mathsf{hypot}\left(re, im\right)}}\right)} \cdot \sqrt{\mathsf{hypot}\left(re, im\right)}\right)}{\log base}\]
  7. Applied associate-*l*0.4

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

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

Reproduce

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