Average Error: 31.6 → 17.7
Time: 23.4s
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.477980765554152890668180029680723006559 \cdot 10^{121}:\\ \;\;\;\;\frac{-\log \left(\frac{-1}{re}\right)}{\log base}\\ \mathbf{elif}\;re \le 5.925540416458275309943000169806911367311 \cdot 10^{52}:\\ \;\;\;\;\frac{1}{\sqrt{{\left(\log base\right)}^{2} + 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{\sqrt[3]{{\left(\log base\right)}^{6}} + 0.0 \cdot 0.0}}\\ \mathbf{else}:\\ \;\;\;\;\frac{-\log re}{-\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.0}{\log base \cdot \log base + 0.0 \cdot 0.0}
\begin{array}{l}
\mathbf{if}\;re \le -1.477980765554152890668180029680723006559 \cdot 10^{121}:\\
\;\;\;\;\frac{-\log \left(\frac{-1}{re}\right)}{\log base}\\

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

\mathbf{else}:\\
\;\;\;\;\frac{-\log re}{-\log base}\\

\end{array}
double f(double re, double im, double base) {
        double r95191 = re;
        double r95192 = r95191 * r95191;
        double r95193 = im;
        double r95194 = r95193 * r95193;
        double r95195 = r95192 + r95194;
        double r95196 = sqrt(r95195);
        double r95197 = log(r95196);
        double r95198 = base;
        double r95199 = log(r95198);
        double r95200 = r95197 * r95199;
        double r95201 = atan2(r95193, r95191);
        double r95202 = 0.0;
        double r95203 = r95201 * r95202;
        double r95204 = r95200 + r95203;
        double r95205 = r95199 * r95199;
        double r95206 = r95202 * r95202;
        double r95207 = r95205 + r95206;
        double r95208 = r95204 / r95207;
        return r95208;
}

double f(double re, double im, double base) {
        double r95209 = re;
        double r95210 = -1.477980765554153e+121;
        bool r95211 = r95209 <= r95210;
        double r95212 = -1.0;
        double r95213 = r95212 / r95209;
        double r95214 = log(r95213);
        double r95215 = -r95214;
        double r95216 = base;
        double r95217 = log(r95216);
        double r95218 = r95215 / r95217;
        double r95219 = 5.925540416458275e+52;
        bool r95220 = r95209 <= r95219;
        double r95221 = 1.0;
        double r95222 = 2.0;
        double r95223 = pow(r95217, r95222);
        double r95224 = 0.0;
        double r95225 = r95224 * r95224;
        double r95226 = r95223 + r95225;
        double r95227 = sqrt(r95226);
        double r95228 = r95221 / r95227;
        double r95229 = r95209 * r95209;
        double r95230 = im;
        double r95231 = r95230 * r95230;
        double r95232 = r95229 + r95231;
        double r95233 = sqrt(r95232);
        double r95234 = log(r95233);
        double r95235 = r95234 * r95217;
        double r95236 = atan2(r95230, r95209);
        double r95237 = r95236 * r95224;
        double r95238 = r95235 + r95237;
        double r95239 = 6.0;
        double r95240 = pow(r95217, r95239);
        double r95241 = cbrt(r95240);
        double r95242 = r95241 + r95225;
        double r95243 = sqrt(r95242);
        double r95244 = r95238 / r95243;
        double r95245 = r95228 * r95244;
        double r95246 = log(r95209);
        double r95247 = -r95246;
        double r95248 = -r95217;
        double r95249 = r95247 / r95248;
        double r95250 = r95220 ? r95245 : r95249;
        double r95251 = r95211 ? r95218 : r95250;
        return r95251;
}

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.477980765554153e+121

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

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

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

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

      \[\leadsto \color{blue}{\frac{1}{\sqrt{{\left(\log base\right)}^{2} + 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}}\]
    7. Simplified55.4

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

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

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

    if -1.477980765554153e+121 < re < 5.925540416458275e+52

    1. Initial program 21.9

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

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

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

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

      \[\leadsto \color{blue}{\frac{1}{\sqrt{{\left(\log base\right)}^{2} + 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}}\]
    7. Simplified21.9

      \[\leadsto \frac{1}{\sqrt{{\left(\log base\right)}^{2} + 0.0 \cdot 0.0}} \cdot \color{blue}{\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0.0}{\sqrt{{\left(\log base\right)}^{2} + 0.0 \cdot 0.0}}}\]
    8. Using strategy rm
    9. Applied add-cbrt-cube22.0

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

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

    if 5.925540416458275e+52 < re

    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. Taylor expanded around inf 11.3

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

      \[\leadsto \color{blue}{\frac{-\log re}{-\log base}}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification17.7

    \[\leadsto \begin{array}{l} \mathbf{if}\;re \le -1.477980765554152890668180029680723006559 \cdot 10^{121}:\\ \;\;\;\;\frac{-\log \left(\frac{-1}{re}\right)}{\log base}\\ \mathbf{elif}\;re \le 5.925540416458275309943000169806911367311 \cdot 10^{52}:\\ \;\;\;\;\frac{1}{\sqrt{{\left(\log base\right)}^{2} + 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{\sqrt[3]{{\left(\log base\right)}^{6}} + 0.0 \cdot 0.0}}\\ \mathbf{else}:\\ \;\;\;\;\frac{-\log re}{-\log base}\\ \end{array}\]

Reproduce

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