of libmpfr (like DrDr's) that don't have it
Reimplemented really simple FFI functions (e.g. mpfr-prec, mpfr-exp) to
avoid calling overhead
Renamed `bigfloat-sign' to `bigfloat-signbit'
Renamed `bigfloat-sig+exp' to `bigfloat->sig+exp' (for symmetry with
`sig+exp->bigfloat')
use longs for the "limbs" of bigints. However, when GMP's configure script
detects that mingw64 is compiling, it defines LONG_LONG_LIMB, which makes the
type of limbs long long, or 64 bits. This is fine; a 64-bit machine should use
64-bit ints for the digits of its bigints. It would have been nice to know
this special case earlier, though I can see why it's not advertised: most
users don't need to know, and it seems like it's obviously the right choice to
make when dealing with Win64's annoying ABI.
Made "mpfr.rkt" search for 'mpfr_set_z_exp if 'mpfr_set_z_2exp isn't found.
Hopefully this allows the bigfloat tests to finish on DrDr. If not, DrDr
will need a libmpfr upgrade.
Made some minor doc fixups
Exact 0 turns out to also be a corner case for addition.
At this point, mixed-mode optimizations pretty much only apply for mixes
of floats and literal non-zero non-floats.
Fixed bigfloat functions that assumed (fixnum? x) means x fits in a _long
(not true on Win64)
Hopefully fixed dangling pointer errors that broke `math/bigfloat' on Win64.
It apparently had no _long/_int mismatches, but GC on Win64 will run between
creating an `_mpz' and using its value after passing it as an output argument
to MPFR functions. That doesn't seem to happen on 64-bit Linux or Mac. No
idea why, but Win64 exposed the problem so... that's good, I guess.
Rewrote `rational->bigfloat' to not use GMP's rationals
More/better bigfloat tests
Added bigfloat stress test w/ weak leak detection
Reenabled custodian shutdown callback that clears MPFR constants, because it
seems to work now
Removed `mpfr-available?' because it would only return non-#f