¿Hay implementaciones sólidas de enteros grandes en C? [closed]

3 minutos de lectura

Estoy trabajando en un proyecto en el que necesito procesar números enteros grandes (como 3^361) con absoluta precisión y la mayor velocidad posible. C es el lenguaje más rápido con el que estoy familiarizado, así que estoy tratando de codificar mi solución en ese lenguaje.

El problema es que no he podido encontrar una buena implementación de ningún tipo de datos para representar números enteros ilimitados en C que no sean el código fuente de Python. Me está tomando tiempo revisar el código y determinar lo que necesito.

Preferiría usar el código probado de otra persona con un conjunto completo de funcionalidades (suma, resta, multiplicación, división, modulación, exponenciación, verificación de igualdad… incluso la operación bit a bit sería dulce) que pasar las semanas que me llevaría incluso empiezo a poner mi propia versión a la par. Si bien sería una gran experiencia de aprendizaje, no es el foco de mi problema y prefiero llegar a la parte que me interesa 🙂

Un par de personas ya han mencionado GMP. Solo agregaría que al menos la última vez que miré, estaba bastante restringido a trabajar con gcc.

Si desea utilizar otros compiladores, hay algunos que podría considerar: NTL y MILAGRO. Probé MIRACL un poco y parece funcionar razonablemente bien. He usado NTL un poco más, y aunque los números enteros grandes son más una actividad secundaria, todavía los hace bastante bien. No pretende ser tan rápido como GMP (y, de hecho, puede usar GMP para realizar operaciones básicas), pero cuando realicé una evaluación comparativa mínima entre los dos, no encontré muchas diferencias significativas (aunque eso fue hace tanto tiempo que dudo que siga siendo válido).

Gnu MP proporciona una biblioteca bignum.

  • Seleccioné esto como la respuesta porque, al final, GMP fue la biblioteca en la que pude ponerme a trabajar más fácilmente. Gracias por informarme al respecto.

    – sadakatsu

    2 de febrero de 2012 a las 1:37

La biblioteca OpenSSL también proporciona una implementación sólida de BigNum (<openssl/bn.h>).

yo suelo MAPM que es una biblioteca portátil de precisión arbitraria (entero y punto flotante).

libtommath, de libtomcrypt, es probablemente el más pequeño, simple y rápido. (Es curioso cómo esos 3 superlativos casi siempre se unen…) Si no puede encontrar un flujo ascendente, puede obtener la fuente del árbol de fuentes dropbear ssh.

  • Tcl 8.5 (y posterior) incluye libtommath.

    – Becarios Donal

    7 julio 2010 a las 20:10

  • También recomiendo tanto libtommath como libtomcrypt.

    – pasztorpisti

    27 de febrero de 2014 a las 17:10

¿Hay implementaciones solidas de enteros grandes en C closed
norman ramsey

Si desea ANSI Standard C, obtenga el código en Dave Hanson’s Interfaces e implementaciones de C. Muy claro y bien diseñado.

Si las extensiones gcc y gcc están bien, entonces, como otros han señalado, la Biblioteca de precisión múltiple Gnu (GMP) está bien pensada y se usa ampliamente.

  • Tcl 8.5 (y posterior) incluye libtommath.

    – Becarios Donal

    7 julio 2010 a las 20:10

  • También recomiendo tanto libtommath como libtomcrypt.

    – pasztorpisti

    27 de febrero de 2014 a las 17:10

¿Hay implementaciones solidas de enteros grandes en C closed
bernardo ramos

MBed tiene un número grande implementación que sirve de base para las funciones criptográficas.

Es muy utilizado en microcontroladores.

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad