# Environnements de dveloppement > Delphi > Codes sources  tlcharger >  Bibliothques de routines de calculs pour les nombres entiers gants [Sources]

## Rekin85

Bonjour, 

Je vous propose un nouvel lment  utiliser : Bibliothques de routines de calculs pour les nombres entiers gants

*NewGInt* et* NewGCent* sont deux bibliothques sous forme d'units .pas s'intgrant parfaitement  vos programmes Delphi compils en 32 bits. Elles permettent toutes manipulations calculatoires sur des nombres entiers gants sans limite de taille (sauf capacit matrielle), l'une en base 256 et l'autre en base 100.



Les deux fichiers .pas sont accompagns dans le zip par une notice pour en saisir toute la philosophie et s'en approprier les nombreuses procdures et fonctions qu'elles contiennent.

Qu'en pensez-vous ?

----------


## Gilbert Geyer

Bonjour,




> *Rekin85* : Qu'en pensez-vous ?


Le ZIP est vide ... Sinon le sujet est intressant.

A+.  ::D:

----------


## tourlourou

Bonjour Gilbert,

Certes vide, mais Ren a d recevoir un message  ce sujet pour le tlverser  nouveau. Et p ajouter un titre au bouton de tlchargement !

Bon code,
Yves.

----------


## Rekin85

Effectivement Gilbert, le Zip est vide !... Et je ne parviens pas  le dposer  nouveau : je ne trouve aucune possibilit pour revenir dessus... Dsol...

En attendant, je place le fameux Zip ici en pice jointe.

NewUnits.zip

Bonjour Yves,

Effectivement, je veux bien faire ce que Alcatiz et toi m'ont suggr, mais comment ? Faut-il redposer une nouvelle mouture complte ? Et alors, comment supprimer l'ancienne ? Je ne parviens pas  trouver une voie pour parvenir  modifier ce qui est dpos. ::calim2::   ::weird::

----------


## Alcatz

L'archive est de nouveau tlchargeable.

Ne vois-tu pas le bouton d'dition tel qu' gauche sur cette image ?

----------


## Rekin85

Bonjour Alcatiz,

Effectivement les icnes d'dition et suppression sont bien prsentes et mme les popups explicatifs de chacun. Je ne sais que dire ou faire pour obtenir des excuses : mea culpa ! Il faut dire qu'innocemment je voulais trouver un bouton explicite avec la mention "Editer" ou "Mettre  jour". A ma dcharge, je reconnais ne pas tre un habitu de la rubrique.

Les units sont maintenant tlchargeables et je souhaite  tous les amateurs ventuels de bien coder avec et d'en tirer toutes satisfactions.

J'en profite pour signaler que le dossier contient dans un zip aussi un excutable dnomm "Calculator". C'est une calculette cre pour illustrer quelques possibilits offertes par l'unit NewGInt sans plus.

----------


## Alcatz

> Je ne sais que dire ou faire pour obtenir des excuses : mea culpa !


Non, surtout pas, c'est plutt  nous de te remercier de proposer des ressources de qualit !  :;):

----------


## Roland Chastain

Bonjour !

Pour ceux qui (comme moi) ne connaissent pas l'assembleur, le code est impossible  tudier, d'autant qu'il est plutt volumineux (presque 4000 lignes pour la seule unit *NewGint*) mais il a l'air trs efficace. Flicitations !



```

```

Test avec Delphi 7 sous Windows 8.1.

----------


## Rekin85

Bonjour Roland,

Bien vu le calcul du Nime de la suite de Fibonacci. Merci pour le test.

Mais je me dois de faire une petite remarque : la capacit mmoire de la machine ! Avec les GInt et encore plus avec les GCent, dans les processus itratifs, on ne se rend pas toujours bien compte des kyrielles d'octets que les routines doivent manipuler et garder. Ainsi dans ton exemple, tu utilises un array qui, si on pousse les demandes de rsultats va vite crier grce...

Je reviens  ce que je prconise dans la notice d'accompagnement : la simplicit du code. Ainsi pour ton exemple, ne garder que les deux derniers GInt pour toute la suite des calculs. Moi, voici ce que j'ai cogit :


```

```

En l'occurence, ici le 100 000 ime de Fibonacci est un GInt de plus de 8000 octets. Certes, les recopies bouffent du temps, mais garantissent le processus.

Oui, l'ASM... C'est le lot des routines basiques si on veut qu'elles soient suffisamment efficientes...

----------


## Roland Chastain

Merci pour les explications et l'exemple.  ::ccool::

----------


## Gilbert Geyer

Bonjour,




> *Rekin85* : Mais je me dois de faire une petite remarque : la capacit mmoire de la machine ! Avec les GInt et encore plus avec les GCent, dans les processus itratifs, on ne se rend pas toujours bien compte des kyrielles d'octets que les routines doivent manipuler et garder. Ainsi dans ton exemple, tu utilises un array qui, si on pousse les demandes de rsultats va vite crier grce...


Absolument d'accord *Ren*, mais comme *Roland Chastain* s'intresse peut-tre galement aux GCent j'en profite pour signaler un avantage qui distingue les GCent des GInt :
Comme les GCent sont des string codes en base 100 on peut  tout moment savoir (via le Result de la function  *IsDiv10GCent*(Nv: GCent; var P10: boolean): longword) le nombre de 0 terminaux de la string lorsque la var P10 Renvoie true quand Nv=10^N ce qui permet de crer un troisime type de variables comme par exemple  :


```

```

et avec des variables de ce type ds que le GCent Nv contient des zros terminaux on peut illico raccourcir la longueur du GCent et reporter les puissances de 10 dans Expo d'o gains de vitesse + gains de Ram disponible.

Exemple pour *Factorielle(1234567) = 621590586471231550926149008331891933156379855913769E6984170*
en plus un tel rsultat s'affiche sur une seule et unique ligne alors qu'en affichant le mme nombre non expurg des puissances de 10, celui-ci avec ses 6984170 zros occupe ou dborde tout l'cran car le problme avec les calculs sur des Grands nombres c'est que pour en connatre leur rsultat il faut bien en afficher le rsultat quelque part ... 

A+.  ::D:

----------

