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: