A way to do it:
int compare(const void *a, const void *b)
{
float arg1 = *((float *)a);
float arg2 = *((float *)b);
if ( isnan(arg1) && isnan(arg2) )
{
return 0;
}
else if ( isnan(arg1) )
{
return 1;
}
else if ( isnan(arg2) )
{
return -1;
}
else if ( arg1 < arg2 )
{
return -1;
}
else if ( arg1 == arg2 )
{
return 0;
}
else
{
return 1;
}
}