sqrt, sqrtf, sqrtl
From cppreference.com
| ヘッダー <math.h> で定義 |
||
| float sqrtf( float arg ); |
(1) | (C99以降) |
| double sqrt( double arg ); |
(2) | |
| long double sqrtl( long double arg ); |
(3) | (C99以降) |
| ヘッダー <tgmath.h> で定義 |
||
| #define sqrt( arg ) |
(4) | (C99以降) |
1-3) arg の平方根を計算します。
4) 型汎用マクロ: arg の型が long double の場合、`sqrtl` が呼び出されます。それ以外の場合で、arg が整数型または double 型の場合、`sqrt` が呼び出されます。それ以外の場合、`sqrtf` が呼び出されます。arg が複素数または虚数の場合、マクロは対応する複素数関数(csqrtf、csqrt、csqrtl)を呼び出します。
目次 |
[編集] パラメータ
| arg | - | floating-point value |
[編集] 戻り値
エラーが発生しない場合、arg の平方根(√arg)が返されます。
領域エラーが発生した場合、実装定義の値が返される (サポートされている場合はNaN)。
アンダーフローによる範囲エラーが発生した場合、正確な結果 (丸め後) が返される。
[編集] エラー処理
エラーは math_errhandling で指定されたとおりに報告されます。
arg がゼロ未満の場合、定義域エラーが発生します。
実装がIEEE浮動小数点算術 (IEC 60559) をサポートしている場合、
- 引数が -0 未満の場合、FE_INVALID が発生し、NaN が返されます。
- 引数が +∞ または ±0 の場合、引数は変更されずに返されます。
- 引数が NaN の場合、NaN が返されます。
[編集] 注釈
IEEE 標準では、`sqrt` は無限精度の結果から正しく丸められることが要求されています。特に、浮動小数点型で表現できる場合は正確な結果が生成されます。これを要求される他の演算は、算術演算子と `fma` 関数のみです。`pow` を含む他の関数は、これに制約されません。
[編集] 例
このコードを実行
#include <errno.h> #include <fenv.h> #include <math.h> #include <stdio.h> // #pragma STDC FENV_ACCESS ON int main(void) { // normal use printf("sqrt(100) = %f\n", sqrt(100)); printf("sqrt(2) = %f\n", sqrt(2)); printf("golden ratio = %f\n", (1 + sqrt(5)) / 2); // special values printf("sqrt(-0) = %f\n", sqrt(-0.0)); // error handling errno = 0; feclearexcept(FE_ALL_EXCEPT); printf("sqrt(-1.0) = %f\n", sqrt(-1)); if (errno == EDOM) perror(" errno == EDOM"); if (fetestexcept(FE_INVALID)) puts(" FE_INVALID was raised"); }
実行結果の例
sqrt(100) = 10.000000
sqrt(2) = 1.414214
golden ratio = 1.618034
sqrt(-0) = -0.000000
sqrt(-1.0) = -nan
errno = EDOM: Numerical argument out of domain
FE_INVALID was raised[編集] 参考文献
- C23標準 (ISO/IEC 9899:2024)
- 7.12.7.5 The sqrt functions (p: TBD)
- 7.25 Type-generic math <tgmath.h> (p: TBD)
- F.10.4.5 The sqrt functions (p: TBD)
- C17標準 (ISO/IEC 9899:2018)
- 7.12.7.5 The sqrt functions (p: TBD)
- 7.25 Type-generic math <tgmath.h> (p: TBD)
- F.10.4.5 The sqrt functions (p: TBD)
- C11標準 (ISO/IEC 9899:2011)
- 7.12.7.5 The sqrt functions (p: 249)
- 7.25 型総称数学関数 <tgmath.h> (p: 373-375)
- F.10.4.5 The sqrt functions (p: 525)
- C99標準 (ISO/IEC 9899:1999)
- 7.12.7.5 The sqrt functions (p: 229-230)
- 7.22 型総称数学関数 <tgmath.h> (p: 335-337)
- F.9.4.5 The sqrt functions (p: 462)
- C89/C90標準 (ISO/IEC 9899:1990)
- 4.5.5.2 The sqrt function
[編集] 関連項目
| (C99)(C99) |
指定されたべき乗の数を計算する (xy) (関数) |
| (C99)(C99)(C99) |
立方根を計算する (3√x) (関数) |
| (C99)(C99)(C99) |
2つの与えられた数の平方の和の平方根を計算する (√x2 +y2 ) (関数) |
| (C99)(C99)(C99) |
複素平方根を計算する (関数) |
| C++ ドキュメント (`sqrt` について)
| |