У меня есть двойной векторный массив (вектор< double>) и его максимальное значение (1) и минимальное значение (0).
Когда я сделал ниже подоперацию, журнал дает (1. # INF00000000000000000) для индекса максимального значения (1 — 1.000000000000001) (двойная точность).
Как я могу предотвратить эту ошибку точности?
log( 1 - array[ i ] );
Вы имеете в виду это?
if(array[i] >= 1)
return 0;
else if(array[i] <= 0)
return std::numeric_limits<double>::infinity();
else
return log(1 - array[i]);
Других решений пока нет …