C++
 Computer >> コンピューター >  >> プログラミング >> C++

【C++】hypot()・hypotf()・hypotl()関数で直角三角形の斜辺を求める方法

はじめに

本記事では、C++の標準ライブラリに含まれるhypot()hypotf()hypotl()関数の動作、構文、具体的な使用例について詳しく解説します。これらの関数はいずれも直角三角形の斜辺を求めるためのもので、戻り値となるデータ型が異なります。

hypot()関数とは

hypot()関数は、直角三角形の斜辺(hypotenuse)を計算するための関数です。2つの引数の二乗和の平方根を返します。この関数は<cmath>ヘッダーに定義されています。

斜辺(hypotenuse)とは?

斜辺とは、直角三角形の中で最も長い辺のことで、直角の向かい側に位置する辺を指します。下図の場合、三角形のACの部分が斜辺に相当します。

【C++】hypot()・hypotf()・hypotl()関数で直角三角形の斜辺を求める方法

斜辺を求める公式は次の通りです。

H = √(X² + Y²)

構文

データ型 hypot(データ型 X, データ型 Y);

パラメータ

hypot()関数は、2つの引数XとYを受け取ります。なお、C++17以降では3つの引数を取るオーバーロードも追加されており、√(X² + Y² + Z²) を計算することで3次元空間上の距離を求めることもできます。

使用例

入力:X=3 Y=4 → 出力:5
入力:X=12 Y=5 → 出力:13

戻り値

(X² + Y²) の平方根を返します。

実装の手順

  • まず2つの変数を初期化します。
  • 次にhypot()関数を呼び出して結果を格納します。
  • 最後に結果(平方根)を出力します。

上記の手順により、h = √(x² + y²) という公式に基づいて、2つの変数の二乗和の平方根を求めることができます。

サンプルコード

// hypot()関数の動作を確認するC++プログラム
#include <iostream>
#include <cmath>
using namespace std;

int main() {
    // 2つの整数値を初期化
    int a = 3, b = 4, c;
    cout << "A= " << a << " B= " << b << endl;

    // hypot()関数を呼び出す
    c = hypot(a, b);
    cout << "C= " << c << endl;

    // double型の値でも試してみる
    double x = 12, y = 5, z;
    cout << "X= " << x << " Y= " << y << endl;
    z = hypot(x, y);
    cout << "Z= " << z << endl;

    return 0;
}

出力結果

上記のコードを実行すると、次の出力が得られます。

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

hypotf()関数とは

hypotf()関数は、hypot()関数と同じ処理を行いますが、戻り値がfloat型である点が異なります。引数もfloat型である必要があります。<cmath>ヘッダーに含まれる関数です。

構文

float hypotf(float x, float y);

使用例

出力 – X=9.34 Y=10.09 → Z=13.75
出力 – X=12.75 Y=5.56 → Z=13.90956

実装の手順

  • まず2つの変数をfloat型で初期化します。
  • 次にhypotf()関数を呼び出します。
  • 最後に結果を出力します。

以上の手順で、単精度浮動小数点数による平方根の計算が可能です。

サンプルコード

// 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;
}

出力結果

上記のコードを実行すると、次の出力が得られます。

OUTPUT – X=12.75 Y=5.56
    Z=13.90956

hypotl()関数とは

hypotl()関数もhypot()関数と同じ処理を行いますが、戻り値がlong double型である点が異なります。引数もlong double型であり、より高い精度が求められる計算に適しています。<cmath>ヘッダーに含まれる関数です。

構文

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

実装の手順

  • まず2つの変数をlong double型で初期化します。
  • 次にhypotl()関数を呼び出します。
  • 最後に結果を出力します。

以上の手順で、拡張倍精度による高精度な平方根の計算が可能です。

サンプルコード

// 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;
}

出力結果

上記のコードを実行すると、次の出力が得られます。

OUTPUT – X=9.342553435 Y=10.0987456456
    Z=13.7575

3つの関数の比較一覧

関数名引数の型戻り値の型
hypot()doubledouble
hypotf()floatfloat
hypotl()long doublelong double

まとめ

C++には、直角三角形の斜辺を求めるための関数として、hypot()、hypotf()、hypotl()の3種類が用意されています。基本的な機能はすべて同じですが、扱うデータ型の精度が異なるため、用途に応じて使い分けることが大切です。一般的な倍精度計算にはhypot()、メモリ効率を重視する場合はhypotf()、より高い精度が必要な場合はhypotl()を選択するとよいでしょう。

  1. C++のlog()関数とは?自然対数を求める方法をわかりやすく解説

    C++の標準ライブラリには、数学的な計算を行うための便利な関数が多数用意されています。その中でもlog()関数は、数値の自然対数(ネイピア数 e を底とする対数)を求めるために使用される重要な関数です。log()関数の基本情報C/C++のライブラリ関数 double log(double x) は、引数 x の自然対数(底が e の対数)を返します。この関数を使用するには、ヘッダーファイル <cmath> をインクルードする必要があります。関数の宣言double log(double x)パラメータと戻り値パラメータ: x は浮動小数点型(double)の値です。自然対数を求めたい

  2. C++のswap()関数とは?2つの変数の値を入れ替える方法をサンプルコード付きで解説

    swap()関数とは C++のswap()関数は、2つの値を入れ替える(交換する)ための関数です。この関数を利用すれば、一時的な第三の変数を自分で用意することなく、2つの変数の値を簡単に入れ替えることができます。 swap()関数の構文 void swap(int variable_name1, int variable_name2); 変数に値を代入してswap()関数に渡した場合、関数内では値の入れ替えが行われますが、呼び出し元の実際の変数の値は変わりません。これは、引数が「値渡し」で渡されるためです。実際の変数の値を入れ替えたい場合は、後述する「参照渡し」を使用します。 例1:s