copysign, copysignf, copysignl
From cppreference.com
| ヘッダー <math.h> で定義 |
||
| float copysignf( float x, float y ); |
(1) | (C99以降) |
| double copysign( double x, double y ); |
(2) | (C99以降) |
| long double copysignl( long double x, long double y ); |
(3) | (C99以降) |
| ヘッダー <tgmath.h> で定義 |
||
| #define copysign(x, y) |
(4) | (C99以降) |
1-3)
x の絶対値と y の符号を組み合わせた浮動小数点値を生成します。4) 型汎用マクロ: いずれかの引数が long double 型の場合、
copysignl が呼び出されます。それ以外の場合で、いずれかの引数が整数型または double 型の場合、copysign が呼び出されます。それ以外の場合、copysignf が呼び出されます。目次 |
[編集] パラメータ
| x, y | - | 浮動小数点値 |
[編集] 戻り値
エラーが発生しなかった場合、x の絶対値と y の符号を組み合わせた浮動小数点値を返します。
x が NaN の場合、y の符号を持つ NaN を返します。
y が -0 の場合、実装が算術演算で符号付きゼロを一貫してサポートしている場合にのみ、結果は負になります。
[編集] エラー処理
この関数は、math_errhandling で指定されたエラーの対象にはなりません。
実装がIEEE浮動小数点算術 (IEC 60559) をサポートしている場合、
- 返される値は正確であり(FE_INEXACT は決して発生しません)、現在の丸めモードに依存しません。
[編集] 注記
copysign は、NaN 値の符号を操作するための唯一のポータブルな方法です(NaN の符号を調べるには、signbit も使用できます)。
[編集] 例
このコードを実行
実行結果の例
copysign(1.0,+2.0) = +1.0 copysign(1.0,-2.0) = -1.0 copysign(INFINITY,-2.0) = -inf copysign(NAN,-2.0) = -nan
[編集] 参考文献
- C23標準 (ISO/IEC 9899:2024)
- 7.12.11.1 The copysign functions (p: TBD)
- 7.25 Type-generic math <tgmath.h> (p: TBD)
- F.10.8.1 The copysign functions (p: TBD)
- C17標準 (ISO/IEC 9899:2018)
- 7.12.11.1 The copysign functions (p: TBD)
- 7.25 Type-generic math <tgmath.h> (p: TBD)
- F.10.8.1 The copysign functions (p: TBD)
- C11標準 (ISO/IEC 9899:2011)
- 7.12.11.1 The copysign functions (p: 255)
- 7.25 型総称数学関数 <tgmath.h> (p: 373-375)
- F.10.8.1 The copysign functions (p: 529)
- C99標準 (ISO/IEC 9899:1999)
- 7.12.11.1 The copysign functions (p: 236)
- 7.22 型総称数学関数 <tgmath.h> (p: 335-337)
- F.9.8.1 The copysign functions (p: 465)
[編集] 関連項目
| (C99)(C99) |
浮動小数点値の絶対値を計算する (|x|) (関数) |
| (C99) |
与えられた数値が負数かチェックする (関数マクロ) |
| C++ ドキュメント for copysign
| |