17777dab0Sopenharmony_ci#ifndef _COMPLEX_H 27777dab0Sopenharmony_ci#define _COMPLEX_H 37777dab0Sopenharmony_ci 47777dab0Sopenharmony_ci#ifdef __cplusplus 57777dab0Sopenharmony_ciextern "C" { 67777dab0Sopenharmony_ci#endif 77777dab0Sopenharmony_ci 87777dab0Sopenharmony_ci#define complex _Complex 97777dab0Sopenharmony_ci#ifdef __GNUC__ 107777dab0Sopenharmony_ci#define _Complex_I (__extension__ (0.0f+1.0fi)) 117777dab0Sopenharmony_ci#else 127777dab0Sopenharmony_ci#define _Complex_I (0.0f+1.0fi) 137777dab0Sopenharmony_ci#endif 147777dab0Sopenharmony_ci#define I _Complex_I 157777dab0Sopenharmony_ci 167777dab0Sopenharmony_cidouble complex cacos(double complex); 177777dab0Sopenharmony_cifloat complex cacosf(float complex); 187777dab0Sopenharmony_cilong double complex cacosl(long double complex); 197777dab0Sopenharmony_ci 207777dab0Sopenharmony_cidouble complex casin(double complex); 217777dab0Sopenharmony_cifloat complex casinf(float complex); 227777dab0Sopenharmony_cilong double complex casinl(long double complex); 237777dab0Sopenharmony_ci 247777dab0Sopenharmony_cidouble complex catan(double complex); 257777dab0Sopenharmony_cifloat complex catanf(float complex); 267777dab0Sopenharmony_cilong double complex catanl(long double complex); 277777dab0Sopenharmony_ci 287777dab0Sopenharmony_cidouble complex ccos(double complex); 297777dab0Sopenharmony_cifloat complex ccosf(float complex); 307777dab0Sopenharmony_cilong double complex ccosl(long double complex); 317777dab0Sopenharmony_ci 327777dab0Sopenharmony_cidouble complex csin(double complex); 337777dab0Sopenharmony_cifloat complex csinf(float complex); 347777dab0Sopenharmony_cilong double complex csinl(long double complex); 357777dab0Sopenharmony_ci 367777dab0Sopenharmony_cidouble complex ctan(double complex); 377777dab0Sopenharmony_cifloat complex ctanf(float complex); 387777dab0Sopenharmony_cilong double complex ctanl(long double complex); 397777dab0Sopenharmony_ci 407777dab0Sopenharmony_cidouble complex cacosh(double complex); 417777dab0Sopenharmony_cifloat complex cacoshf(float complex); 427777dab0Sopenharmony_cilong double complex cacoshl(long double complex); 437777dab0Sopenharmony_ci 447777dab0Sopenharmony_cidouble complex casinh(double complex); 457777dab0Sopenharmony_cifloat complex casinhf(float complex); 467777dab0Sopenharmony_cilong double complex casinhl(long double complex); 477777dab0Sopenharmony_ci 487777dab0Sopenharmony_cidouble complex catanh(double complex); 497777dab0Sopenharmony_cifloat complex catanhf(float complex); 507777dab0Sopenharmony_cilong double complex catanhl(long double complex); 517777dab0Sopenharmony_ci 527777dab0Sopenharmony_cidouble complex ccosh(double complex); 537777dab0Sopenharmony_cifloat complex ccoshf(float complex); 547777dab0Sopenharmony_cilong double complex ccoshl(long double complex); 557777dab0Sopenharmony_ci 567777dab0Sopenharmony_cidouble complex csinh(double complex); 577777dab0Sopenharmony_cifloat complex csinhf(float complex); 587777dab0Sopenharmony_cilong double complex csinhl(long double complex); 597777dab0Sopenharmony_ci 607777dab0Sopenharmony_cidouble complex ctanh(double complex); 617777dab0Sopenharmony_cifloat complex ctanhf(float complex); 627777dab0Sopenharmony_cilong double complex ctanhl(long double complex); 637777dab0Sopenharmony_ci 647777dab0Sopenharmony_cidouble complex cexp(double complex); 657777dab0Sopenharmony_cifloat complex cexpf(float complex); 667777dab0Sopenharmony_cilong double complex cexpl(long double complex); 677777dab0Sopenharmony_ci 687777dab0Sopenharmony_cidouble complex clog(double complex); 697777dab0Sopenharmony_cifloat complex clogf(float complex); 707777dab0Sopenharmony_cilong double complex clogl(long double complex); 717777dab0Sopenharmony_ci 727777dab0Sopenharmony_cidouble cabs(double complex); 737777dab0Sopenharmony_cifloat cabsf(float complex); 747777dab0Sopenharmony_cilong double cabsl(long double complex); 757777dab0Sopenharmony_ci 767777dab0Sopenharmony_cidouble complex cpow(double complex, double complex); 777777dab0Sopenharmony_cifloat complex cpowf(float complex, float complex); 787777dab0Sopenharmony_cilong double complex cpowl(long double complex, long double complex); 797777dab0Sopenharmony_ci 807777dab0Sopenharmony_cidouble complex csqrt(double complex); 817777dab0Sopenharmony_cifloat complex csqrtf(float complex); 827777dab0Sopenharmony_cilong double complex csqrtl(long double complex); 837777dab0Sopenharmony_ci 847777dab0Sopenharmony_cidouble carg(double complex); 857777dab0Sopenharmony_cifloat cargf(float complex); 867777dab0Sopenharmony_cilong double cargl(long double complex); 877777dab0Sopenharmony_ci 887777dab0Sopenharmony_cidouble cimag(double complex); 897777dab0Sopenharmony_cifloat cimagf(float complex); 907777dab0Sopenharmony_cilong double cimagl(long double complex); 917777dab0Sopenharmony_ci 927777dab0Sopenharmony_cidouble complex conj(double complex); 937777dab0Sopenharmony_cifloat complex conjf(float complex); 947777dab0Sopenharmony_cilong double complex conjl(long double complex); 957777dab0Sopenharmony_ci 967777dab0Sopenharmony_cidouble complex cproj(double complex); 977777dab0Sopenharmony_cifloat complex cprojf(float complex); 987777dab0Sopenharmony_cilong double complex cprojl(long double complex); 997777dab0Sopenharmony_ci 1007777dab0Sopenharmony_cidouble creal(double complex); 1017777dab0Sopenharmony_cifloat crealf(float complex); 1027777dab0Sopenharmony_cilong double creall(long double complex); 1037777dab0Sopenharmony_ci 1047777dab0Sopenharmony_ci#ifndef __cplusplus 1057777dab0Sopenharmony_ci#define __CIMAG(x, t) \ 1067777dab0Sopenharmony_ci (+(union { _Complex t __z; t __xy[2]; }){(_Complex t)(x)}.__xy[1]) 1077777dab0Sopenharmony_ci 1087777dab0Sopenharmony_ci#define creal(x) ((double)(x)) 1097777dab0Sopenharmony_ci#define crealf(x) ((float)(x)) 1107777dab0Sopenharmony_ci#define creall(x) ((long double)(x)) 1117777dab0Sopenharmony_ci 1127777dab0Sopenharmony_ci#define cimag(x) __CIMAG(x, double) 1137777dab0Sopenharmony_ci#define cimagf(x) __CIMAG(x, float) 1147777dab0Sopenharmony_ci#define cimagl(x) __CIMAG(x, long double) 1157777dab0Sopenharmony_ci#endif 1167777dab0Sopenharmony_ci 1177777dab0Sopenharmony_ci#if __STDC_VERSION__ >= 201112L 1187777dab0Sopenharmony_ci#if defined(_Imaginary_I) 1197777dab0Sopenharmony_ci#define __CMPLX(x, y, t) ((t)(x) + _Imaginary_I*(t)(y)) 1207777dab0Sopenharmony_ci#elif defined(__clang__) 1217777dab0Sopenharmony_ci#define __CMPLX(x, y, t) (+(_Complex t){ (t)(x), (t)(y) }) 1227777dab0Sopenharmony_ci#else 1237777dab0Sopenharmony_ci#define __CMPLX(x, y, t) (__builtin_complex((t)(x), (t)(y))) 1247777dab0Sopenharmony_ci#endif 1257777dab0Sopenharmony_ci#define CMPLX(x, y) __CMPLX(x, y, double) 1267777dab0Sopenharmony_ci#define CMPLXF(x, y) __CMPLX(x, y, float) 1277777dab0Sopenharmony_ci#define CMPLXL(x, y) __CMPLX(x, y, long double) 1287777dab0Sopenharmony_ci#endif 1297777dab0Sopenharmony_ci 1307777dab0Sopenharmony_ci#ifdef __cplusplus 1317777dab0Sopenharmony_ci} 1327777dab0Sopenharmony_ci#endif 1337777dab0Sopenharmony_ci#endif 134