\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\log 10}\begin{array}{l}
\mathbf{if}\;re \le -1.156407601863717509012505141513837828653 \cdot 10^{112}:\\
\;\;\;\;\left(\frac{1}{\sqrt{\log 10}} \cdot \left(-2 \cdot \log \left(\frac{-1}{re}\right)\right)\right) \cdot \left(\frac{1}{\sqrt{\log 10}} \cdot \frac{1}{2}\right)\\
\mathbf{elif}\;re \le 1.244988213884062755522549209945596691708 \cdot 10^{138}:\\
\;\;\;\;\left(\frac{1}{\sqrt{\log 10}} \cdot \frac{1}{2}\right) \cdot \left(\frac{1}{\sqrt{\log 10}} \cdot \log \left(re \cdot re + im \cdot im\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\sqrt{\frac{1}{\log 10}} \cdot \left(\log re \cdot 2\right)\right) \cdot \left(\frac{1}{\sqrt{\log 10}} \cdot \frac{1}{2}\right)\\
\end{array}double f(double re, double im) {
double r33372 = re;
double r33373 = r33372 * r33372;
double r33374 = im;
double r33375 = r33374 * r33374;
double r33376 = r33373 + r33375;
double r33377 = sqrt(r33376);
double r33378 = log(r33377);
double r33379 = 10.0;
double r33380 = log(r33379);
double r33381 = r33378 / r33380;
return r33381;
}
double f(double re, double im) {
double r33382 = re;
double r33383 = -1.1564076018637175e+112;
bool r33384 = r33382 <= r33383;
double r33385 = 1.0;
double r33386 = 10.0;
double r33387 = log(r33386);
double r33388 = sqrt(r33387);
double r33389 = r33385 / r33388;
double r33390 = -2.0;
double r33391 = -1.0;
double r33392 = r33391 / r33382;
double r33393 = log(r33392);
double r33394 = r33390 * r33393;
double r33395 = r33389 * r33394;
double r33396 = 0.5;
double r33397 = r33389 * r33396;
double r33398 = r33395 * r33397;
double r33399 = 1.2449882138840628e+138;
bool r33400 = r33382 <= r33399;
double r33401 = r33382 * r33382;
double r33402 = im;
double r33403 = r33402 * r33402;
double r33404 = r33401 + r33403;
double r33405 = log(r33404);
double r33406 = r33389 * r33405;
double r33407 = r33397 * r33406;
double r33408 = r33385 / r33387;
double r33409 = sqrt(r33408);
double r33410 = log(r33382);
double r33411 = 2.0;
double r33412 = r33410 * r33411;
double r33413 = r33409 * r33412;
double r33414 = r33413 * r33397;
double r33415 = r33400 ? r33407 : r33414;
double r33416 = r33384 ? r33398 : r33415;
return r33416;
}



Bits error versus re



Bits error versus im
Results
if re < -1.1564076018637175e+112Initial program 52.8
rmApplied clear-num52.8
rmApplied pow1/252.8
Applied log-pow52.8
Applied add-sqr-sqrt52.8
Applied times-frac52.9
Applied add-cube-cbrt52.9
Applied times-frac52.9
Simplified52.9
Simplified52.8
Taylor expanded around -inf 8.4
if -1.1564076018637175e+112 < re < 1.2449882138840628e+138Initial program 22.1
rmApplied clear-num22.1
rmApplied pow1/222.1
Applied log-pow22.1
Applied add-sqr-sqrt22.1
Applied times-frac22.2
Applied add-cube-cbrt22.2
Applied times-frac22.1
Simplified22.1
Simplified21.9
if 1.2449882138840628e+138 < re Initial program 58.8
rmApplied clear-num58.8
rmApplied pow1/258.8
Applied log-pow58.8
Applied add-sqr-sqrt58.8
Applied times-frac58.8
Applied add-cube-cbrt58.8
Applied times-frac58.8
Simplified58.8
Simplified58.8
rmApplied add-cube-cbrt58.8
Applied log-prod58.8
Simplified58.8
Taylor expanded around inf 8.1
Simplified7.9
Final simplification17.8
herbie shell --seed 2019323
(FPCore (re im)
:name "math.log10 on complex, real part"
:precision binary64
(/ (log (sqrt (+ (* re re) (* im im)))) (log 10)))