Сделал проверку валидности знака операции без лишнего set.
Добавил cmath для того, чтобы abs возвращал double.