PyTorch implements many functions with points of non-differentiability, and I am curious how PyTorch handles those.