These are chat archives for symengine/symengine
mp_integerclass, but there are a few simplifications
mp_limb_t(same as GMP, whatever it is), and for the time being I have hard-coded 2 limbs of static storage (same as
mp_integer), and otherwise fallback to using low-level GMP functions https://gmplib.org/manual/Low_002dlevel-Functions.html#Low_002dlevel-Functions if necessary (possibly some operations on MSVC will have to be implemented this way)
gmp_int(a straightforward GMP wrapper) and seeing good speedup (you can run the benchmarks to test yourself)
thread_localkeyword has been only recently supported on OSX with the stock compiler (although it has been available for long on homebrew's clang), so that might be a portability question mark in practice
mpz_struct_tpool like Sage does, where the dynamic array is reused instead of discarding.
static thread_localcan be deleted in most cases and it would just work for OS X.
mpz_to_stris implemented though. It's easy to get a wrong result
std::stringin the high level API