Average Error: 31.9 → 18.0
Time: 7.7s
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 -2.42917404433079806 \cdot 10^{69}:\\ \;\;\;\;\left(\log \left(-1 \cdot re\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0\right) \cdot \frac{1}{\log base \cdot \log base + 0.0 \cdot 0.0}\\ \mathbf{elif}\;re \le 8.0839755213983261 \cdot 10^{121}:\\ \;\;\;\;\frac{1}{\sqrt{\left(\log base \cdot \left(2 \cdot \log \left(\sqrt[3]{base}\right)\right) + \log base \cdot \log \left(\sqrt[3]{base}\right)\right) + 0.0 \cdot 0.0}} \cdot \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}}\\ \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 -2.42917404433079806 \cdot 10^{69}:\\
\;\;\;\;\left(\log \left(-1 \cdot re\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0\right) \cdot \frac{1}{\log base \cdot \log base + 0.0 \cdot 0.0}\\

\mathbf{elif}\;re \le 8.0839755213983261 \cdot 10^{121}:\\
\;\;\;\;\frac{1}{\sqrt{\left(\log base \cdot \left(2 \cdot \log \left(\sqrt[3]{base}\right)\right) + \log base \cdot \log \left(\sqrt[3]{base}\right)\right) + 0.0 \cdot 0.0}} \cdot \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}}\\

\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 r41863 = re;
        double r41864 = r41863 * r41863;
        double r41865 = im;
        double r41866 = r41865 * r41865;
        double r41867 = r41864 + r41866;
        double r41868 = sqrt(r41867);
        double r41869 = log(r41868);
        double r41870 = base;
        double r41871 = log(r41870);
        double r41872 = r41869 * r41871;
        double r41873 = atan2(r41865, r41863);
        double r41874 = 0.0;
        double r41875 = r41873 * r41874;
        double r41876 = r41872 + r41875;
        double r41877 = r41871 * r41871;
        double r41878 = r41874 * r41874;
        double r41879 = r41877 + r41878;
        double r41880 = r41876 / r41879;
        return r41880;
}

double f(double re, double im, double base) {
        double r41881 = re;
        double r41882 = -2.429174044330798e+69;
        bool r41883 = r41881 <= r41882;
        double r41884 = -1.0;
        double r41885 = r41884 * r41881;
        double r41886 = log(r41885);
        double r41887 = base;
        double r41888 = log(r41887);
        double r41889 = r41886 * r41888;
        double r41890 = im;
        double r41891 = atan2(r41890, r41881);
        double r41892 = 0.0;
        double r41893 = r41891 * r41892;
        double r41894 = r41889 + r41893;
        double r41895 = 1.0;
        double r41896 = r41888 * r41888;
        double r41897 = r41892 * r41892;
        double r41898 = r41896 + r41897;
        double r41899 = r41895 / r41898;
        double r41900 = r41894 * r41899;
        double r41901 = 8.083975521398326e+121;
        bool r41902 = r41881 <= r41901;
        double r41903 = 2.0;
        double r41904 = cbrt(r41887);
        double r41905 = log(r41904);
        double r41906 = r41903 * r41905;
        double r41907 = r41888 * r41906;
        double r41908 = r41888 * r41905;
        double r41909 = r41907 + r41908;
        double r41910 = r41909 + r41897;
        double r41911 = sqrt(r41910);
        double r41912 = r41895 / r41911;
        double r41913 = r41881 * r41881;
        double r41914 = r41890 * r41890;
        double r41915 = r41913 + r41914;
        double r41916 = sqrt(r41915);
        double r41917 = log(r41916);
        double r41918 = r41917 * r41888;
        double r41919 = r41918 + r41893;
        double r41920 = sqrt(r41898);
        double r41921 = r41919 / r41920;
        double r41922 = r41912 * r41921;
        double r41923 = r41895 / r41881;
        double r41924 = log(r41923);
        double r41925 = r41895 / r41887;
        double r41926 = log(r41925);
        double r41927 = r41924 / r41926;
        double r41928 = r41902 ? r41922 : r41927;
        double r41929 = r41883 ? r41900 : r41928;
        return r41929;
}

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 < -2.429174044330798e+69

    1. Initial program 47.1

      \[\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 div-inv47.1

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

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

    if -2.429174044330798e+69 < re < 8.083975521398326e+121

    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 add-sqr-sqrt22.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}{\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 *-un-lft-identity22.3

      \[\leadsto \frac{\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)}}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0} \cdot \sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}}\]
    5. Applied times-frac22.3

      \[\leadsto \color{blue}{\frac{1}{\sqrt{\log base \cdot \log base + 0.0 \cdot 0.0}} \cdot \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}}}\]
    6. Using strategy rm
    7. Applied add-cube-cbrt22.3

      \[\leadsto \frac{1}{\sqrt{\log base \cdot \log \color{blue}{\left(\left(\sqrt[3]{base} \cdot \sqrt[3]{base}\right) \cdot \sqrt[3]{base}\right)} + 0.0 \cdot 0.0}} \cdot \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}}\]
    8. Applied log-prod22.3

      \[\leadsto \frac{1}{\sqrt{\log base \cdot \color{blue}{\left(\log \left(\sqrt[3]{base} \cdot \sqrt[3]{base}\right) + \log \left(\sqrt[3]{base}\right)\right)} + 0.0 \cdot 0.0}} \cdot \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}}\]
    9. Applied distribute-lft-in22.3

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

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

    if 8.083975521398326e+121 < re

    1. Initial program 55.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 8.1

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;re \le -2.42917404433079806 \cdot 10^{69}:\\ \;\;\;\;\left(\log \left(-1 \cdot re\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0\right) \cdot \frac{1}{\log base \cdot \log base + 0.0 \cdot 0.0}\\ \mathbf{elif}\;re \le 8.0839755213983261 \cdot 10^{121}:\\ \;\;\;\;\frac{1}{\sqrt{\left(\log base \cdot \left(2 \cdot \log \left(\sqrt[3]{base}\right)\right) + \log base \cdot \log \left(\sqrt[3]{base}\right)\right) + 0.0 \cdot 0.0}} \cdot \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}}\\ \mathbf{else}:\\ \;\;\;\;\frac{\log \left(\frac{1}{re}\right)}{\log \left(\frac{1}{base}\right)}\\ \end{array}\]

Reproduce

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