cabs,cabsl
math.h:インデックス への移動
ヘッダーファイル
math.h
カテゴリ
演算ルーチン
プロトタイプ
double cabs(struct complex z);
long double cabsl(struct _complexl z);
説明
cabs は,複素数の絶対値を計算します。cabs は,複素数 z の絶対値を計算するマクロです。z は,complex 型の構造体です。この構造体は,math.h で次のように定義されています。
struct complex {
double x, y;
};
ここで,x は実数部,y は虚数部です。
cabs の呼び出しは,z の実数部と虚数部を使用して,次のように sqrt を呼び出すことと同じです。
sqrt(z.x * z.x + z.y * z.y)
cabsl は long double バージョンです。引数として _complexl 型の構造体を受け取り,long double の結果を返します。この構造体は,math.h で次のように定義されています。
struct _complexl {
long double x, y;
};
戻り値
cabs(または cabsl)は,z の絶対値を表す double を返します。オーバーフローの場合,cabs(または cabsl)は HUGE_VAL(または _LHUGE_VAL)を返し,グローバル変数 errno を次のエラーに設定します。
ERANGE |
結果が範囲外です。 |
これらの関数のエラー処理は,_matherr および _matherrl 関数を使って変更できます。
例
#include <stdio.h>
#include <math.h>
#ifdef __cplusplus
#include <complex.h>
#endif
#ifdef __cplusplus /* C++ の場合は,クラス complex を使用します */
void print_abs(void)
{
complex<float> z(1.0, 2.0);
double absval;
absval = abs(z);
printf("The absolute value of %.2lfi %.2lfj is %.2lf",
real(z), imag(z), absval);
}
#else /* 次の関数は C 言語用です(C++ ではない) */
void print_abs(void)
{
struct complex z;
double absval;
z.x = 2.0;
z.y = 1.0;
absval = cabs(z);
printf("The absolute value of %.2lfi %.2lfj is %.2lf",
z.x, z.y, absval);
}
#endif
int main(void)
{
print_abs();
return 0;
}
移植性
POSIX | Win32 | ANSI C | ANSI C++ | |
---|---|---|---|---|
cabs |
+ |
|||
cabsl |
+ |