Articles of coma flotante

Representando números enteros en dobles

¿Puede un doble (de un número dado de bytes, con un equilibrio de mantisa / exponente razonable) mantener con precisión el rango de un entero sin signo de la mitad de ese número de bytes? Por ejemplo, ¿puede un doble de ocho bytes mantener con precisión el rango de números de un byte de cuatro […]

Evitar valores denormales en C ++

Después de buscar un error de rendimiento durante mucho tiempo, leí acerca de los valores de punto flotante denormal. Los valores de punto flotante aparentemente desnormalizados pueden ser un gran problema de rendimiento, como se ilustra en esta pregunta: ¿Por qué el cambio de 0.1f a 0 disminuye el rendimiento en 10 veces? Tengo un […]

bits flotantes y aliasing estricto

Intento extraer los bits de un flotante sin invocar un comportamiento indefinido. Aqui esta mi primer bash: unsigned foo(float x) { unsigned* u = (unsigned*)&x; return *u; } Según tengo entendido, no está garantizado que funcione debido a las estrictas reglas de alias, ¿verdad? ¿Funciona si se toma un paso intermedio con un puntero de […]

Problemas con float en C

Tengo este pequeño progtwig en C que calcula la raíz cuadrada x de un entero positivo N usando una función recursiva (implementada usando un ciclo while). Si calculo x usando esto: x = (1/2)*(x + N/x) //x0 = 1.0 Entonces x sigue creciendo inf y luego nan. Sin embargo, si uso esto: x = (x […]

Un método rápido para redondear un doble a un int de 32 bits explicado

Al leer el código fuente de Lua , noté que Lua usa una macro para redondear un double a un int 32 bits. Extraje la macro , y se ve así: union i_cast {double d; int i[2]}; #define double2int(i, d, t) \ {volatile union i_cast u; ud = (d) + 6755399441055744.0; \ (i) = (t)ui[ENDIANLOC];} […]

¿Qué tipo de datos MySQL debería usarse para Latitud / Longitud con 8 lugares decimales?

Estoy trabajando con datos de mapas, y la Latitude/Longitude extiende a 8 lugares decimales. Por ejemplo: Latitude 40.71727401 Longitude -74.00898606 Vi en el documento de Google que usa: lat FLOAT( 10, 6 ) NOT NULL, lng FLOAT( 10, 6 ) NOT NULL sin embargo, sus posiciones decimales solo van a 6. ¿Debo usar FLOAT(10, 8) […]

¿Deberíamos comparar los números de coma flotante para la igualdad con un error * relativo *?

Hasta ahora, he visto muchas publicaciones relacionadas con la igualdad de números de coma flotante. La respuesta estándar a una pregunta como “¿cómo deberíamos decidir si xey son iguales?” es abs(x – y) < epsilon donde épsilon es una constante pequeña y fija . Esto se debe a que los “operandos” xey son a menudo […]

Comparando IEEE flota y dobla para la igualdad

¿Cuál es el mejor método para comparar IEEE flotantes y dobles para la igualdad? He oído hablar de varios métodos, pero quería ver qué pensaba la comunidad.

Construyendo un flotador de 32 bits de sus 4 bytes compuestos

Estoy tratando de construir un flotante de 32 bits de sus 4 bytes compuestos. ¿Hay una forma mejor (o más portátil) de hacerlo que con el siguiente método? #include typedef unsigned char uchar; float bytesToFloat(uchar b0, uchar b1, uchar b2, uchar b3) { float output; *((uchar*)(&output) + 3) = b0; *((uchar*)(&output) + 2) = b1; […]

“Expresión no es asignable” – Problema que asigna flotación como sum de otros dos flotantes en xCode?

En una aplicación de piano, estoy asignando las coordenadas de las teclas negras. Aquí está la línea de código que causa el error. ‘blackKey’ y ‘whiteKey’ son ambas vistas personalizadas blackKey.center.x = (whiteKey.frame.origin.x + whiteKey.frame.size.width);