40 votos

¿Biblioteca de punto fijo de C++?

Estoy buscando una biblioteca libre de punto fijo en C++ (Principalmente para su uso con dispositivos embebidos, no para matemáticas de precisión arbitraria). Básicamente, los requisitos son:

  • No hay sobrecarga innecesaria en tiempo de ejecución: todo lo que pueda hacerse en tiempo de compilación, debe hacerse en tiempo de compilación.
  • Capacidad para cambiar de forma transparente el código entre punto fijo y flotante, sin sobrecarga inherente.
  • Funciones matemáticas de punto fijo. No tiene mucho sentido utilizar el punto fijo si tienes que lanzar de un lado a otro para tomar una root cuadrada.
  • Pequeña huella.

¿Alguna sugerencia?

8voto

kotlinski Puntos 12815

Creo que éste es bastante bueno para la mayoría de los propósitos: http://www.trenki.net/content/view/17/1/

Es bastante ligero y rápido y soporta algunas matemáticas básicas (multiplicación, división, inversión, sin, cos, sqrt, rsqrt).

6voto

flatmush Puntos 101

Existe un proyecto de biblioteca matemática de punto fijo de código abierto que se puede encontrar siguiendo los siguientes enlaces:

Es una biblioteca estática en C con una interfaz de clase C++ para los usuarios de C++, implementa la siguiente funcionalidad: Trig. Funciones: sin, cos, tan, asin, acos, atan, atan2 Aritmética saturada: sadd, ssub, smul, sdiv Otras funciones: sqrt, exp

Es un proyecto de código abierto desarrollado activamente (se buscan desarrolladores interesados).

4voto

herohuyongtao Puntos 13552

Echa un vistazo a las siguientes dos buenas implementaciones sobre el manejo de la representación de punto fijo en C++ (no se necesitan librerías externas).

  1. Clase de punto fijo de Peter Schregle. También implementa eficientemente las operaciones básicas como adición , multiplicación y división .

    Ejemplo de código:

    #include <fixed_point.h>
    using namespace fpml;
    
    main()
    {
        fixed_point<int, 16> a = 256;
        fixed_point<int, 16> b = sqrt(a);
    }
  2. Implementación de números de coma fija en C++ por Khuram Ali.

1voto

Stef Puntos 1072

Intentaré http://www.efgh.com/software/fixed.htm pequeña lib...

0voto

burner Puntos 213

Tengo un pequeño y bonito encabezado en c++. Puedes encontrarlo en Dulce::Fijo . Simplemente defina typedef sweet::Fixed MyFloat; y utilícelo como cualquier otro valor flotante. O cámbielo por cualquier tipo de flotador que desee después. La clase tiene dos valores de 64 bits. Uno para la parte entera y otro para la fracción.

Tengo una pequeña cabecera de clase de punto fijo c++11 impl en dulce.hpp llamado fixed.hpp . Utiliza 32bit para ambas partes.

typedef float MyFloat;         // This will feel the same
typedef sweet::Fixed MyFloat;  // like this

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X