Domanda

Sto cercando una libreria per numeri interi grandi ma con larghezza fissa (128 o 256 sarebbero sufficienti). Il motivo è che non voglio alcuna allocazione sull'heap. Ho provato a realizzarli da solo, ma implementare la moltiplicazione, la divisione e il modulo in modo efficiente sembra essere abbastanza doloroso.

Questo esiste già da qualche parte?

Grazie

È stato utile?

Soluzione

Dai un'occhiata alla libreria GMP: www.gmplib.org

Citazione dalle categorie di funzioni:

  

Numero intero positivo di basso livello,   sovraccarico difficile da usare, molto basso   le funzioni si trovano in mpn   categoria. Nessuna gestione della memoria è   eseguita; il chiamante deve garantire   abbastanza spazio è disponibile per   risultati. (...)

Questo sembra essere ciò di cui hai bisogno.

Altri suggerimenti

Questo sembra almeno promettente (premi il numero 8 per int128 library su Google).

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

" A differenza di altre classi di grandi numeri, puoi lavorare con queste proprio come con altre P.O.D. tipi (ad esempio archivia e carica da file usando fwrite / fread). La rappresentazione interna di questi è un intero little-endian a 128 bit corretto. & Quot;

Se trovi GMP troppo complicato per i tuoi gusti, Dave Hanson ha alcune funzioni molto carine nel suo libro C Interfacce e implementazioni . Esiste un'interfaccia di basso livello che non esegue alcuna allocazione (controlli tutto), quindi esistono due interfacce di livello superiore che gestiscono progressivamente una maggiore allocazione sull'heap.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top