diff --git a/README.md b/README.md index 3f887c0..8febcc5 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,11 @@ # perl-Test-Number-Delta +At some point or another, most programmers find they need to compare floating-point numbers for equality. The typical idiom is to test if the absolute value of the difference of the numbers is within a desired tolerance, usually called epsilon. This module provides such a function for use with Test::Harness. Usage is similar to other test functions described in Test::More. Semantically, the delta_within function replaces this kind of construct: + + ok ( abs($p - $q) < $epsilon, '$p is equal to $q' ) or + diag "$p is not equal to $q to within $epsilon"; + +While there's nothing wrong with that construct, it's painful to type it repeatedly in a test script. This module does the same thing with a single function call. The delta_ok function is similar, but either uses a global default value for epsilon or else calculates a 'relative' epsilon on the fly so that epsilon is scaled automatically to the size of the arguments to delta_ok. Both functions are exported automatically. + +Because checking floating-point equality is not always reliable, it is not possible to check the 'equal to' boundary of 'less than or equal to epsilon'. Therefore, Test::Number::Delta only compares if the absolute value of the difference is less than epsilon (for equality tests) or greater than epsilon (for inequality tests). + diff --git a/perl-Test-Number-Delta.spec b/perl-Test-Number-Delta.spec new file mode 100644 index 0000000..6c5b0f3 --- /dev/null +++ b/perl-Test-Number-Delta.spec @@ -0,0 +1,72 @@ +%define perl_major_ver %(eval `perl -V:version`; echo ${version%*.[0-9]*}.0) + +Name: perl-Test-Number-Delta +Version: 1.03 +Release: 3mamba +Summary: Test::Number::Delta - Compare the difference between numbers against a given tolerance +Group: System/Libraries/Perl +Vendor: openmamba +Distribution: openmamba +Packager: Automatic Build System +URL: http://www.cpan.org +Source: http://search.cpan.org/CPAN/authors/id/D/DA/DAGOLDEN/Test-Number-Delta-%{version}.tar.gz +License: GPL, Artistic +Requires: perl >= %perl_major_ver +BuildRequires: perl-devel >= %perl_major_ver +BuildRoot: %{_tmppath}/%{name}-%{version}-root + +%description +At some point or another, most programmers find they need to compare floating-point numbers for equality. The typical idiom is to test if the absolute value of the difference of the numbers is within a desired tolerance, usually called epsilon. This module provides such a function for use with Test::Harness. Usage is similar to other test functions described in Test::More. Semantically, the delta_within function replaces this kind of construct: + + ok ( abs($p - $q) < $epsilon, '$p is equal to $q' ) or + diag "$p is not equal to $q to within $epsilon"; + +While there's nothing wrong with that construct, it's painful to type it repeatedly in a test script. This module does the same thing with a single function call. The delta_ok function is similar, but either uses a global default value for epsilon or else calculates a 'relative' epsilon on the fly so that epsilon is scaled automatically to the size of the arguments to delta_ok. Both functions are exported automatically. + +Because checking floating-point equality is not always reliable, it is not possible to check the 'equal to' boundary of 'less than or equal to epsilon'. Therefore, Test::Number::Delta only compares if the absolute value of the difference is less than epsilon (for equality tests) or greater than epsilon (for inequality tests). + +%prep + +%setup -q -n Test-Number-Delta-%{version} + +%build +perl Build.PL installdirs=vendor +./Build +./Build test + +%install +[ "%{buildroot}" != / ] && rm -rf "%{buildroot}" +./Build install \ + destdir="%{buildroot}" \ + --install_path bindoc="%{_mandir}/man1" \ + --install_path libdoc="%{_mandir}/man3" + +packlist=`find %{buildroot} -name .packlist` +[ -z "$packlist" ] && exit 1 || cat $packlist | \ + sed "s,%buildroot,,g;s,.*/man/.*,&.gz,g" | \ + sort -u > .packlist && rm $packlist + +find %{buildroot}%{perl_vendorlib} \ + -type d -depth -exec rmdir {} 2>/dev/null \; + +strid=`echo $packlist | sed 's,.*auto\(.*\)/.packlist,\1,'` +for dir in `find %{buildroot} -type d | grep $strid`; do + echo %dir ${dir#%buildroot} >> .packlist +done + +%clean +[ "%{buildroot}" != / ] && rm -rf "%{buildroot}" +rm -f .packlist + +%files -f .packlist +%defattr(-,root,root) + +%changelog +* Thu Aug 29 2013 Automatic Build System 1.03-3mamba +- automatic rebuild by autodist + +* Wed Nov 05 2008 Silvan Calarco 1.03-2mamba +- automatic rebuild by autodist + +* Mon Oct 20 2008 gil 1.03-1mamba +- package created by autospec