e^{re} \cdot \sin im\mathsf{expm1}\left(\mathsf{log1p}\left(e^{re} \cdot \sin im\right)\right)double code(double re, double im) {
return (exp(re) * sin(im));
}
double code(double re, double im) {
return expm1(log1p((exp(re) * sin(im))));
}



Bits error versus re



Bits error versus im
Results
Initial program 0.0
rmApplied expm1-log1p-u0.2
Final simplification0.2
herbie shell --seed 2020091 +o rules:numerics
(FPCore (re im)
:name "math.exp on complex, imaginary part"
:precision binary64
(* (exp re) (sin im)))