BigInteger

BigInteger

Version 1.1.2
Bibliothèque pour iOS et Mac OS X

Télécharger

Code source sur GitHub

Aperçu

La bibliothèque BigInteger est une bibliothèque gratuite pour le développement iOS et Mac OS X qui fournit un support pour le calcul entier en précision arbitraire. Elle permet d’effectuer aussi bien les opérations arithmétiques usuelles que de l’arithmétique modulaire, de calculer le plus grand diviseur commun entre deux nombres, de tester la primalité d’un nombre, et quelques autres choses encore.

Cette bibliothèque n’a pas été spécifiquement écrite pour obtenir les meilleures performances. L’accent a plutôt été mis sur la justesse des algorithmes, la portabilité entre les plateformes 32 et 64 bits, et l’intégration avec le frameword Cocoa. Si votre application repose sur de nombreux calculs en précision arbitraire, une bibliothèque orientée C telle que GMP vous conviendra probablement mieux. Mais si vous avez seulement besoin d’un soupçon de calcul modulaire dans un projet, ou bien si vous devez générer ponctuellement de grands nombres premiers et que vous ne souhaitez pas y consacrer un gros effort de développement, alors cette bibliothèque est faite pour vous.

La bibliothèque BigInteger peut être utilisée librement dans tout type d’application.

Fonctionnalités

La bibliothèque fournit une classe BigInteger qui supporte les opérations suivantes en précision arbitraire:

  • Addition
  • Soustraction
  • Multiplication et multiplication modulaire
  • Division (quotient et reste)
  • Décalage de bits
  • Inverse modulaire
  • Plus Grand Diviseur Commun
  • Exponentiation et exponentiation modulaire
  • Test de primalité (test de Miller-Rabin)
  • Génération de nombres aléatoires
  • Écriture dans une chaîne de caractères, dans toute base de 2 à 36
  • Archivage grâce aux objets NSKeyedArchiver et NSKeyedUnarchiver

Exemple d’utilisation

Utiliser la classe BigInteger est immédiat pour quiconque est familier avec Objective-C et Cocoa. Par exemple, l’extrait de code suivant génère un nombre premier aléatoire de 200 bits :

BigInteger * p, * r;
r = [[BigInteger alloc] initWithRandomNumberOfSize:200 exact:YES];
p = [r nextProbablePrime];
NSLog(@"prime = %@", [p toRadix:10]);
[r release];

Plutôt immédiat, n’est-ce pas ?

Contenu de la distribution

La bibliothèque BigInteger est téléchargeable grâce au lien ci-contre, sous la forme d’un fichier zip contenant:

  • Un fichier d’en-tête à inclure dans vos fichiers sources
  • Une bibliothèque universelle pour le développement iOS supportant les architectures armv7, armv7s, arm64, i386 et x86_64
  • Une bibliothèque universelle pour le développement Mac OS X supportant les architectures i386 et x86_64
  • Une documentation complète

Nouveautés de la version 1.1

La version 1.1.2 apporte les améliorations suivantes :

  • Support des plateformes iOS 64 bits
  • Support des opérateurs logiques (NOT, AND, OR et XOR)
  • Utilisation en interne de arc4random() au lieu de random() pour éviter au programmeur de se soucier de l’initialisation du générateur aléatoire
  • Meilleures performances pour la multiplication des très grands nombres
  • Correction de bugs mineurs