21 static const unsigned long long oddplterm[
HiPOWERop] = {
28 static const unsigned long long oddnegterm[
HiPOWERon] = {
34 static const unsigned long long evenplterm[
HiPOWERep] = {
40 static const unsigned long long evennegterm[
HiPOWERen] = {
45 static const unsigned long long twothirds = 0xaaaaaaaaaaaaaaab
LL;
54 Xsig argSq, argSqSq, accumulatoro, accumulatore, accum,
69 || ((exponent == -1) && (st0_ptr->
sigh > 0xc90fdaa2))) {
83 if (
XSIG_LL(accum) == 0xffffffffffffffffLL) {
115 accumulatoro.
msw = accumulatoro.
midw = accumulatoro.
lsw = 0;
119 negate_Xsig(&accumulatoro);
125 accumulatore.
msw = accumulatore.
midw = accumulatore.
lsw = 0;
129 negate_Xsig(&accumulatore);
137 shr_Xsig(&accumulatore, -2 * (1 + exponent) + 1);
138 negate_Xsig(&accumulatore);
141 if (accumulatore.
msw == 0) {
149 div_Xsig(&accumulatoro, &accumulatore, &accum);
157 shr_Xsig(&accum, -2 * (exponent + 1));
160 add_two_Xsig(&accum, &argSignif, &exponent);
179 else if (exponent > -30) {
180 adj = accum.
msw >> -(exponent + 1);
181 adj = mul_32_32(adj, adj);
184 adj = mul_32_32(0x898cc517, adj);
187 if (!(fix_up.
msw & 0x80000000)) {
190 fix_up.
msw |= 0x80000000;
195 add_two_Xsig(&accum, &fix_up, &exponent);
200 accumulatoro.
lsw = accumulatoro.
midw = 0;
201 accumulatoro.
msw = 0x80000000;
202 div_Xsig(&accumulatoro, &accum, &accum);
203 exponent = -exponent - 1;