Average Error: 32.1 → 18.1
Time: 23.5s
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 -2039.492255936364927038084715604782104492:\\ \;\;\;\;\frac{\frac{\tan^{-1}_* \frac{im}{re} \cdot 0.0 + \log base \cdot \log \left(-re\right)}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}}{\sqrt{0.0 \cdot 0.0 + \sqrt[3]{\left(\left(\log base \cdot \log base\right) \cdot \left(\log base \cdot \log base\right)\right) \cdot \left(\log base \cdot \log base\right)}}}\\ \mathbf{elif}\;re \le 4.884463756615851339998987097792534597928 \cdot 10^{57}:\\ \;\;\;\;\frac{\frac{\log base \cdot \log \left(\sqrt{im \cdot im + re \cdot re}\right) + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}\\ \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 -2039.492255936364927038084715604782104492:\\
\;\;\;\;\frac{\frac{\tan^{-1}_* \frac{im}{re} \cdot 0.0 + \log base \cdot \log \left(-re\right)}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}}{\sqrt{0.0 \cdot 0.0 + \sqrt[3]{\left(\left(\log base \cdot \log base\right) \cdot \left(\log base \cdot \log base\right)\right) \cdot \left(\log base \cdot \log base\right)}}}\\

\mathbf{elif}\;re \le 4.884463756615851339998987097792534597928 \cdot 10^{57}:\\
\;\;\;\;\frac{\frac{\log base \cdot \log \left(\sqrt{im \cdot im + re \cdot re}\right) + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}\\

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

\end{array}
double f(double re, double im, double base) {
        double r2354424 = re;
        double r2354425 = r2354424 * r2354424;
        double r2354426 = im;
        double r2354427 = r2354426 * r2354426;
        double r2354428 = r2354425 + r2354427;
        double r2354429 = sqrt(r2354428);
        double r2354430 = log(r2354429);
        double r2354431 = base;
        double r2354432 = log(r2354431);
        double r2354433 = r2354430 * r2354432;
        double r2354434 = atan2(r2354426, r2354424);
        double r2354435 = 0.0;
        double r2354436 = r2354434 * r2354435;
        double r2354437 = r2354433 + r2354436;
        double r2354438 = r2354432 * r2354432;
        double r2354439 = r2354435 * r2354435;
        double r2354440 = r2354438 + r2354439;
        double r2354441 = r2354437 / r2354440;
        return r2354441;
}

double f(double re, double im, double base) {
        double r2354442 = re;
        double r2354443 = -2039.492255936365;
        bool r2354444 = r2354442 <= r2354443;
        double r2354445 = im;
        double r2354446 = atan2(r2354445, r2354442);
        double r2354447 = 0.0;
        double r2354448 = r2354446 * r2354447;
        double r2354449 = base;
        double r2354450 = log(r2354449);
        double r2354451 = -r2354442;
        double r2354452 = log(r2354451);
        double r2354453 = r2354450 * r2354452;
        double r2354454 = r2354448 + r2354453;
        double r2354455 = r2354450 * r2354450;
        double r2354456 = r2354447 * r2354447;
        double r2354457 = r2354455 + r2354456;
        double r2354458 = sqrt(r2354457);
        double r2354459 = r2354454 / r2354458;
        double r2354460 = r2354455 * r2354455;
        double r2354461 = r2354460 * r2354455;
        double r2354462 = cbrt(r2354461);
        double r2354463 = r2354456 + r2354462;
        double r2354464 = sqrt(r2354463);
        double r2354465 = r2354459 / r2354464;
        double r2354466 = 4.884463756615851e+57;
        bool r2354467 = r2354442 <= r2354466;
        double r2354468 = r2354445 * r2354445;
        double r2354469 = r2354442 * r2354442;
        double r2354470 = r2354468 + r2354469;
        double r2354471 = sqrt(r2354470);
        double r2354472 = log(r2354471);
        double r2354473 = r2354450 * r2354472;
        double r2354474 = r2354473 + r2354448;
        double r2354475 = r2354474 / r2354458;
        double r2354476 = r2354475 / r2354458;
        double r2354477 = log(r2354442);
        double r2354478 = -r2354477;
        double r2354479 = -r2354450;
        double r2354480 = r2354478 / r2354479;
        double r2354481 = r2354467 ? r2354476 : r2354480;
        double r2354482 = r2354444 ? r2354465 : r2354481;
        return r2354482;
}

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 < -2039.492255936365

    1. Initial program 41.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-sqr-sqrt41.1

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

      \[\leadsto \color{blue}{\frac{\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}}\]
    5. Using strategy rm
    6. Applied add-cbrt-cube41.2

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

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

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

    if -2039.492255936365 < re < 4.884463756615851e+57

    1. Initial program 23.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-sqr-sqrt23.1

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

      \[\leadsto \color{blue}{\frac{\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}}\]
    5. Using strategy rm
    6. Applied add-cbrt-cube23.1

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

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

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

    if 4.884463756615851e+57 < re

    1. Initial program 45.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 10.5

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

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

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

Reproduce

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