Namespaces
Variants

std:: sqrt, std:: sqrtf, std:: sqrtl

From ja.cppreference.net
Common mathematical functions
Nearest integer floating point operations
(C++11)
(C++11)
(C++11) (C++11) (C++11)
Floating point manipulation functions
(C++11) (C++11)
(C++11)
(C++11)
Classification and comparison
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
Types
(C++11)
(C++11)
(C++11)
Macro constants
ヘッダーで定義 <cmath>
(1)
float sqrt ( float num ) ;

double sqrt ( double num ) ;

long double sqrt ( long double num ) ;
(C++23まで)
/*floating-point-type*/
sqrt ( /*floating-point-type*/ num ) ;
(C++23から)
(constexpr C++26から)
float sqrtf ( float num ) ;
(2) (C++11から)
(constexpr C++26から)
long double sqrtl ( long double num ) ;
(3) (C++11から)
(constexpr C++26から)
ヘッダーで定義 <simd>
template < /*math-floating-point*/ V >

constexpr /*deduced-simd-t*/ < V >

sqrt ( const V & v_num ) ;
(S) (C++26から)
ヘッダーで定義 <cmath>
template < class Integer >
double sqrt ( Integer num ) ;
(A) (constexpr C++26から)
1-3) num の平方根を計算します。 ライブラリは、パラメータの型としてすべてのcv修飾されていない浮動小数点型に対する std::sqrt のオーバーロードを提供します。 (C++23以降)
S) SIMDオーバーロードは v_num に対して要素ごとの std::sqrt を実行します。
(詳細は math-floating-point および deduced-simd-t を参照)
(C++26以降)
A) すべての整数型に対して追加のオーバーロードが提供されており、これらは double として扱われます。
(C++11以降)

目次

翻訳のポイント: - 「Contents」を「目次」に翻訳 - HTMLタグ、属性、リンク先は一切変更せず保持 - ``内のC++関連用語(Parameters、Return value、Error handling、Notes、Example、See also)は翻訳せず保持 - 数値、クラス名、IDなどはすべて元のまま維持 - フォーマットと構造は完全に保持

パラメータ

num - 浮動小数点または整数値

戻り値

エラーが発生しない場合、 num の平方根( √ num )が返されます。

定義域エラーが発生した場合、実装定義の値が返されます(NaNがサポートされている場合はNaN)。

アンダーフローによる範囲エラーが発生した場合、正しい結果(丸め後)が返されます。

エラーハンドリング

エラーは math_errhandling で指定された通りに報告されます。

num がゼロ未満の場合、定義域エラーが発生します。

IEEE浮動小数点演算(IEC 60559)を実装がサポートしている場合、

  • 引数が -0 より小さい場合、 FE_INVALID が発生し、NaN が返されます。
  • 引数が +∞ または ±0 の場合、変更されずに返されます。
  • 引数が NaN の場合、NaN が返されます。

注記

std::sqrt はIEEE標準により、無限精度の結果から正しく丸められることが要求されています。特に、浮動小数点型で表現可能な場合は正確な結果が生成されます。この要件が適用される他の演算は、 算術演算子 および関数 std::fma のみです。 std::pow を含む他の関数は、この制約を受けません。

追加のオーバーロードは (A) と完全に同一である必要はありません。それらは、整数型の引数 num に対して、 std :: sqrt ( num ) が std :: sqrt ( static_cast < double > ( num ) ) と同じ効果を持つことを保証するのに十分であればよいのです。

例

#include <cerrno>
#include <cfenv>
#include <cmath>
#include <cstring>
#include <iostream>
// #pragma STDC FENV_ACCESS ON
int main()
{
    // 通常の使用
    std::cout << "sqrt(100) = " << std::sqrt(100) << '\n'
              << "sqrt(2) = " << std::sqrt(2) << '\n'
              << "golden ratio = " << (1 + std::sqrt(5)) / 2 << '\n';
    // 特殊な値
    std::cout << "sqrt(-0) = " << std::sqrt(-0.0) << '\n';
    // エラー処理
    errno = 0;
    std::feclearexcept(FE_ALL_EXCEPT);
    std::cout << "sqrt(-1.0) = " << std::sqrt(-1) << '\n';
    if (errno == EDOM)
        std::cout << "    errno = EDOM " << std::strerror(errno) << '\n';
    if (std::fetestexcept(FE_INVALID))
        std::cout << "    FE_INVALID raised\n";
}

出力例:

sqrt(100) = 10
sqrt(2) = 1.41421
golden ratio = 1.61803
sqrt(-0) = -0
sqrt(-1.0) = -nan
    errno = EDOM Numerical argument out of domain
    FE_INVALID raised

関連項目

(C++11) (C++11)
数値を指定された累乗に引き上げる ( x y )
(関数)
(C++11) (C++11) (C++11)
立方根を計算する ( 3 √ x )
(関数)
(C++11) (C++11) (C++11)
斜辺を計算する √ x 2
+y 2
および √ x 2
+y 2
+z 2
(C++17以降)

(関数)
右半平面の範囲における複素数の平方根
(関数テンプレート)
関数 std::sqrt をvalarrayの各要素に適用する
(関数テンプレート)