2009-11-29 13 views
6

Estoy buscando una biblioteca para enteros grandes pero con ancho fijo (128 o 256 sería suficiente). La razón es que no quiero ninguna asignación en el montón. Intenté hacerlas yo mismo, pero implementar la multiplicación, división y módulo de una manera eficiente parece ser bastante doloroso.enteros grandes con longitud fija

¿Esto ya existe en alguna parte?

Gracias

Respuesta

4

echar un vistazo a la biblioteca GMP: www.gmplib.org

Citando de las categorías de funciones:

-Bajo nivel positivo entero, de difícil uso, muy bajo sobrecarga funciones se encuentran en la categoría mpn . No se realiza ninguna gestión de memoria ; la persona que llama debe asegurarse de que haya suficiente espacio disponible para los resultados . (...)

Eso parece ser lo que necesita.

+0

nice! Estoy echando un vistazo en este – Ben

3

Esto al menos parece prometedor (marque el número 8 para int128 library en Google).

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

"A diferencia de otras clases de números grandes, se puede trabajar con ellos al igual que con otros tipos de POD (por ejemplo, almacenar y cargar de archivos usando fwrite/fread). Representación interna de éstos es correcta 128 bits entero pequeño-endian ".

2

Si encuentra GMP demasiado complicado para su gusto, Dave Hanson tiene algunas funciones muy agradables en su libro C Interfaces and Implementations. Hay una interfaz de bajo nivel que no asigna (usted controla todo), y luego hay dos interfaces de nivel superior que administran progresivamente más asignación en el montón.

+0

Lo hice funcionar con GMP, pero echaré un vistazo en este – Ben

Cuestiones relacionadas