В общем в одном из алгоритмов потребовалось вычислять квадратный корень из суммы квадратов двух аргументов. Казалось бы, всё просто и я написал std::sqrt(std::pow(x,2)+std::pow(y,2)), но чуть позже оказалось что некоторые тесты не проходят из-за этого вычесления (протрейсил и в этой строке получаются странные значения). Насколько я понял проблема в том что std::pow(x,2) превышает максимальное значение для типа x. Но ведь у результата будут брать корень и он станет снова маленьким? Как быть чтобы работало? Может есть какой-то другой алгоритм для вычисления выражения этого?
Попробуйте hypot - она работает медленнее, но зато лишена описываемого вами недостатка.
И - ну уж хотя бы для возведения в квадрат я бы не стал пользоваться функцией pow... Неужели x*x длиннее std::pow(x,2), если уж даже не рассматривать все остальные недостатки...
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости