template <class T1, class T2>
calculated-result-type hypot(T1 x, T2 y);
template <class T1, class T2, class Policy>
calculated-result-type hypot(T1 x, T2 y, const Policy&);
Эффекты:вычисления
таким образом, чтобы избежать чрезмерного оттока и перелива.
Тип возврата этой функции вычисляется с использованиемправил расчета типа результата, когда T1 и T2 имеют разные типы.
Окончательный аргументПолитикаявляется необязательным и может быть использован для контроля поведения функции: как она обрабатывает ошибки, какой уровень точности использовать и т. д. См. документацию по политикедля более подробной информации.
При вычислении
промежуточные термины довольно легко переполняют или недополняют, даже если результат на самом деле идеально представлен.
Функция четная и симметричная в x и y, поэтому сначала предположимx,y >0иx >y(мы можем пермутировать аргументы, если это не так).
Тогда, еслиx * & #949; & #160; >= y, мы можем просто вернутьx.
В противном случае результат дается:
