lu decomposition impl.