Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++ hypot( ), hypotf( ), hypotl( ) 함수 완벽 가이드: 직각삼각형 빗변 계산하기

이 글에서는 C++의 hypot( ), hypotf( ), hypotl( ) 함수의 동작 원리, 문법, 그리고 실제 코드 예제를 통해 직각삼각형의 빗변을 계산하는 방법을 자세히 알아보겠습니다.

hypot( ) 함수란?

hypot( ) 함수는 직각삼각형의 빗변(hypotenuse)을 계산하는 데 사용됩니다. 두 변수 각각의 제곱을 더한 값의 제곱근을 반환하며, <cmath> 헤더 파일에 정의되어 있습니다.

빗변(Hypotenuse)이란?

빗변은 직각삼각형에서 직각을 마주 보는 가장 긴 변을 의미합니다. 아래 그림은 직각삼각형에서 빗변의 위치를 보여줍니다.

C++ hypot( ), hypotf( ), hypotl( ) 함수 완벽 가이드: 직각삼각형 빗변 계산하기

위 그림에서 삼각형의 AC 변이 바로 빗변입니다.

빗변을 계산하는 공식은 다음과 같습니다.

H = √(x² + y²)

문법(Syntax)

데이터타입 hypot(데이터타입 X, 데이터타입 Y);

매개변수(Parameters)

hypot( ) 함수는 두 개의 매개변수 X, Y를 받습니다. 일부 오버로드 버전에서는 세 개의 매개변수(X, Y, Z)를 사용해 3차원 거리를 계산할 수도 있습니다.

입력 및 출력 예시

입력: X=3, Y=4
출력: 5

입력: X=12, Y=5
출력: 13

반환값(Return Value)

(X2 + Y2)의 제곱근을 반환합니다.

구현 절차

  • 먼저 두 개의 변수를 초기화합니다.

  • hypot( ) 함수를 호출하여 결과를 저장합니다.

  • 계산된 제곱근(빗변) 값을 출력합니다.

위 절차를 따르면 두 변수의 제곱의 합에 대한 제곱근을 손쉽게 구할 수 있으며, 수식으로 표현하면 h = √(x2 + y2)와 같습니다.

예제 코드

// hypot( ) 함수의 동작을 보여주는 C++ 프로그램
#include <iostream>
#include <cmath>
using namespace std;

int main() {
    // 두 값을 초기화합니다.
    int a = 3, b = 4, c;
    cout << "A= " << a << ", B= " << b << endl;

    // hypot( ) 함수를 호출합니다.
    c = hypot(a, b);
    cout << "C= " << c << endl;

    double x = 12, y = 5, z;
    cout << "X= " << x << ", Y= " << y << endl;

    z = hypot(x, y);
    cout << "Z= " << z << endl;

    return 0;
}

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

A= 3, B= 4
C= 5
X= 12, Y= 5
Z= 13

hypotf( ) 함수란?

hypotf( ) 함수는 hypot( ) 함수와 동일한 작업을 수행하지만, 반환 타입과 매개변수가 모두 float 형이라는 점이 다릅니다. 단정밀도 부동소수점 연산이 필요할 때 유용하며, 역시 <cmath> 헤더 파일에 정의되어 있습니다.

문법

float hypotf(float x, float y);

입력 및 출력 예시

입력: X=9.34, Y=10.09
출력: 13.75

입력: X=12.75, Y=5.56
출력: 13.90956

구현 절차

  • 먼저 float 데이터 타입으로 두 변수를 초기화합니다.

  • hypotf( ) 함수를 호출하여 결과를 저장합니다.

  • 계산된 제곱근 값을 출력합니다.

위 과정을 통해 float 타입의 값으로도 빗변(제곱근)을 정확하게 계산할 수 있습니다.

예제 코드

// hypotf( ) 함수의 동작을 보여주는 C++ 프로그램
#include <iostream>
#include <cmath>
using namespace std;

int main() {
    float x = 12.75f, y = 5.56f, z;
    cout << "X= " << x << ", Y= " << y << endl;

    z = hypotf(x, y);
    cout << "Z= " << z << endl;

    return 0;
}

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

X= 12.75, Y= 5.56
Z= 13.9096

hypotl( ) 함수란?

hypotl( ) 함수 역시 hypot( ) 함수와 동일한 작업을 수행하지만, 반환 타입과 매개변수가 모두 long double 형이라는 점이 다릅니다. 높은 정밀도가 요구되는 과학·공학 계산에 적합하며, <cmath> 헤더 파일에 정의되어 있습니다.

문법

long double hypotl(long double x, long double y);

입력 및 출력 예시

입력: X=9.34, Y=10.09
출력: 13.75

입력: X=12.75, Y=5.56
출력: 13.90956

구현 절차

  • 먼저 long double 데이터 타입으로 두 변수를 초기화합니다.

  • hypotl( ) 함수를 호출하여 결과를 저장합니다.

  • 계산된 제곱근 값을 출력합니다.

위 과정을 통해 long double 타입의 높은 정밀도로 빗변 값을 계산할 수 있습니다.

예제 코드

// hypotl( ) 함수의 동작을 보여주는 C++ 프로그램
#include <iostream>
#include <cmath>
using namespace std;

int main() {
    long double x = 9.342553435L, y = 10.0987456456L, z;
    cout << "X= " << x << ", Y= " << y << endl;

    z = hypotl(x, y);
    cout << "Z= " << z << endl;

    return 0;
}

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

X= 9.34255, Y= 10.0987
Z= 13.7576

세 함수 비교 정리

함수매개변수 타입반환 타입헤더 파일
hypot( )doubledouble<cmath>
hypotf( )floatfloat<cmath>
hypotl( )long doublelong double<cmath>

결론적으로 세 함수 모두 √(x² + y²) 공식을 기반으로 빗변을 계산한다는 점에서 동일하지만, 처리하는 데이터 타입의 정밀도에 차이가 있습니다. 일반적인 계산에는 hypot( ), 메모리 효율이 중요한 경우에는 hypotf( ), 최대 정밀도가 필요한 경우에는 hypotl( )을 사용하는 것이 좋습니다.