Algorithm-based Fault Tolerance for Dense Matrix Factorizations