Average Error: 31.7 → 19.1
Time: 8.3s
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 -3.21907540931537393 \cdot 10^{117}:\\ \;\;\;\;\frac{\frac{\left(-1 \cdot \log \left(\frac{-1}{re}\right)\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}}\\ \mathbf{elif}\;re \le -7.2713402830638425 \cdot 10^{-171}:\\ \;\;\;\;\frac{\frac{\log \left(\left(\sqrt[3]{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right) \cdot \sqrt[3]{\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}}\\ \mathbf{elif}\;re \le 1.9780598850161828 \cdot 10^{-206}:\\ \;\;\;\;\frac{\log im}{\log base}\\ \mathbf{elif}\;re \le 6.21416753908483653 \cdot 10^{-142}:\\ \;\;\;\;\frac{\log \left(\frac{1}{re}\right)}{\log \left(\frac{1}{base}\right)}\\ \mathbf{elif}\;re \le 1.492585514901269 \cdot 10^{-103}:\\ \;\;\;\;\frac{\log im}{\log base}\\ \mathbf{elif}\;re \le 2.43405196972925384 \cdot 10^{101}:\\ \;\;\;\;\frac{\frac{\log \left(\left(\sqrt[3]{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right) \cdot \sqrt[3]{\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}}\\ \mathbf{else}:\\ \;\;\;\;\frac{\log \left(\frac{1}{re}\right)}{\log \left(\frac{1}{base}\right)}\\ \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 -3.21907540931537393 \cdot 10^{117}:\\
\;\;\;\;\frac{\frac{\left(-1 \cdot \log \left(\frac{-1}{re}\right)\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}}\\

\mathbf{elif}\;re \le -7.2713402830638425 \cdot 10^{-171}:\\
\;\;\;\;\frac{\frac{\log \left(\left(\sqrt[3]{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right) \cdot \sqrt[3]{\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}}\\

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

\mathbf{elif}\;re \le 6.21416753908483653 \cdot 10^{-142}:\\
\;\;\;\;\frac{\log \left(\frac{1}{re}\right)}{\log \left(\frac{1}{base}\right)}\\

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

\mathbf{elif}\;re \le 2.43405196972925384 \cdot 10^{101}:\\
\;\;\;\;\frac{\frac{\log \left(\left(\sqrt[3]{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right) \cdot \sqrt[3]{\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}}\\

\mathbf{else}:\\
\;\;\;\;\frac{\log \left(\frac{1}{re}\right)}{\log \left(\frac{1}{base}\right)}\\

\end{array}
double f(double re, double im, double base) {
        double r40471 = re;
        double r40472 = r40471 * r40471;
        double r40473 = im;
        double r40474 = r40473 * r40473;
        double r40475 = r40472 + r40474;
        double r40476 = sqrt(r40475);
        double r40477 = log(r40476);
        double r40478 = base;
        double r40479 = log(r40478);
        double r40480 = r40477 * r40479;
        double r40481 = atan2(r40473, r40471);
        double r40482 = 0.0;
        double r40483 = r40481 * r40482;
        double r40484 = r40480 + r40483;
        double r40485 = r40479 * r40479;
        double r40486 = r40482 * r40482;
        double r40487 = r40485 + r40486;
        double r40488 = r40484 / r40487;
        return r40488;
}

double f(double re, double im, double base) {
        double r40489 = re;
        double r40490 = -3.219075409315374e+117;
        bool r40491 = r40489 <= r40490;
        double r40492 = -1.0;
        double r40493 = r40492 / r40489;
        double r40494 = log(r40493);
        double r40495 = r40492 * r40494;
        double r40496 = base;
        double r40497 = log(r40496);
        double r40498 = r40495 * r40497;
        double r40499 = im;
        double r40500 = atan2(r40499, r40489);
        double r40501 = 0.0;
        double r40502 = r40500 * r40501;
        double r40503 = r40498 + r40502;
        double r40504 = r40497 * r40497;
        double r40505 = r40501 * r40501;
        double r40506 = r40504 + r40505;
        double r40507 = sqrt(r40506);
        double r40508 = r40503 / r40507;
        double r40509 = r40508 / r40507;
        double r40510 = -7.2713402830638425e-171;
        bool r40511 = r40489 <= r40510;
        double r40512 = r40489 * r40489;
        double r40513 = r40499 * r40499;
        double r40514 = r40512 + r40513;
        double r40515 = sqrt(r40514);
        double r40516 = cbrt(r40515);
        double r40517 = r40516 * r40516;
        double r40518 = r40517 * r40516;
        double r40519 = log(r40518);
        double r40520 = r40519 * r40497;
        double r40521 = r40520 + r40502;
        double r40522 = r40521 / r40507;
        double r40523 = r40522 / r40507;
        double r40524 = 1.9780598850161828e-206;
        bool r40525 = r40489 <= r40524;
        double r40526 = log(r40499);
        double r40527 = r40526 / r40497;
        double r40528 = 6.2141675390848365e-142;
        bool r40529 = r40489 <= r40528;
        double r40530 = 1.0;
        double r40531 = r40530 / r40489;
        double r40532 = log(r40531);
        double r40533 = r40530 / r40496;
        double r40534 = log(r40533);
        double r40535 = r40532 / r40534;
        double r40536 = 1.4925855149012688e-103;
        bool r40537 = r40489 <= r40536;
        double r40538 = 2.4340519697292538e+101;
        bool r40539 = r40489 <= r40538;
        double r40540 = r40539 ? r40523 : r40535;
        double r40541 = r40537 ? r40527 : r40540;
        double r40542 = r40529 ? r40535 : r40541;
        double r40543 = r40525 ? r40527 : r40542;
        double r40544 = r40511 ? r40523 : r40543;
        double r40545 = r40491 ? r40509 : r40544;
        return r40545;
}

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 4 regimes
  2. if re < -3.219075409315374e+117

    1. Initial program 55.6

      \[\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-sqrt55.6

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

      \[\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. Taylor expanded around -inf 64.0

      \[\leadsto \frac{\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}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}\]
    6. Simplified7.9

      \[\leadsto \frac{\frac{\color{blue}{\left(-1 \cdot \log \left(\frac{-1}{re}\right)\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}}\]

    if -3.219075409315374e+117 < re < -7.2713402830638425e-171 or 1.4925855149012688e-103 < re < 2.4340519697292538e+101

    1. Initial program 15.5

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

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

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

      \[\leadsto \frac{\frac{\log \color{blue}{\left(\left(\sqrt[3]{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right) \cdot \sqrt[3]{\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}}\]

    if -7.2713402830638425e-171 < re < 1.9780598850161828e-206 or 6.2141675390848365e-142 < re < 1.4925855149012688e-103

    1. Initial program 30.4

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

      \[\leadsto \color{blue}{\frac{\log im}{\log base}}\]

    if 1.9780598850161828e-206 < re < 6.2141675390848365e-142 or 2.4340519697292538e+101 < re

    1. Initial program 45.5

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

      \[\leadsto \color{blue}{\frac{\log \left(\frac{1}{re}\right)}{\log \left(\frac{1}{base}\right)}}\]
  3. Recombined 4 regimes into one program.
  4. Final simplification19.1

    \[\leadsto \begin{array}{l} \mathbf{if}\;re \le -3.21907540931537393 \cdot 10^{117}:\\ \;\;\;\;\frac{\frac{\left(-1 \cdot \log \left(\frac{-1}{re}\right)\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}}\\ \mathbf{elif}\;re \le -7.2713402830638425 \cdot 10^{-171}:\\ \;\;\;\;\frac{\frac{\log \left(\left(\sqrt[3]{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right) \cdot \sqrt[3]{\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}}\\ \mathbf{elif}\;re \le 1.9780598850161828 \cdot 10^{-206}:\\ \;\;\;\;\frac{\log im}{\log base}\\ \mathbf{elif}\;re \le 6.21416753908483653 \cdot 10^{-142}:\\ \;\;\;\;\frac{\log \left(\frac{1}{re}\right)}{\log \left(\frac{1}{base}\right)}\\ \mathbf{elif}\;re \le 1.492585514901269 \cdot 10^{-103}:\\ \;\;\;\;\frac{\log im}{\log base}\\ \mathbf{elif}\;re \le 2.43405196972925384 \cdot 10^{101}:\\ \;\;\;\;\frac{\frac{\log \left(\left(\sqrt[3]{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right) \cdot \sqrt[3]{\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}}\\ \mathbf{else}:\\ \;\;\;\;\frac{\log \left(\frac{1}{re}\right)}{\log \left(\frac{1}{base}\right)}\\ \end{array}\]

Reproduce

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