quasi-Newton algorithm