std::hypot

From cppreference.com
 
 
 
Common mathematical functions
Functions
Basic operations
remainder (C++11)
remquo (C++11)
fma (C++11)
fmax (C++11)
fmin (C++11)
fdim (C++11)
nan
nanf
nanl
(C++11)
(C++11)
(C++11)
Exponential functions
exp
exp2 (C++11)
expm1 (C++11)
log
log10
log1p (C++11)
log2 (C++11)
Power functions
sqrt
cbrt (C++11)
hypot (C++11)
pow
Trigonometric and hyperbolic functions
sinh
cosh
tanh
asinh (C++11)
acosh (C++11)
atanh (C++11)
Error and gamma functions
erf (C++11)
erfc (C++11)
lgamma (C++11)
tgamma (C++11)
Nearest integer floating point operations
ceil
floor
round
lround
llround
(C++11)
(C++11)
(C++11)
trunc (C++11)
nearbyint (C++11)
rint
lrint
llrint
(C++11)
(C++11)
(C++11)
Floating point manipulation functions
ldexp
scalbn
scalbln
(C++11)
(C++11)
ilogb (C++11)
logb (C++11)
frexp
modf
nextafter
nexttoward
(C++11)
(C++11)
copysign (C++11)
Classification
fpclassify (C++11)
isfinite (C++11)
isinf (C++11)
isnan (C++11)
isnormal (C++11)
signbit (C++11)
Macro constants
FP_NORMAL
FP_SUBNORMAL
FP_ZERO
FP_INFINITE
FP_NAN
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
FLT_EVAL_METHOD (C++11)
 
Defined in header <cmath>
float       hypot( float x, float y );
(1) (since C++11)
double      hypot( double x, double y );
(2) (since C++11)
long double hypot( long double x, long double y );
(3) (since C++11)
Promoted    hypot( Arithmetic x, Arithmetic y );
(4) (since C++11)

Computes the square root of the sum of the squares of x and y, without undue overflow or underflow at intermediate stages of the computation. This is the length of the hypotenuse of a right-angled triangle with sides of length x and y, or the distance of the point (x,y) from the origin (0,0), or the magnitude of a complex number x+iy

4) If any argument has integral type, it is cast to double. If any other argument is long double, then the return type is long double, otherwise it is double.

Contents

[edit] Parameters

x - floating point value
y - floating point value

[edit] Return value

The hypotenuse of a right-angled triangle, x2
+y2
.

[edit] Exceptions

If the result overflows, a range error may occur and FE_OVERFLOW may be raised.

If the result is subnormal, an underflow error may occur and FE_UNDERFLOW may be raised.

[edit] Notes

Typical implementation strategy is to calculate an equivalent of u1+(
v
u
)2
where u is std::max(x,y) and v is std::min(x,y).

[edit] Example

#include <cmath>
#include <utility>
#include <iostream>
 
std::pair<double, double> cartesian_to_polar(double x, double y)
{
    return {std::hypot(x, y), std::atan2(y,x)};
}
 
int main()
{
    std::pair<double, double> polar = cartesian_to_polar(1, 1);
    std::cout << "(1,1) cartesian is (" << polar.first
               << "," << polar.second<< ") polar\n";
}

Output:

(1,1) cartesian is (1.41421,0.785398) polar

[edit] See also

computes square root (x)
(function)
raises a number to the given power (xy)
(function)
returns the magnitude of a complex number
(function template)