I think this is a sampling issue. You can look at the PlotPoints options (for example, try PlotPoints->100). Also, you don't really need all of the N[...,$MachinePrecision]
functions. Every time you have a number with a decimal point (e.g. the various 0.5
and 1.0
and so forth), that whole expression will already be at machine precision.