MATLAB uses double precision by default, so you could also apply the same in PyTorch:
W = torch.randn(1000, 1000, dtype=torch.float64)
U, S, V = torch.svd(W)
error = torch.norm(W - U@torch.diag(S)@V.t())
print(error)
> tensor(3.3153e-12, dtype=torch.float64)