Average Error: 31.2 → 17.1
Time: 19.3s
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 -1.4788027677282785 \cdot 10^{+98}:\\ \;\;\;\;\frac{\log \left(-re\right)}{\log base}\\ \mathbf{elif}\;re \le 3.5461239328384627 \cdot 10^{+84}:\\ \;\;\;\;\frac{\log \left(im \cdot im + re \cdot re\right)}{\log base} \cdot \frac{1}{2}\\ \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 -1.4788027677282785 \cdot 10^{+98}:\\
\;\;\;\;\frac{\log \left(-re\right)}{\log base}\\

\mathbf{elif}\;re \le 3.5461239328384627 \cdot 10^{+84}:\\
\;\;\;\;\frac{\log \left(im \cdot im + re \cdot re\right)}{\log base} \cdot \frac{1}{2}\\

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

\end{array}
double f(double re, double im, double base) {
        double r1751336 = re;
        double r1751337 = r1751336 * r1751336;
        double r1751338 = im;
        double r1751339 = r1751338 * r1751338;
        double r1751340 = r1751337 + r1751339;
        double r1751341 = sqrt(r1751340);
        double r1751342 = log(r1751341);
        double r1751343 = base;
        double r1751344 = log(r1751343);
        double r1751345 = r1751342 * r1751344;
        double r1751346 = atan2(r1751338, r1751336);
        double r1751347 = 0.0;
        double r1751348 = r1751346 * r1751347;
        double r1751349 = r1751345 + r1751348;
        double r1751350 = r1751344 * r1751344;
        double r1751351 = r1751347 * r1751347;
        double r1751352 = r1751350 + r1751351;
        double r1751353 = r1751349 / r1751352;
        return r1751353;
}

double f(double re, double im, double base) {
        double r1751354 = re;
        double r1751355 = -1.4788027677282785e+98;
        bool r1751356 = r1751354 <= r1751355;
        double r1751357 = -r1751354;
        double r1751358 = log(r1751357);
        double r1751359 = base;
        double r1751360 = log(r1751359);
        double r1751361 = r1751358 / r1751360;
        double r1751362 = 3.5461239328384627e+84;
        bool r1751363 = r1751354 <= r1751362;
        double r1751364 = im;
        double r1751365 = r1751364 * r1751364;
        double r1751366 = r1751354 * r1751354;
        double r1751367 = r1751365 + r1751366;
        double r1751368 = log(r1751367);
        double r1751369 = r1751368 / r1751360;
        double r1751370 = 0.5;
        double r1751371 = r1751369 * r1751370;
        double r1751372 = log(r1751354);
        double r1751373 = r1751372 / r1751360;
        double r1751374 = r1751363 ? r1751371 : r1751373;
        double r1751375 = r1751356 ? r1751361 : r1751374;
        return r1751375;
}

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.4788027677282785e+98

    1. Initial program 49.5

      \[\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. Simplified49.5

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

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

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

    if -1.4788027677282785e+98 < re < 3.5461239328384627e+84

    1. Initial program 21.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. Simplified21.3

      \[\leadsto \color{blue}{\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\log base}}\]
    3. Using strategy rm
    4. Applied pow1/221.3

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

      \[\leadsto \frac{\color{blue}{\frac{1}{2} \cdot \log \left(re \cdot re + im \cdot im\right)}}{\log base}\]
    6. Applied associate-/l*21.3

      \[\leadsto \color{blue}{\frac{\frac{1}{2}}{\frac{\log base}{\log \left(re \cdot re + im \cdot im\right)}}}\]
    7. Using strategy rm
    8. Applied div-inv21.3

      \[\leadsto \color{blue}{\frac{1}{2} \cdot \frac{1}{\frac{\log base}{\log \left(re \cdot re + im \cdot im\right)}}}\]
    9. Simplified21.3

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

    if 3.5461239328384627e+84 < re

    1. Initial program 48.5

      \[\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. Simplified48.5

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;re \le -1.4788027677282785 \cdot 10^{+98}:\\ \;\;\;\;\frac{\log \left(-re\right)}{\log base}\\ \mathbf{elif}\;re \le 3.5461239328384627 \cdot 10^{+84}:\\ \;\;\;\;\frac{\log \left(im \cdot im + re \cdot re\right)}{\log base} \cdot \frac{1}{2}\\ \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)) (+ (* (log base) (log base)) (* 0 0))))