mirror of git://git.musl-libc.org/musl
add creal/cimag macros in complex.h (and use them in the functions defs)
This commit is contained in:
parent
132f0a0083
commit
13e400b355
|
@ -97,6 +97,17 @@ double creal(double complex);
|
|||
float crealf(float complex);
|
||||
long double creall(long double complex);
|
||||
|
||||
#define __CREALIMAG(x, t, i) \
|
||||
((union { _Complex t __z; t __xy[2]; }){(_Complex t)(x)}.__xy[i])
|
||||
|
||||
#define creal(x) __CREALIMAG(x, double, 0)
|
||||
#define crealf(x) __CREALIMAG(x, float, 0)
|
||||
#define creall(x) __CREALIMAG(x, long double, 0)
|
||||
|
||||
#define cimag(x) __CREALIMAG(x, double, 1)
|
||||
#define cimagf(x) __CREALIMAG(x, float, 1)
|
||||
#define cimagl(x) __CREALIMAG(x, long double, 1)
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -2,6 +2,5 @@
|
|||
|
||||
double (cimag)(double complex z)
|
||||
{
|
||||
union dcomplex u = {z};
|
||||
return u.a[1];
|
||||
return cimag(z);
|
||||
}
|
||||
|
|
|
@ -2,6 +2,5 @@
|
|||
|
||||
float (cimagf)(float complex z)
|
||||
{
|
||||
union fcomplex u = {z};
|
||||
return u.a[1];
|
||||
return cimagf(z);
|
||||
}
|
||||
|
|
|
@ -2,6 +2,5 @@
|
|||
|
||||
long double (cimagl)(long double complex z)
|
||||
{
|
||||
union lcomplex u = {z};
|
||||
return u.a[1];
|
||||
return cimagl(z);
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#include <complex.h>
|
||||
|
||||
double creal(double complex z)
|
||||
double (creal)(double complex z)
|
||||
{
|
||||
return z;
|
||||
return creal(z);
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#include <complex.h>
|
||||
|
||||
float crealf(float complex z)
|
||||
float (crealf)(float complex z)
|
||||
{
|
||||
return z;
|
||||
return crealf(z);
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#include <complex.h>
|
||||
|
||||
long double creall(long double complex z)
|
||||
long double (creall)(long double complex z)
|
||||
{
|
||||
return z;
|
||||
return creall(z);
|
||||
}
|
||||
|
|
|
@ -173,14 +173,6 @@ union lcomplex {
|
|||
long double a[2];
|
||||
};
|
||||
|
||||
// FIXME: move to complex.h ?
|
||||
#define creal(z) ((double)(z))
|
||||
#define crealf(z) ((float)(z))
|
||||
#define creall(z) ((long double)(z))
|
||||
#define cimag(z) ((union dcomplex){(z)}.a[1])
|
||||
#define cimagf(z) ((union fcomplex){(z)}.a[1])
|
||||
#define cimagl(z) ((union lcomplex){(z)}.a[1])
|
||||
|
||||
/* x + y*I is not supported properly by gcc */
|
||||
#define cpack(x,y) ((union dcomplex){.a={(x),(y)}}.z)
|
||||
#define cpackf(x,y) ((union fcomplex){.a={(x),(y)}}.z)
|
||||
|
|
Loading…
Reference in New Issue