Average Error: 30.4 → 0.4
Time: 32.5s
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 r1486155 = re;
        double r1486156 = r1486155 * r1486155;
        double r1486157 = im;
        double r1486158 = r1486157 * r1486157;
        double r1486159 = r1486156 + r1486158;
        double r1486160 = sqrt(r1486159);
        double r1486161 = log(r1486160);
        double r1486162 = base;
        double r1486163 = log(r1486162);
        double r1486164 = r1486161 * r1486163;
        double r1486165 = atan2(r1486157, r1486155);
        double r1486166 = 0.0;
        double r1486167 = r1486165 * r1486166;
        double r1486168 = r1486164 + r1486167;
        double r1486169 = r1486163 * r1486163;
        double r1486170 = r1486166 * r1486166;
        double r1486171 = r1486169 + r1486170;
        double r1486172 = r1486168 / r1486171;
        return r1486172;
}

double f(double re, double im, double base) {
        double r1486173 = 1.0;
        double r1486174 = base;
        double r1486175 = log(r1486174);
        double r1486176 = r1486173 / r1486175;
        double r1486177 = re;
        double r1486178 = im;
        double r1486179 = hypot(r1486177, r1486178);
        double r1486180 = sqrt(r1486179);
        double r1486181 = sqrt(r1486180);
        double r1486182 = r1486181 * r1486181;
        double r1486183 = r1486182 * r1486182;
        double r1486184 = log(r1486183);
        double r1486185 = r1486176 * r1486184;
        return r1486185;
}

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