Average Error: 32.2 → 17.7
Time: 43.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 -5.096763843336727330743281026044494216767 \cdot 10^{82}:\\ \;\;\;\;-\frac{\log \left(\frac{-1}{re}\right)}{\log base}\\ \mathbf{elif}\;re \le 4.348498385315214745374667788374072106078 \cdot 10^{86}:\\ \;\;\;\;\frac{\tan^{-1}_* \frac{im}{re} \cdot 0.0 + \left(\log \left(\sqrt[3]{base}\right) \cdot \left(\log \left(\sqrt[3]{im \cdot im + re \cdot re}\right) + \log \left(\sqrt[3]{im \cdot im + re \cdot re} \cdot \sqrt[3]{im \cdot im + re \cdot re}\right)\right) + \log \left(\sqrt[3]{base}\right) \cdot \log \left(\sqrt{im \cdot im + re \cdot re}\right)\right)}{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.096763843336727330743281026044494216767 \cdot 10^{82}:\\
\;\;\;\;-\frac{\log \left(\frac{-1}{re}\right)}{\log base}\\

\mathbf{elif}\;re \le 4.348498385315214745374667788374072106078 \cdot 10^{86}:\\
\;\;\;\;\frac{\tan^{-1}_* \frac{im}{re} \cdot 0.0 + \left(\log \left(\sqrt[3]{base}\right) \cdot \left(\log \left(\sqrt[3]{im \cdot im + re \cdot re}\right) + \log \left(\sqrt[3]{im \cdot im + re \cdot re} \cdot \sqrt[3]{im \cdot im + re \cdot re}\right)\right) + \log \left(\sqrt[3]{base}\right) \cdot \log \left(\sqrt{im \cdot im + re \cdot re}\right)\right)}{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 r1823576 = re;
        double r1823577 = r1823576 * r1823576;
        double r1823578 = im;
        double r1823579 = r1823578 * r1823578;
        double r1823580 = r1823577 + r1823579;
        double r1823581 = sqrt(r1823580);
        double r1823582 = log(r1823581);
        double r1823583 = base;
        double r1823584 = log(r1823583);
        double r1823585 = r1823582 * r1823584;
        double r1823586 = atan2(r1823578, r1823576);
        double r1823587 = 0.0;
        double r1823588 = r1823586 * r1823587;
        double r1823589 = r1823585 + r1823588;
        double r1823590 = r1823584 * r1823584;
        double r1823591 = r1823587 * r1823587;
        double r1823592 = r1823590 + r1823591;
        double r1823593 = r1823589 / r1823592;
        return r1823593;
}

double f(double re, double im, double base) {
        double r1823594 = re;
        double r1823595 = -5.096763843336727e+82;
        bool r1823596 = r1823594 <= r1823595;
        double r1823597 = -1.0;
        double r1823598 = r1823597 / r1823594;
        double r1823599 = log(r1823598);
        double r1823600 = base;
        double r1823601 = log(r1823600);
        double r1823602 = r1823599 / r1823601;
        double r1823603 = -r1823602;
        double r1823604 = 4.348498385315215e+86;
        bool r1823605 = r1823594 <= r1823604;
        double r1823606 = im;
        double r1823607 = atan2(r1823606, r1823594);
        double r1823608 = 0.0;
        double r1823609 = r1823607 * r1823608;
        double r1823610 = cbrt(r1823600);
        double r1823611 = log(r1823610);
        double r1823612 = r1823606 * r1823606;
        double r1823613 = r1823594 * r1823594;
        double r1823614 = r1823612 + r1823613;
        double r1823615 = cbrt(r1823614);
        double r1823616 = log(r1823615);
        double r1823617 = r1823615 * r1823615;
        double r1823618 = log(r1823617);
        double r1823619 = r1823616 + r1823618;
        double r1823620 = r1823611 * r1823619;
        double r1823621 = sqrt(r1823614);
        double r1823622 = log(r1823621);
        double r1823623 = r1823611 * r1823622;
        double r1823624 = r1823620 + r1823623;
        double r1823625 = r1823609 + r1823624;
        double r1823626 = r1823608 * r1823608;
        double r1823627 = r1823601 * r1823601;
        double r1823628 = r1823626 + r1823627;
        double r1823629 = r1823625 / r1823628;
        double r1823630 = log(r1823594);
        double r1823631 = -r1823601;
        double r1823632 = r1823630 / r1823631;
        double r1823633 = -r1823632;
        double r1823634 = r1823605 ? r1823629 : r1823633;
        double r1823635 = r1823596 ? r1823603 : r1823634;
        return r1823635;
}

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 < -5.096763843336727e+82

    1. Initial program 48.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. 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. Simplified9.3

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

    if -5.096763843336727e+82 < re < 4.348498385315215e+86

    1. Initial program 22.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. Using strategy rm
    3. Applied add-cube-cbrt22.1

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

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

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

      \[\leadsto \frac{\left(\color{blue}{\log \left(\sqrt[3]{base}\right) \cdot \log \left(re \cdot re + im \cdot im\right)} + \log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log \left(\sqrt[3]{base}\right)\right) + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\log base \cdot \log base + 0.0 \cdot 0.0}\]
    7. Using strategy rm
    8. Applied add-cube-cbrt22.3

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

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

    if 4.348498385315215e+86 < re

    1. Initial program 50.7

      \[\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.1

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;re \le -5.096763843336727330743281026044494216767 \cdot 10^{82}:\\ \;\;\;\;-\frac{\log \left(\frac{-1}{re}\right)}{\log base}\\ \mathbf{elif}\;re \le 4.348498385315214745374667788374072106078 \cdot 10^{86}:\\ \;\;\;\;\frac{\tan^{-1}_* \frac{im}{re} \cdot 0.0 + \left(\log \left(\sqrt[3]{base}\right) \cdot \left(\log \left(\sqrt[3]{im \cdot im + re \cdot re}\right) + \log \left(\sqrt[3]{im \cdot im + re \cdot re} \cdot \sqrt[3]{im \cdot im + re \cdot re}\right)\right) + \log \left(\sqrt[3]{base}\right) \cdot \log \left(\sqrt{im \cdot im + re \cdot re}\right)\right)}{0.0 \cdot 0.0 + \log base \cdot \log base}\\ \mathbf{else}:\\ \;\;\;\;-\frac{\log re}{-\log base}\\ \end{array}\]

Reproduce

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