Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
Hard pour arithmétique en nombres entiers ?
Envoyé par: Ecirbaf

Bonsoir,

Savez-vous quelle serait la configuration matérielle (PC) la plus adaptée - rapide - pour exécuter des programmes de calculs mathématiques sur de nombres entiers en multiprécision. Par exemple, avec CLN ou gmp ?
Quel pross ? INTEL, AMD ? La carte mère a-t-elle de l'importance pour ça ?

Merci d'avance.

Poste le Thursday 19 January 2006 23:32:33
Répondre     Citer    
Re: Hard pour arithmétique en nombres entiers ?

je serais curieux de découvrir ce qu'est un nombre entier en multiprécision

--
Brugmans Frédéric

[www.brugmans.net]
[triathlon.sport-challenge.be]

Poste le Friday 20 January 2006 11:16:03
Répondre     Citer    
Re: Hard pour arithmétique en nombres entiers ?
Envoyé par: menelrandir

Citation
Frédéric Brugmans
je serais curieux de découvrir ce qu'est un nombre
entier en multiprécision

--
Brugmans Frédéric
Moi aussi, et en plus je ne vois pas en quoi ça concerne Debian en particulier.

Sinon d'une manière général, l'évaluation des performences d'un processeur c'est quelque chose d'assez complexe, enfin sur du calcul arithmétique, il faut comparer les nombres de MIPS (millions d'instructions par seconde), le problème est de trouver les chiffres, les fabriquants préférant donner la fréquences d'horloge qui ne veut pas dire grand chose. Il faut aussi se rappeler que les architectures 64 bits font la différences entre les long int (sur 64 bits, étonnant hein :-))) et les int (sur 32 bits) alors qu'en 32 bits, les deux sont sur 32 bits, ça peut être interressant pour certaines applications. Enfin le temps d'accès à la mémoire, et donc égalements les caches, peuvent avoir une grande influences sur le temps d'éxécution, ça dépend aussi des programmes bien sur, et notement de leurs structures de données.

Poste le Saturday 21 January 2006 02:16:55
Répondre     Citer    
Re: Hard pour arithmétique en nombres entiers ?
Envoyé par: Ecirbaf

Bonjour,
merci de vos réponses.

Citation
Frédéric Brugmans
je serais curieux de découvrir ce qu'est un nombre entier en multiprécision
Citation
menelrandir
Moi aussi

On peut parler de multiprécison lorsque la taille de stockage des nombres est variable, adaptée au nombre représenté.
Pour un entier correspondant à un nombre de 50 chiffres décimaux, on consommera moins de mots mémoire que pour un entier à mille chiffres.

Le mieux est d'essayer ça :
[packages.debian.org]

Pour ceux qui ne programment pas en C++, il est tout de même possible de s'amuser avec les quelques exemples fournis.
( Marrant, le calcul de Pi qui crache des dizaines de milliers de décimales. )

Citation
menelrandir
je ne vois pas en quoi ça concerne Debian en particulier.
J'en suis bien conscient. Cependant, pour moi, l'informatique, c'est debian et j'ai la chance que le merveilleux CLN de Richy B. Kreckel fasse partie de la distrib. !

Je te remercie de tes explications : effectivement, ça dépend aussi de la librairie.
Je viens de m'inscrire sur la mailing list de CLN pour leur poser la question.

Pour la structure de données des entiers, à part la taille, les différents mots composant les nombres sont stockés consécutivement, avec la complémentation standard pour les négatifs.

Poste le Sunday 22 January 2006 12:20:14
Répondre     Citer    
Re: Hard pour arithmétique en nombres entiers ?
Envoyé par: nicola

OK, regarde le code source de la calculette en ligne bc. Elle fait ça.

--
On ne prête qu’aux riches, et on a bien raison, parce que les autres remboursent difficilement.
-+- Tristan Bernard (1866-1947) -+-

Poste le Sunday 22 January 2006 14:04:44
Répondre     Citer    
Re: Hard pour arithmétique en nombres entiers ?
Envoyé par: Ecirbaf

Merci nicola, j'ai suivi ton conseil. "bc" est un programme intéressant.
J'avais testé autrefois "gmp" qui possède heureusement plusieurs wrappers C++.

CLN est un must de souplesse et de rapidité, avec des tas de fonctions écrites en assembleur.
Comme c'est une librairie C++, on peut, de plus, l'employer, par exemple, avec la Standard
Template Library qui pourvoit vecteurs, listes, ensembles... pour y mettre ces nombres,
avec des tas d'algorithmes associés.

Voici, réécrit pour CLN un des programmes de test fournis avec les sources - des multiplications - de "bc".

Bien sûr un compilateur vs un interpréteur, y'a pas photo : 1,2 s contre 14,9 s pour l'original.

sarge:~/sources/bc/bc-1.06/Test$ cat mul.b
scale = 20
for (i=0; i<10000; i++) {
for (j=1; j<100; j++) b=i*j
}
b
for (i=0; i<10000; i++) {
for
(j=1000000000000000000000000000000000000000000000000000000000000000000; \

j<1000000000000000000000000000000000000000000000000000000000000000100; \
j++) b=i*j
}
b
quit

sarge:~/sources/bc/bc-1.06/Test$ time bc -l mul.b
bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
989901
99990000000000000000000000000000000000000000000000000000000000009899\
01

real 0m14.935s
user 0m14.922s
sys 0m0.003s
sarge:~/sources/bc/bc-1.06/Test$ # et le programme de test réécrit pour CLN
sarge:~/sources/bc/bc-1.06/Test$ cd cln
sarge:~/sources/bc/bc-1.06/Test/cln$ cat mul.c++
#include <cln/integer.h>
#include <cln/integer_io.h>

using namespace cln;
using namespace std;

int main( void ){

cl_I b, i;
for( i =0; i<10000; i =i+1 )
for( cl_I j(1); j<100; j =j+1 )
b =i*j;
cout << b << endl;

cl_I
jMax("1000000000000000000000000000000000000000000000000000000000000000100");
for( i =0; i<10000; i =i+1 )
for(cl_I
j("1000000000000000000000000000000000000000000000000000000000000000000");
j<jMax; j =j+1 )
b =i*j;
cout << b << endl;

return EXIT_SUCCESS;
}
sarge:~/sources/bc/bc-1.06/Test/cln$ time ./mul
989901
9999000000000000000000000000000000000000000000000000000000000000989901

real 0m1.219s
user 0m1.125s
sys 0m0.006s
sarge:~/sources/bc/bc-1.06/Test/cln$

----------------------------------
Les chiens aboient, Henri bêle...

Poste le Sunday 22 January 2006 22:44:55
Répondre     Citer    
Re: Hard pour arithmétique en nombres entiers ?
Envoyé par: nicola

As-tu regardé le code source de bc ?

P.S. : Ta citation qui répond à la mienne est amusante. X-o

--
On ne prête qu’aux riches, et on a bien raison, parce que les autres remboursent difficilement.
-+- Tristan Bernard (1866-1947) -+-

Poste le Monday 23 January 2006 06:55:38
Répondre     Citer    
Re: Hard pour arithmétique en nombres entiers ?
Envoyé par: Ecirbaf

J'ai regardé les sources. Mais... "bc" a l'air de compiler en RAM ? Elle me semblent bien difficiles à suivre pour quelqu'un - comme moi - qui n'est pas familier avec "bison" et "flex"...
Ne vais pas m'y appesantir : après de nombreux codages en assembleur, essais et comparaisons, j'ai adopté CLN.

Poste le Monday 23 January 2006 22:03:42
Répondre     Citer    

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
Hard pour arithmétique en nombres entiers ?
Aide sur les distributions Debian, Ubuntu et leurs dérivées : Mepis, Mint, Knoppix, Kubuntu, Lubuntu, Xandros

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons