Average Error: 31.8 → 17.2
Time: 12.2s
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 -9.5072677535921829 \cdot 10^{141}:\\ \;\;\;\;\frac{\log \left(-re\right) \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 1.9789961358533681 \cdot 10^{145}:\\ \;\;\;\;\frac{1}{\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}}\\ \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 -9.5072677535921829 \cdot 10^{141}:\\
\;\;\;\;\frac{\log \left(-re\right) \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 1.9789961358533681 \cdot 10^{145}:\\
\;\;\;\;\frac{1}{\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}}\\

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

\end{array}
double f(double re, double im, double base) {
        double r44298 = re;
        double r44299 = r44298 * r44298;
        double r44300 = im;
        double r44301 = r44300 * r44300;
        double r44302 = r44299 + r44301;
        double r44303 = sqrt(r44302);
        double r44304 = log(r44303);
        double r44305 = base;
        double r44306 = log(r44305);
        double r44307 = r44304 * r44306;
        double r44308 = atan2(r44300, r44298);
        double r44309 = 0.0;
        double r44310 = r44308 * r44309;
        double r44311 = r44307 + r44310;
        double r44312 = r44306 * r44306;
        double r44313 = r44309 * r44309;
        double r44314 = r44312 + r44313;
        double r44315 = r44311 / r44314;
        return r44315;
}

double f(double re, double im, double base) {
        double r44316 = re;
        double r44317 = -9.507267753592183e+141;
        bool r44318 = r44316 <= r44317;
        double r44319 = -r44316;
        double r44320 = log(r44319);
        double r44321 = base;
        double r44322 = log(r44321);
        double r44323 = r44320 * r44322;
        double r44324 = im;
        double r44325 = atan2(r44324, r44316);
        double r44326 = 0.0;
        double r44327 = r44325 * r44326;
        double r44328 = r44323 + r44327;
        double r44329 = r44322 * r44322;
        double r44330 = r44326 * r44326;
        double r44331 = r44329 + r44330;
        double r44332 = r44328 / r44331;
        double r44333 = 1.978996135853368e+145;
        bool r44334 = r44316 <= r44333;
        double r44335 = 1.0;
        double r44336 = 2.0;
        double r44337 = pow(r44322, r44336);
        double r44338 = r44330 + r44337;
        double r44339 = r44316 * r44316;
        double r44340 = r44324 * r44324;
        double r44341 = r44339 + r44340;
        double r44342 = sqrt(r44341);
        double r44343 = log(r44342);
        double r44344 = r44343 * r44322;
        double r44345 = r44344 + r44327;
        double r44346 = r44338 / r44345;
        double r44347 = r44335 / r44346;
        double r44348 = log(r44316);
        double r44349 = -r44348;
        double r44350 = -r44322;
        double r44351 = r44349 / r44350;
        double r44352 = r44334 ? r44347 : r44351;
        double r44353 = r44318 ? r44332 : r44352;
        return r44353;
}

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 < -9.507267753592183e+141

    1. Initial program 60.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 7.1

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

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

    if -9.507267753592183e+141 < re < 1.978996135853368e+145

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

      \[\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}}}\]

    if 1.978996135853368e+145 < re

    1. Initial program 61.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 7.3

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;re \le -9.5072677535921829 \cdot 10^{141}:\\ \;\;\;\;\frac{\log \left(-re\right) \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 1.9789961358533681 \cdot 10^{145}:\\ \;\;\;\;\frac{1}{\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}}\\ \mathbf{else}:\\ \;\;\;\;\frac{-\log re}{-\log base}\\ \end{array}\]

Reproduce

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