cabs,cabsl

提供: RAD Studio
移動先: 案内検索

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

+