cmarsc
Messages postés455Date d'inscriptionmercredi 6 mars 2002StatutMembreDernière intervention18 décembre 2003
-
27 mars 2003 à 09:17
Super_Mat
Messages postés37Date d'inscriptionjeudi 2 septembre 2004StatutMembreDernière intervention31 août 2005
-
23 sept. 2004 à 21:34
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
Super_Mat
Messages postés37Date d'inscriptionjeudi 2 septembre 2004StatutMembreDernière intervention31 août 2005 23 sept. 2004 à 21:34
7 décimales en 200.000.000 d'itération c'est pas fameux quand même :-)
Une des méthodes des plus rapides est celle de Bailey-Borwein-Plouffe (BBP) je pense. A chaque itération on trouve un chiffre exacte supplémentaire.
Je crois que je vais utiliser celle-ci pour ma bibliothèque des nombres formels.
knutzz
Messages postés1Date d'inscriptionjeudi 6 février 2003StatutMembreDernière intervention 2 avril 2003 2 avril 2003 à 10:51
Histoire de bourrer un peu plus pour les amateurs de décimales.
On déroule la boucle, plus il y a de CALC et plus % CPU utilisé par la boucle et le print diminue.
#define CALC somme += (1./(long double)n);
n = n + 2;
somme -= (1./(long double)n);
n = n + 2;
int main(int argc, char* argv[])
{
signed int signe = 1;
long double somme = 0;
int n = 1;
cs_aerith
Messages postés54Date d'inscriptionlundi 17 mars 2003StatutMembreDernière intervention12 mars 2006 28 mars 2003 à 12:40
cmarsc :
-oki pour le .h
-je pense que si je mes une condition d'arret par une touche ca devrai ralentir le programme, c'est si important que ca de cloturer le prog ?
-et heu question vitesse ce prog utilise 15% max de mes ressource et c'est illisible en effet
zanidip :
je me suis renseigner et a essayer la methode d'archimed par les poligone regulier mais pas reussi a sortir un resultat bon si j'y arrive je posterai ca ici
-j'ai trouver le record, un certain gars a tokio avec 51 milliards de decimales
-je vais tenter de metre un timer pour savoir le nombre d'iteration en combien de temp qu'on a fais
cmarsc
Messages postés455Date d'inscriptionmercredi 6 mars 2002StatutMembreDernière intervention18 décembre 2003 28 mars 2003 à 07:12
salut,
on utilise " .h" par exemple "fichier_perso.h" pour les fichiers que l'on a écrit nous même et <.h> pour les fichiers disponibles avec le compilateurs c'est notamment le cas des bibliothèques standard.
avec une boucle infinie il n'y a pas de condition d'arrêt et on ne peut donc pas mettre fin à l'exécution du programme proprement (ESCAPE).
et pour la vitesse chez moi c'est trop rapide c'est pour cela que j'ai ajouté une boucle for(...) question de machine sans doute ;-)
Viper31
Messages postés96Date d'inscriptionmardi 2 avril 2002StatutMembreDernière intervention 7 août 2005 27 mars 2003 à 17:27
Ya encore plus simple , mais ca n engage que moi :
:) enfin c'est vrai que trouve un algo qui le calcul c toujours interessant ^^ ! mais bon :]
zanidip
Messages postés76Date d'inscriptionlundi 30 septembre 2002StatutMembreDernière intervention25 mars 2007 27 mars 2003 à 16:00
il y a d'autres moyens plus simple :
un systeme qui encadre pi en calculant les perimetre des polygone reguliés inscri dans le cercle a n cotés.
plus n est grand et plus le resultat sera preci!
c'est vrais qu'il est un peut lent ton prog!
cs_aerith
Messages postés54Date d'inscriptionlundi 17 mars 2003StatutMembreDernière intervention12 mars 2006 27 mars 2003 à 13:00
-les " " son tout a fais autoriser
-la boucle infini c'est volontaire ca evite de fermer le programme par erreur
-conio est inutile ici
-et pourquoi ralentir le programme il est deja trop lent ?
cmarsc
Messages postés455Date d'inscriptionmercredi 6 mars 2002StatutMembreDernière intervention18 décembre 2003 27 mars 2003 à 09:18
salut,
#include <stdio.h> au lieu de #include "stdio.h"
la boucle do while(1) est infinie (pas de condition de sortie :-( ) kbhit est plus indiquée
int main(void)
{
signed int signe = 1;
long double somme = 0;
int i;
int n = 1;
do
{
somme += signe*(1.0/(long double)n);
signe = -signe;
n += 2;
printf("%20.20f %i
",4.0*somme,n);
for (i =0; i< 5000;i++) { // ralentir
printf("%c",'a');
}
}
while(!kbhit());
return 0;
}
cmarsc
Messages postés455Date d'inscriptionmercredi 6 mars 2002StatutMembreDernière intervention18 décembre 2003 27 mars 2003 à 09:17
salut,
#include <stdio.h> au lieu de #include "stdio.h"
la boucle do while(1) est infinie (pas de condition de sortie :-( ) kbhit est plus indiquée
int main(void)
{
signed int signe = 1;
long double somme = 0;
int i;
int n = 1;
do
{
somme += signe*(1.0/(long double)n);
signe = -signe;
n += 2;
printf("%20.20f %i
",4.0*somme,n);
for (i =0; i< 5000;i++) { // ralentir
printf("%c",'a');
}
}
while(!kbhit());
return 0;
}
23 sept. 2004 à 21:34
Une des méthodes des plus rapides est celle de Bailey-Borwein-Plouffe (BBP) je pense. A chaque itération on trouve un chiffre exacte supplémentaire.
Je crois que je vais utiliser celle-ci pour ma bibliothèque des nombres formels.
2 avril 2003 à 10:51
On déroule la boucle, plus il y a de CALC et plus % CPU utilisé par la boucle et le print diminue.
#define CALC somme += (1./(long double)n);
n = n + 2;
somme -= (1./(long double)n);
n = n + 2;
int main(int argc, char* argv[])
{
signed int signe = 1;
long double somme = 0;
int n = 1;
do
{
CALC
CALC
printf("%.20f %i
",4.*somme,n);
}
while(1);
return 0;
}
28 mars 2003 à 12:40
-oki pour le .h
-je pense que si je mes une condition d'arret par une touche ca devrai ralentir le programme, c'est si important que ca de cloturer le prog ?
-et heu question vitesse ce prog utilise 15% max de mes ressource et c'est illisible en effet
zanidip :
je me suis renseigner et a essayer la methode d'archimed par les poligone regulier mais pas reussi a sortir un resultat bon si j'y arrive je posterai ca ici
-j'ai trouver le record, un certain gars a tokio avec 51 milliards de decimales
-je vais tenter de metre un timer pour savoir le nombre d'iteration en combien de temp qu'on a fais
28 mars 2003 à 07:12
on utilise " .h" par exemple "fichier_perso.h" pour les fichiers que l'on a écrit nous même et <.h> pour les fichiers disponibles avec le compilateurs c'est notamment le cas des bibliothèques standard.
avec une boucle infinie il n'y a pas de condition d'arrêt et on ne peut donc pas mettre fin à l'exécution du programme proprement (ESCAPE).
et pour la vitesse chez moi c'est trop rapide c'est pour cela que j'ai ajouté une boucle for(...) question de machine sans doute ;-)
27 mars 2003 à 17:27
:) enfin c'est vrai que trouve un algo qui le calcul c toujours interessant ^^ ! mais bon :]
27 mars 2003 à 16:00
un systeme qui encadre pi en calculant les perimetre des polygone reguliés inscri dans le cercle a n cotés.
plus n est grand et plus le resultat sera preci!
c'est vrais qu'il est un peut lent ton prog!
27 mars 2003 à 13:00
-la boucle infini c'est volontaire ca evite de fermer le programme par erreur
-conio est inutile ici
-et pourquoi ralentir le programme il est deja trop lent ?
27 mars 2003 à 09:18
#include <stdio.h> au lieu de #include "stdio.h"
la boucle do while(1) est infinie (pas de condition de sortie :-( ) kbhit est plus indiquée
#include <stdio.h>
#include <conio.h> // devc++4 <conio.c>
int main(void)
{
signed int signe = 1;
long double somme = 0;
int i;
int n = 1;
do
{
somme += signe*(1.0/(long double)n);
signe = -signe;
n += 2;
printf("%20.20f %i
",4.0*somme,n);
for (i =0; i< 5000;i++) { // ralentir
printf("%c",'a');
}
}
while(!kbhit());
return 0;
}
27 mars 2003 à 09:17
#include <stdio.h> au lieu de #include "stdio.h"
la boucle do while(1) est infinie (pas de condition de sortie :-( ) kbhit est plus indiquée
#include <stdio.h>
#include <conio.h> // devc++4 <conio.c>
int main(void)
{
signed int signe = 1;
long double somme = 0;
int i;
int n = 1;
do
{
somme += signe*(1.0/(long double)n);
signe = -signe;
n += 2;
printf("%20.20f %i
",4.0*somme,n);
for (i =0; i< 5000;i++) { // ralentir
printf("%c",'a');
}
}
while(!kbhit());
return 0;
}