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