[Bioperl-l] evalues/floating point tests
cjfields at illinois.edu
Sun Jan 18 02:24:41 UTC 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
>> # 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