_copysign、_copysignl
float.h:インデックス への移動
ヘッダー ファイル
float.h
カテゴリ
数値計算ルーチン
プロトタイプ
double _copysign(double da, double db);
long double _copysignl(long double lda, long double ldb);
説明
倍精度浮動小数点引数 da の符号を倍精度浮動小数点引数 db と同じものにして返します。
_copysignl はその long double 版で、long double の引数を受け取り、long double の結果を返します。
戻り値
1 番目の値の絶対値と指数は変更せず、符号を 2 番目の値と同じにしたものを返します。 エラーを示す値は返されません。 2 番目のパラメータに 0 を指定すると、戻り値は、1 番目のパラメータの絶対値はそのままで符号を + にしたものになります。
例
#include <float.h>
#include <stdio.h>
/* Compares a to b. But ignores b's sign and uses a's one */
int compare_no_sign(double a, double b)
{
/* Obtain a value of b with the same sign as a */
double b_as_a = _copysign(b, a);
/* Do a simple double comparison */
if (a > b_as_a)
return 1;
else if (a < b_as_a)
return -1;
else
return 0;
}
移植性
| POSIX | Win32 | ANSI C | ANSI C++ | |
|---|---|---|---|---|
|
_copysign |
+ |
|||
|
_copysignl |
+ |