Je recherche une bibliothèque de points fixes C++ gratuite (principalement pour une utilisation avec des périphériques intégrés, pas pour des calculs de précision arbitraires). Fondamentalement, les exigences sont les suivantes:
Aucune suggestion?
Il existe un projet de bibliothèque mathématique à point fixe open source qui peut être trouvé en suivant les liens ci-dessous:
Il s'agit d'une bibliothèque statique C avec une interface de classe C++ pour les utilisateurs C++, elle implémente les fonctionnalités suivantes: Trig. Fonctions: sin, cos, tan, asin, acos, atan, atan2 Arithmétique saturée: sadd, ssub, smul, sdiv Autres fonctions: sqrt, exp
Il ne prend en charge que type de données à virgule fixe 16.16 .
Il s'agit d'un projet open source activement développé (à la recherche de développeurs intéressés).
Découvrez les deux bonnes implémentations suivantes sur la gestion de la représentation en virgule fixe en C++ (aucune bibliothèque externe n'est nécessaire).
Fixed-Point-Class par Peter Schregle. Il implémente également efficacement les opérations de base comme l'addition , la multiplication , et division .
Exemple de code:
#include <fixed_point.h>
using namespace fpml;
main()
{
fixed_point<int, 16> a = 256;
fixed_point<int, 16> b = sqrt(a);
}
Implémentation de nombres à virgule fixe en C++ par Khuram ALi.
Voici une bibliothèque open source à virgule fixe sur GitHub:
https://github.com/mbedded-ninja/MFixedPoint
Il prend en charge les nombres à virgule fixe 32 bits et 64 bits (avec un quotient arbitraire) et à la fois rapides (tout est basé sur des modèles, mais un peu plus manuel) et lents (virgules fixes) (plus automatiques, mais plus lents).
Il est orienté vers les plates-formes embarquées, mais je l'ai utilisé sur les microcontrôleurs et Linux sans aucun problème.
J'ai un joli petit en-tête c ++. Vous pouvez le trouver sous sweet :: Fixed . Définissez simplement typedef sweet :: Fixed MyFloat; et l'utiliser comme toute autre valeur flottante. Ou échangez-le plus tard quel que soit le type de flotteur que vous souhaitez. La classe a deux valeurs 64 bits. Un pour la partie entière et pour la fraction.
J'ai un petit en-tête de classe de point fixe c ++ 11 dans sweet.hpp appelé fixed.hpp . Il utilise 32 bits pour les deux parties.
typedef float MyFloat; // This will feel the same
typedef sweet::Fixed MyFloat; // like this
Je vais essayer http://www.efgh.com/software/fixed.htm minuscule lib ...