¿Por qué este código a veces NaN?
Pregunta
Esto a menudo vuelve NAN ( "no es un número") dependiendo de la entrada:
#define PI 3.1415f
GLfloat sineEaseIn(GLfloat ratio) {
return 1.0f-cosf(ratio * (PI / 2.0f));
}
He intentado hacer PI algunos dígitos más pequeños para ver si eso ayuda. No dados. Entonces pensé que podría ser una falta de coincidencia de tipo de datos, pero flotador y GLfloat parecen ser equivalentes:
gl.h
typedef float GLfloat;
math.h
extern float cosf( float );
¿Es esta una cuestión de fundición?
Solución
sospecho que una de las siguientes está en marcha:
- su valor de entrada a
ratio
puede no ser lo que se espera que sea, yratio
sí es posiblementeNaN
-
cosf
la que está llamando no es el que está enmath.h
De lo contrario, no parece estar mal cualquier cosa con su expresión.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow