Average Error: 31.4 → 17.7
Time: 21.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 -2.45129504800494533021927076530083244608 \cdot 10^{86}:\\ \;\;\;\;\frac{\left(-\log \left(\frac{-1}{re}\right)\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\log base \cdot \log base + 0.0 \cdot 0.0}\\ \mathbf{elif}\;re \le -3.404337242509125340591714753951217365262 \cdot 10^{-239}:\\ \;\;\;\;\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\left(\log base \cdot \left(2 \cdot \log \left(\sqrt[3]{base}\right)\right) + \log \left(\sqrt[3]{base}\right) \cdot \log base\right) + 0.0 \cdot 0.0}\\ \mathbf{elif}\;re \le 2.029566204712021320043558610301436046335 \cdot 10^{-265}:\\ \;\;\;\;\frac{\log im \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\log base \cdot \log base + 0.0 \cdot 0.0}\\ \mathbf{elif}\;re \le 3.761101708531406125469403281793612063172 \cdot 10^{48}:\\ \;\;\;\;\frac{\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(\tan^{-1}_* \frac{im}{re} \cdot 0.0\right) \cdot \left(\tan^{-1}_* \frac{im}{re} \cdot 0.0\right)}{\left(0.0 \cdot 0.0 + {\left(\log base\right)}^{2}\right) \cdot \left(\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base - \tan^{-1}_* \frac{im}{re} \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 -2.45129504800494533021927076530083244608 \cdot 10^{86}:\\
\;\;\;\;\frac{\left(-\log \left(\frac{-1}{re}\right)\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\log base \cdot \log base + 0.0 \cdot 0.0}\\

\mathbf{elif}\;re \le -3.404337242509125340591714753951217365262 \cdot 10^{-239}:\\
\;\;\;\;\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\left(\log base \cdot \left(2 \cdot \log \left(\sqrt[3]{base}\right)\right) + \log \left(\sqrt[3]{base}\right) \cdot \log base\right) + 0.0 \cdot 0.0}\\

\mathbf{elif}\;re \le 2.029566204712021320043558610301436046335 \cdot 10^{-265}:\\
\;\;\;\;\frac{\log im \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\log base \cdot \log base + 0.0 \cdot 0.0}\\

\mathbf{elif}\;re \le 3.761101708531406125469403281793612063172 \cdot 10^{48}:\\
\;\;\;\;\frac{\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(\tan^{-1}_* \frac{im}{re} \cdot 0.0\right) \cdot \left(\tan^{-1}_* \frac{im}{re} \cdot 0.0\right)}{\left(0.0 \cdot 0.0 + {\left(\log base\right)}^{2}\right) \cdot \left(\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base - \tan^{-1}_* \frac{im}{re} \cdot 0.0\right)}\\

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

\end{array}
double f(double re, double im, double base) {
        double r43421 = re;
        double r43422 = r43421 * r43421;
        double r43423 = im;
        double r43424 = r43423 * r43423;
        double r43425 = r43422 + r43424;
        double r43426 = sqrt(r43425);
        double r43427 = log(r43426);
        double r43428 = base;
        double r43429 = log(r43428);
        double r43430 = r43427 * r43429;
        double r43431 = atan2(r43423, r43421);
        double r43432 = 0.0;
        double r43433 = r43431 * r43432;
        double r43434 = r43430 + r43433;
        double r43435 = r43429 * r43429;
        double r43436 = r43432 * r43432;
        double r43437 = r43435 + r43436;
        double r43438 = r43434 / r43437;
        return r43438;
}

double f(double re, double im, double base) {
        double r43439 = re;
        double r43440 = -2.4512950480049453e+86;
        bool r43441 = r43439 <= r43440;
        double r43442 = -1.0;
        double r43443 = r43442 / r43439;
        double r43444 = log(r43443);
        double r43445 = -r43444;
        double r43446 = base;
        double r43447 = log(r43446);
        double r43448 = r43445 * r43447;
        double r43449 = im;
        double r43450 = atan2(r43449, r43439);
        double r43451 = 0.0;
        double r43452 = r43450 * r43451;
        double r43453 = r43448 + r43452;
        double r43454 = r43447 * r43447;
        double r43455 = r43451 * r43451;
        double r43456 = r43454 + r43455;
        double r43457 = r43453 / r43456;
        double r43458 = -3.4043372425091253e-239;
        bool r43459 = r43439 <= r43458;
        double r43460 = r43439 * r43439;
        double r43461 = r43449 * r43449;
        double r43462 = r43460 + r43461;
        double r43463 = sqrt(r43462);
        double r43464 = log(r43463);
        double r43465 = r43464 * r43447;
        double r43466 = r43465 + r43452;
        double r43467 = 2.0;
        double r43468 = cbrt(r43446);
        double r43469 = log(r43468);
        double r43470 = r43467 * r43469;
        double r43471 = r43447 * r43470;
        double r43472 = r43469 * r43447;
        double r43473 = r43471 + r43472;
        double r43474 = r43473 + r43455;
        double r43475 = r43466 / r43474;
        double r43476 = 2.0295662047120213e-265;
        bool r43477 = r43439 <= r43476;
        double r43478 = log(r43449);
        double r43479 = r43478 * r43447;
        double r43480 = r43479 + r43452;
        double r43481 = r43480 / r43456;
        double r43482 = 3.761101708531406e+48;
        bool r43483 = r43439 <= r43482;
        double r43484 = r43465 * r43465;
        double r43485 = r43452 * r43452;
        double r43486 = r43484 - r43485;
        double r43487 = pow(r43447, r43467);
        double r43488 = r43455 + r43487;
        double r43489 = r43465 - r43452;
        double r43490 = r43488 * r43489;
        double r43491 = r43486 / r43490;
        double r43492 = log(r43439);
        double r43493 = -r43492;
        double r43494 = -r43447;
        double r43495 = r43493 / r43494;
        double r43496 = r43483 ? r43491 : r43495;
        double r43497 = r43477 ? r43481 : r43496;
        double r43498 = r43459 ? r43475 : r43497;
        double r43499 = r43441 ? r43457 : r43498;
        return r43499;
}

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 5 regimes
  2. if re < -2.4512950480049453e+86

    1. Initial program 49.2

      \[\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 \frac{\color{blue}{-1 \cdot \left(\left(\log -1 - \log \left(\frac{-1}{base}\right)\right) \cdot \log \left(\frac{-1}{re}\right)\right)} + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\log base \cdot \log base + 0.0 \cdot 0.0}\]
    3. Simplified9.7

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

    if -2.4512950480049453e+86 < re < -3.4043372425091253e-239

    1. Initial program 19.7

      \[\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-cube-cbrt19.7

      \[\leadsto \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 \color{blue}{\left(\left(\sqrt[3]{base} \cdot \sqrt[3]{base}\right) \cdot \sqrt[3]{base}\right)} + 0.0 \cdot 0.0}\]
    4. Applied log-prod19.7

      \[\leadsto \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 \color{blue}{\left(\log \left(\sqrt[3]{base} \cdot \sqrt[3]{base}\right) + \log \left(\sqrt[3]{base}\right)\right)} + 0.0 \cdot 0.0}\]
    5. Applied distribute-lft-in19.7

      \[\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}{\left(\log base \cdot \log \left(\sqrt[3]{base} \cdot \sqrt[3]{base}\right) + \log base \cdot \log \left(\sqrt[3]{base}\right)\right)} + 0.0 \cdot 0.0}\]
    6. Simplified19.7

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

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

    if -3.4043372425091253e-239 < re < 2.0295662047120213e-265

    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.0}{\log base \cdot \log base + 0.0 \cdot 0.0}\]
    2. Taylor expanded around 0 33.8

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

    if 2.0295662047120213e-265 < re < 3.761101708531406e+48

    1. Initial program 20.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. Using strategy rm
    3. Applied flip-+20.1

      \[\leadsto \frac{\color{blue}{\frac{\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(\tan^{-1}_* \frac{im}{re} \cdot 0.0\right) \cdot \left(\tan^{-1}_* \frac{im}{re} \cdot 0.0\right)}{\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}\]
    4. Applied associate-/l/20.1

      \[\leadsto \color{blue}{\frac{\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(\tan^{-1}_* \frac{im}{re} \cdot 0.0\right) \cdot \left(\tan^{-1}_* \frac{im}{re} \cdot 0.0\right)}{\left(\log base \cdot \log base + 0.0 \cdot 0.0\right) \cdot \left(\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base - \tan^{-1}_* \frac{im}{re} \cdot 0.0\right)}}\]
    5. Simplified20.1

      \[\leadsto \frac{\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(\tan^{-1}_* \frac{im}{re} \cdot 0.0\right) \cdot \left(\tan^{-1}_* \frac{im}{re} \cdot 0.0\right)}{\color{blue}{\left(0.0 \cdot 0.0 + {\left(\log base\right)}^{2}\right) \cdot \left(\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base - \tan^{-1}_* \frac{im}{re} \cdot 0.0\right)}}\]

    if 3.761101708531406e+48 < 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 11.7

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;re \le -2.45129504800494533021927076530083244608 \cdot 10^{86}:\\ \;\;\;\;\frac{\left(-\log \left(\frac{-1}{re}\right)\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\log base \cdot \log base + 0.0 \cdot 0.0}\\ \mathbf{elif}\;re \le -3.404337242509125340591714753951217365262 \cdot 10^{-239}:\\ \;\;\;\;\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\left(\log base \cdot \left(2 \cdot \log \left(\sqrt[3]{base}\right)\right) + \log \left(\sqrt[3]{base}\right) \cdot \log base\right) + 0.0 \cdot 0.0}\\ \mathbf{elif}\;re \le 2.029566204712021320043558610301436046335 \cdot 10^{-265}:\\ \;\;\;\;\frac{\log im \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\log base \cdot \log base + 0.0 \cdot 0.0}\\ \mathbf{elif}\;re \le 3.761101708531406125469403281793612063172 \cdot 10^{48}:\\ \;\;\;\;\frac{\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(\tan^{-1}_* \frac{im}{re} \cdot 0.0\right) \cdot \left(\tan^{-1}_* \frac{im}{re} \cdot 0.0\right)}{\left(0.0 \cdot 0.0 + {\left(\log base\right)}^{2}\right) \cdot \left(\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base - \tan^{-1}_* \frac{im}{re} \cdot 0.0\right)}\\ \mathbf{else}:\\ \;\;\;\;\frac{-\log re}{-\log base}\\ \end{array}\]

Reproduce

herbie shell --seed 2019208 
(FPCore (re im base)
  :name "math.log/2 on complex, real part"
  :precision binary64
  (/ (+ (* (log (sqrt (+ (* re re) (* im im)))) (log base)) (* (atan2 im re) 0.0)) (+ (* (log base) (log base)) (* 0.0 0.0))))