Average Error: 32.0 → 17.9
Time: 8.0s
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.151888904100587124379023402396569343398 \cdot 10^{58}:\\ \;\;\;\;\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 9.450669110711002207218388065050424546591 \cdot 10^{-302}:\\ \;\;\;\;\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\left(-{0.0}^{3}\right) \cdot 0.0 + {\left(\log base\right)}^{4}} \cdot \left(\log base \cdot \log base - 0.0 \cdot 0.0\right)\\ \mathbf{elif}\;re \le 6.665470315389402134305579687920046870896 \cdot 10^{-268}:\\ \;\;\;\;\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 5.168286053687553277469579473627394075561 \cdot 10^{91}:\\ \;\;\;\;\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\left(-{0.0}^{3}\right) \cdot 0.0 + {\left(\log base\right)}^{4}} \cdot \left(\log base \cdot \log base - 0.0 \cdot 0.0\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{\log \left(\frac{1}{re}\right) \cdot \log \left(\frac{1}{base}\right) + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\log base \cdot \log base + 0.0 \cdot 0.0}\\ \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.151888904100587124379023402396569343398 \cdot 10^{58}:\\
\;\;\;\;\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 9.450669110711002207218388065050424546591 \cdot 10^{-302}:\\
\;\;\;\;\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\left(-{0.0}^{3}\right) \cdot 0.0 + {\left(\log base\right)}^{4}} \cdot \left(\log base \cdot \log base - 0.0 \cdot 0.0\right)\\

\mathbf{elif}\;re \le 6.665470315389402134305579687920046870896 \cdot 10^{-268}:\\
\;\;\;\;\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 5.168286053687553277469579473627394075561 \cdot 10^{91}:\\
\;\;\;\;\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\left(-{0.0}^{3}\right) \cdot 0.0 + {\left(\log base\right)}^{4}} \cdot \left(\log base \cdot \log base - 0.0 \cdot 0.0\right)\\

\mathbf{else}:\\
\;\;\;\;\frac{\log \left(\frac{1}{re}\right) \cdot \log \left(\frac{1}{base}\right) + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\log base \cdot \log base + 0.0 \cdot 0.0}\\

\end{array}
double f(double re, double im, double base) {
        double r43058 = re;
        double r43059 = r43058 * r43058;
        double r43060 = im;
        double r43061 = r43060 * r43060;
        double r43062 = r43059 + r43061;
        double r43063 = sqrt(r43062);
        double r43064 = log(r43063);
        double r43065 = base;
        double r43066 = log(r43065);
        double r43067 = r43064 * r43066;
        double r43068 = atan2(r43060, r43058);
        double r43069 = 0.0;
        double r43070 = r43068 * r43069;
        double r43071 = r43067 + r43070;
        double r43072 = r43066 * r43066;
        double r43073 = r43069 * r43069;
        double r43074 = r43072 + r43073;
        double r43075 = r43071 / r43074;
        return r43075;
}

double f(double re, double im, double base) {
        double r43076 = re;
        double r43077 = -1.1518889041005871e+58;
        bool r43078 = r43076 <= r43077;
        double r43079 = -1.0;
        double r43080 = r43079 / r43076;
        double r43081 = log(r43080);
        double r43082 = r43079 * r43081;
        double r43083 = base;
        double r43084 = log(r43083);
        double r43085 = r43082 * r43084;
        double r43086 = im;
        double r43087 = atan2(r43086, r43076);
        double r43088 = 0.0;
        double r43089 = r43087 * r43088;
        double r43090 = r43085 + r43089;
        double r43091 = r43084 * r43084;
        double r43092 = r43088 * r43088;
        double r43093 = r43091 + r43092;
        double r43094 = sqrt(r43093);
        double r43095 = r43090 / r43094;
        double r43096 = r43095 / r43094;
        double r43097 = 9.450669110711002e-302;
        bool r43098 = r43076 <= r43097;
        double r43099 = r43076 * r43076;
        double r43100 = r43086 * r43086;
        double r43101 = r43099 + r43100;
        double r43102 = sqrt(r43101);
        double r43103 = log(r43102);
        double r43104 = r43103 * r43084;
        double r43105 = r43104 + r43089;
        double r43106 = 3.0;
        double r43107 = pow(r43088, r43106);
        double r43108 = -r43107;
        double r43109 = r43108 * r43088;
        double r43110 = 4.0;
        double r43111 = pow(r43084, r43110);
        double r43112 = r43109 + r43111;
        double r43113 = r43105 / r43112;
        double r43114 = r43091 - r43092;
        double r43115 = r43113 * r43114;
        double r43116 = 6.665470315389402e-268;
        bool r43117 = r43076 <= r43116;
        double r43118 = log(r43086);
        double r43119 = r43118 * r43084;
        double r43120 = r43119 + r43089;
        double r43121 = r43120 / r43093;
        double r43122 = 5.168286053687553e+91;
        bool r43123 = r43076 <= r43122;
        double r43124 = 1.0;
        double r43125 = r43124 / r43076;
        double r43126 = log(r43125);
        double r43127 = r43124 / r43083;
        double r43128 = log(r43127);
        double r43129 = r43126 * r43128;
        double r43130 = r43129 + r43089;
        double r43131 = r43130 / r43093;
        double r43132 = r43123 ? r43115 : r43131;
        double r43133 = r43117 ? r43121 : r43132;
        double r43134 = r43098 ? r43115 : r43133;
        double r43135 = r43078 ? r43096 : r43134;
        return r43135;
}

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 < -1.1518889041005871e+58

    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. Using strategy rm
    3. Applied add-sqr-sqrt45.0

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

      \[\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. Simplified10.4

      \[\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 -1.1518889041005871e+58 < re < 9.450669110711002e-302 or 6.665470315389402e-268 < re < 5.168286053687553e+91

    1. Initial program 22.3

      \[\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-+22.3

      \[\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}{\frac{\left(\log base \cdot \log base\right) \cdot \left(\log base \cdot \log base\right) - \left(0.0 \cdot 0.0\right) \cdot \left(0.0 \cdot 0.0\right)}{\log base \cdot \log base - 0.0 \cdot 0.0}}}\]
    4. Applied associate-/r/22.3

      \[\leadsto \color{blue}{\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 \log base\right) \cdot \left(\log base \cdot \log base\right) - \left(0.0 \cdot 0.0\right) \cdot \left(0.0 \cdot 0.0\right)} \cdot \left(\log base \cdot \log base - 0.0 \cdot 0.0\right)}\]
    5. Simplified22.3

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

    if 9.450669110711002e-302 < re < 6.665470315389402e-268

    1. Initial program 30.3

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

      \[\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 5.168286053687553e+91 < re

    1. Initial program 49.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 9.4

      \[\leadsto \frac{\color{blue}{\log \left(\frac{1}{re}\right) \cdot \log \left(\frac{1}{base}\right)} + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\log base \cdot \log base + 0.0 \cdot 0.0}\]
  3. Recombined 4 regimes into one program.
  4. Final simplification17.9

    \[\leadsto \begin{array}{l} \mathbf{if}\;re \le -1.151888904100587124379023402396569343398 \cdot 10^{58}:\\ \;\;\;\;\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 9.450669110711002207218388065050424546591 \cdot 10^{-302}:\\ \;\;\;\;\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\left(-{0.0}^{3}\right) \cdot 0.0 + {\left(\log base\right)}^{4}} \cdot \left(\log base \cdot \log base - 0.0 \cdot 0.0\right)\\ \mathbf{elif}\;re \le 6.665470315389402134305579687920046870896 \cdot 10^{-268}:\\ \;\;\;\;\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 5.168286053687553277469579473627394075561 \cdot 10^{91}:\\ \;\;\;\;\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\left(-{0.0}^{3}\right) \cdot 0.0 + {\left(\log base\right)}^{4}} \cdot \left(\log base \cdot \log base - 0.0 \cdot 0.0\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{\log \left(\frac{1}{re}\right) \cdot \log \left(\frac{1}{base}\right) + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\log base \cdot \log base + 0.0 \cdot 0.0}\\ \end{array}\]

Reproduce

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