Average Error: 31.7 → 18.0
Time: 20.8s
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 -1.737740429468826036821242422394075266484 \cdot 10^{80}:\\ \;\;\;\;\frac{\frac{\tan^{-1}_* \frac{im}{re} \cdot 0.0 + \log base \cdot \log \left(-re\right)}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}\\ \mathbf{elif}\;re \le -3.566193270276073522987212393629657483145 \cdot 10^{-214}:\\ \;\;\;\;\frac{\log base \cdot \log \left(\sqrt{im \cdot im + re \cdot re}\right) + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\left(\log base \cdot \log \left(\sqrt[3]{base}\right) + \left(\log base \cdot \log \left(\sqrt[3]{base}\right) + \log base \cdot \log \left(\sqrt[3]{base}\right)\right)\right) + 0.0 \cdot 0.0}\\ \mathbf{elif}\;re \le 7.657991494094246390438350357954836531877 \cdot 10^{-187}:\\ \;\;\;\;\frac{\tan^{-1}_* \frac{im}{re} \cdot 0.0 + \log base \cdot \log im}{\log base \cdot \log base + 0.0 \cdot 0.0}\\ \mathbf{elif}\;re \le 2.131041742296170553673284524057781052093 \cdot 10^{110}:\\ \;\;\;\;\frac{\log base \cdot \log \left(\sqrt{im \cdot im + re \cdot re}\right) + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\left(\log base \cdot \log base - 0.0 \cdot 0.0\right) \cdot \left(\log base \cdot \log base + 0.0 \cdot 0.0\right)} \cdot \left(\log base \cdot \log base - 0.0 \cdot 0.0\right)\\ \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 -1.737740429468826036821242422394075266484 \cdot 10^{80}:\\
\;\;\;\;\frac{\frac{\tan^{-1}_* \frac{im}{re} \cdot 0.0 + \log base \cdot \log \left(-re\right)}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}\\

\mathbf{elif}\;re \le -3.566193270276073522987212393629657483145 \cdot 10^{-214}:\\
\;\;\;\;\frac{\log base \cdot \log \left(\sqrt{im \cdot im + re \cdot re}\right) + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\left(\log base \cdot \log \left(\sqrt[3]{base}\right) + \left(\log base \cdot \log \left(\sqrt[3]{base}\right) + \log base \cdot \log \left(\sqrt[3]{base}\right)\right)\right) + 0.0 \cdot 0.0}\\

\mathbf{elif}\;re \le 7.657991494094246390438350357954836531877 \cdot 10^{-187}:\\
\;\;\;\;\frac{\tan^{-1}_* \frac{im}{re} \cdot 0.0 + \log base \cdot \log im}{\log base \cdot \log base + 0.0 \cdot 0.0}\\

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

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

\end{array}
double f(double re, double im, double base) {
        double r1526261 = re;
        double r1526262 = r1526261 * r1526261;
        double r1526263 = im;
        double r1526264 = r1526263 * r1526263;
        double r1526265 = r1526262 + r1526264;
        double r1526266 = sqrt(r1526265);
        double r1526267 = log(r1526266);
        double r1526268 = base;
        double r1526269 = log(r1526268);
        double r1526270 = r1526267 * r1526269;
        double r1526271 = atan2(r1526263, r1526261);
        double r1526272 = 0.0;
        double r1526273 = r1526271 * r1526272;
        double r1526274 = r1526270 + r1526273;
        double r1526275 = r1526269 * r1526269;
        double r1526276 = r1526272 * r1526272;
        double r1526277 = r1526275 + r1526276;
        double r1526278 = r1526274 / r1526277;
        return r1526278;
}

double f(double re, double im, double base) {
        double r1526279 = re;
        double r1526280 = -1.737740429468826e+80;
        bool r1526281 = r1526279 <= r1526280;
        double r1526282 = im;
        double r1526283 = atan2(r1526282, r1526279);
        double r1526284 = 0.0;
        double r1526285 = r1526283 * r1526284;
        double r1526286 = base;
        double r1526287 = log(r1526286);
        double r1526288 = -r1526279;
        double r1526289 = log(r1526288);
        double r1526290 = r1526287 * r1526289;
        double r1526291 = r1526285 + r1526290;
        double r1526292 = r1526287 * r1526287;
        double r1526293 = r1526284 * r1526284;
        double r1526294 = r1526292 + r1526293;
        double r1526295 = sqrt(r1526294);
        double r1526296 = r1526291 / r1526295;
        double r1526297 = r1526296 / r1526295;
        double r1526298 = -3.5661932702760735e-214;
        bool r1526299 = r1526279 <= r1526298;
        double r1526300 = r1526282 * r1526282;
        double r1526301 = r1526279 * r1526279;
        double r1526302 = r1526300 + r1526301;
        double r1526303 = sqrt(r1526302);
        double r1526304 = log(r1526303);
        double r1526305 = r1526287 * r1526304;
        double r1526306 = r1526305 + r1526285;
        double r1526307 = cbrt(r1526286);
        double r1526308 = log(r1526307);
        double r1526309 = r1526287 * r1526308;
        double r1526310 = r1526309 + r1526309;
        double r1526311 = r1526309 + r1526310;
        double r1526312 = r1526311 + r1526293;
        double r1526313 = r1526306 / r1526312;
        double r1526314 = 7.657991494094246e-187;
        bool r1526315 = r1526279 <= r1526314;
        double r1526316 = log(r1526282);
        double r1526317 = r1526287 * r1526316;
        double r1526318 = r1526285 + r1526317;
        double r1526319 = r1526318 / r1526294;
        double r1526320 = 2.1310417422961706e+110;
        bool r1526321 = r1526279 <= r1526320;
        double r1526322 = r1526292 - r1526293;
        double r1526323 = r1526322 * r1526294;
        double r1526324 = r1526306 / r1526323;
        double r1526325 = r1526324 * r1526322;
        double r1526326 = log(r1526279);
        double r1526327 = -r1526326;
        double r1526328 = -r1526287;
        double r1526329 = r1526327 / r1526328;
        double r1526330 = r1526321 ? r1526325 : r1526329;
        double r1526331 = r1526315 ? r1526319 : r1526330;
        double r1526332 = r1526299 ? r1526313 : r1526331;
        double r1526333 = r1526281 ? r1526297 : r1526332;
        return r1526333;
}

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 5 regimes
  2. if re < -1.737740429468826e+80

    1. Initial program 47.8

      \[\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-sqrt47.8

      \[\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*47.8

      \[\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. Taylor expanded around -inf 10.2

      \[\leadsto \frac{\frac{\log \color{blue}{\left(-1 \cdot re\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}}\]
    6. Simplified10.2

      \[\leadsto \frac{\frac{\log \color{blue}{\left(-re\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}}\]

    if -1.737740429468826e+80 < re < -3.5661932702760735e-214

    1. Initial program 19.2

      \[\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-cube-cbrt19.2

      \[\leadsto \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 \color{blue}{\left(\left(\sqrt[3]{base} \cdot \sqrt[3]{base}\right) \cdot \sqrt[3]{base}\right)} + 0.0 \cdot 0.0}\]
    4. Applied log-prod19.2

      \[\leadsto \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 \color{blue}{\left(\log \left(\sqrt[3]{base} \cdot \sqrt[3]{base}\right) + \log \left(\sqrt[3]{base}\right)\right)} + 0.0 \cdot 0.0}\]
    5. Applied distribute-rgt-in19.2

      \[\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}{\left(\log \left(\sqrt[3]{base} \cdot \sqrt[3]{base}\right) \cdot \log base + \log \left(\sqrt[3]{base}\right) \cdot \log base\right)} + 0.0 \cdot 0.0}\]
    6. Simplified19.2

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

    if -3.5661932702760735e-214 < re < 7.657991494094246e-187

    1. Initial program 31.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 0 33.8

      \[\leadsto \frac{\color{blue}{\log base \cdot \log im} + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\log base \cdot \log base + 0.0 \cdot 0.0}\]

    if 7.657991494094246e-187 < re < 2.1310417422961706e+110

    1. Initial program 18.0

      \[\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 flip-+18.0

      \[\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}{\frac{\left(\log base \cdot \log base\right) \cdot \left(\log base \cdot \log base\right) - \left(0.0 \cdot 0.0\right) \cdot \left(0.0 \cdot 0.0\right)}{\log base \cdot \log base - 0.0 \cdot 0.0}}}\]
    4. Applied associate-/r/18.1

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

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

    if 2.1310417422961706e+110 < re

    1. Initial program 52.8

      \[\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 8.1

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;re \le -1.737740429468826036821242422394075266484 \cdot 10^{80}:\\ \;\;\;\;\frac{\frac{\tan^{-1}_* \frac{im}{re} \cdot 0.0 + \log base \cdot \log \left(-re\right)}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}\\ \mathbf{elif}\;re \le -3.566193270276073522987212393629657483145 \cdot 10^{-214}:\\ \;\;\;\;\frac{\log base \cdot \log \left(\sqrt{im \cdot im + re \cdot re}\right) + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\left(\log base \cdot \log \left(\sqrt[3]{base}\right) + \left(\log base \cdot \log \left(\sqrt[3]{base}\right) + \log base \cdot \log \left(\sqrt[3]{base}\right)\right)\right) + 0.0 \cdot 0.0}\\ \mathbf{elif}\;re \le 7.657991494094246390438350357954836531877 \cdot 10^{-187}:\\ \;\;\;\;\frac{\tan^{-1}_* \frac{im}{re} \cdot 0.0 + \log base \cdot \log im}{\log base \cdot \log base + 0.0 \cdot 0.0}\\ \mathbf{elif}\;re \le 2.131041742296170553673284524057781052093 \cdot 10^{110}:\\ \;\;\;\;\frac{\log base \cdot \log \left(\sqrt{im \cdot im + re \cdot re}\right) + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\left(\log base \cdot \log base - 0.0 \cdot 0.0\right) \cdot \left(\log base \cdot \log base + 0.0 \cdot 0.0\right)} \cdot \left(\log base \cdot \log base - 0.0 \cdot 0.0\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{-\log re}{-\log base}\\ \end{array}\]

Reproduce

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