gradient cpp