t...@gmplib.org (Torbjörn Granlund) writes: > "Marco Bodrato" <bodr...@mail.dm.unipi.it> writes: > > If we change (I'd agree) mpz_init into > > void > mpz_init (mpz_ptr x) > { > ALLOC (x) = 0; /* ZERO, any MPZ_REALLOC will allocate */ > PTR (x) = & static_const_limb_shared_by_all_instances; > SIZ (x) = 0; > } > > I suppose we should do this!
Me too! Actually, mpz_init could then be static const mp_limb_t dummy_limb = 0; #define INITIAL_MPZ {0, 0, &dummy_limb}; static const mpz_t initial_mpz = INITIAL_MPZ; void mpz_init (mpz_ptr x) { *x = initial_mpz; /* Inline or memcpy, depending on compiler */ } and later on we can consider some public interface for initializing an mpz without any library call. A use case I had a couple of years ago is initialization of a struct containing a couple of mpz_t values together with other stuff, and with the above change one could initialize a complete such a struct using a single memcpy. Regards, /Niels -- Niels Möller. PGP-encrypted email is preferred. Keyid C0B98E26. Internet email is subject to wholesale government surveillance. _______________________________________________ gmp-devel mailing list gmp-devel@gmplib.org https://gmplib.org/mailman/listinfo/gmp-devel