Cos et sin plus rapide que math.h

Soyez le premier à donner votre avis sur cette source.

Vue 15 355 fois - Téléchargée 686 fois

Description

C'est juste un header définissant 2 fonctions, tr_cos et tr_sin, permettant le calcul du cosinus et du sinus d'un réel plus rapidement que les fonctions standards, en indexant sur des tableaux contenant les resultats precalculés

performance : environ 3 fois plus rapide que math.h, et 10 fois plus rapide si le réel passé en paramètre se trouve dans l'intervalle [ -pi, pi ]

précision : de 3 à 4 chiffres pour la partie décimale par rapport aux résultats des fonctions de math.h, avec 20000 pour taille des tableaux
pour augmenter la précision il suffit d'augmenter la taille des tableaux (aucun impact sur les performances )

par ex :

#define TRIGO_ARRAY_SIZE 60000
#include "trigo.h"

Conclusion :


Ca peut etre utile pour un moteur 3d par exemple
je pense qu'on peut encore ameliorer les performances, surtout dans le cas ou n est hors de l'intervalle
[-pi, pi]

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

BoboLaricot
Messages postés
4
Date d'inscription
vendredi 6 juin 2008
Statut
Membre
Dernière intervention
25 novembre 2008
-
Erreur de frappe : "return cosinus(x-PI/2)"
BoboLaricot
Messages postés
4
Date d'inscription
vendredi 6 juin 2008
Statut
Membre
Dernière intervention
25 novembre 2008
-
J'ai lu ton code et je m'interroge,
Pourquoi stocker une table des sinus quand on sait que sin(x)=cos(x-PI/2) ?

A ta place je mettrai ça dans la fonction sinus :

float sinus(float)
{
return cosinus[x+PI/2]
}

Ca fait quand même une grosse économie de mémoire, non ?
ghino1987
Messages postés
4
Date d'inscription
samedi 1 mars 2008
Statut
Membre
Dernière intervention
14 avril 2008
-
tu peux m aider a tracé la fonction sinus
BeLZeL
Messages postés
110
Date d'inscription
mardi 10 octobre 2000
Statut
Membre
Dernière intervention
20 décembre 2005
-
En changeant quelques options de mon compilo (devcpp), j'ai des cos et des sin "classiques" plus rapides qu'avec ce code.

Pour DevCpp 4.9.9.2, avec mon Duron 1 GHz :
Editeur de liens : retirer les symboles de l'exe : [YES]
Génération du code : générer instructions : [i586]
Génération du code : utiliser les fonctions spécifiques : [MMX]
Optimisations du code : Toutes

En moyenne, les fonctions classiques sont 3 fois plus efficaces ! (170ms au lieu de 510ms)

Sans changer les options, les fonctions classiques (1500ms) sont 2 fois moins rapide que les fonctions modifiées (750ms).
zup2000
Messages postés
1
Date d'inscription
vendredi 10 décembre 2004
Statut
Membre
Dernière intervention
14 décembre 2004
-
je c je sui un peu en retar mé mieu fau tar que jamai!en faite si tu veu calculé un cosinus il te fau calculé son devellopement limité!!

pour la fonction cosinus son devellopement limité en 0 est :

1-(x²/2)+((x²)²/24).......
au plus tu ajoutera de therme au plus tu sera preci!voila jespere tavoir aidé!

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.