Commentçamarche.net
CodeS-SourceS
Rechercher un code, un tuto, une réponse

Fonctions usuelles (trigo) en metaprogrammation

0/5 (23 avis)

Vue 7 120 fois - Téléchargée 231 fois

Description

Ma source montre un calcul des quelques fonctions suivantes :
cos, sin, tan, cosH, tanH, sinH, exp, ln, sqrt, fibonaci, triangle de pascal, ...
sans utiliser math.h, de telle sorte a pouvoir calculer ces fonctions lors de la compilation (quand elles sont appellees avec des valeurs constantes), et ca fonctionne sur tout type de donnees (faites une classe fraction qui ai les bons operateurs, et ca pourra aller dessus)

CECI NE REMPLACE PAS math.h !

Ces quelques classes ne sont pas aussi precises sur des floats
(mais permettent de traiter tout type de donnees, donc seraient plus precises que des floats sur un type permettant d'exploiter ces cadeaux du Cpp)
Il y a aussi le cote vitesse a prendre en compte : la, beaucoup de choses sont calcules lors de la compilation et non a l'execution :)

Ces fonctions sont parfois bases sur des DLN, parfois sur des relations de limites de suites tout a fait classiques...
J'aurais pu faire des integralles pour calculer certaines valeurs, ce qui aurait fait de jolies sommes de riehman,
j'ai pas vraiment teste sur autre chose qu'un float donc cote vitesse de convergence et precision, je ne sais pas si ca aurait apporte...
pour certaines fonctions, il est certain qu'a partir d'une derivee simple, j'aurais pu diminuer le nombre d'operations, seulement,
les derivees simples, ca ne se trouve pas toujours...

cf : http://en.wikipedia.org/wiki/Arcsin

Il me manque quelques fonctions :
pow qui s'obtient a partir de ln et exp
arcHsin \
arcHcos |-> cf forme logarithmique, on l'a a partir de ln
arcHtan /

Codes Sources

A voir également

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.