Arrays of mpz_t
David McKen
dmlmcken at comcast.net
Sat Feb 19 05:03:59 CET 2005
I can confirm that the C++ wrapper mpz_class works both with the new
operator and with vector<>. Failing that (and assuming you want to use
C) you can do the following:
unsigned num_elements = 1000;
mpz_t * my_array;
my_array = malloc(sizeof(mpz_t) * num_elements);
//Initalize
//Use
//Clear
free(my_array);
Just curious do you know about the mpz_array_init function? It imposes
some limitations but it may be useful.
Richard Cavell wrote:
>Hi,
>
>I've been trying to create an array of mpz_t. (See comp.lang.c++ for my threads). The best solution I have is something like this:
>
>#define MAXMPZ 1000
>mpz_t mympz[MAXMPZ];
>if (NumberOfMPZNeeded>MAXMPZ) {printf("Increase MAXMPZ"); abort();}
>for (int i=0; i<NumberOfMPZNeeded; i++)
>{
> mpz_init(mympz[i]);
> mpz_whatever(mympz[i]);
>}
>
>This is a bit wasteful of up to MAXMPZ * sizeof (mpz_t) bytes on my heap, plus it's amateurish programming. Is there a better way? The new operator fails, as does
>vector<>.
>
>
More information about the gmp-discuss
mailing list