Average Error: 31.2 → 17.7
Time: 1.2m
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 -7.705421844557647 \cdot 10^{+61}:\\ \;\;\;\;\frac{\log \left(-re\right)}{\log base}\\ \mathbf{elif}\;re \le -9.4018337374793 \cdot 10^{-211}:\\ \;\;\;\;\frac{\log \left(\sqrt{im \cdot im + re \cdot re}\right)}{\log base}\\ \mathbf{elif}\;re \le -1.0773202820966665 \cdot 10^{-239}:\\ \;\;\;\;\frac{\log im}{\log base}\\ \mathbf{elif}\;re \le -4.429404736105875 \cdot 10^{-277}:\\ \;\;\;\;\frac{\log \left(\sqrt{im \cdot im + re \cdot re}\right)}{\log base}\\ \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}\;re \le -7.705421844557647 \cdot 10^{+61}:\\
\;\;\;\;\frac{\log \left(-re\right)}{\log base}\\

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

\mathbf{elif}\;re \le -1.0773202820966665 \cdot 10^{-239}:\\
\;\;\;\;\frac{\log im}{\log base}\\

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

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

\end{array}
double f(double re, double im, double base) {
        double r1755437 = re;
        double r1755438 = r1755437 * r1755437;
        double r1755439 = im;
        double r1755440 = r1755439 * r1755439;
        double r1755441 = r1755438 + r1755440;
        double r1755442 = sqrt(r1755441);
        double r1755443 = log(r1755442);
        double r1755444 = base;
        double r1755445 = log(r1755444);
        double r1755446 = r1755443 * r1755445;
        double r1755447 = atan2(r1755439, r1755437);
        double r1755448 = 0.0;
        double r1755449 = r1755447 * r1755448;
        double r1755450 = r1755446 + r1755449;
        double r1755451 = r1755445 * r1755445;
        double r1755452 = r1755448 * r1755448;
        double r1755453 = r1755451 + r1755452;
        double r1755454 = r1755450 / r1755453;
        return r1755454;
}

double f(double re, double im, double base) {
        double r1755455 = re;
        double r1755456 = -7.705421844557647e+61;
        bool r1755457 = r1755455 <= r1755456;
        double r1755458 = -r1755455;
        double r1755459 = log(r1755458);
        double r1755460 = base;
        double r1755461 = log(r1755460);
        double r1755462 = r1755459 / r1755461;
        double r1755463 = -9.4018337374793e-211;
        bool r1755464 = r1755455 <= r1755463;
        double r1755465 = im;
        double r1755466 = r1755465 * r1755465;
        double r1755467 = r1755455 * r1755455;
        double r1755468 = r1755466 + r1755467;
        double r1755469 = sqrt(r1755468);
        double r1755470 = log(r1755469);
        double r1755471 = r1755470 / r1755461;
        double r1755472 = -1.0773202820966665e-239;
        bool r1755473 = r1755455 <= r1755472;
        double r1755474 = log(r1755465);
        double r1755475 = r1755474 / r1755461;
        double r1755476 = -4.429404736105875e-277;
        bool r1755477 = r1755455 <= r1755476;
        double r1755478 = r1755477 ? r1755471 : r1755475;
        double r1755479 = r1755473 ? r1755475 : r1755478;
        double r1755480 = r1755464 ? r1755471 : r1755479;
        double r1755481 = r1755457 ? r1755462 : r1755480;
        return r1755481;
}

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 < -7.705421844557647e+61

    1. Initial program 45.1

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

      \[\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 11.0

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

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

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

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

    if -7.705421844557647e+61 < re < -9.4018337374793e-211 or -1.0773202820966665e-239 < re < -4.429404736105875e-277

    1. Initial program 20.2

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

      \[\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*20.2

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

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

    if -9.4018337374793e-211 < re < -1.0773202820966665e-239 or -4.429404736105875e-277 < re

    1. Initial program 30.1

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

      \[\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 33.9

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;re \le -7.705421844557647 \cdot 10^{+61}:\\ \;\;\;\;\frac{\log \left(-re\right)}{\log base}\\ \mathbf{elif}\;re \le -9.4018337374793 \cdot 10^{-211}:\\ \;\;\;\;\frac{\log \left(\sqrt{im \cdot im + re \cdot re}\right)}{\log base}\\ \mathbf{elif}\;re \le -1.0773202820966665 \cdot 10^{-239}:\\ \;\;\;\;\frac{\log im}{\log base}\\ \mathbf{elif}\;re \le -4.429404736105875 \cdot 10^{-277}:\\ \;\;\;\;\frac{\log \left(\sqrt{im \cdot im + re \cdot re}\right)}{\log base}\\ \mathbf{else}:\\ \;\;\;\;\frac{\log im}{\log base}\\ \end{array}\]

Reproduce

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