Seem to be a bug on line 60 in appox_update (dimention mismatch). I am not sure how the equation should be. `X = (VTd.T @ eigvec) @ solve(reg_term, (Ud.T @ (Sinv @ eigvec)).T)`