Bien que les bibliothèques Tcl math :: bignum et math :: bigfloat soient, le terrain d'entente entre les deux doit être abordé. A savoir, les bignums qui sont dans différents radices et ont un radix point. Actuellement, math :: bignum ne gère que les entiers (afaict) et math :: bigfloat ne vous laissera pas spécifier de radices différentes pour math :: bigfloat :: fromstr (ditto). Est-ce que quelqu'un connaît une bibliothèque, pour l'un des principaux langages de script (par exemple Tcl, Perl, Python, Ruby, Lua) ou moins importants (newLISP par exemple), qui implémente bignums dans différentes radices avec la gestion de radix point?Qui fait des bignums non décimaux avec un point radix flottant?
Répondre
Je n'ai trouvé aucune bibliothèque pour cela, mais je n'ai pas cherché longtemps.
Mais vous pouvez contourner le problème de la même manière que vous le feriez si vous voulez des types de données 64 bits, mais seuls les types de données 32 bits sont disponibles. Avec les bibliothèques que vous avez déjà, vous devriez être en mesure de représenter un certain nombre dans la base b comme ceci:
ABCDEF.GHIJKLMN
peut être divisé aux deux bignums ABCDEF et GHIJKLMN. GHIJKLMN représente en fait GHIJLMN/pow (b, longueur (GHIJKLMN)) => GHIJKLM/pow (b, 8). Vous pouvez maintenant écraser les opérateurs dont vous avez besoin, ce qui devrait être possible pour des choses comme +, -, *, /. Si vous avez besoin de plus de choses comme sqrt, log ou pow, cette solution deviendra trop complexe et vous devriez vraiment chercher une bibliothèque.
Votre meilleur pari est d'utiliser GMP (libgmp).
J'ai moi-même cherché longtemps et dur pour une version .NET sans chance.
bignumber.js est une bibliothèque Javascript qui gère les numéros avec un point de base dans des bases de 2 à 36.
newlisp a un support GMP, qui doit être capable de gérer cela. –