В общем в одном из алгоритмов потребовалось вычислять квадратный корень из суммы квадратов двух аргументов. Казалось бы, всё просто и я написал std::sqrt(std::pow(x,2)+std::pow(y,2))
, но чуть позже оказалось что некоторые тесты не проходят из-за этого вычесления (протрейсил и в этой строке получаются странные значения). Насколько я понял проблема в том что std::pow(x,2)
превышает максимальное значение для типа x. Но ведь у результата будут брать корень и он станет снова маленьким? Как быть чтобы работало? Может есть какой-то другой алгоритм для вычисления выражения этого?
Попробуйте hypot
- она работает медленнее, но зато лишена описываемого вами недостатка.
И - ну уж хотя бы для возведения в квадрат я бы не стал пользоваться функцией pow
... Неужели x*x
длиннее std::pow(x,2)
, если уж даже не рассматривать все остальные недостатки...
Виртуальный выделенный сервер (VDS) становится отличным выбором
Как правильно перевести std::vector<int> в std::string? То есть например для вектора 1,2,3,4,5 должна быть строка 12345 на выходе
Осваиваю cmake и столкнулся вот с какой проблемой: У меня есть три папки с написанными мною статическими библиотекамиНазовем их a, b и c