echo "scale=311; 4*a(1)" | bc -l

$ echo "scale=311; 4*a(1)" | bc -l
3.141592653589793238462643383279502884197169399375105820974944592307\
81640628620899862803482534211706798214808651328230664709384460955058\
22317253594081284811174502841027019385211055596446229489549303819644\
28810975665933446128475648233786783165271201909145648566923460348610\
45432664821339360726024914127372458700660

Explications:

  • "echo" renvoie un affichage sur console (saisie, écriture, résultats)... Voir Initiation au shell (boucle for, do, done)
  • "scale=x" scale permet d'indiquer le nombre de chiffres après la virgule (remplacer x par le chiffre souhaité)
  • "4*a(1)" a(1) se base sur la fonction Arc Tangente a(). Cette formule "4*a(1)", permet entre autres, le calcul du nombre pi.
  • "|" «pipe» redirige le résultat d'une commande dans le flux d'entrée d'une autre commande. Ici la commande suivante sera "bc" qui est une commande de calculatrice «basic calculator»
  • "bc -l" récupère la formule "4*a(1)" après le "pipe" pour effectuer le calcul. L'option "-l" utilise la librairie mathématique standard (Define the standard math library) qui utilise, entre autres, la fonction Arc Tangente a()... Voire "man bc"

Si l'on met à "scale" un nombre plus "gros", par exemple "2000" le temps de réponse est plus long, on peut "mesurer" le temps de réponse avec la commande "time", exemple:

time echo "scale=2000; 4*a(1)" | bc -l

$ time echo "scale=2000; 4*a(1)" | bc -l
3.141592653589793238462643383279502884197169399375105820974944592307\
81640628620899862803482534211706798214808651328230664709384460955058\
22317253594081284811174502841027019385211055596446229489549303819644\
(...)
74427862203919494504712371378696095636437191728746776465757396241389\
086583264599581339047802759008
real    0m2.470s
user    0m2.470s
sys    0m0.001s

Pas forcement utile au quotidien, donc nécessaire!