History log of /seL4-test-master/projects/musllibc/include/complex.h
Revision Date Author Comments
# 2f1d1f1e 02-Nov-2015 Rich Felker <dalias@aerifal.cx>

fix mismatched parens in CMPLX def for annex-g-conforming compilers

this conditional path was never tested because there are no compilers
that conform to annex g (none with _Imaginary_I).


# a9c2294e 17-Dec-2014 Rich Felker <dalias@aerifal.cx>

make the definition of _Complex_I explicitly complex

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.


# 4075af43 17-Dec-2014 Rich Felker <dalias@aerifal.cx>

make the result of the cimag macro a non-lvalue

this change is not necessary but helps diagnose invalid code. based on
patch by Jens Gustedt.


# 5ff2a118 17-Dec-2014 Rich Felker <dalias@aerifal.cx>

fix definition of CMPLX macros in complex.h to work in constant expressions

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.


# f164875a 08-Dec-2014 Bobby Bingham <koorogi@koorogi.info>

don't shadow functions with macros in C++

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.


# faea4c99 11-Dec-2012 Szabolcs Nagy <nsz@port70.net>

make CMPLX macros available in complex.h in non-c11 mode as well


# cfbaba79 12-Nov-2012 Szabolcs Nagy <nsz@port70.net>

complex: add C11 CMPLX macros and replace cpack with them


# 2d321fa0 20-Oct-2012 nsz <nsz@port70.net>

complex: make _Complex_I work with gcc -std=c99 -pedantic-errors


# 494ba80e 22-Mar-2012 Rich Felker <dalias@aerifal.cx>

simplify creal and cimag macros


# 13e400b3 22-Mar-2012 Rich Felker <dalias@aerifal.cx>

add creal/cimag macros in complex.h (and use them in the functions defs)


# b69f695a 12-Mar-2012 Rich Felker <dalias@aerifal.cx>

first commit of the new libm!

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.