proximal-gradient algorithm