\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\log 10}\begin{array}{l}
\mathbf{if}\;re \le -2.8015950926867568 \cdot 10^{144}:\\
\;\;\;\;\frac{1}{\sqrt{\log 10}} \cdot \log \left({\left(-re\right)}^{\left(\frac{1}{\sqrt{\log 10}}\right)}\right)\\
\mathbf{elif}\;re \le -2.603232334857776 \cdot 10^{-212}:\\
\;\;\;\;\log \left({\left(\sqrt{re \cdot re + im \cdot im}\right)}^{\left(\frac{1}{\sqrt{\log 10}}\right)}\right) \cdot \frac{1}{\sqrt{\log 10}}\\
\mathbf{elif}\;re \le -6.08456462896641645 \cdot 10^{-228}:\\
\;\;\;\;-\frac{\log \left(\frac{-1}{re}\right)}{\log 10}\\
\mathbf{elif}\;re \le 4.4853367152010175 \cdot 10^{105}:\\
\;\;\;\;\log \left({\left(\sqrt{re \cdot re + im \cdot im}\right)}^{\left(\frac{1}{\sqrt{\log 10}}\right)}\right) \cdot \frac{1}{\sqrt{\log 10}}\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{\sqrt{\log 10}} \cdot \log \left({re}^{\left(\frac{1}{\sqrt{\log 10}}\right)}\right)\\
\end{array}double f(double re, double im) {
double r47648 = re;
double r47649 = r47648 * r47648;
double r47650 = im;
double r47651 = r47650 * r47650;
double r47652 = r47649 + r47651;
double r47653 = sqrt(r47652);
double r47654 = log(r47653);
double r47655 = 10.0;
double r47656 = log(r47655);
double r47657 = r47654 / r47656;
return r47657;
}
double f(double re, double im) {
double r47658 = re;
double r47659 = -2.8015950926867568e+144;
bool r47660 = r47658 <= r47659;
double r47661 = 1.0;
double r47662 = 10.0;
double r47663 = log(r47662);
double r47664 = sqrt(r47663);
double r47665 = r47661 / r47664;
double r47666 = -r47658;
double r47667 = pow(r47666, r47665);
double r47668 = log(r47667);
double r47669 = r47665 * r47668;
double r47670 = -2.6032323348577763e-212;
bool r47671 = r47658 <= r47670;
double r47672 = r47658 * r47658;
double r47673 = im;
double r47674 = r47673 * r47673;
double r47675 = r47672 + r47674;
double r47676 = sqrt(r47675);
double r47677 = pow(r47676, r47665);
double r47678 = log(r47677);
double r47679 = r47678 * r47665;
double r47680 = -6.084564628966416e-228;
bool r47681 = r47658 <= r47680;
double r47682 = -1.0;
double r47683 = r47682 / r47658;
double r47684 = log(r47683);
double r47685 = r47684 / r47663;
double r47686 = -r47685;
double r47687 = 4.4853367152010175e+105;
bool r47688 = r47658 <= r47687;
double r47689 = pow(r47658, r47665);
double r47690 = log(r47689);
double r47691 = r47665 * r47690;
double r47692 = r47688 ? r47679 : r47691;
double r47693 = r47681 ? r47686 : r47692;
double r47694 = r47671 ? r47679 : r47693;
double r47695 = r47660 ? r47669 : r47694;
return r47695;
}



Bits error versus re



Bits error versus im
Results
if re < -2.8015950926867568e+144Initial program 60.9
rmApplied add-sqr-sqrt60.9
Applied pow160.9
Applied log-pow60.9
Applied times-frac60.9
rmApplied div-inv60.9
rmApplied add-log-exp60.9
Simplified60.9
Taylor expanded around -inf 6.9
Simplified6.9
if -2.8015950926867568e+144 < re < -2.6032323348577763e-212 or -6.084564628966416e-228 < re < 4.4853367152010175e+105Initial program 21.3
rmApplied add-sqr-sqrt21.3
Applied pow121.3
Applied log-pow21.3
Applied times-frac21.3
rmApplied div-inv21.1
rmApplied add-log-exp21.1
Simplified21.1
rmApplied *-un-lft-identity21.1
if -2.6032323348577763e-212 < re < -6.084564628966416e-228Initial program 31.4
Taylor expanded around -inf 49.3
Simplified49.3
if 4.4853367152010175e+105 < re Initial program 51.3
rmApplied add-sqr-sqrt51.3
Applied pow151.3
Applied log-pow51.3
Applied times-frac51.3
rmApplied div-inv51.3
rmApplied add-log-exp51.3
Simplified51.3
Taylor expanded around inf 8.2
Final simplification17.6
herbie shell --seed 2020045
(FPCore (re im)
:name "math.log10 on complex, real part"
:precision binary64
(/ (log (sqrt (+ (* re re) (* im im)))) (log 10)))