Quelle est la meilleure façon de le faire en virgule fixe les mathématiques?

J'ai besoin pour accélérer un programme pour la Nintendo DS qui n'a pas de FPU, donc j'ai besoin de changer de mathématiques à virgule flottante (qui est émulé et lent) à virgule fixe.

Comment j'ai commencé, j'ai changé de flotteurs pour ints et chaque fois que je besoin de les convertir, j'ai utilisé x>>8 pour convertir le point fixe, variable x le nombre réel et x<<8 à se convertir à virgule fixe. J'ai vite constaté qu'il était impossible de garder une trace de ce que doit être converti et j'ai aussi réalisé qu'il serait difficile de changer la précision des nombres (8 dans ce cas.)

Ma question est, comment dois-je faire cela plus facile et toujours rapide? Devrais-je faire un FixedPoint classe, ou tout simplement un FixedPoint8 typedef ou struct avec certaines fonctions/macros pour les convertir, ou quelque chose d'autre? Dois-je mettre quelque chose dans le nom de la variable de montrer que c'est à point fixe?

  • Il peut être utile de nous dire ce que vous êtes à l'aide de la flotte de.
InformationsquelleAutor Jeremy Ruten | 2008-09-17