Average Error: 32.0 → 17.5
Time: 19.6s
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 -2.178124817795752902398331940971666652664 \cdot 10^{114}:\\ \;\;\;\;\frac{-\log \left(\frac{-1}{re}\right)}{\log base}\\ \mathbf{elif}\;re \le 9.38505452091062154296414227123138742096 \cdot 10^{137}:\\ \;\;\;\;\frac{\frac{\frac{1}{4} \cdot \left(\left(\log \left(re \cdot re + im \cdot im\right) \cdot \log \left(re \cdot re + im \cdot im\right)\right) \cdot {\left(\log base\right)}^{2}\right) - \left(\tan^{-1}_* \frac{im}{re} \cdot 0.0\right) \cdot \left(\tan^{-1}_* \frac{im}{re} \cdot 0.0\right)}{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}}{\frac{1}{2} \cdot \left(\log \left(re \cdot re + im \cdot im\right) \cdot \log base\right) - \tan^{-1}_* \frac{im}{re} \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 -2.178124817795752902398331940971666652664 \cdot 10^{114}:\\
\;\;\;\;\frac{-\log \left(\frac{-1}{re}\right)}{\log base}\\

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

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

\end{array}
double f(double re, double im, double base) {
        double r45479 = re;
        double r45480 = r45479 * r45479;
        double r45481 = im;
        double r45482 = r45481 * r45481;
        double r45483 = r45480 + r45482;
        double r45484 = sqrt(r45483);
        double r45485 = log(r45484);
        double r45486 = base;
        double r45487 = log(r45486);
        double r45488 = r45485 * r45487;
        double r45489 = atan2(r45481, r45479);
        double r45490 = 0.0;
        double r45491 = r45489 * r45490;
        double r45492 = r45488 + r45491;
        double r45493 = r45487 * r45487;
        double r45494 = r45490 * r45490;
        double r45495 = r45493 + r45494;
        double r45496 = r45492 / r45495;
        return r45496;
}

double f(double re, double im, double base) {
        double r45497 = re;
        double r45498 = -2.178124817795753e+114;
        bool r45499 = r45497 <= r45498;
        double r45500 = -1.0;
        double r45501 = r45500 / r45497;
        double r45502 = log(r45501);
        double r45503 = -r45502;
        double r45504 = base;
        double r45505 = log(r45504);
        double r45506 = r45503 / r45505;
        double r45507 = 9.385054520910622e+137;
        bool r45508 = r45497 <= r45507;
        double r45509 = 0.25;
        double r45510 = r45497 * r45497;
        double r45511 = im;
        double r45512 = r45511 * r45511;
        double r45513 = r45510 + r45512;
        double r45514 = log(r45513);
        double r45515 = r45514 * r45514;
        double r45516 = 2.0;
        double r45517 = pow(r45505, r45516);
        double r45518 = r45515 * r45517;
        double r45519 = r45509 * r45518;
        double r45520 = atan2(r45511, r45497);
        double r45521 = 0.0;
        double r45522 = r45520 * r45521;
        double r45523 = r45522 * r45522;
        double r45524 = r45519 - r45523;
        double r45525 = r45521 * r45521;
        double r45526 = r45525 + r45517;
        double r45527 = r45524 / r45526;
        double r45528 = 0.5;
        double r45529 = r45514 * r45505;
        double r45530 = r45528 * r45529;
        double r45531 = r45530 - r45522;
        double r45532 = r45527 / r45531;
        double r45533 = log(r45497);
        double r45534 = -r45533;
        double r45535 = -r45505;
        double r45536 = r45534 / r45535;
        double r45537 = r45508 ? r45532 : r45536;
        double r45538 = r45499 ? r45506 : r45537;
        return r45538;
}

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 3 regimes
  2. if re < -2.178124817795753e+114

    1. Initial program 54.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 pow1/254.8

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

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

      \[\leadsto \frac{\color{blue}{\frac{1}{2} \cdot \left(\log \left(re \cdot re + im \cdot im\right) \cdot \log base\right)} + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\log base \cdot \log base + 0.0 \cdot 0.0}\]
    6. 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)}}\]
    7. Simplified8.5

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

    if -2.178124817795753e+114 < re < 9.385054520910622e+137

    1. Initial program 21.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 pow1/221.5

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

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

      \[\leadsto \frac{\color{blue}{\frac{1}{2} \cdot \left(\log \left(re \cdot re + im \cdot im\right) \cdot \log base\right)} + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\log base \cdot \log base + 0.0 \cdot 0.0}\]
    6. Using strategy rm
    7. Applied div-inv21.5

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

      \[\leadsto \left(\frac{1}{2} \cdot \left(\log \left(re \cdot re + im \cdot im\right) \cdot \log base\right) + \tan^{-1}_* \frac{im}{re} \cdot 0.0\right) \cdot \color{blue}{\frac{1}{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}}\]
    9. Using strategy rm
    10. Applied flip-+21.5

      \[\leadsto \color{blue}{\frac{\left(\frac{1}{2} \cdot \left(\log \left(re \cdot re + im \cdot im\right) \cdot \log base\right)\right) \cdot \left(\frac{1}{2} \cdot \left(\log \left(re \cdot re + im \cdot im\right) \cdot \log base\right)\right) - \left(\tan^{-1}_* \frac{im}{re} \cdot 0.0\right) \cdot \left(\tan^{-1}_* \frac{im}{re} \cdot 0.0\right)}{\frac{1}{2} \cdot \left(\log \left(re \cdot re + im \cdot im\right) \cdot \log base\right) - \tan^{-1}_* \frac{im}{re} \cdot 0.0}} \cdot \frac{1}{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}\]
    11. Applied associate-*l/21.5

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

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

    if 9.385054520910622e+137 < re

    1. Initial program 60.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 inf 7.0

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;re \le -2.178124817795752902398331940971666652664 \cdot 10^{114}:\\ \;\;\;\;\frac{-\log \left(\frac{-1}{re}\right)}{\log base}\\ \mathbf{elif}\;re \le 9.38505452091062154296414227123138742096 \cdot 10^{137}:\\ \;\;\;\;\frac{\frac{\frac{1}{4} \cdot \left(\left(\log \left(re \cdot re + im \cdot im\right) \cdot \log \left(re \cdot re + im \cdot im\right)\right) \cdot {\left(\log base\right)}^{2}\right) - \left(\tan^{-1}_* \frac{im}{re} \cdot 0.0\right) \cdot \left(\tan^{-1}_* \frac{im}{re} \cdot 0.0\right)}{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}}{\frac{1}{2} \cdot \left(\log \left(re \cdot re + im \cdot im\right) \cdot \log base\right) - \tan^{-1}_* \frac{im}{re} \cdot 0.0}\\ \mathbf{else}:\\ \;\;\;\;\frac{-\log re}{-\log base}\\ \end{array}\]

Reproduce

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