[Bioperl-l] evalues/floating point tests

Chris Fields cjfields at illinois.edu
Sat Jan 17 21:24:41 EST 2009

On Jan 17, 2009, at 5:45 PM, Sendu Bala wrote:

> Chris Fields wrote:
>> I've noticed an odd issue when testing BioPerl on WinXP yesterday  
>> which doesn't appear to be popping up anywhere else.  When  
>> comparing floating point numbers, several tests fail like the  
>> following:
>> #   Failed test at t\SearchIO\blast_pull.t line 40.
>> #          got: '1e-23'
>> #     expected: '1e-023'
>> #   Failed test at t\SearchIO\blast_pull.t line 67.
>> #          got: '6e-59'
>> #     expected: '6e-059'
>> These are generally in lines like (for the example above)
>> is $result->get_parameter('expect'), 1e-23;
>> I'm adding a method to Bio::Root::Test for comparing two floating  
>> point numbers based on equality:
>> float_eq $float1, $float2, $message;
>> This basically wraps is() but runs both values through  
>> 'sprintf("%g", $foo)' prior to the comparison; it has a prototype  
>> requiring two values to be passed and an optional message.  Any  
>> objections to the method name or adding this in?
> is_float() seems more consistent? Other than that, great idea.

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'll go ahead and commit this, but it would be very easy to switch the  
method name over.


More information about the Bioperl-l mailing list