Average Error: 32.2 → 17.5
Time: 22.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 -1.257001761960975219228890631627023826637 \cdot 10^{125}:\\ \;\;\;\;\frac{\log \left(\frac{-1}{re}\right)}{\log base} \cdot -1\\ \mathbf{elif}\;re \le 2.391674267622185315690407487382754096962 \cdot 10^{96}:\\ \;\;\;\;\frac{{\left(\log base \cdot \log \left(\sqrt{im \cdot im + re \cdot re}\right)\right)}^{3} + {\left(0.0 \cdot \tan^{-1}_* \frac{im}{re}\right)}^{3}}{\left(\left(0.0 \cdot \tan^{-1}_* \frac{im}{re} - \log base \cdot \log \left(\sqrt{im \cdot im + re \cdot re}\right)\right) \cdot \left(0.0 \cdot \tan^{-1}_* \frac{im}{re}\right) + \left(\log base \cdot \log \left(\sqrt{im \cdot im + re \cdot re}\right)\right) \cdot \left(\log base \cdot \log \left(\sqrt{im \cdot im + re \cdot re}\right)\right)\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.257001761960975219228890631627023826637 \cdot 10^{125}:\\
\;\;\;\;\frac{\log \left(\frac{-1}{re}\right)}{\log base} \cdot -1\\

\mathbf{elif}\;re \le 2.391674267622185315690407487382754096962 \cdot 10^{96}:\\
\;\;\;\;\frac{{\left(\log base \cdot \log \left(\sqrt{im \cdot im + re \cdot re}\right)\right)}^{3} + {\left(0.0 \cdot \tan^{-1}_* \frac{im}{re}\right)}^{3}}{\left(\left(0.0 \cdot \tan^{-1}_* \frac{im}{re} - \log base \cdot \log \left(\sqrt{im \cdot im + re \cdot re}\right)\right) \cdot \left(0.0 \cdot \tan^{-1}_* \frac{im}{re}\right) + \left(\log base \cdot \log \left(\sqrt{im \cdot im + re \cdot re}\right)\right) \cdot \left(\log base \cdot \log \left(\sqrt{im \cdot im + re \cdot re}\right)\right)\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 r1899546 = re;
        double r1899547 = r1899546 * r1899546;
        double r1899548 = im;
        double r1899549 = r1899548 * r1899548;
        double r1899550 = r1899547 + r1899549;
        double r1899551 = sqrt(r1899550);
        double r1899552 = log(r1899551);
        double r1899553 = base;
        double r1899554 = log(r1899553);
        double r1899555 = r1899552 * r1899554;
        double r1899556 = atan2(r1899548, r1899546);
        double r1899557 = 0.0;
        double r1899558 = r1899556 * r1899557;
        double r1899559 = r1899555 + r1899558;
        double r1899560 = r1899554 * r1899554;
        double r1899561 = r1899557 * r1899557;
        double r1899562 = r1899560 + r1899561;
        double r1899563 = r1899559 / r1899562;
        return r1899563;
}

double f(double re, double im, double base) {
        double r1899564 = re;
        double r1899565 = -1.2570017619609752e+125;
        bool r1899566 = r1899564 <= r1899565;
        double r1899567 = -1.0;
        double r1899568 = r1899567 / r1899564;
        double r1899569 = log(r1899568);
        double r1899570 = base;
        double r1899571 = log(r1899570);
        double r1899572 = r1899569 / r1899571;
        double r1899573 = r1899572 * r1899567;
        double r1899574 = 2.3916742676221853e+96;
        bool r1899575 = r1899564 <= r1899574;
        double r1899576 = im;
        double r1899577 = r1899576 * r1899576;
        double r1899578 = r1899564 * r1899564;
        double r1899579 = r1899577 + r1899578;
        double r1899580 = sqrt(r1899579);
        double r1899581 = log(r1899580);
        double r1899582 = r1899571 * r1899581;
        double r1899583 = 3.0;
        double r1899584 = pow(r1899582, r1899583);
        double r1899585 = 0.0;
        double r1899586 = atan2(r1899576, r1899564);
        double r1899587 = r1899585 * r1899586;
        double r1899588 = pow(r1899587, r1899583);
        double r1899589 = r1899584 + r1899588;
        double r1899590 = r1899587 - r1899582;
        double r1899591 = r1899590 * r1899587;
        double r1899592 = r1899582 * r1899582;
        double r1899593 = r1899591 + r1899592;
        double r1899594 = r1899571 * r1899571;
        double r1899595 = r1899585 * r1899585;
        double r1899596 = r1899594 + r1899595;
        double r1899597 = r1899593 * r1899596;
        double r1899598 = r1899589 / r1899597;
        double r1899599 = log(r1899564);
        double r1899600 = -r1899599;
        double r1899601 = -r1899571;
        double r1899602 = r1899600 / r1899601;
        double r1899603 = r1899575 ? r1899598 : r1899602;
        double r1899604 = r1899566 ? r1899573 : r1899603;
        return r1899604;
}

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 < -1.2570017619609752e+125

    1. Initial program 56.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 -inf 64.0

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

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

    if -1.2570017619609752e+125 < re < 2.3916742676221853e+96

    1. Initial program 21.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 flip3-+21.9

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

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

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

    if 2.3916742676221853e+96 < re

    1. Initial program 52.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 9.2

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

      \[\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 -1.257001761960975219228890631627023826637 \cdot 10^{125}:\\ \;\;\;\;\frac{\log \left(\frac{-1}{re}\right)}{\log base} \cdot -1\\ \mathbf{elif}\;re \le 2.391674267622185315690407487382754096962 \cdot 10^{96}:\\ \;\;\;\;\frac{{\left(\log base \cdot \log \left(\sqrt{im \cdot im + re \cdot re}\right)\right)}^{3} + {\left(0.0 \cdot \tan^{-1}_* \frac{im}{re}\right)}^{3}}{\left(\left(0.0 \cdot \tan^{-1}_* \frac{im}{re} - \log base \cdot \log \left(\sqrt{im \cdot im + re \cdot re}\right)\right) \cdot \left(0.0 \cdot \tan^{-1}_* \frac{im}{re}\right) + \left(\log base \cdot \log \left(\sqrt{im \cdot im + re \cdot re}\right)\right) \cdot \left(\log base \cdot \log \left(\sqrt{im \cdot im + re \cdot re}\right)\right)\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 2019171 
(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))))