History log of /seL4-test-master/projects/musllibc/src/math/pow.c
Revision Date Author Comments
# 688d3da0 03-Oct-2016 Szabolcs Nagy <nsz@port70.net>

math: fix pow signed shift ub

j is int32_t and thus j<<31 is undefined if j==1, so j is changed to
uint32_t locally as a quick fix, the generated code is not affected.

(this is a strict conformance fix, future c standard may allow 1<<31,
see DR 463. the bug was inherited from freebsd fdlibm, the proper fix
is to use uint32_t for all bit hacks, but that requires more intrusive
changes.)

reported by Daniel Sabogal


# cb5c057c 10-Apr-2015 Szabolcs Nagy <nsz@port70.net>

math: fix pow(+-0,-inf) not to raise divbyzero flag

this reverts the commit f29fea00b5bc72d4b8abccba2bb1e312684d1fce
which was based on a bug in C99 and POSIX and did not match IEEE-754
http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1515.pdf


# c221af95 15-Aug-2013 Szabolcs Nagy <nsz@port70.net>

math: fix pow(x,-1) to raise underflow properly

if FLT_EVAL_METHOD!=0 check if (double)(1/x) is subnormal and not a
power of 2 (if 1/x is power of 2 then either it is exact or the
long double to double rounding already raised inexact and underflow)


# f29fea00 15-Aug-2013 Szabolcs Nagy <nsz@port70.net>

math: fix pow(0,-inf) to raise divbyzero flag


# f1347a3a 20-Mar-2012 nsz <nsz@port70.net>

clean up pow.c and powf.c
fix comments about special cases


# 0cbb6547 19-Mar-2012 nsz <nsz@port70.net>

code cleanup of named constants

zero, one, two, half are replaced by const literals
The policy was to use the f suffix for float consts (1.0f),
but don't use suffix for long double consts (these consts
can be exactly represented as double).


# 32ca5ef3 13-Mar-2012 nsz <nsz@port70.net>

math cleanup: use 1.0f instead of 1.0F


# 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.