Namespaces
Variants
Views
Actions

Difference between revisions of "cpp/numeric/math/hypot"

From cppreference.com
< cpp‎ | numeric‎ | math
m (Shorten template names. Use {{lc}} where appropriate.)
m (Update links.)
Line 65: Line 65:
  
 
{{dsc begin}}
 
{{dsc begin}}
{{dsc inc | cpp/numeric/math/dcl list sqrt}}
+
{{dsc inc | cpp/numeric/math/dsc sqrt}}
{{dsc inc | cpp/numeric/math/dcl list pow}}
+
{{dsc inc | cpp/numeric/math/dsc pow}}
{{dsc inc | cpp/numeric/complex/dcl list abs}}
+
{{dsc inc | cpp/numeric/complex/dsc abs}}
 
{{dsc end}}
 
{{dsc end}}
  

Revision as of 22:17, 31 May 2013

 
 
 
 
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

Parameters

x - floating point value
y - floating point value

Return value

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

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.

Notes

Implementations usually guarantee precision of less than 1 ulp (units in the last place): GNU, BSD, Open64

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

See also

(C++11)(C++11)
computes square root (x)
(function) [edit]
(C++11)(C++11)
raises a number to the given power (xy)
(function) [edit]
returns the magnitude of a complex number
(function template) [edit]