実際に複素数や複素関数を使った例をリスト2に示す.これ は,オイラーが発見した式
(1) |
1 #include <stdio.h> 2 #include <complex.h> 3 #include <math.h> 4 5 int main(void){ 6 double _Complex z, x; 7 8 x=I*M_PI; 9 z=cexp(x); 10 11 printf("real=%f\timag=%f\n", creal(z),cimag(z)); 12 13 return 0; 14 }
real=-1.000000 imag=0.000000このプログラムの各行の内容は,次の通りである.
複素数おほび複素関数を使うために,ヘッダーファイルcomplex.hをインク ルードしている.複素数を使う場合,必ず必要である.
倍精度複素数型の変数の宣言である.複素数型の変数zとxが使えるよ うになる.
先に述べたように,M_PIは円周率を表すマクロである.Iは虚数単位 である.したがって,C言語のI*M_PIは,数学のを表す.
cexp(x)は,数学のを表す.ただし,変数も関数の値も複素数となる.
creal(z)で複素数zの実数部を,cimag(z)で虚数部を取り出して いる.
#include <complex.h>
と書く.
float _Complex a, b, hoge; double _Complex c, d. fuga; long double _Complex e, f, foo;
z=x+I*y; w=3.1415+I*2.718281828;
数学関数名 | 倍精度 | 単精度 | 拡張倍精度 | 戻り値 |
三角関数 | csin(x) | csinf(x) | csinl(x) | 複素数 |
ccos(x) | ccosf(x) | ccosl(x) | 複素数 | |
ctan(x) | ctanf(x) | ctanl(x) | 複素数 | |
逆三角関数 | casin(x) | casinf(x) | casinl(x) | 複素数 |
cacos(x) | cacosf(x) | cacosl(x) | 複素数 | |
catan(x) | catanf(x) | catanl(x) | 複素数 | |
双曲線関数 | csinh(x) | csinhf(x) | csinhl(x) | 複素数 |
ccosh(x) | ccoshf(x) | ccoshl(x) | 複素数 | |
ctanh(x) | ctanhf(x) | ctanhl(x) | 複素数 | |
逆双曲線関数 | casinh(x) | casinhf(x) | casinhl(x) | 複素数 |
cacosh(x) | cacoshf(x) | cacoshl(x) | 複素数 | |
catanh(x) | catanhf(x) | catanhl(x) | 複素数 | |
指数関数 | cexp(x) | cexpf(x) | cexpl(x) | 複素数 |
自然対数 | clog(x) | clogf(x) | clogl(x) | 複素数 |
絶対値 | cabs(x) | cabsf(x) | cabsl(x) | 実数 |
平方根 | csqrt(x) | csqrtf(x) | csqrtl(x) | 複素数 |
べき乗 | cpow(x,y) | cpowf(x,y) | cpowl(x,y) | 複素数() |
実部 | creal(x) | crealf(x) | creall(x) | 実数 |
虚部 | cimag(x) | cimagf(x) | cimagl(x) | 実数 |
偏角 | carg(x) | cargf(x) | cargl(x) | 実数 |
複素共役 | conj(x) | conjf(x) | conjl(x) | 複素数 |
リーマン球の射影 | cproj(x) | cprojf(x) | cprojl(x) | 複素数 |
gcc -lm -o fugafuga hogehoge.c