Average Error: 31.1 → 0.4
Time: 25.1s
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(\sqrt[3]{\mathsf{hypot}\left(re, im\right)} \cdot \left(\sqrt[3]{\mathsf{hypot}\left(re, im\right)} \cdot \sqrt[3]{\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(\sqrt[3]{\mathsf{hypot}\left(re, im\right)} \cdot \left(\sqrt[3]{\mathsf{hypot}\left(re, im\right)} \cdot \sqrt[3]{\mathsf{hypot}\left(re, im\right)}\right)\right)}{\log base}
double f(double re, double im, double base) {
        double r1462127 = re;
        double r1462128 = r1462127 * r1462127;
        double r1462129 = im;
        double r1462130 = r1462129 * r1462129;
        double r1462131 = r1462128 + r1462130;
        double r1462132 = sqrt(r1462131);
        double r1462133 = log(r1462132);
        double r1462134 = base;
        double r1462135 = log(r1462134);
        double r1462136 = r1462133 * r1462135;
        double r1462137 = atan2(r1462129, r1462127);
        double r1462138 = 0.0;
        double r1462139 = r1462137 * r1462138;
        double r1462140 = r1462136 + r1462139;
        double r1462141 = r1462135 * r1462135;
        double r1462142 = r1462138 * r1462138;
        double r1462143 = r1462141 + r1462142;
        double r1462144 = r1462140 / r1462143;
        return r1462144;
}

double f(double re, double im, double base) {
        double r1462145 = re;
        double r1462146 = im;
        double r1462147 = hypot(r1462145, r1462146);
        double r1462148 = cbrt(r1462147);
        double r1462149 = r1462148 * r1462148;
        double r1462150 = r1462148 * r1462149;
        double r1462151 = log(r1462150);
        double r1462152 = base;
        double r1462153 = log(r1462152);
        double r1462154 = r1462151 / r1462153;
        return r1462154;
}

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

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

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

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

Reproduce

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