Why does this code sometimes return NaN?
This often returns NAN ("Not A Number") depending on input:
开发者_如何转开发#define PI 3.1415f
GLfloat sineEaseIn(GLfloat ratio) {
return 1.0f-cosf(ratio * (PI / 2.0f));
}
I tried making PI a few digits smaller to see if that would help. No dice. Then I thought it might be a datatype mismatch, but float and glfloat seem to be equivalent:
gl.h
typedef float GLfloat;
math.h
extern float cosf( float );
Is this a casting issue?
I suspect that one of the following is afoot:
- your input value to
ratio
may not be what you expect it to be, andratio
itself is possiblyNaN
- the
cosf
that you're calling isn't the one inmath.h
Otherwise, there doesn't appear to be anything wrong with your expression.
精彩评论