double code(double re, double im) {
return ((double) (((double) log(((double) sqrt(((double) (((double) (re * re)) + ((double) (im * im)))))))) / ((double) log(10.0))));
}
double code(double re, double im) {
double VAR;
if ((re <= -3.366208022369999e+135)) {
VAR = ((double) (((double) (0.5 / ((double) sqrt(((double) log(10.0)))))) * ((double) (((double) (((double) log(1.0)) - ((double) (2.0 * ((double) log(((double) (-1.0 / re)))))))) * ((double) sqrt(((double) (1.0 / ((double) log(10.0))))))))));
} else {
double VAR_1;
if ((re <= 2.9135650880734893e+125)) {
VAR_1 = ((double) (((double) (0.5 / ((double) sqrt(((double) log(10.0)))))) * ((double) log(((double) pow(((double) (((double) (re * re)) + ((double) (im * im)))), ((double) (1.0 / ((double) sqrt(((double) log(10.0))))))))))));
} else {
VAR_1 = ((double) (((double) (0.5 / ((double) sqrt(((double) log(10.0)))))) * ((double) (((double) (((double) log(1.0)) - ((double) (((double) log(re)) * -2.0)))) / ((double) sqrt(((double) log(10.0))))))));
}
VAR = VAR_1;
}
return VAR;
}



Bits error versus re



Bits error versus im
Results
if re < -3.3662080223699987e135Initial program 59.0
rmApplied add-sqr-sqrt59.0
Applied pow1/259.0
Applied log-pow59.0
Applied times-frac59.0
Taylor expanded around -inf 7.4
if -3.3662080223699987e135 < re < 2.91356508807348929e125Initial program 21.1
rmApplied add-sqr-sqrt21.1
Applied pow1/221.1
Applied log-pow21.1
Applied times-frac21.1
rmApplied add-log-exp21.1
Simplified20.9
if 2.91356508807348929e125 < re Initial program 55.8
rmApplied add-sqr-sqrt55.8
Applied pow1/255.8
Applied log-pow55.8
Applied times-frac55.8
Taylor expanded around inf 8.2
Simplified8.2
Final simplification17.1
herbie shell --seed 2020180
(FPCore (re im)
:name "math.log10 on complex, real part"
:precision binary64
(/ (log (sqrt (+ (* re re) (* im im)))) (log 10.0)))