Average Error: 31.7 → 17.3
Time: 24.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 -7.372567035776090427164126120743111128469 \cdot 10^{124}:\\ \;\;\;\;\frac{-\log \left(\frac{-1}{re}\right)}{\log base}\\ \mathbf{elif}\;re \le 5.828695856258045788380832205806950804563 \cdot 10^{93}:\\ \;\;\;\;\frac{1}{\frac{{\left(\log base\right)}^{2} + 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}}\\ \mathbf{else}:\\ \;\;\;\;\frac{1}{\frac{-\log base}{-\log re}}\\ \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 -7.372567035776090427164126120743111128469 \cdot 10^{124}:\\
\;\;\;\;\frac{-\log \left(\frac{-1}{re}\right)}{\log base}\\

\mathbf{elif}\;re \le 5.828695856258045788380832205806950804563 \cdot 10^{93}:\\
\;\;\;\;\frac{1}{\frac{{\left(\log base\right)}^{2} + 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}}\\

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

\end{array}
double f(double re, double im, double base) {
        double r97227 = re;
        double r97228 = r97227 * r97227;
        double r97229 = im;
        double r97230 = r97229 * r97229;
        double r97231 = r97228 + r97230;
        double r97232 = sqrt(r97231);
        double r97233 = log(r97232);
        double r97234 = base;
        double r97235 = log(r97234);
        double r97236 = r97233 * r97235;
        double r97237 = atan2(r97229, r97227);
        double r97238 = 0.0;
        double r97239 = r97237 * r97238;
        double r97240 = r97236 + r97239;
        double r97241 = r97235 * r97235;
        double r97242 = r97238 * r97238;
        double r97243 = r97241 + r97242;
        double r97244 = r97240 / r97243;
        return r97244;
}

double f(double re, double im, double base) {
        double r97245 = re;
        double r97246 = -7.37256703577609e+124;
        bool r97247 = r97245 <= r97246;
        double r97248 = -1.0;
        double r97249 = r97248 / r97245;
        double r97250 = log(r97249);
        double r97251 = -r97250;
        double r97252 = base;
        double r97253 = log(r97252);
        double r97254 = r97251 / r97253;
        double r97255 = 5.828695856258046e+93;
        bool r97256 = r97245 <= r97255;
        double r97257 = 1.0;
        double r97258 = 2.0;
        double r97259 = pow(r97253, r97258);
        double r97260 = 0.0;
        double r97261 = r97260 * r97260;
        double r97262 = r97259 + r97261;
        double r97263 = r97245 * r97245;
        double r97264 = im;
        double r97265 = r97264 * r97264;
        double r97266 = r97263 + r97265;
        double r97267 = sqrt(r97266);
        double r97268 = log(r97267);
        double r97269 = r97268 * r97253;
        double r97270 = atan2(r97264, r97245);
        double r97271 = r97270 * r97260;
        double r97272 = r97269 + r97271;
        double r97273 = r97262 / r97272;
        double r97274 = r97257 / r97273;
        double r97275 = -r97253;
        double r97276 = log(r97245);
        double r97277 = -r97276;
        double r97278 = r97275 / r97277;
        double r97279 = r97257 / r97278;
        double r97280 = r97256 ? r97274 : r97279;
        double r97281 = r97247 ? r97254 : r97280;
        return r97281;
}

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 < -7.37256703577609e+124

    1. Initial program 56.6

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

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

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

    if -7.37256703577609e+124 < re < 5.828695856258046e+93

    1. Initial program 21.6

      \[\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.6

      \[\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.6

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

    if 5.828695856258046e+93 < re

    1. Initial program 50.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 clear-num50.0

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

      \[\leadsto \frac{1}{\color{blue}{\frac{{\left(\log base\right)}^{2} + 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}}}\]
    5. Taylor expanded around inf 9.0

      \[\leadsto \frac{1}{\color{blue}{\frac{\log \left(\frac{1}{base}\right)}{\log \left(\frac{1}{re}\right)}}}\]
    6. Simplified9.0

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;re \le -7.372567035776090427164126120743111128469 \cdot 10^{124}:\\ \;\;\;\;\frac{-\log \left(\frac{-1}{re}\right)}{\log base}\\ \mathbf{elif}\;re \le 5.828695856258045788380832205806950804563 \cdot 10^{93}:\\ \;\;\;\;\frac{1}{\frac{{\left(\log base\right)}^{2} + 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}}\\ \mathbf{else}:\\ \;\;\;\;\frac{1}{\frac{-\log base}{-\log re}}\\ \end{array}\]

Reproduce

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