π
<-
Chat plein-écran
[^]

Analyse du source de la bibliotheque mathematique

Analyse du source de la bibliotheque mathematique

Unread postby parisse » 31 Aug 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.
User avatar
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Level up: 78%
 
Posts: 3511
Joined: 13 Dec 2013, 16:35
Gender: Not specified
Calculator(s):
MyCalcs profile

Return to Programmation native (C/C++/...)

Who is online

Users browsing this forum: No registered users and 4 guests

-
Search
-
Social TI-Planet
-
Featured topics
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
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...
Donate
Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
1402 utilisateurs:
>1384 invités
>13 membres
>5 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)