Average Error: 31.9 → 18.1
Time: 22.9s
Precision: 64
\[\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\log base \cdot \log base + 0.0 \cdot 0.0}\]
\[\begin{array}{l} \mathbf{if}\;re \le -4.716637846399996097489746475942839452177 \cdot 10^{89}:\\ \;\;\;\;\frac{-\log \left(\frac{-1}{re}\right)}{\log base}\\ \mathbf{elif}\;re \le -2.205324998556483236155843263778022896956 \cdot 10^{-213}:\\ \;\;\;\;\frac{\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\sqrt{{\left(\log base\right)}^{2} + 0.0 \cdot 0.0}}}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}\\ \mathbf{elif}\;re \le 1.954753201427298447121007035735344988274 \cdot 10^{-192}:\\ \;\;\;\;\frac{\log im}{\log base}\\ \mathbf{elif}\;re \le 1.668135135135140487797926891515850101405 \cdot 10^{72}:\\ \;\;\;\;\frac{\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\sqrt{{\left(\log base\right)}^{2} + 0.0 \cdot 0.0}}}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}\\ \mathbf{else}:\\ \;\;\;\;\frac{-\log re}{-\log base}\\ \end{array}\]
\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\log base \cdot \log base + 0.0 \cdot 0.0}
\begin{array}{l}
\mathbf{if}\;re \le -4.716637846399996097489746475942839452177 \cdot 10^{89}:\\
\;\;\;\;\frac{-\log \left(\frac{-1}{re}\right)}{\log base}\\

\mathbf{elif}\;re \le -2.205324998556483236155843263778022896956 \cdot 10^{-213}:\\
\;\;\;\;\frac{\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\sqrt{{\left(\log base\right)}^{2} + 0.0 \cdot 0.0}}}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}\\

\mathbf{elif}\;re \le 1.954753201427298447121007035735344988274 \cdot 10^{-192}:\\
\;\;\;\;\frac{\log im}{\log base}\\

\mathbf{elif}\;re \le 1.668135135135140487797926891515850101405 \cdot 10^{72}:\\
\;\;\;\;\frac{\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\sqrt{{\left(\log base\right)}^{2} + 0.0 \cdot 0.0}}}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}\\

\mathbf{else}:\\
\;\;\;\;\frac{-\log re}{-\log base}\\

\end{array}
double f(double re, double im, double base) {
        double r38227 = re;
        double r38228 = r38227 * r38227;
        double r38229 = im;
        double r38230 = r38229 * r38229;
        double r38231 = r38228 + r38230;
        double r38232 = sqrt(r38231);
        double r38233 = log(r38232);
        double r38234 = base;
        double r38235 = log(r38234);
        double r38236 = r38233 * r38235;
        double r38237 = atan2(r38229, r38227);
        double r38238 = 0.0;
        double r38239 = r38237 * r38238;
        double r38240 = r38236 + r38239;
        double r38241 = r38235 * r38235;
        double r38242 = r38238 * r38238;
        double r38243 = r38241 + r38242;
        double r38244 = r38240 / r38243;
        return r38244;
}

double f(double re, double im, double base) {
        double r38245 = re;
        double r38246 = -4.716637846399996e+89;
        bool r38247 = r38245 <= r38246;
        double r38248 = -1.0;
        double r38249 = r38248 / r38245;
        double r38250 = log(r38249);
        double r38251 = -r38250;
        double r38252 = base;
        double r38253 = log(r38252);
        double r38254 = r38251 / r38253;
        double r38255 = -2.2053249985564832e-213;
        bool r38256 = r38245 <= r38255;
        double r38257 = r38245 * r38245;
        double r38258 = im;
        double r38259 = r38258 * r38258;
        double r38260 = r38257 + r38259;
        double r38261 = sqrt(r38260);
        double r38262 = log(r38261);
        double r38263 = r38262 * r38253;
        double r38264 = atan2(r38258, r38245);
        double r38265 = 0.0;
        double r38266 = r38264 * r38265;
        double r38267 = r38263 + r38266;
        double r38268 = 2.0;
        double r38269 = pow(r38253, r38268);
        double r38270 = r38265 * r38265;
        double r38271 = r38269 + r38270;
        double r38272 = sqrt(r38271);
        double r38273 = r38267 / r38272;
        double r38274 = r38253 * r38253;
        double r38275 = r38274 + r38270;
        double r38276 = sqrt(r38275);
        double r38277 = r38273 / r38276;
        double r38278 = 1.9547532014272984e-192;
        bool r38279 = r38245 <= r38278;
        double r38280 = log(r38258);
        double r38281 = r38280 / r38253;
        double r38282 = 1.6681351351351405e+72;
        bool r38283 = r38245 <= r38282;
        double r38284 = log(r38245);
        double r38285 = -r38284;
        double r38286 = -r38253;
        double r38287 = r38285 / r38286;
        double r38288 = r38283 ? r38277 : r38287;
        double r38289 = r38279 ? r38281 : r38288;
        double r38290 = r38256 ? r38277 : r38289;
        double r38291 = r38247 ? r38254 : r38290;
        return r38291;
}

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. Split input into 4 regimes
  2. if re < -4.716637846399996e+89

    1. Initial program 50.5

      \[\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\log base \cdot \log base + 0.0 \cdot 0.0}\]
    2. Taylor expanded around -inf 64.0

      \[\leadsto \color{blue}{-1 \cdot \frac{\log \left(\frac{-1}{re}\right)}{\log -1 - \log \left(\frac{-1}{base}\right)}}\]
    3. Simplified10.1

      \[\leadsto \color{blue}{\frac{-\log \left(\frac{-1}{re}\right)}{\log base + 0}}\]

    if -4.716637846399996e+89 < re < -2.2053249985564832e-213 or 1.9547532014272984e-192 < re < 1.6681351351351405e+72

    1. Initial program 18.3

      \[\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\log base \cdot \log base + 0.0 \cdot 0.0}\]
    2. Using strategy rm
    3. Applied add-sqr-sqrt18.3

      \[\leadsto \frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\color{blue}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0} \cdot \sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}}\]
    4. Applied associate-/r*18.2

      \[\leadsto \color{blue}{\frac{\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}}\]
    5. Simplified18.2

      \[\leadsto \frac{\color{blue}{\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\sqrt{{\left(\log base\right)}^{2} + 0.0 \cdot 0.0}}}}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}\]

    if -2.2053249985564832e-213 < re < 1.9547532014272984e-192

    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.0}{\log base \cdot \log base + 0.0 \cdot 0.0}\]
    2. Taylor expanded around 0 34.4

      \[\leadsto \color{blue}{\frac{\log im}{\log base}}\]

    if 1.6681351351351405e+72 < re

    1. Initial program 47.4

      \[\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\log base \cdot \log base + 0.0 \cdot 0.0}\]
    2. Taylor expanded around inf 10.4

      \[\leadsto \color{blue}{\frac{\log \left(\frac{1}{re}\right)}{\log \left(\frac{1}{base}\right)}}\]
    3. Simplified10.4

      \[\leadsto \color{blue}{\frac{-\log re}{-\log base}}\]
  3. Recombined 4 regimes into one program.
  4. Final simplification18.1

    \[\leadsto \begin{array}{l} \mathbf{if}\;re \le -4.716637846399996097489746475942839452177 \cdot 10^{89}:\\ \;\;\;\;\frac{-\log \left(\frac{-1}{re}\right)}{\log base}\\ \mathbf{elif}\;re \le -2.205324998556483236155843263778022896956 \cdot 10^{-213}:\\ \;\;\;\;\frac{\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\sqrt{{\left(\log base\right)}^{2} + 0.0 \cdot 0.0}}}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}\\ \mathbf{elif}\;re \le 1.954753201427298447121007035735344988274 \cdot 10^{-192}:\\ \;\;\;\;\frac{\log im}{\log base}\\ \mathbf{elif}\;re \le 1.668135135135140487797926891515850101405 \cdot 10^{72}:\\ \;\;\;\;\frac{\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\sqrt{{\left(\log base\right)}^{2} + 0.0 \cdot 0.0}}}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}\\ \mathbf{else}:\\ \;\;\;\;\frac{-\log re}{-\log base}\\ \end{array}\]

Reproduce

herbie shell --seed 2019326 
(FPCore (re im base)
  :name "math.log/2 on complex, real part"
  :precision binary64
  (/ (+ (* (log (sqrt (+ (* re re) (* im im)))) (log base)) (* (atan2 im re) 0.0)) (+ (* (log base) (log base)) (* 0.0 0.0))))