π
<-
Chat plein-écran
[^]

Analyse du source de la bibliotheque mathematique

Analyse du source de la bibliotheque mathematique

Message non lude parisse » 31 Aoû 2017, 13:50

Ca se passe dans le répertoire poincare/src. L'ensemble des fichiers .cpp occupe 32 000 lignes de code, dont la moitié est du code auto-généré par bison et flex pour l'interpréteur avec des sources en extension .l et .y assez simples. Sur les 16 000 lignes restantes, il y a :
  • un petit fichier assez simple par commande scalaire qui fait le lien avec une fonction de la librairies standard C(++) lorsque les arguments sont réels, et du code propre dans le cas complexe. Pour une raison qui m'échappe, les auteurs n'ont pas souhaité utiliser la classe <complex> de la librairie standard c++. La puissance a^b de 2 nombres complexes n'est pas geree.
  • quelques fichiers implémentant des fonctions qui ne font pas partie de la librairie standard C: notamment les fonctions sur les matrices (transposée, trace, det, inverse), l'intégration et la dérivation numérique, et des fonctions d'arithmétique (pgcd, ppcm) et des fonctions de proba.
    - Le déterminant et l'inverse sont calculées par le pivot partiel de Gauss, mais sans utiliser la factorisation LU, ils sont donc un peu sous-optimaux mais sans conséquences pour une calculatrice de ce type. Il n'y a pas d'implémentation dans le cas complexe.
    - L'intégration est OK, elle utilise une méthode adaptative basée sur des quadratures de Gauss. Mais il n'est pas possible de calculer une intégrale double puisque la variable d'intégration n'est pas spécifiée. La dérivation numérique se fait par des différences finies, ok aussi.
    - Le pgcd et le ppcm sont codés assez naïvement : l'implémentation force un transtypage en int, ce qui limite a des arguments inferieurs a 2^31 (alors que les entiers sont représentables exactement par des flottants jusqu'à 2^53), il y a un test de comparaison entre les arguments qui est inutile, et les auteurs ne semblent pas connaître l'opérateur %
    - L'implémentation de binomial n'est pas non plus optimale, par exemple binomial(10^9,10^9-10) est un peu long (bon je pinaille ... mais tout de même).
    - Les fonctions de proba inverses sont implémentées uniquement pour un risque de 5% et pour la loi normale, en appliquant la formule avec 1.96, (il n'y a pas d'implémentation de fonctions spéciales).
  • un fichier qui me semble orphelin, tentative naive d'implénentation d'entiers multi-precisions.
A cote de ce code mathématiquement naïf a quelques exceptions pres, les constructions C++ me paraissent inutilement compliquées (utilisation de templates).
Tout ca ne me donne pas une tres bonne impression, c'est peut-être un biais de matheux.
Avatar de l’utilisateur
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Prochain niv.: 77.2%
 
Messages: 3499
Inscription: 13 Déc 2013, 16:35
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Retourner vers Programmation native (C/C++/...)

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités

-
Rechercher
-
Social TI-Planet
-
Sujets à la une
Comparaisons des meilleurs prix pour acheter sa calculatrice !
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
Phi NumWorks jailbreak
123
-
Faire un don / Premium
Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...
Faire un don
Découvrez les avantages d'un compte donateur !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partenaires et pub
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
986 utilisateurs:
>970 invités
>12 membres
>4 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Autres sites intéressants
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)