Average Error: 30.5 → 16.6
Time: 53.5s
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}\;im \le -3.247335420066394 \cdot 10^{+143}:\\ \;\;\;\;\frac{\log base \cdot \log \left(-re\right)}{\log base \cdot \log base}\\ \mathbf{elif}\;im \le -4.255621728546282 \cdot 10^{-81}:\\ \;\;\;\;\frac{\log \left(re \cdot re + im \cdot im\right)}{\log base} \cdot \frac{1}{2}\\ \mathbf{elif}\;im \le 4.658599113247346 \cdot 10^{-108}:\\ \;\;\;\;\frac{\log \left(-re\right)}{\log base}\\ \mathbf{elif}\;im \le 4.4001354047048697 \cdot 10^{+102}:\\ \;\;\;\;\frac{\log \left(re \cdot re + im \cdot im\right)}{\log base} \cdot \frac{1}{2}\\ \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}\;im \le -3.247335420066394 \cdot 10^{+143}:\\
\;\;\;\;\frac{\log base \cdot \log \left(-re\right)}{\log base \cdot \log base}\\

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

\mathbf{elif}\;im \le 4.658599113247346 \cdot 10^{-108}:\\
\;\;\;\;\frac{\log \left(-re\right)}{\log base}\\

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

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

\end{array}
double f(double re, double im, double base) {
        double r1087240 = re;
        double r1087241 = r1087240 * r1087240;
        double r1087242 = im;
        double r1087243 = r1087242 * r1087242;
        double r1087244 = r1087241 + r1087243;
        double r1087245 = sqrt(r1087244);
        double r1087246 = log(r1087245);
        double r1087247 = base;
        double r1087248 = log(r1087247);
        double r1087249 = r1087246 * r1087248;
        double r1087250 = atan2(r1087242, r1087240);
        double r1087251 = 0.0;
        double r1087252 = r1087250 * r1087251;
        double r1087253 = r1087249 + r1087252;
        double r1087254 = r1087248 * r1087248;
        double r1087255 = r1087251 * r1087251;
        double r1087256 = r1087254 + r1087255;
        double r1087257 = r1087253 / r1087256;
        return r1087257;
}

double f(double re, double im, double base) {
        double r1087258 = im;
        double r1087259 = -3.247335420066394e+143;
        bool r1087260 = r1087258 <= r1087259;
        double r1087261 = base;
        double r1087262 = log(r1087261);
        double r1087263 = re;
        double r1087264 = -r1087263;
        double r1087265 = log(r1087264);
        double r1087266 = r1087262 * r1087265;
        double r1087267 = r1087262 * r1087262;
        double r1087268 = r1087266 / r1087267;
        double r1087269 = -4.255621728546282e-81;
        bool r1087270 = r1087258 <= r1087269;
        double r1087271 = r1087263 * r1087263;
        double r1087272 = r1087258 * r1087258;
        double r1087273 = r1087271 + r1087272;
        double r1087274 = log(r1087273);
        double r1087275 = r1087274 / r1087262;
        double r1087276 = 0.5;
        double r1087277 = r1087275 * r1087276;
        double r1087278 = 4.658599113247346e-108;
        bool r1087279 = r1087258 <= r1087278;
        double r1087280 = r1087265 / r1087262;
        double r1087281 = 4.4001354047048697e+102;
        bool r1087282 = r1087258 <= r1087281;
        double r1087283 = log(r1087258);
        double r1087284 = r1087283 / r1087262;
        double r1087285 = r1087282 ? r1087277 : r1087284;
        double r1087286 = r1087279 ? r1087280 : r1087285;
        double r1087287 = r1087270 ? r1087277 : r1087286;
        double r1087288 = r1087260 ? r1087268 : r1087287;
        return r1087288;
}

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 im < -3.247335420066394e+143

    1. Initial program 59.6

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

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

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

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

    if -3.247335420066394e+143 < im < -4.255621728546282e-81 or 4.658599113247346e-108 < im < 4.4001354047048697e+102

    1. Initial program 14.9

      \[\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. Simplified14.9

      \[\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-/l*14.8

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

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

      \[\leadsto \frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\color{blue}{\log base \cdot \frac{1}{1}}}\]
    8. Applied pow1/214.8

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

      \[\leadsto \frac{\color{blue}{\frac{1}{2} \cdot \log \left(re \cdot re + im \cdot im\right)}}{\log base \cdot \frac{1}{1}}\]
    10. Applied times-frac14.9

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

      \[\leadsto \frac{\frac{1}{2}}{\log base} \cdot \color{blue}{\log \left(re \cdot re + im \cdot im\right)}\]
    12. Using strategy rm
    13. Applied div-inv14.9

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

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

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

    if -4.255621728546282e-81 < im < 4.658599113247346e-108

    1. Initial program 25.3

      \[\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. Simplified25.3

      \[\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-/l*25.3

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

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

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

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

    if 4.4001354047048697e+102 < im

    1. Initial program 51.0

      \[\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. Simplified51.0

      \[\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-/l*51.0

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

      \[\leadsto \frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\color{blue}{\frac{\log base}{1}}}\]
    6. Taylor expanded around 0 9.4

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;im \le -3.247335420066394 \cdot 10^{+143}:\\ \;\;\;\;\frac{\log base \cdot \log \left(-re\right)}{\log base \cdot \log base}\\ \mathbf{elif}\;im \le -4.255621728546282 \cdot 10^{-81}:\\ \;\;\;\;\frac{\log \left(re \cdot re + im \cdot im\right)}{\log base} \cdot \frac{1}{2}\\ \mathbf{elif}\;im \le 4.658599113247346 \cdot 10^{-108}:\\ \;\;\;\;\frac{\log \left(-re\right)}{\log base}\\ \mathbf{elif}\;im \le 4.4001354047048697 \cdot 10^{+102}:\\ \;\;\;\;\frac{\log \left(re \cdot re + im \cdot im\right)}{\log base} \cdot \frac{1}{2}\\ \mathbf{else}:\\ \;\;\;\;\frac{\log im}{\log base}\\ \end{array}\]

Reproduce

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