Calcul de Pi - apparition de Forth

Les problèmes d'éditeur

Il a été dit plus haut qu'il fallait se méfier des éditeurs de texte...
En effet, certains ajoutent une terminaison de fin de ligne qui ne s'accorde pas avec bc. Celui-ci se met en erreur et signale oun "contrôle M" à la fin de chaque ligne.
Comment régler ce problème si on a utilisé un éditeur non conforme ?

Voici quelques réponses, relevées sur le Net :

Solution avec Vi

Dans ce cas, on charge dans Vi le fichier déjà édité.

Editeur / Vim : ^Marre des ^M
Posté par Axioplase le 21 décembre 2003 .
Il vous arrive souvent d'avoir un fichier texte qui, lorsque vous l'éditez sous
vim, voit chaque ligne se terminer par ^M ??
Voici comment nettoyer le fichier rapidement:

tapez juste la commande:
:%s/ctrl+v ctrl+m//
évidemment, remplacez ctrl+v ctrl+m par les combinaisons de touches :)

% applique à tout le fichier
s remplace la première chaîne entre barres obliques (le ctrl+v ctrl+m qui vaut
le fameux ^M) par la seconde (rien)

Sans Vi

Et sinon, sans VI, il existe un petit utilitaire qui le fait tout seul : dos2unix.
Super simple à utiliser --> dos2unix fichier
Y'a aussi fromdos : fromdos fichier
(et son accolyte todos pour l'inverse)

Où Forth pointe le bout de son nez

Depuis la mise en ligne des pages un et deux, j'ai obtenu une réaction d'Augustin Vidovic qui a réalisé un codage en gforth d'un algorithme de calcul de Pi.

Les personnes intéressées pourront aller sur une page de son site personnel, à l'adresse http://www.vidovic.org/augustin/pages/docs/pi_calc.html, où l'on trouve également le code source du programme.

Rappelons que gforth est une version particulière de ce langage qui est conçu de façon à respecter le standard ANS, et qu'il est libre et gratuit.

Comparaison des résultats

Les "adeptes" du langage Forth affirment que ce langage est le plus efficace de tous... ce que, bien sûr, d'autres contestent.

Voici, un exemple de test réalisé sur un nombre presque égal de décimales, réalisé avec deux programmes. L'un est en C, l'autre en Forth.

Résultat du programme en C

Remarque : ce programme, harmonisé par G.B., utilise les routines en C du livre "Numerical Recipes"

alain@linux:~> ./calpi 1000
n=1000
pi=
3.1415926535897932384626433832795028841971693993751058209749445923078164062
......
977156914359977001296160894416948685558484063534220722258284886481584560285
0601680
....

temps = 127s 100ms pour 2405 décimales (tconv=20ms)

Résultat du programme en Forth

alain@linux:~> time ./pi.fth bye
3.1415926535897932384626433832795028841971693993751058209749445923078164062
.....
977156914359977001296160894416948685558484063534220722258284886481584560285
0

real 0m1.022s
user 0m0.903s
sys 0m0.013s

Résultat du calcul avec bc

Il suffit de dire qu'il effectue un calcul équivalent en 4 secondes.

A suivre ...


Réagir :lerautal