comparison src/number-mp.h @ 5602:c9e5612f5424

Support the MP library on recent FreeBSD, have it pass relevant tests. src/ChangeLog addition: 2011-11-26 Aidan Kehoe <kehoea@parhasard.net> * number-mp.c (bignum_to_string): Don't overwrite the accumulator we've just set up for this function. * number-mp.c (BIGNUM_TO_TYPE): mp_itom() doesn't necessarily do what this code used to think with negative numbers, it can treat them as unsigned ints. Subtract numbers from bignum_zero instead of multiplying them by -1 to convert them to their negative equivalents. * number-mp.c (bignum_to_int): * number-mp.c (bignum_to_uint): * number-mp.c (bignum_to_long): * number-mp.c (bignum_to_ulong): * number-mp.c (bignum_to_double): Use the changed BIGNUM_TO_TYPE() in these functions. * number-mp.c (bignum_ceil): * number-mp.c (bignum_floor): In these functions, be more careful about rounding to positive and negative infinity, respectively. Don't use the sign of QUOTIENT when working out out whether to add or subtract one, rather use the sign QUOTIENT would have if arbitrary-precision division were done. * number-mp.h: * number-mp.h (MP_GCD): Wrap #include <mp.h> in BEGIN_C_DECLS/END_C_DECLS. * number.c (Fbigfloat_get_precision): * number.c (Fbigfloat_set_precision): Don't attempt to call XBIGFLOAT_GET_PREC if this build doesn't support big floats.
author Aidan Kehoe <kehoea@parhasard.net>
date Sat, 26 Nov 2011 17:59:14 +0000
parents 2aa9cd456ae7
children 3192994c49ca
comparison
equal deleted inserted replaced
5601:3e5d5e8e4bb7 5602:c9e5612f5424
30 /* BSD MP libraries without MP_PREFIX define a function named pow in mp.h that 30 /* BSD MP libraries without MP_PREFIX define a function named pow in mp.h that
31 has a different prototype from the one in math.h. We don't use that 31 has a different prototype from the one in math.h. We don't use that
32 function anyway, so we do this for safety purposes. However, this means 32 function anyway, so we do this for safety purposes. However, this means
33 that number-mp.h must always be included before math.h. */ 33 that number-mp.h must always be included before math.h. */
34 #define pow mp_pow 34 #define pow mp_pow
35 BEGIN_C_DECLS
35 #include <mp.h> 36 #include <mp.h>
37 END_C_DECLS
36 #undef pow 38 #undef pow
37 39
38 #ifdef MP_PREFIX 40 #ifdef MP_PREFIX
39 #define MP_GCD mp_gcd 41 #define MP_GCD mp_gcd
40 #define MP_ITOM mp_itom 42 #define MP_ITOM mp_itom