diff options
Diffstat (limited to 'soft-fp/op-2.h')
-rw-r--r-- | soft-fp/op-2.h | 378 |
1 files changed, 189 insertions, 189 deletions
diff --git a/soft-fp/op-2.h b/soft-fp/op-2.h index 0704035..5ef4217 100644 --- a/soft-fp/op-2.h +++ b/soft-fp/op-2.h @@ -31,113 +31,113 @@ <http://www.gnu.org/licenses/>. */ #define _FP_FRAC_DECL_2(X) _FP_W_TYPE X##_f0, X##_f1 -#define _FP_FRAC_COPY_2(D,S) (D##_f0 = S##_f0, D##_f1 = S##_f1) -#define _FP_FRAC_SET_2(X,I) __FP_FRAC_SET_2(X, I) +#define _FP_FRAC_COPY_2(D, S) (D##_f0 = S##_f0, D##_f1 = S##_f1) +#define _FP_FRAC_SET_2(X, I) __FP_FRAC_SET_2 (X, I) #define _FP_FRAC_HIGH_2(X) (X##_f1) #define _FP_FRAC_LOW_2(X) (X##_f0) -#define _FP_FRAC_WORD_2(X,w) (X##_f##w) - -#define _FP_FRAC_SLL_2(X,N) \ - (void)(((N) < _FP_W_TYPE_SIZE) \ - ? ({ \ - if (__builtin_constant_p(N) && (N) == 1) \ - { \ - X##_f1 = X##_f1 + X##_f1 + (((_FP_WS_TYPE)(X##_f0)) < 0); \ - X##_f0 += X##_f0; \ - } \ - else \ - { \ - X##_f1 = X##_f1 << (N) | X##_f0 >> (_FP_W_TYPE_SIZE - (N)); \ - X##_f0 <<= (N); \ - } \ - 0; \ - }) \ - : ({ \ - X##_f1 = X##_f0 << ((N) - _FP_W_TYPE_SIZE); \ - X##_f0 = 0; \ - })) - - -#define _FP_FRAC_SRL_2(X,N) \ - (void)(((N) < _FP_W_TYPE_SIZE) \ - ? ({ \ - X##_f0 = X##_f0 >> (N) | X##_f1 << (_FP_W_TYPE_SIZE - (N)); \ - X##_f1 >>= (N); \ - }) \ - : ({ \ - X##_f0 = X##_f1 >> ((N) - _FP_W_TYPE_SIZE); \ - X##_f1 = 0; \ - })) +#define _FP_FRAC_WORD_2(X, w) (X##_f##w) + +#define _FP_FRAC_SLL_2(X, N) \ + (void) (((N) < _FP_W_TYPE_SIZE) \ + ? ({ \ + if (__builtin_constant_p (N) && (N) == 1) \ + { \ + X##_f1 = X##_f1 + X##_f1 + (((_FP_WS_TYPE) (X##_f0)) < 0); \ + X##_f0 += X##_f0; \ + } \ + else \ + { \ + X##_f1 = X##_f1 << (N) | X##_f0 >> (_FP_W_TYPE_SIZE - (N)); \ + X##_f0 <<= (N); \ + } \ + 0; \ + }) \ + : ({ \ + X##_f1 = X##_f0 << ((N) - _FP_W_TYPE_SIZE); \ + X##_f0 = 0; \ + })) + + +#define _FP_FRAC_SRL_2(X, N) \ + (void) (((N) < _FP_W_TYPE_SIZE) \ + ? ({ \ + X##_f0 = X##_f0 >> (N) | X##_f1 << (_FP_W_TYPE_SIZE - (N)); \ + X##_f1 >>= (N); \ + }) \ + : ({ \ + X##_f0 = X##_f1 >> ((N) - _FP_W_TYPE_SIZE); \ + X##_f1 = 0; \ + })) /* Right shift with sticky-lsb. */ -#define _FP_FRAC_SRST_2(X,S, N,sz) \ - (void)(((N) < _FP_W_TYPE_SIZE) \ - ? ({ \ - S = (__builtin_constant_p(N) && (N) == 1 \ - ? X##_f0 & 1 \ - : (X##_f0 << (_FP_W_TYPE_SIZE - (N))) != 0); \ - X##_f0 = (X##_f1 << (_FP_W_TYPE_SIZE - (N)) | X##_f0 >> (N)); \ - X##_f1 >>= (N); \ - }) \ - : ({ \ - S = ((((N) == _FP_W_TYPE_SIZE \ - ? 0 \ - : (X##_f1 << (2*_FP_W_TYPE_SIZE - (N)))) \ - | X##_f0) != 0); \ - X##_f0 = (X##_f1 >> ((N) - _FP_W_TYPE_SIZE)); \ - X##_f1 = 0; \ - })) - -#define _FP_FRAC_SRS_2(X,N,sz) \ - (void)(((N) < _FP_W_TYPE_SIZE) \ - ? ({ \ - X##_f0 = (X##_f1 << (_FP_W_TYPE_SIZE - (N)) | X##_f0 >> (N) \ - | (__builtin_constant_p(N) && (N) == 1 \ - ? X##_f0 & 1 \ - : (X##_f0 << (_FP_W_TYPE_SIZE - (N))) != 0)); \ - X##_f1 >>= (N); \ - }) \ - : ({ \ - X##_f0 = (X##_f1 >> ((N) - _FP_W_TYPE_SIZE) \ - | ((((N) == _FP_W_TYPE_SIZE \ - ? 0 \ - : (X##_f1 << (2*_FP_W_TYPE_SIZE - (N)))) \ - | X##_f0) != 0)); \ - X##_f1 = 0; \ - })) - -#define _FP_FRAC_ADDI_2(X,I) \ - __FP_FRAC_ADDI_2(X##_f1, X##_f0, I) - -#define _FP_FRAC_ADD_2(R,X,Y) \ - __FP_FRAC_ADD_2(R##_f1, R##_f0, X##_f1, X##_f0, Y##_f1, Y##_f0) - -#define _FP_FRAC_SUB_2(R,X,Y) \ - __FP_FRAC_SUB_2(R##_f1, R##_f0, X##_f1, X##_f0, Y##_f1, Y##_f0) - -#define _FP_FRAC_DEC_2(X,Y) \ - __FP_FRAC_DEC_2(X##_f1, X##_f0, Y##_f1, Y##_f0) - -#define _FP_FRAC_CLZ_2(R,X) \ +#define _FP_FRAC_SRST_2(X, S, N, sz) \ + (void) (((N) < _FP_W_TYPE_SIZE) \ + ? ({ \ + S = (__builtin_constant_p (N) && (N) == 1 \ + ? X##_f0 & 1 \ + : (X##_f0 << (_FP_W_TYPE_SIZE - (N))) != 0); \ + X##_f0 = (X##_f1 << (_FP_W_TYPE_SIZE - (N)) | X##_f0 >> (N)); \ + X##_f1 >>= (N); \ + }) \ + : ({ \ + S = ((((N) == _FP_W_TYPE_SIZE \ + ? 0 \ + : (X##_f1 << (2*_FP_W_TYPE_SIZE - (N)))) \ + | X##_f0) != 0); \ + X##_f0 = (X##_f1 >> ((N) - _FP_W_TYPE_SIZE)); \ + X##_f1 = 0; \ + })) + +#define _FP_FRAC_SRS_2(X, N, sz) \ + (void) (((N) < _FP_W_TYPE_SIZE) \ + ? ({ \ + X##_f0 = (X##_f1 << (_FP_W_TYPE_SIZE - (N)) | X##_f0 >> (N) \ + | (__builtin_constant_p (N) && (N) == 1 \ + ? X##_f0 & 1 \ + : (X##_f0 << (_FP_W_TYPE_SIZE - (N))) != 0)); \ + X##_f1 >>= (N); \ + }) \ + : ({ \ + X##_f0 = (X##_f1 >> ((N) - _FP_W_TYPE_SIZE) \ + | ((((N) == _FP_W_TYPE_SIZE \ + ? 0 \ + : (X##_f1 << (2*_FP_W_TYPE_SIZE - (N)))) \ + | X##_f0) != 0)); \ + X##_f1 = 0; \ + })) + +#define _FP_FRAC_ADDI_2(X, I) \ + __FP_FRAC_ADDI_2 (X##_f1, X##_f0, I) + +#define _FP_FRAC_ADD_2(R, X, Y) \ + __FP_FRAC_ADD_2 (R##_f1, R##_f0, X##_f1, X##_f0, Y##_f1, Y##_f0) + +#define _FP_FRAC_SUB_2(R, X, Y) \ + __FP_FRAC_SUB_2 (R##_f1, R##_f0, X##_f1, X##_f0, Y##_f1, Y##_f0) + +#define _FP_FRAC_DEC_2(X, Y) \ + __FP_FRAC_DEC_2 (X##_f1, X##_f0, Y##_f1, Y##_f0) + +#define _FP_FRAC_CLZ_2(R, X) \ do \ { \ if (X##_f1) \ - __FP_CLZ(R,X##_f1); \ + __FP_CLZ (R, X##_f1); \ else \ { \ - __FP_CLZ(R,X##_f0); \ + __FP_CLZ (R, X##_f0); \ R += _FP_W_TYPE_SIZE; \ } \ } \ - while(0) + while (0) /* Predicates */ -#define _FP_FRAC_NEGP_2(X) ((_FP_WS_TYPE)X##_f1 < 0) +#define _FP_FRAC_NEGP_2(X) ((_FP_WS_TYPE) X##_f1 < 0) #define _FP_FRAC_ZEROP_2(X) ((X##_f1 | X##_f0) == 0) -#define _FP_FRAC_OVERP_2(fs,X) (_FP_FRAC_HIGH_##fs(X) & _FP_OVERFLOW_##fs) -#define _FP_FRAC_CLEAR_OVERP_2(fs,X) (_FP_FRAC_HIGH_##fs(X) &= ~_FP_OVERFLOW_##fs) -#define _FP_FRAC_HIGHBIT_DW_2(fs,X) \ - (_FP_FRAC_HIGH_DW_##fs(X) & _FP_HIGHBIT_DW_##fs) +#define _FP_FRAC_OVERP_2(fs, X) (_FP_FRAC_HIGH_##fs (X) & _FP_OVERFLOW_##fs) +#define _FP_FRAC_CLEAR_OVERP_2(fs, X) (_FP_FRAC_HIGH_##fs (X) &= ~_FP_OVERFLOW_##fs) +#define _FP_FRAC_HIGHBIT_DW_2(fs, X) \ + (_FP_FRAC_HIGH_DW_##fs (X) & _FP_HIGHBIT_DW_##fs) #define _FP_FRAC_EQ_2(X, Y) (X##_f1 == Y##_f1 && X##_f0 == Y##_f0) #define _FP_FRAC_GT_2(X, Y) \ (X##_f1 > Y##_f1 || (X##_f1 == Y##_f1 && X##_f0 > Y##_f0)) @@ -146,26 +146,26 @@ #define _FP_ZEROFRAC_2 0, 0 #define _FP_MINFRAC_2 0, 1 -#define _FP_MAXFRAC_2 (~(_FP_WS_TYPE)0), (~(_FP_WS_TYPE)0) +#define _FP_MAXFRAC_2 (~(_FP_WS_TYPE) 0), (~(_FP_WS_TYPE) 0) /* * Internals */ -#define __FP_FRAC_SET_2(X,I1,I0) (X##_f0 = I0, X##_f1 = I1) +#define __FP_FRAC_SET_2(X, I1, I0) (X##_f0 = I0, X##_f1 = I1) #define __FP_CLZ_2(R, xh, xl) \ do \ { \ if (xh) \ - __FP_CLZ(R,xh); \ + __FP_CLZ (R, xh); \ else \ { \ - __FP_CLZ(R,xl); \ + __FP_CLZ (R, xl); \ R += _FP_W_TYPE_SIZE; \ } \ } \ - while(0) + while (0) #if 0 @@ -194,14 +194,14 @@ #else # undef __FP_FRAC_ADDI_2 -# define __FP_FRAC_ADDI_2(xh, xl, i) add_ssaaaa(xh, xl, xh, xl, 0, i) +# define __FP_FRAC_ADDI_2(xh, xl, i) add_ssaaaa (xh, xl, xh, xl, 0, i) # undef __FP_FRAC_ADD_2 # define __FP_FRAC_ADD_2 add_ssaaaa # undef __FP_FRAC_SUB_2 # define __FP_FRAC_SUB_2 sub_ddmmss # undef __FP_FRAC_DEC_2 # define __FP_FRAC_DEC_2(xh, xl, yh, yl) \ - sub_ddmmss(xh, xl, xh, xl, yh, yl) + sub_ddmmss (xh, xl, xh, xl, yh, yl) #endif @@ -226,7 +226,7 @@ #define _FP_UNPACK_RAW_2_P(fs, X, val) \ do \ { \ - union _FP_UNION_##fs *_flo = (union _FP_UNION_##fs *)(val); \ + union _FP_UNION_##fs *_flo = (union _FP_UNION_##fs *) (val); \ \ X##_f0 = _flo->bits.frac0; \ X##_f1 = _flo->bits.frac1; \ @@ -257,7 +257,7 @@ #define _FP_PACK_RAW_2_P(fs, val, X) \ do \ { \ - union _FP_UNION_##fs *_flo = (union _FP_UNION_##fs *)(val); \ + union _FP_UNION_##fs *_flo = (union _FP_UNION_##fs *) (val); \ \ _flo->bits.frac0 = X##_f0; \ _flo->bits.frac1 = X##_f1; \ @@ -276,38 +276,38 @@ #define _FP_MUL_MEAT_DW_2_wide(wfracbits, R, X, Y, doit) \ do \ { \ - _FP_FRAC_DECL_2(_b); \ - _FP_FRAC_DECL_2(_c); \ + _FP_FRAC_DECL_2 (_b); \ + _FP_FRAC_DECL_2 (_c); \ \ - doit(_FP_FRAC_WORD_4(R,1), _FP_FRAC_WORD_4(R,0), X##_f0, Y##_f0); \ - doit(_b_f1, _b_f0, X##_f0, Y##_f1); \ - doit(_c_f1, _c_f0, X##_f1, Y##_f0); \ - doit(_FP_FRAC_WORD_4(R,3), _FP_FRAC_WORD_4(R,2), X##_f1, Y##_f1); \ + doit (_FP_FRAC_WORD_4 (R, 1), _FP_FRAC_WORD_4 (R, 0), X##_f0, Y##_f0); \ + doit (_b_f1, _b_f0, X##_f0, Y##_f1); \ + doit (_c_f1, _c_f0, X##_f1, Y##_f0); \ + doit (_FP_FRAC_WORD_4 (R, 3), _FP_FRAC_WORD_4 (R, 2), X##_f1, Y##_f1); \ \ - __FP_FRAC_ADD_3(_FP_FRAC_WORD_4(R,3),_FP_FRAC_WORD_4(R,2), \ - _FP_FRAC_WORD_4(R,1), 0, _b_f1, _b_f0, \ - _FP_FRAC_WORD_4(R,3),_FP_FRAC_WORD_4(R,2), \ - _FP_FRAC_WORD_4(R,1)); \ - __FP_FRAC_ADD_3(_FP_FRAC_WORD_4(R,3),_FP_FRAC_WORD_4(R,2), \ - _FP_FRAC_WORD_4(R,1), 0, _c_f1, _c_f0, \ - _FP_FRAC_WORD_4(R,3),_FP_FRAC_WORD_4(R,2), \ - _FP_FRAC_WORD_4(R,1)); \ + __FP_FRAC_ADD_3 (_FP_FRAC_WORD_4 (R, 3), _FP_FRAC_WORD_4 (R, 2), \ + _FP_FRAC_WORD_4 (R, 1), 0, _b_f1, _b_f0, \ + _FP_FRAC_WORD_4 (R, 3), _FP_FRAC_WORD_4 (R, 2), \ + _FP_FRAC_WORD_4 (R, 1)); \ + __FP_FRAC_ADD_3 (_FP_FRAC_WORD_4 (R, 3), _FP_FRAC_WORD_4 (R, 2), \ + _FP_FRAC_WORD_4 (R, 1), 0, _c_f1, _c_f0, \ + _FP_FRAC_WORD_4 (R, 3), _FP_FRAC_WORD_4 (R, 2), \ + _FP_FRAC_WORD_4 (R, 1)); \ } \ while (0) #define _FP_MUL_MEAT_2_wide(wfracbits, R, X, Y, doit) \ do \ { \ - _FP_FRAC_DECL_4(_z); \ + _FP_FRAC_DECL_4 (_z); \ \ - _FP_MUL_MEAT_DW_2_wide(wfracbits, _z, X, Y, doit); \ + _FP_MUL_MEAT_DW_2_wide (wfracbits, _z, X, Y, doit); \ \ /* Normalize since we know where the msb of the multiplicands \ were (bit B), we know that the msb of the of the product is \ at either 2B or 2B-1. */ \ - _FP_FRAC_SRS_4(_z, wfracbits-1, 2*wfracbits); \ - R##_f0 = _FP_FRAC_WORD_4(_z,0); \ - R##_f1 = _FP_FRAC_WORD_4(_z,1); \ + _FP_FRAC_SRS_4 (_z, wfracbits-1, 2*wfracbits); \ + R##_f0 = _FP_FRAC_WORD_4 (_z, 0); \ + R##_f1 = _FP_FRAC_WORD_4 (_z, 1); \ } \ while (0) @@ -318,8 +318,8 @@ #define _FP_MUL_MEAT_DW_2_wide_3mul(wfracbits, R, X, Y, doit) \ do \ { \ - _FP_FRAC_DECL_2(_b); \ - _FP_FRAC_DECL_2(_c); \ + _FP_FRAC_DECL_2 (_b); \ + _FP_FRAC_DECL_2 (_c); \ _FP_W_TYPE _d; \ int _c1, _c2; \ \ @@ -327,43 +327,43 @@ _c1 = _b_f0 < X##_f0; \ _b_f1 = Y##_f0 + Y##_f1; \ _c2 = _b_f1 < Y##_f0; \ - doit(_d, _FP_FRAC_WORD_4(R,0), X##_f0, Y##_f0); \ - doit(_FP_FRAC_WORD_4(R,2), _FP_FRAC_WORD_4(R,1), _b_f0, _b_f1); \ - doit(_c_f1, _c_f0, X##_f1, Y##_f1); \ + doit (_d, _FP_FRAC_WORD_4 (R, 0), X##_f0, Y##_f0); \ + doit (_FP_FRAC_WORD_4 (R, 2), _FP_FRAC_WORD_4 (R, 1), _b_f0, _b_f1); \ + doit (_c_f1, _c_f0, X##_f1, Y##_f1); \ \ _b_f0 &= -_c2; \ _b_f1 &= -_c1; \ - __FP_FRAC_ADD_3(_FP_FRAC_WORD_4(R,3),_FP_FRAC_WORD_4(R,2), \ - _FP_FRAC_WORD_4(R,1), (_c1 & _c2), 0, _d, \ - 0, _FP_FRAC_WORD_4(R,2), _FP_FRAC_WORD_4(R,1)); \ - __FP_FRAC_ADDI_2(_FP_FRAC_WORD_4(R,3),_FP_FRAC_WORD_4(R,2), \ - _b_f0); \ - __FP_FRAC_ADDI_2(_FP_FRAC_WORD_4(R,3),_FP_FRAC_WORD_4(R,2), \ - _b_f1); \ - __FP_FRAC_DEC_3(_FP_FRAC_WORD_4(R,3),_FP_FRAC_WORD_4(R,2), \ - _FP_FRAC_WORD_4(R,1), \ - 0, _d, _FP_FRAC_WORD_4(R,0)); \ - __FP_FRAC_DEC_3(_FP_FRAC_WORD_4(R,3),_FP_FRAC_WORD_4(R,2), \ - _FP_FRAC_WORD_4(R,1), 0, _c_f1, _c_f0); \ - __FP_FRAC_ADD_2(_FP_FRAC_WORD_4(R,3), _FP_FRAC_WORD_4(R,2), \ - _c_f1, _c_f0, \ - _FP_FRAC_WORD_4(R,3), _FP_FRAC_WORD_4(R,2)); \ + __FP_FRAC_ADD_3 (_FP_FRAC_WORD_4 (R, 3), _FP_FRAC_WORD_4 (R, 2), \ + _FP_FRAC_WORD_4 (R, 1), (_c1 & _c2), 0, _d, \ + 0, _FP_FRAC_WORD_4 (R, 2), _FP_FRAC_WORD_4 (R, 1)); \ + __FP_FRAC_ADDI_2 (_FP_FRAC_WORD_4 (R, 3), _FP_FRAC_WORD_4 (R, 2), \ + _b_f0); \ + __FP_FRAC_ADDI_2 (_FP_FRAC_WORD_4 (R, 3), _FP_FRAC_WORD_4 (R, 2), \ + _b_f1); \ + __FP_FRAC_DEC_3 (_FP_FRAC_WORD_4 (R, 3), _FP_FRAC_WORD_4 (R, 2), \ + _FP_FRAC_WORD_4 (R, 1), \ + 0, _d, _FP_FRAC_WORD_4 (R, 0)); \ + __FP_FRAC_DEC_3 (_FP_FRAC_WORD_4 (R, 3), _FP_FRAC_WORD_4 (R, 2), \ + _FP_FRAC_WORD_4 (R, 1), 0, _c_f1, _c_f0); \ + __FP_FRAC_ADD_2 (_FP_FRAC_WORD_4 (R, 3), _FP_FRAC_WORD_4 (R, 2), \ + _c_f1, _c_f0, \ + _FP_FRAC_WORD_4 (R, 3), _FP_FRAC_WORD_4 (R, 2)); \ } \ while (0) #define _FP_MUL_MEAT_2_wide_3mul(wfracbits, R, X, Y, doit) \ do \ { \ - _FP_FRAC_DECL_4(_z); \ + _FP_FRAC_DECL_4 (_z); \ \ - _FP_MUL_MEAT_DW_2_wide_3mul(wfracbits, _z, X, Y, doit); \ + _FP_MUL_MEAT_DW_2_wide_3mul (wfracbits, _z, X, Y, doit); \ \ /* Normalize since we know where the msb of the multiplicands \ were (bit B), we know that the msb of the of the product is \ at either 2B or 2B-1. */ \ - _FP_FRAC_SRS_4(_z, wfracbits-1, 2*wfracbits); \ - R##_f0 = _FP_FRAC_WORD_4(_z,0); \ - R##_f1 = _FP_FRAC_WORD_4(_z,1); \ + _FP_FRAC_SRS_4 (_z, wfracbits-1, 2*wfracbits); \ + R##_f0 = _FP_FRAC_WORD_4 (_z, 0); \ + R##_f1 = _FP_FRAC_WORD_4 (_z, 1); \ } \ while (0) @@ -376,21 +376,21 @@ _y[0] = Y##_f0; \ _y[1] = Y##_f1; \ \ - mpn_mul_n(R##_f, _x, _y, 2); \ + mpn_mul_n (R##_f, _x, _y, 2); \ } \ while (0) #define _FP_MUL_MEAT_2_gmp(wfracbits, R, X, Y) \ do \ { \ - _FP_FRAC_DECL_4(_z); \ + _FP_FRAC_DECL_4 (_z); \ \ - _FP_MUL_MEAT_DW_2_gmp(wfracbits, _z, X, Y); \ + _FP_MUL_MEAT_DW_2_gmp (wfracbits, _z, X, Y); \ \ /* Normalize since we know where the msb of the multiplicands \ were (bit B), we know that the msb of the of the product is \ at either 2B or 2B-1. */ \ - _FP_FRAC_SRS_4(_z, wfracbits-1, 2*wfracbits); \ + _FP_FRAC_SRS_4 (_z, wfracbits-1, 2*wfracbits); \ R##_f0 = _z_f[0]; \ R##_f1 = _z_f[1]; \ } \ @@ -429,20 +429,20 @@ UDItype _t240, _u240, _v240, _w240, _x240, _y240 = 0; \ \ if (wfracbits < 106 || wfracbits > 120) \ - abort(); \ + abort (); \ \ setfetz; \ \ - _e240 = (double)(long)(X##_f0 & 0xffffff); \ - _j240 = (double)(long)(Y##_f0 & 0xffffff); \ - _d240 = (double)(long)((X##_f0 >> 24) & 0xffffff); \ - _i240 = (double)(long)((Y##_f0 >> 24) & 0xffffff); \ - _c240 = (double)(long)(((X##_f1 << 16) & 0xffffff) | (X##_f0 >> 48)); \ - _h240 = (double)(long)(((Y##_f1 << 16) & 0xffffff) | (Y##_f0 >> 48)); \ - _b240 = (double)(long)((X##_f1 >> 8) & 0xffffff); \ - _g240 = (double)(long)((Y##_f1 >> 8) & 0xffffff); \ - _a240 = (double)(long)(X##_f1 >> 32); \ - _f240 = (double)(long)(Y##_f1 >> 32); \ + _e240 = (double) (long) (X##_f0 & 0xffffff); \ + _j240 = (double) (long) (Y##_f0 & 0xffffff); \ + _d240 = (double) (long) ((X##_f0 >> 24) & 0xffffff); \ + _i240 = (double) (long) ((Y##_f0 >> 24) & 0xffffff); \ + _c240 = (double) (long) (((X##_f1 << 16) & 0xffffff) | (X##_f0 >> 48)); \ + _h240 = (double) (long) (((Y##_f1 << 16) & 0xffffff) | (Y##_f0 >> 48)); \ + _b240 = (double) (long) ((X##_f1 >> 8) & 0xffffff); \ + _g240 = (double) (long) ((Y##_f1 >> 8) & 0xffffff); \ + _a240 = (double) (long) (X##_f1 >> 32); \ + _f240 = (double) (long) (Y##_f1 >> 32); \ _e240 *= _const[3]; \ _j240 *= _const[3]; \ _d240 *= _const[2]; \ @@ -484,7 +484,7 @@ _y240 = 1; \ if (_p240.d != 0.0) \ _y240 = 1; \ - _t240 = (DItype)_k240; \ + _t240 = (DItype) _k240; \ _u240 = _l240.i; \ _v240 = _m240.i; \ _w240 = _n240.i; \ @@ -508,7 +508,7 @@ do \ { \ _FP_W_TYPE _n_f2, _n_f1, _n_f0, _r_f1, _r_f0, _m_f1, _m_f0; \ - if (_FP_FRAC_GE_2(X, Y)) \ + if (_FP_FRAC_GE_2 (X, Y)) \ { \ _n_f2 = X##_f1 >> 1; \ _n_f1 = X##_f1 << (_FP_W_TYPE_SIZE - 1) | X##_f0 >> 1; \ @@ -524,22 +524,22 @@ \ /* Normalize, i.e. make the most significant bit of the \ denominator set. */ \ - _FP_FRAC_SLL_2(Y, _FP_WFRACXBITS_##fs); \ + _FP_FRAC_SLL_2 (Y, _FP_WFRACXBITS_##fs); \ \ - udiv_qrnnd(R##_f1, _r_f1, _n_f2, _n_f1, Y##_f1); \ - umul_ppmm(_m_f1, _m_f0, R##_f1, Y##_f0); \ + udiv_qrnnd (R##_f1, _r_f1, _n_f2, _n_f1, Y##_f1); \ + umul_ppmm (_m_f1, _m_f0, R##_f1, Y##_f0); \ _r_f0 = _n_f0; \ - if (_FP_FRAC_GT_2(_m, _r)) \ + if (_FP_FRAC_GT_2 (_m, _r)) \ { \ R##_f1--; \ - _FP_FRAC_ADD_2(_r, Y, _r); \ - if (_FP_FRAC_GE_2(_r, Y) && _FP_FRAC_GT_2(_m, _r)) \ + _FP_FRAC_ADD_2 (_r, Y, _r); \ + if (_FP_FRAC_GE_2 (_r, Y) && _FP_FRAC_GT_2 (_m, _r)) \ { \ R##_f1--; \ - _FP_FRAC_ADD_2(_r, Y, _r); \ + _FP_FRAC_ADD_2 (_r, Y, _r); \ } \ } \ - _FP_FRAC_DEC_2(_r, _m); \ + _FP_FRAC_DEC_2 (_r, _m); \ \ if (_r_f1 == Y##_f1) \ { \ @@ -554,20 +554,20 @@ } \ else \ { \ - udiv_qrnnd(R##_f0, _r_f1, _r_f1, _r_f0, Y##_f1); \ - umul_ppmm(_m_f1, _m_f0, R##_f0, Y##_f0); \ + udiv_qrnnd (R##_f0, _r_f1, _r_f1, _r_f0, Y##_f1); \ + umul_ppmm (_m_f1, _m_f0, R##_f0, Y##_f0); \ _r_f0 = 0; \ - if (_FP_FRAC_GT_2(_m, _r)) \ + if (_FP_FRAC_GT_2 (_m, _r)) \ { \ R##_f0--; \ - _FP_FRAC_ADD_2(_r, Y, _r); \ - if (_FP_FRAC_GE_2(_r, Y) && _FP_FRAC_GT_2(_m, _r)) \ + _FP_FRAC_ADD_2 (_r, Y, _r); \ + if (_FP_FRAC_GE_2 (_r, Y) && _FP_FRAC_GT_2 (_m, _r)) \ { \ R##_f0--; \ - _FP_FRAC_ADD_2(_r, Y, _r); \ + _FP_FRAC_ADD_2 (_r, Y, _r); \ } \ } \ - if (!_FP_FRAC_EQ_2(_r, _m)) \ + if (!_FP_FRAC_EQ_2 (_r, _m)) \ R##_f0 |= _FP_WORK_STICKY; \ } \ } \ @@ -592,10 +592,10 @@ X##_f1 -= T##_f1; \ R##_f1 += q; \ } \ - _FP_FRAC_SLL_2(X, 1); \ + _FP_FRAC_SLL_2 (X, 1); \ q >>= 1; \ } \ - q = (_FP_W_TYPE)1 << (_FP_W_TYPE_SIZE - 1); \ + q = (_FP_W_TYPE) 1 << (_FP_W_TYPE_SIZE - 1); \ while (q != _FP_WORK_ROUND) \ { \ T##_f0 = S##_f0 + q; \ @@ -605,10 +605,10 @@ { \ S##_f0 = T##_f0 + q; \ S##_f1 += (T##_f0 > S##_f0); \ - _FP_FRAC_DEC_2(X, T); \ + _FP_FRAC_DEC_2 (X, T); \ R##_f0 += q; \ } \ - _FP_FRAC_SLL_2(X, 1); \ + _FP_FRAC_SLL_2 (X, 1); \ q >>= 1; \ } \ if (X##_f0 | X##_f1) \ @@ -628,13 +628,13 @@ */ #define _FP_FRAC_ASSEMBLE_2(r, X, rsize) \ - (void)((rsize <= _FP_W_TYPE_SIZE) \ - ? ({ r = X##_f0; }) \ - : ({ \ - r = X##_f1; \ - r <<= _FP_W_TYPE_SIZE; \ - r += X##_f0; \ - })) + (void) ((rsize <= _FP_W_TYPE_SIZE) \ + ? ({ r = X##_f0; }) \ + : ({ \ + r = X##_f1; \ + r <<= _FP_W_TYPE_SIZE; \ + r += X##_f0; \ + })) #define _FP_FRAC_DISASSEMBLE_2(X, r, rsize) \ do \ @@ -652,4 +652,4 @@ #define _FP_FRAC_COPY_2_1(D, S) ((D##_f0 = S##_f), (D##_f1 = 0)) -#define _FP_FRAC_COPY_2_2(D,S) _FP_FRAC_COPY_2(D,S) +#define _FP_FRAC_COPY_2_2(D, S) _FP_FRAC_COPY_2 (D, S) |