PDA

Ver la versión completa : Librerias punto flotante, Ayuda



thamurath
16/03/2005, 10:49
Buenas a todos:

Tengo un problemilla, estoy haciendo un programa para el arm y estoy llegando al limite de la memoria de codigo, de modo que tengo que mejorar el mismo para que ocupe menos. El asunto es que para realizar unos calculos en punto flotante me apoyo en unas tablas bastante grandes de floats que ocupan un espacio precioso de la memoria,pues bien, hace algun tiempo me vi en una situacion semejante y consegui encontrar unas librerias en C que realizaban operaciones en punto flotante utilizando solamante enteros (!), evidentemente perdiendo precision, pero realizaban los calculos de manera tan ingeniosa ( no consegui averiguar como funcionaban) que la perdida de precision era asumible.El caso es que ahora las estoy buscando y no las encuentro por ningun sitio, ¿Alguien me puede ayudar?


Muchas gracias

P.D.: Quizas este un poco fuera del tema y si es asi me disculpo y ruego al moderador que retire este post, pero por lo que he visto aqui hay buenos programadores y pense que podrian ayudarme.

Damizean
16/03/2005, 11:12
Pues yo personalmente uso estos defines para hacer operaciones de punto fijo,. que aunque seguramente habran mejores, son las que uso...

#define fxvar long long // Modificalo como quieras
#define fixed_shifts 32 // Modificalo como quieras

#define fxtoi(a) ((int) a>>fixed_shifts) // Fijo a entero
#define itofx(a) ((fxvar) fixed_shifts<<a) // Entero a fijo

#define ftofx(a) ((fxvar((float)a*((fxvar)1<<fixed_shifts)))) // Float a fijo
#define fxtof(a) ((float) a/((fxvar)1<<fixed_shifts)) // Fijo a float
#define fxtod(a) ((double) a/((fxvar)1<<fixed_shifts)) // Fijo a doble

#define fxadd(a,b) ((a+b)) // Sumar
#define fxsub(a,b) ((a-b)) // Restar
#define fxmul(a,b) ((a*b)>>fixed_shifts) // Multiplicar
#define fxdiv(a,b) ((a<<fixed_shifts)/b) // Dividir

#define fsqrt(a) (ftofx(sqrt(fxtof(a)))) // Raiz cuadrada :/

anibarro
16/03/2005, 11:55
Mira en la respuesta a este post de Logann ;)
http://www.gp32spain.com/foros/showthread.php?t=17739

thamurath
16/03/2005, 11:59
Gracias por la ayuda, esas constantes son muy utiles, de todas maneras si alguien sabe donde puedo encontrar las librerias que nombro arriba le estaria muy agradecido.

Gracias

anibarro
17/03/2005, 01:15
Doctor, no soy nadie
thamurath no me leiste? :(

thamurath
17/03/2005, 13:10
Doctor, no soy nadie
thamurath no me leiste? :(

Lo siento, si que te ley, pero no eran las librerias que yo conocia, y como solo habia mirado el fichero por encima no sabia si me valdrian.

Gracias anibarro, tiene buena pinta, aunque tendre que hacerles algunos arreglillos para poder trabajar con 32 bits en lugar de con 64.