Посмотрите на этот фрагмент на Java:
double alpha = alphaFactors.get(0, q);
double beta = betaFactors.get(0, q);
if ((alpha + beta) > Double.NEGATIVE_INFINITY) {
initialDistributionStripe.put(new IntWritable(q),
new DoubleWritable(alpha + beta));
}
Чтобы избежать значений мусора, я хочу добавить к карте initialDistributionStripe сумму (альфа + бета), если и только если она больше Double.NEGATIVE_INFINITY и не равна NaN.
Я считаю, что то, что я делаю, правильно, и мне не нужно явно проверять «NaN», потому что в соответствии со спецификацией IEEE 754 и Java, любое сравнение с NaN приводит к ложному. Так что если альфа + бета - NaN, то ((alpha + beta) > Double.NEGATIVE_INFINITY)
будет ложным.
Верны ли мои рассуждения?