Question

Je cherche une bibliothèque pour les grands entiers mais avec une largeur fixe (128 ou 256 suffiraient). La raison en est que je ne veux aucune allocation sur le tas. J'ai essayé de les fabriquer moi-même, mais mettre en œuvre la multiplication, la division et le modulo de manière efficace semble être assez pénible.

Cela existe-t-il déjà quelque part?

Merci

Était-ce utile?

La solution

Jetez un coup d’œil à la bibliothèque GMP: www.gmplib.org

Citation à partir des catégories de fonctions:

  

entier positif bas,   difficile à utiliser, très peu de frais généraux   les fonctions se trouvent dans le MPN   Catégorie. Aucune gestion de la mémoire n'est   effectué; l'appelant doit s'assurer   assez d'espace est disponible pour la   résultats. (...)

Cela semble être ce dont vous avez besoin.

Autres conseils

Cela semble au moins prometteur (numéro 8 pour la bibliothèque int128 sur Google).

http://www.mx-3.cz /tringi/www/langen.php?id=int128

"Contrairement aux autres classes de grand nombre, vous pouvez les utiliser comme avec les autres P.O.D. types (par exemple stocker et charger à partir de fichiers en utilisant fwrite / fread). La représentation interne de ces éléments est un entier little-endian de 128 bits correct. "

Si vous trouvez GMP trop compliqué à votre goût, Dave Hanson a quelques fonctionnalités très intéressantes dans son livre Interfaces et implémentations C . Il existe une interface de bas niveau qui ne fait aucune allocation (vous contrôlez tout), puis deux interfaces de niveau supérieur qui gèrent progressivement davantage d'allocation sur le tas.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top