GemaCoreLib
The GeMA Core library
Functions
GmDoubleCmp Namespace Reference

Agrupa rotinas para comparação de valores double. More...

Functions

bool equal (double a, double b, double relTol=GM_DOUBLECMP_RELTOL, double absTol=GM_DOUBLECMP_ABSTOL)
 Funcao para comparar se dois números reais são iguais usando uma tolerância recebida como parâmetro. More...
 
bool isZero (double a, double absTol)
 Funcao para comparar se o valor a é ou não igual a zero dada uma tolerância absoluta. More...
 
bool nequal (double a, double b, double relTol=GM_DOUBLECMP_RELTOL, double absTol=GM_DOUBLECMP_ABSTOL)
 Funcao para comparar se dois números reais são diferentes usando uma tolerância recebida como parâmetro. More...
 
bool lt (double a, double b, double relTol=GM_DOUBLECMP_RELTOL, double absTol=GM_DOUBLECMP_ABSTOL)
 Funcao para comparar se um número real é menor que o outro, usando uma tolerância recebida como parâmetro. More...
 
bool lte (double a, double b, double relTol=GM_DOUBLECMP_RELTOL, double absTol=GM_DOUBLECMP_ABSTOL)
 Funcao para comparar se um número real é menor ou igual a outro, usando uma tolerância recebida como parâmetro. More...
 
bool gt (double a, double b, double relTol=GM_DOUBLECMP_RELTOL, double absTol=GM_DOUBLECMP_ABSTOL)
 Funcao para comparar se um número real é maior que o outro, usando uma tolerância recebida como parâmetro. More...
 
bool gte (double a, double b, double relTol=GM_DOUBLECMP_RELTOL, double absTol=GM_DOUBLECMP_ABSTOL)
 Funcao para comparar se um número real é maior ou igual a outro, usando uma tolerância recebida como parâmetro. More...
 

Detailed Description

Agrupa rotinas para comparação de valores double.

Comparação de valores é feita com uma tolerância percentual, garantindo o funcionamento do algortimo para números de magnitudes diversas

Todas as funções recebem duas tolerâncias como argumento. Seus valores padrão devem ser suficientes para a maioria dos casos.

A primeira tolerância, relTol, refere-se a um valor relativo percentual de distância aceitavel entre os números comparados. 1.0E-3 significa uma tolerância de 0.1%

A segunda tolerância é um valor absoluto, usado para resolver problemas quando dois números muito próximos de zero, de sinais opostos ou não, são comparadaos. Deve ser um número muito pequeno.

Referências:

http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm

http://realtimecollisiondetection.net/blog/?p=89

http://stackoverflow.com/questions/17333/most-effective-way-for-float-and-double-comparison

Function Documentation

◆ equal()

bool GmDoubleCmp::equal ( double  a,
double  b,
double  relTol = GM_DOUBLECMP_RELTOL,
double  absTol = GM_DOUBLECMP_ABSTOL 
)
inline

Funcao para comparar se dois números reais são iguais usando uma tolerância recebida como parâmetro.

Ver comentários gerais do namespace sobre relTol e absTol

◆ gt()

bool GmDoubleCmp::gt ( double  a,
double  b,
double  relTol = GM_DOUBLECMP_RELTOL,
double  absTol = GM_DOUBLECMP_ABSTOL 
)
inline

Funcao para comparar se um número real é maior que o outro, usando uma tolerância recebida como parâmetro.

Ver comentários gerais do namespace sobre relTol e absTol

◆ gte()

bool GmDoubleCmp::gte ( double  a,
double  b,
double  relTol = GM_DOUBLECMP_RELTOL,
double  absTol = GM_DOUBLECMP_ABSTOL 
)
inline

Funcao para comparar se um número real é maior ou igual a outro, usando uma tolerância recebida como parâmetro.

Ver comentários gerais do namespace sobre relTol e absTol

◆ isZero()

bool GmDoubleCmp::isZero ( double  a,
double  absTol 
)
inline

Funcao para comparar se o valor a é ou não igual a zero dada uma tolerância absoluta.

Repare que se um dos valores a ser comparado for 0.0, equal(a, 0.) só será verdadeiro se o teste de diferença absoluta for verdadeiro. Neste caso, o restante da verificação relativa é inútil.

Esta função não tem um valor default para absTol para forçar o usuário a pensar sobre a tolerância desejada de acordo com o problema

◆ lt()

bool GmDoubleCmp::lt ( double  a,
double  b,
double  relTol = GM_DOUBLECMP_RELTOL,
double  absTol = GM_DOUBLECMP_ABSTOL 
)
inline

Funcao para comparar se um número real é menor que o outro, usando uma tolerância recebida como parâmetro.

Ver comentários gerais do namespace sobre relTol e absTol

◆ lte()

bool GmDoubleCmp::lte ( double  a,
double  b,
double  relTol = GM_DOUBLECMP_RELTOL,
double  absTol = GM_DOUBLECMP_ABSTOL 
)
inline

Funcao para comparar se um número real é menor ou igual a outro, usando uma tolerância recebida como parâmetro.

Ver comentários gerais do namespace sobre relTol e absTol

◆ nequal()

bool GmDoubleCmp::nequal ( double  a,
double  b,
double  relTol = GM_DOUBLECMP_RELTOL,
double  absTol = GM_DOUBLECMP_ABSTOL 
)
inline

Funcao para comparar se dois números reais são diferentes usando uma tolerância recebida como parâmetro.

Ver comentários gerais do namespace sobre relTol e absTol