summaryrefslogtreecommitdiff
path: root/include/complex.h
AgeCommit message (Collapse)AuthorLines
2015-11-02fix mismatched parens in CMPLX def for annex-g-conforming compilersRich Felker-1/+1
this conditional path was never tested because there are no compilers that conform to annex g (none with _Imaginary_I).
2014-12-17make the definition of _Complex_I explicitly complexRich Felker-2/+2
it's unclear whether compilers which provide pure imaginary types might produce a pure imaginary expression for 1.0fi. using 0.0f+1.0fi ensures that the result is explicitly complex and makes this obvious to human readers too.
2014-12-17make the result of the cimag macro a non-lvalueRich Felker-1/+1
this change is not necessary but helps diagnose invalid code. based on patch by Jens Gustedt.
2014-12-17fix definition of CMPLX macros in complex.h to work in constant expressionsRich Felker-3/+9
based on patches by Jens Gustedt. these macros need to be usable in static initializers, and the old definitions were not. there is no portable way to provide correct definitions for these macros unless the compiler supports pure imaginary types. a portable definition is provided for this case even though there are presently no compilers that can use it. gcc and compatible compilers provide a builtin function that can be used, but clang fails to support this and instead requires a construct which is a constraint violation and which is only a constant expression as a clang-specific extension. since these macros are a namespace violation in pre-C11 profiles, and since no known pre-C11 compilers provide any way to define them correctly anyway, the definitions have been made conditional on C11.
2014-12-09don't shadow functions with macros in C++Bobby Bingham-0/+2
C++ programmers typically expect something like "::function(x,y)" to work and may be surprised to find that "(::function)(x,y)" is actually required due to the headers declaring a macro version of some standard functions. We already omit function-like macros for C++ in most cases where there is a real function available. This commit extends this to the remaining function-like macros which have a real function version.
2012-12-11make CMPLX macros available in complex.h in non-c11 mode as wellSzabolcs Nagy-2/+0
2012-11-13complex: add C11 CMPLX macros and replace cpack with themSzabolcs Nagy-0/+9
2012-10-21complex: make _Complex_I work with gcc -std=c99 -pedantic-errorsnsz-0/+4
2012-03-22simplify creal and cimag macrosRich Felker-8/+8
2012-03-22add creal/cimag macros in complex.h (and use them in the functions defs)Rich Felker-0/+11
2012-03-13first commit of the new libm!Rich Felker-0/+103
thanks to the hard work of Szabolcs Nagy (nsz), identifying the best (from correctness and license standpoint) implementations from freebsd and openbsd and cleaning them up! musl should now fully support c99 float and long double math functions, and has near-complete complex math support. tgmath should also work (fully on gcc-compatible compilers, and mostly on any c99 compiler). based largely on commit 0376d44a890fea261506f1fc63833e7a686dca19 from nsz's libm git repo, with some additions (dummy versions of a few missing long double complex functions, etc.) by me. various cleanups still need to be made, including re-adding (if they're correct) some asm functions that were dropped.