Average Error: 31.9 → 17.7
Time: 7.6s
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 -1.22293834735768942 \cdot 10^{113}:\\ \;\;\;\;\frac{1}{\frac{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}{\log \left(-1 \cdot re\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}}\\ \mathbf{elif}\;re \le 1.34635749740004983 \cdot 10^{136}:\\ \;\;\;\;\frac{1}{\sqrt{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}} \cdot \frac{\sqrt{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}}{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \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 -1.22293834735768942 \cdot 10^{113}:\\
\;\;\;\;\frac{1}{\frac{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}{\log \left(-1 \cdot re\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}}\\

\mathbf{elif}\;re \le 1.34635749740004983 \cdot 10^{136}:\\
\;\;\;\;\frac{1}{\sqrt{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}} \cdot \frac{\sqrt{0.0 \cdot 0.0 + {\left(\log base\right)}^{2}}}{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \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 r44091 = re;
        double r44092 = r44091 * r44091;
        double r44093 = im;
        double r44094 = r44093 * r44093;
        double r44095 = r44092 + r44094;
        double r44096 = sqrt(r44095);
        double r44097 = log(r44096);
        double r44098 = base;
        double r44099 = log(r44098);
        double r44100 = r44097 * r44099;
        double r44101 = atan2(r44093, r44091);
        double r44102 = 0.0;
        double r44103 = r44101 * r44102;
        double r44104 = r44100 + r44103;
        double r44105 = r44099 * r44099;
        double r44106 = r44102 * r44102;
        double r44107 = r44105 + r44106;
        double r44108 = r44104 / r44107;
        return r44108;
}

double f(double re, double im, double base) {
        double r44109 = re;
        double r44110 = -1.2229383473576894e+113;
        bool r44111 = r44109 <= r44110;
        double r44112 = 1.0;
        double r44113 = 0.0;
        double r44114 = r44113 * r44113;
        double r44115 = base;
        double r44116 = log(r44115);
        double r44117 = 2.0;
        double r44118 = pow(r44116, r44117);
        double r44119 = r44114 + r44118;
        double r44120 = -1.0;
        double r44121 = r44120 * r44109;
        double r44122 = log(r44121);
        double r44123 = r44122 * r44116;
        double r44124 = im;
        double r44125 = atan2(r44124, r44109);
        double r44126 = r44125 * r44113;
        double r44127 = r44123 + r44126;
        double r44128 = r44119 / r44127;
        double r44129 = r44112 / r44128;
        double r44130 = 1.3463574974000498e+136;
        bool r44131 = r44109 <= r44130;
        double r44132 = sqrt(r44119);
        double r44133 = r44109 * r44109;
        double r44134 = r44124 * r44124;
        double r44135 = r44133 + r44134;
        double r44136 = sqrt(r44135);
        double r44137 = log(r44136);
        double r44138 = r44137 * r44116;
        double r44139 = r44138 + r44126;
        double r44140 = r44132 / r44139;
        double r44141 = r44132 * r44140;
        double r44142 = r44112 / r44141;
        double r44143 = r44112 / r44109;
        double r44144 = log(r44143);
        double r44145 = r44112 / r44115;
        double r44146 = log(r44145);
        double r44147 = r44144 / r44146;
        double r44148 = r44131 ? r44142 : r44147;
        double r44149 = r44111 ? r44129 : r44148;
        return r44149;
}

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 < -1.2229383473576894e+113

    1. Initial program 53.8

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

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

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

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

    if -1.2229383473576894e+113 < re < 1.3463574974000498e+136

    1. Initial program 21.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 clear-num21.7

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

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

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

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

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

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

    if 1.3463574974000498e+136 < re

    1. Initial program 59.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 inf 7.0

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

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

Reproduce

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