add lu_decomposition
cache negation of inverse of pivot in solve_partial_pivoting