\frac{\tan^{-1}_* \frac{im}{re}}{\log 10}\mathsf{log1p}\left(\mathsf{log1p}\left(\mathsf{expm1}\left(\mathsf{expm1}\left(\frac{1}{\sqrt{\log 10}} \cdot \frac{\tan^{-1}_* \frac{im}{re}}{\sqrt{\log 10}}\right)\right)\right)\right)double f(double re, double im) {
double r33103 = im;
double r33104 = re;
double r33105 = atan2(r33103, r33104);
double r33106 = 10.0;
double r33107 = log(r33106);
double r33108 = r33105 / r33107;
return r33108;
}
double f(double re, double im) {
double r33109 = 1.0;
double r33110 = 10.0;
double r33111 = log(r33110);
double r33112 = sqrt(r33111);
double r33113 = r33109 / r33112;
double r33114 = im;
double r33115 = re;
double r33116 = atan2(r33114, r33115);
double r33117 = r33116 / r33112;
double r33118 = r33113 * r33117;
double r33119 = expm1(r33118);
double r33120 = expm1(r33119);
double r33121 = log1p(r33120);
double r33122 = log1p(r33121);
return r33122;
}



Bits error versus re



Bits error versus im
Results
Initial program 0.8
rmApplied log1p-expm1-u0.7
rmApplied log1p-expm1-u0.5
rmApplied add-sqr-sqrt0.5
Applied *-un-lft-identity0.5
Applied times-frac0.5
Final simplification0.5
herbie shell --seed 2019362 +o rules:numerics
(FPCore (re im)
:name "math.log10 on complex, imaginary part"
:precision binary64
(/ (atan2 im re) (log 10)))