Ben314 a écrit:Concernant la vitesse, sauf erreur, certaine fonctions transcendantes (dont l'arctangente) sont directement implémantées dans le coprocesseur de calcul des machines actuelles ce qui explique que dans un language de programation un peu évolué ça aille plus vite de faire directement du arcos.
Pour faire un test un peu plus pertinent, à mon avis, il faudrait sortir d'un tiroir un vieux compilateur datant de l'époque où il n'y avait pas de coprocesseurs de calculs sur les machines pour voir ce que ça donne...
Aprés, d'un autre coté, ne sachant pas comment est implémentés la fonction arctan dans le copro., ni même comment elle était évalué par le processeur et ces 4 (voire 2) opérations, avant qu'il n'y ait des copro., je suis bien incapable de dire si c'est mieux ou moins bien que ce qu'on fait usuellement...
Tester sur un terrain plus neutre est une bonne idée, du coup j'ai codé un run sur c++ entre la fonction logarithmique de arcsin (celle utilisant le nombre imaginaire i comme sur mathlab),
sachant que j'ai du inclure la librairie pour accéder à la valeur i; et ma fonction.
Les résultats divergent beaucoup entre chaques run, alors j'ai lancé un run avec 10 tests consécutifs, en alternant la fonction log et f(x) ce qui donne:
*log*****f(x)*
249ms - 203ms
249ms - 203ms
250ms - 218ms
250ms - 218ms
249ms - 203ms
Donc ma fonction comparé avec log( est plus rapide;
Par contre, f(x) converti à la syntaxe de
(chaque constantes nécessitant d'être déclaré en variables) c'est plus lent:
*log*****f(x)*
249ms - 453ms
249ms - 453ms
249ms - 468ms
250ms - 468ms
250ms - 468ms
Apparement c'est bien l'emploi des 5 occurences de racines carrés qui ralenti le plus la fonction. Dommage!