Average Error: 31.5 → 17.5
Time: 23.1s
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 -5.275254560101559411462175113471681690049 \cdot 10^{107}:\\ \;\;\;\;-\frac{\log \left(\frac{-1}{re}\right)}{\log base}\\ \mathbf{elif}\;re \le -5.075294385511086403393669137145321198483 \cdot 10^{-260}:\\ \;\;\;\;\frac{0.0 \cdot \tan^{-1}_* \frac{im}{re} + \log base \cdot \log \left(\left(\sqrt[3]{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right) \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right)}{\sqrt{0.0 \cdot 0.0 + \log base \cdot \log base}} \cdot \frac{1}{\sqrt{0.0 \cdot 0.0 + \log base \cdot \log base}}\\ \mathbf{elif}\;re \le 5.119261304077865872839096447879067070764 \cdot 10^{-247}:\\ \;\;\;\;\frac{\log im}{\log base}\\ \mathbf{elif}\;re \le 9.068500290519522939903073339631522775892 \cdot 10^{138}:\\ \;\;\;\;\frac{\log \left(\left(\sqrt[3]{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right) \cdot {\left(\sqrt{re \cdot re + im \cdot im}\right)}^{\frac{1}{3}}\right) \cdot \log base + 0.0 \cdot \tan^{-1}_* \frac{im}{re}}{\sqrt{0.0 \cdot 0.0 + \log base \cdot \log base}} \cdot \frac{1}{\sqrt{0.0 \cdot 0.0 + \log base \cdot \log base}}\\ \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 -5.275254560101559411462175113471681690049 \cdot 10^{107}:\\
\;\;\;\;-\frac{\log \left(\frac{-1}{re}\right)}{\log base}\\

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

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

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

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

\end{array}
double f(double re, double im, double base) {
        double r1915473 = re;
        double r1915474 = r1915473 * r1915473;
        double r1915475 = im;
        double r1915476 = r1915475 * r1915475;
        double r1915477 = r1915474 + r1915476;
        double r1915478 = sqrt(r1915477);
        double r1915479 = log(r1915478);
        double r1915480 = base;
        double r1915481 = log(r1915480);
        double r1915482 = r1915479 * r1915481;
        double r1915483 = atan2(r1915475, r1915473);
        double r1915484 = 0.0;
        double r1915485 = r1915483 * r1915484;
        double r1915486 = r1915482 + r1915485;
        double r1915487 = r1915481 * r1915481;
        double r1915488 = r1915484 * r1915484;
        double r1915489 = r1915487 + r1915488;
        double r1915490 = r1915486 / r1915489;
        return r1915490;
}

double f(double re, double im, double base) {
        double r1915491 = re;
        double r1915492 = -5.2752545601015594e+107;
        bool r1915493 = r1915491 <= r1915492;
        double r1915494 = -1.0;
        double r1915495 = r1915494 / r1915491;
        double r1915496 = log(r1915495);
        double r1915497 = base;
        double r1915498 = log(r1915497);
        double r1915499 = r1915496 / r1915498;
        double r1915500 = -r1915499;
        double r1915501 = -5.0752943855110864e-260;
        bool r1915502 = r1915491 <= r1915501;
        double r1915503 = 0.0;
        double r1915504 = im;
        double r1915505 = atan2(r1915504, r1915491);
        double r1915506 = r1915503 * r1915505;
        double r1915507 = r1915491 * r1915491;
        double r1915508 = r1915504 * r1915504;
        double r1915509 = r1915507 + r1915508;
        double r1915510 = sqrt(r1915509);
        double r1915511 = cbrt(r1915510);
        double r1915512 = r1915511 * r1915511;
        double r1915513 = r1915512 * r1915511;
        double r1915514 = log(r1915513);
        double r1915515 = r1915498 * r1915514;
        double r1915516 = r1915506 + r1915515;
        double r1915517 = r1915503 * r1915503;
        double r1915518 = r1915498 * r1915498;
        double r1915519 = r1915517 + r1915518;
        double r1915520 = sqrt(r1915519);
        double r1915521 = r1915516 / r1915520;
        double r1915522 = 1.0;
        double r1915523 = r1915522 / r1915520;
        double r1915524 = r1915521 * r1915523;
        double r1915525 = 5.119261304077866e-247;
        bool r1915526 = r1915491 <= r1915525;
        double r1915527 = log(r1915504);
        double r1915528 = r1915527 / r1915498;
        double r1915529 = 9.068500290519523e+138;
        bool r1915530 = r1915491 <= r1915529;
        double r1915531 = 0.3333333333333333;
        double r1915532 = pow(r1915510, r1915531);
        double r1915533 = r1915512 * r1915532;
        double r1915534 = log(r1915533);
        double r1915535 = r1915534 * r1915498;
        double r1915536 = r1915535 + r1915506;
        double r1915537 = r1915536 / r1915520;
        double r1915538 = r1915537 * r1915523;
        double r1915539 = log(r1915491);
        double r1915540 = -r1915498;
        double r1915541 = r1915539 / r1915540;
        double r1915542 = -r1915541;
        double r1915543 = r1915530 ? r1915538 : r1915542;
        double r1915544 = r1915526 ? r1915528 : r1915543;
        double r1915545 = r1915502 ? r1915524 : r1915544;
        double r1915546 = r1915493 ? r1915500 : r1915545;
        return r1915546;
}

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 < -5.2752545601015594e+107

    1. Initial program 52.9

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

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

    if -5.2752545601015594e+107 < re < -5.0752943855110864e-260

    1. Initial program 19.9

      \[\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-sqrt19.9

      \[\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 *-un-lft-identity19.9

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

      \[\leadsto \color{blue}{\frac{1}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}} \cdot \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}}}\]
    6. Using strategy rm
    7. Applied add-cube-cbrt19.9

      \[\leadsto \frac{1}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}} \cdot \frac{\log \color{blue}{\left(\left(\sqrt[3]{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right) \cdot \sqrt[3]{\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}}\]

    if -5.0752943855110864e-260 < re < 5.119261304077866e-247

    1. Initial program 32.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. Taylor expanded around 0 33.2

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

    if 5.119261304077866e-247 < re < 9.068500290519523e+138

    1. Initial program 19.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. Using strategy rm
    3. Applied add-sqr-sqrt19.5

      \[\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 *-un-lft-identity19.5

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

      \[\leadsto \color{blue}{\frac{1}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}} \cdot \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}}}\]
    6. Using strategy rm
    7. Applied add-cube-cbrt19.5

      \[\leadsto \frac{1}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}} \cdot \frac{\log \color{blue}{\left(\left(\sqrt[3]{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right) \cdot \sqrt[3]{\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}}\]
    8. Using strategy rm
    9. Applied pow1/319.5

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

    if 9.068500290519523e+138 < re

    1. Initial program 59.9

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;re \le -5.275254560101559411462175113471681690049 \cdot 10^{107}:\\ \;\;\;\;-\frac{\log \left(\frac{-1}{re}\right)}{\log base}\\ \mathbf{elif}\;re \le -5.075294385511086403393669137145321198483 \cdot 10^{-260}:\\ \;\;\;\;\frac{0.0 \cdot \tan^{-1}_* \frac{im}{re} + \log base \cdot \log \left(\left(\sqrt[3]{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right) \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right)}{\sqrt{0.0 \cdot 0.0 + \log base \cdot \log base}} \cdot \frac{1}{\sqrt{0.0 \cdot 0.0 + \log base \cdot \log base}}\\ \mathbf{elif}\;re \le 5.119261304077865872839096447879067070764 \cdot 10^{-247}:\\ \;\;\;\;\frac{\log im}{\log base}\\ \mathbf{elif}\;re \le 9.068500290519522939903073339631522775892 \cdot 10^{138}:\\ \;\;\;\;\frac{\log \left(\left(\sqrt[3]{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right) \cdot {\left(\sqrt{re \cdot re + im \cdot im}\right)}^{\frac{1}{3}}\right) \cdot \log base + 0.0 \cdot \tan^{-1}_* \frac{im}{re}}{\sqrt{0.0 \cdot 0.0 + \log base \cdot \log base}} \cdot \frac{1}{\sqrt{0.0 \cdot 0.0 + \log base \cdot \log base}}\\ \mathbf{else}:\\ \;\;\;\;-\frac{\log re}{-\log base}\\ \end{array}\]

Reproduce

herbie shell --seed 2019179 
(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))))