38 / +-(|x| > 1) ** +inf is +inf
39 / +-(|x| > 1) ** -inf is +0
40 / +-(|x| < 1) ** +inf is +0
41 / +-(|x| < 1) ** -inf is +inf
42 / (-1) ** +-inf is +1 (C99)
43 / +0 ** +y (except 0, NaN) is +0
44 / -0 ** +y (except 0, NaN, odd int) is +0
45 / +0 ** -y (except 0, NaN) is +inf (z flag)
46 / -0 ** -y (except 0, NaN, odd int) is +inf (z flag)
47 / -0 ** y (odd int) is - (+0 ** x)
48 / +inf ** +y (except 0, NaN) is +inf
49 / +inf ** -y (except 0, NaN) is +0
50 / -inf ** +-y (except 0, NaN) is -0 ** -+y (NO z flag)
51 / x ** -1 is 1/x
52 / x ** 2 is x*x
53 / -x ** y (an integer) is (-1)**(y) * (+x)**(y)
54 / x ** y (x negative & y not integer) is NaN (i flag)
55
56 #include "libm.h"
57 LIBM_ANSI_PRAGMA_WEAK(powl,function)
58 #include "libm_synonyms.h"
59 #include "xpg6.h"
60
61 #undef fabs
62
63 .data
64 .align 4
65 negzero:
66 .float -0.0
67 half:
68 .float 0.5
69 one:
70 .float 1.0
71 negone:
72 .float -1.0
73 two:
74 .float 2.0
75 Snan:
76 .long 0x7f800001
77 pinfinity:
78 .long 0x7f800000
|
38 / +-(|x| > 1) ** +inf is +inf
39 / +-(|x| > 1) ** -inf is +0
40 / +-(|x| < 1) ** +inf is +0
41 / +-(|x| < 1) ** -inf is +inf
42 / (-1) ** +-inf is +1 (C99)
43 / +0 ** +y (except 0, NaN) is +0
44 / -0 ** +y (except 0, NaN, odd int) is +0
45 / +0 ** -y (except 0, NaN) is +inf (z flag)
46 / -0 ** -y (except 0, NaN, odd int) is +inf (z flag)
47 / -0 ** y (odd int) is - (+0 ** x)
48 / +inf ** +y (except 0, NaN) is +inf
49 / +inf ** -y (except 0, NaN) is +0
50 / -inf ** +-y (except 0, NaN) is -0 ** -+y (NO z flag)
51 / x ** -1 is 1/x
52 / x ** 2 is x*x
53 / -x ** y (an integer) is (-1)**(y) * (+x)**(y)
54 / x ** y (x negative & y not integer) is NaN (i flag)
55
56 #include "libm.h"
57 LIBM_ANSI_PRAGMA_WEAK(powl,function)
58 #include "xpg6.h"
59
60 #undef fabs
61
62 .data
63 .align 4
64 negzero:
65 .float -0.0
66 half:
67 .float 0.5
68 one:
69 .float 1.0
70 negone:
71 .float -1.0
72 two:
73 .float 2.0
74 Snan:
75 .long 0x7f800001
76 pinfinity:
77 .long 0x7f800000
|