Calcul trigo sur float

cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 - 10 janv. 2004 à 12:07
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 - 10 janv. 2004 à 22:00
j'utilise visual c++ 6.0 et je voudrais savoir si cosf est plus rapide que cos sur un float

10 réponses

skone007 Messages postés 166 Date d'inscription mercredi 24 avril 2002 Statut Membre Dernière intervention 23 juin 2009
10 janv. 2004 à 13:09
C'est le même algorithme il y en un seul pour la fonction cosinus. Donc le seul truk qui pourrais ralentir c'est le nombre de virgule enfin la precision des calcules de toutes façon tu peut met juste cos(n) n peut être de tous les type car la fonction est surcharger :D bon ben voilà ils savent coder utilise math.h une lib standart :D @+
SKone le site
SK1-SKone Production-SK1
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
10 janv. 2004 à 13:22
cos cast en double le parametre et retourne un double, pas de surcharge(suffit d'aller voir dans math.h), cosf prend un float en parametre et retourne un float, maintenant au lieu de remplacer tout mes cos par cosf j'aimerais savoir si cosf est reelement optimiser pour les float sous vc++(car le cos est couteux, env 30 cycles par appel recursif) et ca doit dependre des plate forme(processeur) et des implementation
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
10 janv. 2004 à 14:49
cos et cosf ont strictement la meme implementation.
fld qword ptr addr
fcos
et le param reste dans le registre fpu ST(0).
pour la bonne raison que la fpu n'a qu'1 seule instruction de cosinus.
La difference de performance sera au niveau de l'attribution finale, si on ecrit sur 8 octets (double) ou sur 4 octets (float) et donc tres minime.
BruNews, ciao...
0
sebseb42 Messages postés 495 Date d'inscription dimanche 6 juillet 2003 Statut Membre Dernière intervention 9 novembre 2007 1
10 janv. 2004 à 15:20
tres minime ? le traitement d'un double prend plus de 2 fois plus de temps que le traitement d'un float.

pour repondre a ta question djl, si tu n'ecrit pas un logiciel necessitant une precision extreme, et si tu as besoin de performance, je te conseil d'utiliser cosf et de travailler avec des float.

de plus, cos cast en double, et si tu savais le temps que bouffe un cast, tu serais desagreablement surpris.
c'est pour ca que je peut te donner ce petit conseil : float f 0.0; est une erreur assez violente et float f 0.0f; est plus correcte, car sinon le compilo fait ceci : float f = (float)0.0 (car 0.0 est une valeur double) et ceci bouffe des ressources pas possible.

mais ceci reste dans le cadre d'une necessiter de performances, si tu ecrit un tableur, tout le monde s'en foutra.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
10 janv. 2004 à 15:27
traitement d'un double, si on en passe en param exact que on empile 2 fois DWORD au lieu de 1, si c'est traitement pur au niveau de la fpu le float n'existe pas donc...
Si vous voulez fournir 2 exemples float et double, on en fera les mesures exactes.
BruNews, ciao...
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
10 janv. 2004 à 15:37
sebseb42 ==> j'ai besoin de perf , c'est pour de la 3d

en fait j'ai cru comprendre qu'a la limite autant utiliser uniquement des double tant qu'on est pas limiter par la quantite de memoire, mais je vais quand meme garder les float et utiliser cosf pour eviter les cast(je savais pas que c'etait couteux) vu que la precision me suffit

merci a tous pour m'avoir eclairci
0
sebseb42 Messages postés 495 Date d'inscription dimanche 6 juillet 2003 Statut Membre Dernière intervention 9 novembre 2007 1
10 janv. 2004 à 16:06
arf, bah en fait nan djl, et BruNews, je reconnais mon tord, j'ai fait des test et j'hallucine, multiplication et divison de float et de double, les float sont un poil plus rapide, mais quasiment pas perseptible, et sinon cosf sur float est bien plus lent que cos sur des doubles =(

donc voila, j'avais tord, mais ce que je ne comprend pas, c'est que tout les bouquins de programmation de jeux video sont formels et tout ces gents sont d'accord pour dire que les calculs sur les floats sont plus rapide... je comprend pas

par contre djl, les cast reste tres couteux
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
10 janv. 2004 à 21:40
que dois je faire alors, je fait beaucoup de cos/sin/atan sur beaucoup de float,
il vaut mieux que je passe aux double pour eviter les cast ou rester aux float pour economiser de la place(en fait la pace je m'en fou mais si c'est plus volumineux doit y avoir de la perte en bande passante et plus d'acces aux caches, non?)
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
10 janv. 2004 à 21:58
Si float te suffit en precisin tu restes en float.
BruNews, ciao...
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
10 janv. 2004 à 22:00
ok merci
0
Rejoignez-nous