Average Error: 31.1 → 17.2
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}{\log base \cdot \log base + 0 \cdot 0}\]
\[\begin{array}{l} \mathbf{if}\;re \le -4.976637077884882 \cdot 10^{+106}:\\ \;\;\;\;\frac{\log \left(-re\right)}{\log base}\\ \mathbf{elif}\;re \le 1.9754095442502022 \cdot 10^{+118}:\\ \;\;\;\;\frac{1}{\frac{\log base}{\log \left(\sqrt{im \cdot im + re \cdot re}\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}{\log base \cdot \log base + 0 \cdot 0}
\begin{array}{l}
\mathbf{if}\;re \le -4.976637077884882 \cdot 10^{+106}:\\
\;\;\;\;\frac{\log \left(-re\right)}{\log base}\\

\mathbf{elif}\;re \le 1.9754095442502022 \cdot 10^{+118}:\\
\;\;\;\;\frac{1}{\frac{\log base}{\log \left(\sqrt{im \cdot im + re \cdot re}\right)}}\\

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

\end{array}
double f(double re, double im, double base) {
        double r2035476 = re;
        double r2035477 = r2035476 * r2035476;
        double r2035478 = im;
        double r2035479 = r2035478 * r2035478;
        double r2035480 = r2035477 + r2035479;
        double r2035481 = sqrt(r2035480);
        double r2035482 = log(r2035481);
        double r2035483 = base;
        double r2035484 = log(r2035483);
        double r2035485 = r2035482 * r2035484;
        double r2035486 = atan2(r2035478, r2035476);
        double r2035487 = 0.0;
        double r2035488 = r2035486 * r2035487;
        double r2035489 = r2035485 + r2035488;
        double r2035490 = r2035484 * r2035484;
        double r2035491 = r2035487 * r2035487;
        double r2035492 = r2035490 + r2035491;
        double r2035493 = r2035489 / r2035492;
        return r2035493;
}

double f(double re, double im, double base) {
        double r2035494 = re;
        double r2035495 = -4.976637077884882e+106;
        bool r2035496 = r2035494 <= r2035495;
        double r2035497 = -r2035494;
        double r2035498 = log(r2035497);
        double r2035499 = base;
        double r2035500 = log(r2035499);
        double r2035501 = r2035498 / r2035500;
        double r2035502 = 1.9754095442502022e+118;
        bool r2035503 = r2035494 <= r2035502;
        double r2035504 = 1.0;
        double r2035505 = im;
        double r2035506 = r2035505 * r2035505;
        double r2035507 = r2035494 * r2035494;
        double r2035508 = r2035506 + r2035507;
        double r2035509 = sqrt(r2035508);
        double r2035510 = log(r2035509);
        double r2035511 = r2035500 / r2035510;
        double r2035512 = r2035504 / r2035511;
        double r2035513 = log(r2035494);
        double r2035514 = r2035513 / r2035500;
        double r2035515 = r2035503 ? r2035512 : r2035514;
        double r2035516 = r2035496 ? r2035501 : r2035515;
        return r2035516;
}

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 < -4.976637077884882e+106

    1. Initial program 52.4

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

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

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

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

    if -4.976637077884882e+106 < re < 1.9754095442502022e+118

    1. Initial program 21.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. Simplified20.9

      \[\leadsto \color{blue}{\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\log base}}\]
    3. Using strategy rm
    4. Applied clear-num20.9

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

    if 1.9754095442502022e+118 < re

    1. Initial program 53.8

      \[\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. Simplified53.8

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;re \le -4.976637077884882 \cdot 10^{+106}:\\ \;\;\;\;\frac{\log \left(-re\right)}{\log base}\\ \mathbf{elif}\;re \le 1.9754095442502022 \cdot 10^{+118}:\\ \;\;\;\;\frac{1}{\frac{\log base}{\log \left(\sqrt{im \cdot im + re \cdot re}\right)}}\\ \mathbf{else}:\\ \;\;\;\;\frac{\log re}{\log base}\\ \end{array}\]

Reproduce

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