-
BigInteger en C++
salut à tous,
J'ai un programme qui manipule des nombres trés trés grands ,pour cela j'utilise la class BigInteger en java ,le probléme c'est que ça ne s'execute pas trop vite ,du moins pas comme je l'aimerais et je me demande si il n'est pas possible de manipuler de tels nombres en C++ ou même en C.
Merci
-
Si, il existe pas mal de classes pour faire une telle chose en C++ (aucune en tête désolé -- peut-être chez boost ?). Par contre je ne sais pas si tu y gagneras vraiment en rapidité.
-
Boost? Je ne sais pas. Dans la sandbox peut-être.
Je partirai plutôt des liens dispos sur le site du projet Blitz++.
-
Bonjour,
personellemnt pour les BigNums j'utilise soit MIRACL, soit GMP suivant les besions (MIRACL étant une lib pour bignums mais plus spécifiquement dévolue à la cryptographie).
C'est deux bibliothèques possèdent des wrappers C++ et n'ont pas de limite quant à la taille des chiffres manipulables (si ce n'est bien sûr la mémoire du système hôte).
- GMP (GNU Multiple Precision Arithmetic Library)
http://www.swox.com/gmp/
- MIRACL (Multiprecision Integer and Rational Arithmetic C/C++ Library)
http://indigo.ie/~mscott/
Ces deux bibliothéques sont vraiment très rapides ! (attention à la licence de MIRACL qui reste gratuite si le programme est de même. La licence payante est vraiment très chère ! [1000 euros pour une seule licence...])
-
merci à tous ceux qui m'ont repondu ,surtout Neitsa, je pense que je vais useté GMP .
-
Juste une chose: tes nombres dépassent-ils les -3.4*10^-4932 ou 3.4*10^4932? (^=puissance... )
Si non: utilise des "long double"...
J'espère qu je suis dans le sujet...
A++
-
L'arithmétique en virgule flottante est horriblement imprécise dès lors qu'on effectue une longue suite de calcul. S'il emploie des BigInteger, il souhaite sûrement des résultats exacts, il est donc extrèmement improbable qu'il utilise des long doubles à la place.
--
Jedaï
-
Ok! Merci de la précision!