У меня особенная проблема. Мне поручили рефакторинг некоторого старого кода на работе и я столкнулся с проблемой.
У меня есть три массива с плавающей точкой с именами VIL, ZET и GZ3D.
Значения в VIL генерируются с помощью этого кода:
for(k=1;k<sommet[i];k++)
{
if(ZET[k][i]>0)
{
Z=pow(10.0,ZET[k][i]/10.0);
VIL[i]=VIL[i]+0.00344*(GZ3D[k][i]-GZ3D[k-1][i])*(float)pow(Z,(4.0/7.0))/1000.0;
}
}
Я скопировал функцию, которая включает вычисления, и запустил ее. Но теперь, когда я сравниваю результаты, созданные старым кодом (которые являются corect), и мои результаты, я получаю это:
VIL is not equal between the two files at the index [10748]
Values "old:new" :0.079468:-0.086186
VIL is not equal between the two files at the index [10749]
Values "old:new" :0.073242:-0.085514
VIL is not equal between the two files at the index [10750]
Values "old:new" :0.070435:-0.083805
VIL is not equal between the two files at the index [10751]
Values "old:new" :0.067200:-0.081059
VIL is not equal between the two files at the index [10752]
Values "old:new" :0.063843:-0.077580
VIL is not equal between the two files at the index [10753]
Values "old:new" :0.056824:-0.072087
VIL is not equal between the two files at the index [10754]
Values "old:new" :0.054077:-0.068363
Так что результаты, которые я получаю, отрицательны и всегда отличаются на ~ 10%.
Кто-нибудь знает, что может вызвать это?