Implémenter Pi avec un template
L’idée est d’utiliser acos(-1) qui donne pour résultat le nombre pi. Pour ce faire -1 sera converti en type T. J’utilise acos de l’en-tête cmath. On remarquera que acos est défini pour les types float, double et long double, en c++11 il peut prendre en entré des types entiers pour retourner des doubles.
Vous pouvez aussi utiliser boost pour ce faire il vous faudra inclure constant.hpp.
A savoir que boost défini manuellement les valeurs de pi. Ce qui permet de comprendre que la précision avec boost sera meilleur si on va au-delà de la précision du type long double, par exemple si vous utilisez la librairie GMP.
Voici un exemple de code à exécuter sur C++ Shell.
A noter que j’utilise std::numeric_limits()::digits10. Cette variable permet d’obtenir le nombre de décimal après la virgule qui ne varieront pas selon la précision du type et l’appel de Pi().
Résultats:
pi integer:3
pi float:3.14159
pi double:3.14159265358979
pi long double:3.14159265358979312
Laisser un commentaire