\log \left(\sqrt{re \cdot re + im \cdot im}\right)\begin{array}{l}
\mathbf{if}\;re \le -1.372592495718595623920592719897374473902 \cdot 10^{113}:\\
\;\;\;\;\log \left(-re\right)\\
\mathbf{elif}\;re \le -7.06955799813848965953437685478940011158 \cdot 10^{-161}:\\
\;\;\;\;\log \left(\sqrt{re \cdot re + im \cdot im}\right)\\
\mathbf{elif}\;re \le -1.431461504135939896602399948892459534259 \cdot 10^{-195}:\\
\;\;\;\;\log im\\
\mathbf{elif}\;re \le 9.191375807531116648978439416248974272723 \cdot 10^{-301}:\\
\;\;\;\;\log \left(\sqrt{re \cdot re + im \cdot im}\right)\\
\mathbf{elif}\;re \le 1.840587879824181703247471062292834004248 \cdot 10^{-175}:\\
\;\;\;\;\log im\\
\mathbf{elif}\;re \le 6.594840577856811645577684374093823157435 \cdot 10^{73}:\\
\;\;\;\;\log \left(\sqrt{re \cdot re + im \cdot im}\right)\\
\mathbf{else}:\\
\;\;\;\;\log re\\
\end{array}double f(double re, double im) {
double r95757 = re;
double r95758 = r95757 * r95757;
double r95759 = im;
double r95760 = r95759 * r95759;
double r95761 = r95758 + r95760;
double r95762 = sqrt(r95761);
double r95763 = log(r95762);
return r95763;
}
double f(double re, double im) {
double r95764 = re;
double r95765 = -1.3725924957185956e+113;
bool r95766 = r95764 <= r95765;
double r95767 = -r95764;
double r95768 = log(r95767);
double r95769 = -7.06955799813849e-161;
bool r95770 = r95764 <= r95769;
double r95771 = r95764 * r95764;
double r95772 = im;
double r95773 = r95772 * r95772;
double r95774 = r95771 + r95773;
double r95775 = sqrt(r95774);
double r95776 = log(r95775);
double r95777 = -1.4314615041359399e-195;
bool r95778 = r95764 <= r95777;
double r95779 = log(r95772);
double r95780 = 9.191375807531117e-301;
bool r95781 = r95764 <= r95780;
double r95782 = 1.8405878798241817e-175;
bool r95783 = r95764 <= r95782;
double r95784 = 6.594840577856812e+73;
bool r95785 = r95764 <= r95784;
double r95786 = log(r95764);
double r95787 = r95785 ? r95776 : r95786;
double r95788 = r95783 ? r95779 : r95787;
double r95789 = r95781 ? r95776 : r95788;
double r95790 = r95778 ? r95779 : r95789;
double r95791 = r95770 ? r95776 : r95790;
double r95792 = r95766 ? r95768 : r95791;
return r95792;
}



Bits error versus re



Bits error versus im
Results
if re < -1.3725924957185956e+113Initial program 53.4
Taylor expanded around -inf 9.1
Simplified9.1
if -1.3725924957185956e+113 < re < -7.06955799813849e-161 or -1.4314615041359399e-195 < re < 9.191375807531117e-301 or 1.8405878798241817e-175 < re < 6.594840577856812e+73Initial program 19.0
if -7.06955799813849e-161 < re < -1.4314615041359399e-195 or 9.191375807531117e-301 < re < 1.8405878798241817e-175Initial program 29.1
Taylor expanded around 0 33.8
if 6.594840577856812e+73 < re Initial program 48.0
Taylor expanded around inf 11.0
Final simplification17.7
herbie shell --seed 2019209
(FPCore (re im)
:name "math.log/1 on complex, real part"
:precision binary64
(log (sqrt (+ (* re re) (* im im)))))