Namespaces
Variants
Views
Actions

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

From cppreference.com
< cpp‎ | numeric‎ | math
(change note to refer to actual implementations.)
m (Shorten template names. Use {{lc}} where appropriate.)
Line 1: Line 1:
 
{{cpp/title|hypot}}
 
{{cpp/title|hypot}}
 
{{cpp/numeric/math/navbar}}
 
{{cpp/numeric/math/navbar}}
{{ddcl list begin}}
+
{{dcl begin}}
{{ddcl list header | cmath}}
+
{{dcl header | cmath}}
{{ddcl list item | notes={{mark since c++11}} |num=1|
+
{{dcl | notes={{mark since c++11}} |num=1|
 
float      hypot( float x, float y );
 
float      hypot( float x, float y );
 
}}
 
}}
{{ddcl list item | notes={{mark since c++11}} |num=2|
+
{{dcl | notes={{mark since c++11}} |num=2|
 
double      hypot( double x, double y );
 
double      hypot( double x, double y );
 
}}
 
}}
{{ddcl list item | notes={{mark since c++11}} |num=3|
+
{{dcl | notes={{mark since c++11}} |num=3|
 
long double hypot( long double x, long double y );
 
long double hypot( long double x, long double y );
 
}}
 
}}
{{ddcl list item | notes={{mark since c++11}} | num=4|
+
{{dcl | notes={{mark since c++11}} | num=4|
 
Promoted    hypot( Arithmetic x, Arithmetic y );
 
Promoted    hypot( Arithmetic x, Arithmetic y );
 
}}
 
}}
{{ddcl list end}}
+
{{dcl end}}
  
 
Computes the square root of the sum of the squares of {{tt|x}} and {{tt|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 {{tt|x}} and {{tt|y}}, or the distance of the point {{tt|(x,y)}} from the origin {{tt|(0,0)}}, or the magnitude of a complex number {{tt|x+''i''y}}
 
Computes the square root of the sum of the squares of {{tt|x}} and {{tt|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 {{tt|x}} and {{tt|y}}, or the distance of the point {{tt|(x,y)}} from the origin {{tt|(0,0)}}, or the magnitude of a complex number {{tt|x+''i''y}}
Line 22: Line 22:
  
 
===Parameters===
 
===Parameters===
{{param list begin}}
+
{{par begin}}
{{param list item | x | floating point value}}
+
{{par | x | floating point value}}
{{param list item | y | floating point value}}
+
{{par | y | floating point value}}
{{param list end}}
+
{{par end}}
  
 
===Return value===
 
===Return value===
Line 32: Line 32:
  
 
===Exceptions===
 
===Exceptions===
If the result overflows, a range error may occur and {{c|FE_OVERFLOW}} may be raised.
+
If the result overflows, a range error may occur and {{lc|FE_OVERFLOW}} may be raised.
  
 
If the result is subnormal, an underflow error may occur and {{c|FE_UNDERFLOW}} may be raised.
 
If the result is subnormal, an underflow error may occur and {{c|FE_UNDERFLOW}} may be raised.
Line 64: Line 64:
 
===See also===
 
===See also===
  
{{dcl list begin}}
+
{{dsc begin}}
{{dcl list template | cpp/numeric/math/dcl list sqrt}}
+
{{dsc inc | cpp/numeric/math/dcl list sqrt}}
{{dcl list template | cpp/numeric/math/dcl list pow}}
+
{{dsc inc | cpp/numeric/math/dcl list pow}}
{{dcl list template | cpp/numeric/complex/dcl list abs}}
+
{{dsc inc | cpp/numeric/complex/dcl list abs}}
{{dcl list end}}
+
{{dsc end}}
  
 
[[de:cpp/numeric/math/hypot]]
 
[[de:cpp/numeric/math/hypot]]

Revision as of 19:20, 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

Template:cpp/numeric/math/dcl list sqrtTemplate:cpp/numeric/math/dcl list powTemplate:cpp/numeric/complex/dcl list abs