Используйте Infinity
и -Infinity
при реализации математического алгоритма.
В Ruby Infinity
и -Infinity
имеют хорошие сравнительные свойства, так что -Infinity
<<code>x <<code>Infinity для любого действительного числа x
. Например, Math.log(0)
возвращает -Infinity
, расширяя до 0
свойство, которое x > y
подразумевает, что Math.log(x) > Math.log(y)
. Кроме того, Infinity * x
равно Infinity
, если x> 0, -Infinity
, если x <0, и 'NaN' (не число; то есть неопределенное), если x равно 0. </p>
Например, я использую следующий бит кода в части вычисления некоторых логарифмических правдоподобий . Я явно ссылаюсь на -Infinity
, чтобы определить значение, даже если k
равно 0
или n
И x
равно 0
или 1
.
Infinity = 1.0/0.0
def Similarity.log_l(k, n, x)
unless x == 0 or x == 1
k * Math.log(x.to_f) + (n-k) * Math.log(1.0-x)
end
-Infinity
end
end