2011-06-20 4 views
1

Que faire pour qu'un vecteur contienne des doubles valeurs GMP bignum en C++. Mon code ne fonctionne que jusqu'à plus d'un million. Voici ce que j'ai dans mon code maintenant:Utilisation du vecteur Bignum en C++

vector<double> Primes; 

Qu'est-ce que ce devrait être? J'ai vérifié et je ne trouve rien à ce sujet. Est-ce que l'utilisation est normale.

+0

Vous ne pouvez pas simplement utiliser 'vector Primes'? – muksie

Répondre

4

Ce n'est pas un gros double GMP, c'est un double C++ standard intégré.

Que pensez-vous de cela?

std::vector<mpf_class> Primes; 

Mais puisque vous mettez (apparemment) des nombres premiers dans un vecteur, je suppose que vous voulez des entiers, pas des nombres à virgule flottante. Ensuite, ceci est approprié:

std::vector<mpz_class> Primes; 
+0

Je dois effectuer de l'arithmétique sur les valeurs ayant une précision d'au moins 3 points décimaux. – TimeCoder

+0

Quelle est la taille de vos valeurs et quel genre d'arithmique? – orlp

+0

Jusqu'à 1 000 000 000. J'ai besoin de diviser les nombres par les valeurs en Primes et j'ai besoin de savoir ce que la décimale est après. En fait, rétrospectivement, il semble que les ints seraient en fait plus appropriés. – TimeCoder

1

Selon la documentation un certain nombre GMP est initialisé à l'aide

mpz_t q; 

Faire l'initialisation du vecteur

std::vector<mpz_t> primes 

également pourquoi vos deux nombres premiers permission?

+1

double précision? – Tom