asinh() has the same problem:
$ perl -MMath::Trig -wle 'print asinh(1e-18)'
0
$ python3 -c 'import math; print(math.asinh(1e-18))'
1e-18
as does atanh():
$ perl -MMath::Trig -wle 'print atanh(1e-18)'
0
$ python3 -c 'import math; print(math.atanh(1e-18))'
1e-18
All of the functions sinh(), asinh(), tan(), and atanh() are approximately equal to x, when x is close to zero. It seems that with Math::Trig, these functions return zero even in cases where a more accurate result is well within the numerical range supported by Perl scalars.