【C++】hypot()・hypotf()・hypotl()関数で直角三角形の斜辺を求める方法
はじめに
本記事では、C++の標準ライブラリに含まれるhypot()、hypotf()、hypotl()関数の動作、構文、具体的な使用例について詳しく解説します。これらの関数はいずれも直角三角形の斜辺を求めるためのもので、戻り値となるデータ型が異なります。
hypot()関数とは
hypot()関数は、直角三角形の斜辺(hypotenuse)を計算するための関数です。2つの引数の二乗和の平方根を返します。この関数は<cmath>ヘッダーに定義されています。
斜辺(hypotenuse)とは?
斜辺とは、直角三角形の中で最も長い辺のことで、直角の向かい側に位置する辺を指します。下図の場合、三角形のACの部分が斜辺に相当します。

斜辺を求める公式は次の通りです。
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() | double | double |
| hypotf() | float | float |
| hypotl() | long double | long double |
まとめ
C++には、直角三角形の斜辺を求めるための関数として、hypot()、hypotf()、hypotl()の3種類が用意されています。基本的な機能はすべて同じですが、扱うデータ型の精度が異なるため、用途に応じて使い分けることが大切です。一般的な倍精度計算にはhypot()、メモリ効率を重視する場合はhypotf()、より高い精度が必要な場合はhypotl()を選択するとよいでしょう。
-
C++のlog()関数とは?自然対数を求める方法をわかりやすく解説
C++の標準ライブラリには、数学的な計算を行うための便利な関数が多数用意されています。その中でもlog()関数は、数値の自然対数(ネイピア数 e を底とする対数)を求めるために使用される重要な関数です。log()関数の基本情報C/C++のライブラリ関数 double log(double x) は、引数 x の自然対数(底が e の対数)を返します。この関数を使用するには、ヘッダーファイル <cmath> をインクルードする必要があります。関数の宣言double log(double x)パラメータと戻り値パラメータ: x は浮動小数点型(double)の値です。自然対数を求めたい
-
C++のswap()関数とは?2つの変数の値を入れ替える方法をサンプルコード付きで解説
swap()関数とは C++のswap()関数は、2つの値を入れ替える(交換する)ための関数です。この関数を利用すれば、一時的な第三の変数を自分で用意することなく、2つの変数の値を簡単に入れ替えることができます。 swap()関数の構文 void swap(int variable_name1, int variable_name2); 変数に値を代入してswap()関数に渡した場合、関数内では値の入れ替えが行われますが、呼び出し元の実際の変数の値は変わりません。これは、引数が「値渡し」で渡されるためです。実際の変数の値を入れ替えたい場合は、後述する「参照渡し」を使用します。 例1:s