std::hypot

From Cppreference

Jump to: navigation, search
Defined in header <cmath>

float       hypot( float x, float y );
(C++11 feature)
double      hypot( double x, double y );
(C++11 feature)
long double hypot( long double x, long double y );
(C++11 feature)

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

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

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