lrintf fails to return expected value


Problem version: 
Intel® C++ 10.1 & Intel® C++ 11.x

Environment : 
Windows*

Problem description:
#include "stdafx.h"

int _tmain(int argc, _TCHAR* argv[])
{
int i;
float fArray[256];
float * pfArray;
long int usRounding[256];

pfArray = fArray;

for( i=0; i < 256; i++ )
{
fArray[i] = (float)i/(float)2560.0;
usRounding[i] = lround((double)fArray[i]);

fprintf(stderr, " fArray[%d] = %1.5f, (int)fArray[i] = %d\n", i, fArray[i], usRounding[i]);
}

return 0;
}

The "lrintf" function declared implicitly in such a project doesn't return the good value for some iterations.

Root Cause : 
This is not a problem in Intel compiler.
Because lrintf (from ISO C 99 standard) is supported by Intel LIBM, but not MS, the Intel library mathimf.h file should be used. Hence following should be tried the following header files for the testcase:
#define WIN32_LEAN_AND_MEAN
#include <stdio.h>
#include <tchar.h>
#include <mathimf.h> // Header file from Intel Compiler

Then, you get correct result,
Resolution : 

This is not problem with compiler, so it would not be fixed.
For more complete information about compiler optimizations, see our Optimization Notice.