Average Error: 31.1 → 19.3
Time: 1.3m
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 -2.3057006723590237 \cdot 10^{+36}:\\ \;\;\;\;\log \left(\frac{-1}{re}\right) \cdot \frac{-1}{\log base}\\ \mathbf{elif}\;re \le -9.067057945334835 \cdot 10^{-44}:\\ \;\;\;\;\frac{\log base \cdot \log \left(\sqrt{im \cdot im + re \cdot re}\right)}{\left(\log base \cdot \log \left(\sqrt[3]{base}\right) + \log base \cdot \log \left(\sqrt[3]{base}\right)\right) + \log base \cdot \log \left(\sqrt[3]{base}\right)}\\ \mathbf{elif}\;re \le -9.011225477962846 \cdot 10^{-70}:\\ \;\;\;\;\frac{\log im}{\log base}\\ \mathbf{elif}\;re \le -1.4793624276825383 \cdot 10^{-232}:\\ \;\;\;\;\frac{\log base \cdot \log \left(\sqrt{\sqrt[3]{im \cdot im + re \cdot re}} \cdot \left|\sqrt[3]{im \cdot im + re \cdot re}\right|\right)}{\log base \cdot \log base}\\ \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}\;re \le -2.3057006723590237 \cdot 10^{+36}:\\
\;\;\;\;\log \left(\frac{-1}{re}\right) \cdot \frac{-1}{\log base}\\

\mathbf{elif}\;re \le -9.067057945334835 \cdot 10^{-44}:\\
\;\;\;\;\frac{\log base \cdot \log \left(\sqrt{im \cdot im + re \cdot re}\right)}{\left(\log base \cdot \log \left(\sqrt[3]{base}\right) + \log base \cdot \log \left(\sqrt[3]{base}\right)\right) + \log base \cdot \log \left(\sqrt[3]{base}\right)}\\

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

\mathbf{elif}\;re \le -1.4793624276825383 \cdot 10^{-232}:\\
\;\;\;\;\frac{\log base \cdot \log \left(\sqrt{\sqrt[3]{im \cdot im + re \cdot re}} \cdot \left|\sqrt[3]{im \cdot im + re \cdot re}\right|\right)}{\log base \cdot \log base}\\

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

\end{array}
double f(double re, double im, double base) {
        double r3750176 = re;
        double r3750177 = r3750176 * r3750176;
        double r3750178 = im;
        double r3750179 = r3750178 * r3750178;
        double r3750180 = r3750177 + r3750179;
        double r3750181 = sqrt(r3750180);
        double r3750182 = log(r3750181);
        double r3750183 = base;
        double r3750184 = log(r3750183);
        double r3750185 = r3750182 * r3750184;
        double r3750186 = atan2(r3750178, r3750176);
        double r3750187 = 0.0;
        double r3750188 = r3750186 * r3750187;
        double r3750189 = r3750185 + r3750188;
        double r3750190 = r3750184 * r3750184;
        double r3750191 = r3750187 * r3750187;
        double r3750192 = r3750190 + r3750191;
        double r3750193 = r3750189 / r3750192;
        return r3750193;
}

double f(double re, double im, double base) {
        double r3750194 = re;
        double r3750195 = -2.3057006723590237e+36;
        bool r3750196 = r3750194 <= r3750195;
        double r3750197 = -1.0;
        double r3750198 = r3750197 / r3750194;
        double r3750199 = log(r3750198);
        double r3750200 = base;
        double r3750201 = log(r3750200);
        double r3750202 = r3750197 / r3750201;
        double r3750203 = r3750199 * r3750202;
        double r3750204 = -9.067057945334835e-44;
        bool r3750205 = r3750194 <= r3750204;
        double r3750206 = im;
        double r3750207 = r3750206 * r3750206;
        double r3750208 = r3750194 * r3750194;
        double r3750209 = r3750207 + r3750208;
        double r3750210 = sqrt(r3750209);
        double r3750211 = log(r3750210);
        double r3750212 = r3750201 * r3750211;
        double r3750213 = cbrt(r3750200);
        double r3750214 = log(r3750213);
        double r3750215 = r3750201 * r3750214;
        double r3750216 = r3750215 + r3750215;
        double r3750217 = r3750216 + r3750215;
        double r3750218 = r3750212 / r3750217;
        double r3750219 = -9.011225477962846e-70;
        bool r3750220 = r3750194 <= r3750219;
        double r3750221 = log(r3750206);
        double r3750222 = r3750221 / r3750201;
        double r3750223 = -1.4793624276825383e-232;
        bool r3750224 = r3750194 <= r3750223;
        double r3750225 = cbrt(r3750209);
        double r3750226 = sqrt(r3750225);
        double r3750227 = fabs(r3750225);
        double r3750228 = r3750226 * r3750227;
        double r3750229 = log(r3750228);
        double r3750230 = r3750201 * r3750229;
        double r3750231 = r3750201 * r3750201;
        double r3750232 = r3750230 / r3750231;
        double r3750233 = r3750224 ? r3750232 : r3750222;
        double r3750234 = r3750220 ? r3750222 : r3750233;
        double r3750235 = r3750205 ? r3750218 : r3750234;
        double r3750236 = r3750196 ? r3750203 : r3750235;
        return r3750236;
}

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 < -2.3057006723590237e+36

    1. Initial program 42.8

      \[\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. Simplified42.8

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

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

      \[\leadsto \frac{\log \color{blue}{\left(-re\right)} \cdot \log base}{\log base \cdot \log base}\]
    5. Taylor expanded around -inf 62.8

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

      \[\leadsto \color{blue}{-\frac{\log \left(\frac{-1}{re}\right)}{\log base}}\]
    7. Using strategy rm
    8. Applied div-inv11.7

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

    if -2.3057006723590237e+36 < re < -9.067057945334835e-44

    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}{\log base \cdot \log base + 0 \cdot 0}\]
    2. Simplified15.5

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

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

      \[\leadsto \frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base}{\log base \cdot \color{blue}{\left(\log \left(\sqrt[3]{base} \cdot \sqrt[3]{base}\right) + \log \left(\sqrt[3]{base}\right)\right)}}\]
    6. Applied distribute-lft-in15.5

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

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

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

    if -9.067057945334835e-44 < re < -9.011225477962846e-70 or -1.4793624276825383e-232 < re

    1. Initial program 26.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. Simplified26.3

      \[\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 0 35.7

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

    if -9.011225477962846e-70 < re < -1.4793624276825383e-232

    1. Initial program 23.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. Simplified23.4

      \[\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 add-cube-cbrt23.4

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;re \le -2.3057006723590237 \cdot 10^{+36}:\\ \;\;\;\;\log \left(\frac{-1}{re}\right) \cdot \frac{-1}{\log base}\\ \mathbf{elif}\;re \le -9.067057945334835 \cdot 10^{-44}:\\ \;\;\;\;\frac{\log base \cdot \log \left(\sqrt{im \cdot im + re \cdot re}\right)}{\left(\log base \cdot \log \left(\sqrt[3]{base}\right) + \log base \cdot \log \left(\sqrt[3]{base}\right)\right) + \log base \cdot \log \left(\sqrt[3]{base}\right)}\\ \mathbf{elif}\;re \le -9.011225477962846 \cdot 10^{-70}:\\ \;\;\;\;\frac{\log im}{\log base}\\ \mathbf{elif}\;re \le -1.4793624276825383 \cdot 10^{-232}:\\ \;\;\;\;\frac{\log base \cdot \log \left(\sqrt{\sqrt[3]{im \cdot im + re \cdot re}} \cdot \left|\sqrt[3]{im \cdot im + re \cdot re}\right|\right)}{\log base \cdot \log base}\\ \mathbf{else}:\\ \;\;\;\;\frac{\log im}{\log base}\\ \end{array}\]

Reproduce

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