Average Error: 31.6 → 18.4
Time: 1.1m
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}\]
\[\begin{array}{l} \mathbf{if}\;im \le -1.1406590383503345 \cdot 10^{+137}:\\ \;\;\;\;\frac{\sqrt{\log \left(-re\right)}}{\frac{\log base}{\sqrt{\log \left(-re\right)}}}\\ \mathbf{elif}\;im \le -1.7993253634961135:\\ \;\;\;\;\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\log base}\\ \mathbf{elif}\;im \le 5.015026311023701 \cdot 10^{-89}:\\ \;\;\;\;\frac{\log \left(-re\right)}{\log base}\\ \mathbf{elif}\;im \le 1410980.4508963278:\\ \;\;\;\;\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\log base}\\ \mathbf{elif}\;im \le 208838648906585.78:\\ \;\;\;\;\frac{\sqrt{\log \left(-re\right)}}{\frac{\log base}{\sqrt{\log \left(-re\right)}}}\\ \mathbf{else}:\\ \;\;\;\;\frac{\log im}{\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}{\log base \cdot \log base + 0 \cdot 0}
\begin{array}{l}
\mathbf{if}\;im \le -1.1406590383503345 \cdot 10^{+137}:\\
\;\;\;\;\frac{\sqrt{\log \left(-re\right)}}{\frac{\log base}{\sqrt{\log \left(-re\right)}}}\\

\mathbf{elif}\;im \le -1.7993253634961135:\\
\;\;\;\;\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\log base}\\

\mathbf{elif}\;im \le 5.015026311023701 \cdot 10^{-89}:\\
\;\;\;\;\frac{\log \left(-re\right)}{\log base}\\

\mathbf{elif}\;im \le 1410980.4508963278:\\
\;\;\;\;\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\log base}\\

\mathbf{elif}\;im \le 208838648906585.78:\\
\;\;\;\;\frac{\sqrt{\log \left(-re\right)}}{\frac{\log base}{\sqrt{\log \left(-re\right)}}}\\

\mathbf{else}:\\
\;\;\;\;\frac{\log im}{\log base}\\

\end{array}
double f(double re, double im, double base) {
        double r1455475 = re;
        double r1455476 = r1455475 * r1455475;
        double r1455477 = im;
        double r1455478 = r1455477 * r1455477;
        double r1455479 = r1455476 + r1455478;
        double r1455480 = sqrt(r1455479);
        double r1455481 = log(r1455480);
        double r1455482 = base;
        double r1455483 = log(r1455482);
        double r1455484 = r1455481 * r1455483;
        double r1455485 = atan2(r1455477, r1455475);
        double r1455486 = 0.0;
        double r1455487 = r1455485 * r1455486;
        double r1455488 = r1455484 + r1455487;
        double r1455489 = r1455483 * r1455483;
        double r1455490 = r1455486 * r1455486;
        double r1455491 = r1455489 + r1455490;
        double r1455492 = r1455488 / r1455491;
        return r1455492;
}

double f(double re, double im, double base) {
        double r1455493 = im;
        double r1455494 = -1.1406590383503345e+137;
        bool r1455495 = r1455493 <= r1455494;
        double r1455496 = re;
        double r1455497 = -r1455496;
        double r1455498 = log(r1455497);
        double r1455499 = sqrt(r1455498);
        double r1455500 = base;
        double r1455501 = log(r1455500);
        double r1455502 = r1455501 / r1455499;
        double r1455503 = r1455499 / r1455502;
        double r1455504 = -1.7993253634961135;
        bool r1455505 = r1455493 <= r1455504;
        double r1455506 = r1455496 * r1455496;
        double r1455507 = r1455493 * r1455493;
        double r1455508 = r1455506 + r1455507;
        double r1455509 = sqrt(r1455508);
        double r1455510 = log(r1455509);
        double r1455511 = r1455510 / r1455501;
        double r1455512 = 5.015026311023701e-89;
        bool r1455513 = r1455493 <= r1455512;
        double r1455514 = r1455498 / r1455501;
        double r1455515 = 1410980.4508963278;
        bool r1455516 = r1455493 <= r1455515;
        double r1455517 = 208838648906585.78;
        bool r1455518 = r1455493 <= r1455517;
        double r1455519 = log(r1455493);
        double r1455520 = r1455519 / r1455501;
        double r1455521 = r1455518 ? r1455503 : r1455520;
        double r1455522 = r1455516 ? r1455511 : r1455521;
        double r1455523 = r1455513 ? r1455514 : r1455522;
        double r1455524 = r1455505 ? r1455511 : r1455523;
        double r1455525 = r1455495 ? r1455503 : r1455524;
        return r1455525;
}

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 im < -1.1406590383503345e+137 or 1410980.4508963278 < im < 208838648906585.78

    1. Initial program 55.5

      \[\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. Simplified55.5

      \[\leadsto \color{blue}{\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base}{\log base \cdot \log base}}\]
    3. Taylor expanded around -inf 49.2

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

      \[\leadsto \frac{\log \color{blue}{\left(-re\right)} \cdot \log base}{\log base \cdot \log base}\]
    5. Using strategy rm
    6. Applied associate-/r*49.2

      \[\leadsto \color{blue}{\frac{\frac{\log \left(-re\right) \cdot \log base}{\log base}}{\log base}}\]
    7. Simplified49.2

      \[\leadsto \frac{\color{blue}{\log \left(-re\right)}}{\log base}\]
    8. Using strategy rm
    9. Applied add-sqr-sqrt49.1

      \[\leadsto \frac{\color{blue}{\sqrt{\log \left(-re\right)} \cdot \sqrt{\log \left(-re\right)}}}{\log base}\]
    10. Applied associate-/l*49.1

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

    if -1.1406590383503345e+137 < im < -1.7993253634961135 or 5.015026311023701e-89 < im < 1410980.4508963278

    1. Initial program 15.9

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

      \[\leadsto \color{blue}{\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base}{\log base \cdot \log base}}\]
    3. Using strategy rm
    4. Applied associate-/r*15.8

      \[\leadsto \color{blue}{\frac{\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base}{\log base}}{\log base}}\]
    5. Simplified15.8

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

    if -1.7993253634961135 < im < 5.015026311023701e-89

    1. Initial program 25.0

      \[\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. Simplified25.0

      \[\leadsto \color{blue}{\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base}{\log base \cdot \log base}}\]
    3. Taylor expanded around -inf 12.0

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

      \[\leadsto \frac{\log \color{blue}{\left(-re\right)} \cdot \log base}{\log base \cdot \log base}\]
    5. Using strategy rm
    6. Applied associate-/r*12.0

      \[\leadsto \color{blue}{\frac{\frac{\log \left(-re\right) \cdot \log base}{\log base}}{\log base}}\]
    7. Simplified11.9

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

    if 208838648906585.78 < im

    1. Initial program 40.3

      \[\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. Simplified40.3

      \[\leadsto \color{blue}{\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base}{\log base \cdot \log base}}\]
    3. Taylor expanded around 0 13.0

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;im \le -1.1406590383503345 \cdot 10^{+137}:\\ \;\;\;\;\frac{\sqrt{\log \left(-re\right)}}{\frac{\log base}{\sqrt{\log \left(-re\right)}}}\\ \mathbf{elif}\;im \le -1.7993253634961135:\\ \;\;\;\;\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\log base}\\ \mathbf{elif}\;im \le 5.015026311023701 \cdot 10^{-89}:\\ \;\;\;\;\frac{\log \left(-re\right)}{\log base}\\ \mathbf{elif}\;im \le 1410980.4508963278:\\ \;\;\;\;\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\log base}\\ \mathbf{elif}\;im \le 208838648906585.78:\\ \;\;\;\;\frac{\sqrt{\log \left(-re\right)}}{\frac{\log base}{\sqrt{\log \left(-re\right)}}}\\ \mathbf{else}:\\ \;\;\;\;\frac{\log im}{\log base}\\ \end{array}\]

Reproduce

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