[Bioperl-l] evalues/floating point tests

Sendu Bala bix at sendu.me.uk
Sun Jan 18 12:01:48 UTC 2009

Chris Fields wrote:
> is_float_eq()?

The 'is' obviates the need for the 'eq'. On the other hand there's 
precedent for this, since is() actually calls is_eq().

> On Jan 17, 2009, at 8:44 PM, Mark A. Jensen wrote:
>> how bout is_asfloat() ?

This is better. However...

> I thought the same thing at first, but (at least to me) is_float
> sounds more like a boolean test on whether the scalar value passed is
> a float rather than a comparison checking whether two floats are
> equal.

I understand that, but the naming convention is already like that. 
is_deeply() doesn't test if both values are 'deep', it tests if they are 
'is' (are equal) in a deep way. is_float() would test if they are 'is' 
(are equal) in a float way. Yeah, grammatically it is all a mess, but to 
me this seems the most consistent.

The alternative, which may at the same time may be safer (the test 
writer doesn't need to remember to use a special function) and more 
dangerous (the regex matches something it shouldn't?), is to simply 
override is():

my $e_num = '^\de-\d+$';
sub is {
     my ($val1, $val2, @args) = @_;

     if ($val1 && $val2 && $val1 =~ /$e_num/ && $val2 =~ /$e_num/) {
         $val1 = sprintf("%g", $val1);
         $val2 = sprintf("%g", $val2);

     return SUPER::is($val1, $val2, @args);

Or something like that. I didn't try it.

More information about the Bioperl-l mailing list