Hi all, I'm wanting to remove all the floating point comparison warnings which appear when compiling parrot and wanted some advice as to how best to achieve this.
Floating point comparisons appear in code such as (taken from src/string.c): if (*p == '-' && f == 0.0) I'd like to replace this with if (*p == '-' && is_float_equal(f, 0.0)) where #define EPSILON 0.0000005 INTVAL is_float_equal(FLOATVAL x, FLOATVAL y) { return (fabs(x - y) <= fabs(x + y)*EPSILON) ? 1 : 0; } (this code was adapted from equivalent fortran code given here: http://www.lahey.com/float.htm courtesy of particle++). Is this a good way to achieve the goal of safe floating point comparisons? The #define and function need to go somewhere. Where exactly? And which header gets the declaration? parrot.h? Is there a better way to do this? Could/should I be using a macro instead? Thanks heaps in advance! Paul