number - setprecision c++




Bibliothèque de points fixes C++? (5)

Je suis à la recherche d'une librairie de points fixes C ++ gratuite (Principalement pour une utilisation avec des périphériques embarqués, pas pour des maths de précision arbitraires). Fondamentalement, les exigences sont les suivantes:

  • Pas de temps d'exécution inutile: tout ce qui peut être fait au moment de la compilation, devrait être fait au moment de la compilation.
  • Possibilité de basculer de manière transparente entre le code fixe et le virgule flottante, sans surcharge inhérente.
  • Fonctions mathématiques à virgule fixe Il n'y a pas grand-chose à utiliser un point fixe si vous avez besoin de faire des va-et-vient pour prendre une racine carrée.
  • Petite empreinte.

Aucune suggestion?


Découvrez les deux bonnes implémentations suivantes concernant la gestion de la représentation en virgule fixe en C ++ (aucune librairie externe n'est nécessaire).

  1. Fixed-Point-Class de Peter Schregle. Il met également en œuvre efficacement les opérations de base comme l' addition , la multiplication et la 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);
    }
    
  2. Implémentation de nombres à virgule fixe en C ++ par Khuram Ali.


Il existe un projet de bibliothèque mathématique à point fixe open-source qui peut être trouvé en suivant les liens ci-dessous:

C'est 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, asine, acos, atan, atan2 Arithmétique saturée: sadd, ssub, smul, sdiv Autres fonctions: sqrt, exp

Il ne prend en charge que 16.16 type de données à virgule fixe .

C'est un projet open-source développé activement (à la recherche de développeurs intéressés).


Je n'ai jamais utilisé de SPUC , mais la description revendique des types de données à virgule fixe et certaines fonctions mathématiques.



Voici une bibliothèque open-point à point 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 les deux rapides (tout est modélisé, mais un peu plus manuel) et les nombres à virgule fixe lente (plus automatique, mais plus lent).

Il est orienté vers les plates-formes embarquées, mais je l'ai utilisé sur les deux microcontrôleurs et Linux sans aucun problème.





fixed-point