Parece haver muitas abordagens para julgar se dois números de ponto flutuante são idênticos. Aqui estão alguns exemplos que encontrei:
fabs(x - y) < n * FLT_EPSILON * fabs(x)
OUfabs(x - y) < n * FLT_EPSILON * fabs(y)
fabs(x - y) < n * FLT_EPSILON * fabs(x + y)
fabs(x - y) < n * FLT_EPSILON * fabs(x + y) || fabs(x - y) < FLT_MIN)
fabs(x - y) < n * FLT_EPSILON * sqrt(x * x + y * y + FLT_EPSILON * FLT_EPSILON)
Estou realmente confuso sobre eles. Suponha que exista uma maneira melhor de comparar dois números de ponto flutuante, que é o mais simples e o mais preciso; as outras abordagens nem deveriam existir. Portanto, essas diferentes maneiras devem ter prós e contras próprios.
Minha pergunta é: Para fazer "cálculos reais", qual abordagem é a mais precisa ?
Links de referência: