r20921 - in /trunk/libmath-round-perl: Changes MANIFEST META.yml README Round.pm debian/changelog
gregoa at users.alioth.debian.org
gregoa at users.alioth.debian.org
Tue Jun 10 18:31:43 UTC 2008
Author: gregoa
Date: Tue Jun 10 18:31:43 2008
New Revision: 20921
URL: http://svn.debian.org/wsvn/pkg-perl/?sc=1&rev=20921
Log:
This is the first 0.06* package that actually contains 0.06 and not 0.05.
Added:
trunk/libmath-round-perl/META.yml
Modified:
trunk/libmath-round-perl/Changes
trunk/libmath-round-perl/MANIFEST
trunk/libmath-round-perl/README
trunk/libmath-round-perl/Round.pm
trunk/libmath-round-perl/debian/changelog
Modified: trunk/libmath-round-perl/Changes
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmath-round-perl/Changes?rev=20921&op=diff
==============================================================================
--- trunk/libmath-round-perl/Changes (original)
+++ trunk/libmath-round-perl/Changes Tue Jun 10 18:31:43 2008
@@ -9,12 +9,17 @@
0.03 Mon Sep 17 10:34:40 2001
- Now using a value for one-half that is slightly larger than
0.5, to thwart the floating-point units. Thanks to Paul
- Rohwer (pauldrohwer at yahoo.com) for pointing this out.
+ Rohwer for pointing this out.
0.04 Mon Mar 4 11:33:15 2002
- Added nearest_ceil and nearest_floor at the suggestion of
- Charlie Kim (cckim at stanford.edu).
+ Charlie Kim (Stanford).
0.05 Mon Apr 22 10:07:09 2002
- Added nlowmult and nhimult at the suggestion of Tielman
- de Villiers (tjdevil at bondnet.co.za).
+ de Villiers.
+
+0.06 Wed Nov 29 20:29:08 2006
+ - Streamlined the code. Thanks to Richard Jelinek of PetaMem.
+ - Made $half a package variable. Thanks to Ruud H. G. van Tol
+ for pointing out some peculiarities of the rounding.
Modified: trunk/libmath-round-perl/MANIFEST
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmath-round-perl/MANIFEST?rev=20921&op=diff
==============================================================================
--- trunk/libmath-round-perl/MANIFEST (original)
+++ trunk/libmath-round-perl/MANIFEST Tue Jun 10 18:31:43 2008
@@ -4,3 +4,4 @@
README
Round.pm
test.pl
+META.yml Module meta-data (added by MakeMaker)
Added: trunk/libmath-round-perl/META.yml
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmath-round-perl/META.yml?rev=20921&op=file
==============================================================================
--- trunk/libmath-round-perl/META.yml (added)
+++ trunk/libmath-round-perl/META.yml Tue Jun 10 18:31:43 2008
@@ -1,0 +1,10 @@
+# http://module-build.sourceforge.net/META-spec.html
+#XXXXXXX This is a prototype!!! It will change in the future!!! XXXXX#
+name: Math-Round
+version: 0.06
+version_from: Round.pm
+installdirs: site
+requires:
+
+distribution_type: module
+generated_by: ExtUtils::MakeMaker version 6.17
Modified: trunk/libmath-round-perl/README
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmath-round-perl/README?rev=20921&op=diff
==============================================================================
--- trunk/libmath-round-perl/README (original)
+++ trunk/libmath-round-perl/README Tue Jun 10 18:31:43 2008
@@ -26,6 +26,7 @@
==============
Version 0.04: Added nearest_ceil and nearest_floor.
Version 0.05: Added nlowmult and nhimult.
+Version 0.06: Streamlined the code.
How to Install
==============
Modified: trunk/libmath-round-perl/Round.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmath-round-perl/Round.pm?rev=20921&op=diff
==============================================================================
--- trunk/libmath-round-perl/Round.pm (original)
+++ trunk/libmath-round-perl/Round.pm Tue Jun 10 18:31:43 2008
@@ -1,365 +1,324 @@
-package Math::Round;
-
-use strict;
-use POSIX;
-use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
-
-require Exporter;
-
- at ISA = qw(Exporter AutoLoader);
- at EXPORT = qw(round nearest);
- at EXPORT_OK = qw(round nearest round_even round_odd round_rand
- nearest_ceil nearest_floor nearest_rand
- nlowmult nhimult );
-$VERSION = '0.05';
-
-%EXPORT_TAGS = ( all => [ @EXPORT_OK ] );
-
-#--- Determine what value to use for "one-half". Because of the
-#--- perversities of floating-point hardware, we must use a value
-#--- slightly larger than 1/2. We accomplish this by determining
-#--- the bit value of 0.5 and increasing it by a small amount in a
-#--- lower-order byte. Since the lowest-order bits are still zero,
-#--- the number is mathematically exact.
-
-my $halfhex = unpack('H*', pack('d', 0.5));
-if (substr($halfhex,0,2) ne '00' && substr($halfhex, -2) eq '00') {
- #--- It's big-endian.
- substr($halfhex, -4) = '1000';
-} else {
- #--- It's little-endian.
- substr($halfhex, 0,4) = '0010';
-}
-
-my $half = unpack('d',pack('H*', $halfhex));
-
-sub round {
- my $x;
- my @res = ();
- foreach $x (@_) {
- if ($x >= 0) {
- push @res, POSIX::floor($x + $half);
- } else {
- push @res, POSIX::ceil($x - $half);
- }
- }
- return (wantarray) ? @res : $res[0];
-}
-
-sub round_even {
- my $x;
- my @res = ();
- foreach $x (@_) {
- my ($sign, $in, $fr) = _sepnum($x);
- if ($fr == 0.5) {
- push @res, $sign * (($in % 2 == 0) ? $in : $in + 1);
- } else {
- push @res, $sign * POSIX::floor(abs($x) + $half);
- }
- }
- return (wantarray) ? @res : $res[0];
-}
-
-sub round_odd {
- my $x;
- my @res = ();
- foreach $x (@_) {
- my ($sign, $in, $fr) = _sepnum($x);
- if ($fr == 0.5) {
- push @res, $sign * (($in % 2 == 1) ? $in : $in + 1);
- } else {
- push @res, $sign * POSIX::floor(abs($x) + $half);
- }
- }
- return (wantarray) ? @res : $res[0];
-}
-
-sub round_rand {
- my $x;
- my @res = ();
- foreach $x (@_) {
- my ($sign, $in, $fr) = _sepnum($x);
- if ($fr == 0.5) {
- push @res, $sign * ((rand(4096) < 2048) ? $in : $in + 1);
- } else {
- push @res, $sign * POSIX::floor(abs($x) + $half);
- }
- }
- return (wantarray) ? @res : $res[0];
-}
-
-#--- Separate a number into sign, integer, and fractional parts.
-#--- Return as a list.
-sub _sepnum {
- my $x = shift;
- my ($sign, $i);
- $sign = ($x >= 0) ? 1 : -1;
- $x = abs($x);
- $i = int($x);
- return ($sign, $i, $x - $i);
-}
-
-#------ "Nearest" routines (round to a multiple of any number)
-
-sub nearest {
- my ($targ, @inputs) = @_;
- my @res = ();
- my $x;
-
- $targ = abs($targ) if $targ < 0;
- foreach $x (@inputs) {
- if ($x >= 0) {
- push @res, $targ * int(($x + $half * $targ) / $targ);
- } else {
- push @res, $targ * POSIX::ceil(($x - $half * $targ) / $targ);
- }
- }
- return (wantarray) ? @res : $res[0];
-}
-
-# In the next two functions, the code for positive and negative numbers
-# turns out to be the same. For negative numbers, the technique is not
-# exactly obvious; instead of floor(x+0.5), we are in effect taking
-# ceiling(x-0.5).
-
-sub nearest_ceil {
- my ($targ, @inputs) = @_;
- my @res = ();
- my $x;
-
- $targ = abs($targ) if $targ < 0;
- foreach $x (@inputs) {
- push @res, $targ * POSIX::floor(($x + $half * $targ) / $targ);
- }
- return (wantarray) ? @res : $res[0];
-}
-
-sub nearest_floor {
- my ($targ, @inputs) = @_;
- my @res = ();
- my $x;
-
- $targ = abs($targ) if $targ < 0;
- foreach $x (@inputs) {
- push @res, $targ * POSIX::ceil(($x - $half * $targ) / $targ);
- }
- return (wantarray) ? @res : $res[0];
-}
-
-sub nearest_rand {
- my ($targ, @inputs) = @_;
- my @res = ();
- my $x;
-
- $targ = abs($targ) if $targ < 0;
- foreach $x (@inputs) {
- my ($sign, $in, $fr) = _sepnear($x, $targ);
- if ($fr == 0.5 * $targ) {
- push @res, $sign * $targ * ((rand(4096) < 2048) ? $in : $in + 1);
- } else {
- push @res, $sign * $targ * int((abs($x) + $half * $targ) / $targ);
- }
- }
- return (wantarray) ? @res : $res[0];
-}
-
-#--- Next lower multiple
-sub nlowmult {
- my ($targ, @inputs) = @_;
- my @res = ();
- my $x;
-
- $targ = abs($targ) if $targ < 0;
- foreach $x (@inputs) {
- push @res, $targ * POSIX::floor($x / $targ);
- }
- return (wantarray) ? @res : $res[0];
-}
-
-#--- Next higher multiple
-sub nhimult {
- my ($targ, @inputs) = @_;
- my @res = ();
- my $x;
-
- $targ = abs($targ) if $targ < 0;
- foreach $x (@inputs) {
- push @res, $targ * POSIX::ceil($x / $targ);
- }
- return (wantarray) ? @res : $res[0];
-}
-
-#--- Separate a number into sign, "integer", and "fractional" parts
-#--- for the 'nearest' calculation. Return as a list.
-sub _sepnear {
- my ($x, $targ) = @_;
- my ($sign, $i);
- $sign = ($x >= 0) ? 1 : -1;
- $x = abs($x);
- $i = int($x / $targ);
- return ($sign, $i, $x - $i*$targ);
-}
-
-1;
-
-__END__
-
-=head1 NAME
-
-Math::Round - Perl extension for rounding numbers
-
-=head1 SYNOPSIS
-
- use Math::Round qw(...those desired... or :all);
-
- $rounded = round($scalar);
- @rounded = round(LIST...);
- $rounded = nearest($target, $scalar);
- @rounded = nearest($target, LIST...);
-
- # and other functions as described below
-
-=head1 DESCRIPTION
-
-B<Math::Round> supplies functions that will round numbers in different
-ways. The functions B<round> and B<nearest> are exported by
-default; others are available as described below. "use ... qw(:all)"
-exports all functions.
-
-=head1 FUNCTIONS
-
-=over 2
-
-=item B<round> LIST
-
-Rounds the number(s) to the nearest integer. In scalar context,
-returns a single value; in list context, returns a list of values.
-Numbers that are halfway between two integers are rounded
-"to infinity"; i.e., positive values are rounded up (e.g., 2.5
-becomes 3) and negative values down (e.g., -2.5 becomes -3).
-
-=item B<round_even> LIST
-
-Rounds the number(s) to the nearest integer. In scalar context,
-returns a single value; in list context, returns a list of values.
-Numbers that are halfway between two integers are rounded to the
-nearest even number; e.g., 2.5 becomes 2, 3.5 becomes 4, and -2.5
-becomes -2.
-
-=item B<round_odd> LIST
-
-Rounds the number(s) to the nearest integer. In scalar context,
-returns a single value; in list context, returns a list of values.
-Numbers that are halfway between two integers are rounded to the
-nearest odd number; e.g., 3.5 becomes 3, 4.5 becomes 5, and -3.5
-becomes -3.
-
-=item B<round_rand> LIST
-
-Rounds the number(s) to the nearest integer. In scalar context,
-returns a single value; in list context, returns a list of values.
-Numbers that are halfway between two integers are rounded up or
-down in a random fashion. For example, in a large number of trials,
-2.5 will become 2 half the time and 3 half the time.
-
-=item B<nearest> TARGET, LIST
-
-Rounds the number(s) to the nearest multiple of the target value.
-TARGET must be positive.
-In scalar context, returns a single value; in list context, returns
-a list of values. Numbers that are halfway between two multiples
-of the target will be rounded to infinity. For example:
-
- nearest(10, 44) yields 40
- nearest(10, 46) 50
- nearest(10, 45) 50
- nearest(25, 328) 325
- nearest(.1, 4.567) 4.6
- nearest(10, -45) -50
-
-=item B<nearest_ceil> TARGET, LIST
-
-Rounds the number(s) to the nearest multiple of the target value.
-TARGET must be positive.
-In scalar context, returns a single value; in list context, returns
-a list of values. Numbers that are halfway between two multiples
-of the target will be rounded to the ceiling, i.e. the next
-algebraically higher multiple. For example:
-
- nearest_ceil(10, 44) yields 40
- nearest_ceil(10, 45) 50
- nearest_ceil(10, -45) -40
-
-=item B<nearest_floor> TARGET, LIST
-
-Rounds the number(s) to the nearest multiple of the target value.
-TARGET must be positive.
-In scalar context, returns a single value; in list context, returns
-a list of values. Numbers that are halfway between two multiples
-of the target will be rounded to the floor, i.e. the next
-algebraically lower multiple. For example:
-
- nearest_floor(10, 44) yields 40
- nearest_floor(10, 45) 40
- nearest_floor(10, -45) -50
-
-=item B<nearest_rand> TARGET, LIST
-
-Rounds the number(s) to the nearest multiple of the target value.
-TARGET must be positive.
-In scalar context, returns a single value; in list context, returns
-a list of values. Numbers that are halfway between two multiples
-of the target will be rounded up or down in a random fashion.
-For example, in a large number of trials, C<nearest(10, 45)> will
-yield 40 half the time and 50 half the time.
-
-=item B<nlowmult> TARGET, LIST
-
-Returns the next lower multiple of the number(s) in LIST.
-TARGET must be positive.
-In scalar context, returns a single value; in list context, returns
-a list of values. Numbers that are between two multiples of the
-target will be adjusted to the nearest multiples of LIST that are
-algebraically lower. For example:
-
- nlowmult(10, 44) yields 40
- nlowmult(10, 46) 40
- nlowmult(25, 328) 325
- nlowmult(.1, 4.567) 4.5
- nlowmult(10, -41) -50
-
-=item B<nhimult> TARGET, LIST
-
-Returns the next higher multiple of the number(s) in LIST.
-TARGET must be positive.
-In scalar context, returns a single value; in list context, returns
-a list of values. Numbers that are between two multiples of the
-target will be adjusted to the nearest multiples of LIST that are
-algebraically higher. For example:
-
- nhimult(10, 44) yields 50
- nhimult(10, 46) 50
- nhimult(25, 328) 350
- nhimult(.1, 4.512) 4.6
- nhimult(10, -49) -40
-
-=back
-
-=head1 STANDARD FLOATING-POINT DISCLAIMER
-
-Floating-point numbers are, of course, a rational subset of the real
-numbers, so calculations with them are not always exact. In order to
-avoid surprises because of this, these routines use a value for
-one-half that is very slightly larger than 0.5. Nevertheless,
-if the numbers to be rounded are stored as floating-point, they will
-be subject, as usual, to the mercies of your hardware, your C
-compiler, etc. Thus, numbers that are supposed to be halfway between
-two others may be stored in a slightly different way and thus behave
-surprisingly.
-
-=head1 AUTHOR
-
-Math::Round was written by Geoffrey Rommel E<lt>GROMMEL at cpan.orgE<gt>
-in October 2000.
-
-=cut
+package Math::Round;
+
+use strict;
+use POSIX;
+use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
+
+require Exporter;
+
+ at ISA = qw(Exporter AutoLoader);
+ at EXPORT = qw(round nearest);
+ at EXPORT_OK = qw(round nearest round_even round_odd round_rand
+ nearest_ceil nearest_floor nearest_rand
+ nlowmult nhimult );
+$VERSION = '0.06';
+
+%EXPORT_TAGS = ( all => [ @EXPORT_OK ] );
+
+#--- Default value for "one-half". This is the lowest value that
+#--- gives acceptable results for test #6 in test.pl. See the pod
+#--- for more information.
+
+$Math::Round::half = 0.50000000000008;
+
+sub round {
+ my $x;
+ my @res = map {
+ if ($_ >= 0) { POSIX::floor($_ + $Math::Round::half); }
+ else { POSIX::ceil($_ - $Math::Round::half); }
+ } @_;
+
+ return (wantarray) ? @res : $res[0];
+}
+
+sub round_even {
+ my @res = map {
+ my ($sign, $in, $fr) = _sepnum($_);
+ if ($fr == 0.5) {
+ $sign * (($in % 2 == 0) ? $in : $in + 1);
+ } else {
+ $sign * POSIX::floor(abs($_) + $Math::Round::half);
+ }
+ } @_;
+ return (wantarray) ? @res : $res[0];
+}
+
+sub round_odd {
+ my @res = map {
+ my ($sign, $in, $fr) = _sepnum($_);
+ if ($fr == 0.5) {
+ $sign * (($in % 2 == 1) ? $in : $in + 1);
+ } else {
+ $sign * POSIX::floor(abs($_) + $Math::Round::half);
+ }
+ } @_;
+ return (wantarray) ? @res : $res[0];
+}
+
+sub round_rand {
+ my @res = map {
+ my ($sign, $in, $fr) = _sepnum($_);
+ if ($fr == 0.5) {
+ $sign * ((rand(4096) < 2048) ? $in : $in + 1);
+ } else {
+ $sign * POSIX::floor(abs($_) + $Math::Round::half);
+ }
+ } @_;
+ return (wantarray) ? @res : $res[0];
+}
+
+#--- Separate a number into sign, integer, and fractional parts.
+#--- Return as a list.
+sub _sepnum {
+ my $x = shift;
+ my $sign = ($x >= 0) ? 1 : -1;
+ $x = abs($x);
+ my $i = int($x);
+ return ($sign, $i, $x - $i);
+}
+
+#------ "Nearest" routines (round to a multiple of any number)
+
+sub nearest {
+ my $targ = abs(shift);
+ my @res = map {
+ if ($_ >= 0) { $targ * int(($_ + $Math::Round::half * $targ) / $targ); }
+ else { $targ * POSIX::ceil(($_ - $Math::Round::half * $targ) / $targ); }
+ } @_;
+
+ return (wantarray) ? @res : $res[0];
+}
+
+# In the next two functions, the code for positive and negative numbers
+# turns out to be the same. For negative numbers, the technique is not
+# exactly obvious; instead of floor(x+0.5), we are in effect taking
+# ceiling(x-0.5).
+
+sub nearest_ceil {
+ my $targ = abs(shift);
+ my @res = map { $targ * POSIX::floor(($_ + $Math::Round::half * $targ) / $targ) } @_;
+
+ return wantarray ? @res : $res[0];
+}
+
+sub nearest_floor {
+ my $targ = abs(shift);
+ my @res = map { $targ * POSIX::ceil(($_ - $Math::Round::half * $targ) / $targ) } @_;
+
+ return wantarray ? @res : $res[0];
+}
+
+sub nearest_rand {
+ my $targ = abs(shift);
+
+ my @res = map {
+ my ($sign, $in, $fr) = _sepnear($_, $targ);
+ if ($fr == 0.5 * $targ) {
+ $sign * $targ * ((rand(4096) < 2048) ? $in : $in + 1);
+ } else {
+ $sign * $targ * int((abs($_) + $Math::Round::half * $targ) / $targ);
+ }
+ } @_;
+ return (wantarray) ? @res : $res[0];
+}
+
+#--- Next lower multiple
+sub nlowmult {
+ my $targ = abs(shift);
+ my @res = map { $targ * POSIX::floor($_ / $targ) } @_;
+
+ return wantarray ? @res : $res[0];
+}
+
+#--- Next higher multiple
+sub nhimult {
+ my $targ = abs(shift);
+ my @res = map { $targ * POSIX::ceil($_ / $targ) } @_;
+
+ return wantarray ? @res : $res[0];
+}
+
+#--- Separate a number into sign, "integer", and "fractional" parts
+#--- for the 'nearest' calculation. Return as a list.
+sub _sepnear {
+ my ($x, $targ) = @_;
+ my $sign = ($x >= 0) ? 1 : -1;
+ $x = abs($x);
+ my $i = int($x / $targ);
+ return ($sign, $i, $x - $i*$targ);
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Math::Round - Perl extension for rounding numbers
+
+=head1 SYNOPSIS
+
+ use Math::Round qw(...those desired... or :all);
+
+ $rounded = round($scalar);
+ @rounded = round(LIST...);
+ $rounded = nearest($target, $scalar);
+ @rounded = nearest($target, LIST...);
+
+ # and other functions as described below
+
+=head1 DESCRIPTION
+
+B<Math::Round> supplies functions that will round numbers in different
+ways. The functions B<round> and B<nearest> are exported by
+default; others are available as described below. "use ... qw(:all)"
+exports all functions.
+
+=head1 FUNCTIONS
+
+=over 2
+
+=item B<round> LIST
+
+Rounds the number(s) to the nearest integer. In scalar context,
+returns a single value; in list context, returns a list of values.
+Numbers that are halfway between two integers are rounded
+"to infinity"; i.e., positive values are rounded up (e.g., 2.5
+becomes 3) and negative values down (e.g., -2.5 becomes -3).
+
+=item B<round_even> LIST
+
+Rounds the number(s) to the nearest integer. In scalar context,
+returns a single value; in list context, returns a list of values.
+Numbers that are halfway between two integers are rounded to the
+nearest even number; e.g., 2.5 becomes 2, 3.5 becomes 4, and -2.5
+becomes -2.
+
+=item B<round_odd> LIST
+
+Rounds the number(s) to the nearest integer. In scalar context,
+returns a single value; in list context, returns a list of values.
+Numbers that are halfway between two integers are rounded to the
+nearest odd number; e.g., 3.5 becomes 3, 4.5 becomes 5, and -3.5
+becomes -3.
+
+=item B<round_rand> LIST
+
+Rounds the number(s) to the nearest integer. In scalar context,
+returns a single value; in list context, returns a list of values.
+Numbers that are halfway between two integers are rounded up or
+down in a random fashion. For example, in a large number of trials,
+2.5 will become 2 half the time and 3 half the time.
+
+=item B<nearest> TARGET, LIST
+
+Rounds the number(s) to the nearest multiple of the target value.
+TARGET must be positive.
+In scalar context, returns a single value; in list context, returns
+a list of values. Numbers that are halfway between two multiples
+of the target will be rounded to infinity. For example:
+
+ nearest(10, 44) yields 40
+ nearest(10, 46) 50
+ nearest(10, 45) 50
+ nearest(25, 328) 325
+ nearest(.1, 4.567) 4.6
+ nearest(10, -45) -50
+
+=item B<nearest_ceil> TARGET, LIST
+
+Rounds the number(s) to the nearest multiple of the target value.
+TARGET must be positive.
+In scalar context, returns a single value; in list context, returns
+a list of values. Numbers that are halfway between two multiples
+of the target will be rounded to the ceiling, i.e. the next
+algebraically higher multiple. For example:
+
+ nearest_ceil(10, 44) yields 40
+ nearest_ceil(10, 45) 50
+ nearest_ceil(10, -45) -40
+
+=item B<nearest_floor> TARGET, LIST
+
+Rounds the number(s) to the nearest multiple of the target value.
+TARGET must be positive.
+In scalar context, returns a single value; in list context, returns
+a list of values. Numbers that are halfway between two multiples
+of the target will be rounded to the floor, i.e. the next
+algebraically lower multiple. For example:
+
+ nearest_floor(10, 44) yields 40
+ nearest_floor(10, 45) 40
+ nearest_floor(10, -45) -50
+
+=item B<nearest_rand> TARGET, LIST
+
+Rounds the number(s) to the nearest multiple of the target value.
+TARGET must be positive.
+In scalar context, returns a single value; in list context, returns
+a list of values. Numbers that are halfway between two multiples
+of the target will be rounded up or down in a random fashion.
+For example, in a large number of trials, C<nearest(10, 45)> will
+yield 40 half the time and 50 half the time.
+
+=item B<nlowmult> TARGET, LIST
+
+Returns the next lower multiple of the number(s) in LIST.
+TARGET must be positive.
+In scalar context, returns a single value; in list context, returns
+a list of values. Numbers that are between two multiples of the
+target will be adjusted to the nearest multiples of LIST that are
+algebraically lower. For example:
+
+ nlowmult(10, 44) yields 40
+ nlowmult(10, 46) 40
+ nlowmult(25, 328) 325
+ nlowmult(.1, 4.567) 4.5
+ nlowmult(10, -41) -50
+
+=item B<nhimult> TARGET, LIST
+
+Returns the next higher multiple of the number(s) in LIST.
+TARGET must be positive.
+In scalar context, returns a single value; in list context, returns
+a list of values. Numbers that are between two multiples of the
+target will be adjusted to the nearest multiples of LIST that are
+algebraically higher. For example:
+
+ nhimult(10, 44) yields 50
+ nhimult(10, 46) 50
+ nhimult(25, 328) 350
+ nhimult(.1, 4.512) 4.6
+ nhimult(10, -49) -40
+
+=back
+
+=head1 VARIABLE
+
+The variable B<$Math::Round::half> is used by most routines in this
+module. Its value is very slightly larger than 0.5, for reasons
+explained below. If you find that your application does not deliver
+the expected results, you may reset this variable at will.
+
+=head1 STANDARD FLOATING-POINT DISCLAIMER
+
+Floating-point numbers are, of course, a rational subset of the real
+numbers, so calculations with them are not always exact.
+Numbers that are supposed to be halfway between
+two others may surprise you; for instance, 0.85 may not be exactly
+halfway between 0.8 and 0.9, and (0.75 - 0.7) may not be the same as
+(0.85 - 0.8).
+
+In order to give more predictable results,
+these routines use a value for
+one-half that is slightly larger than 0.5. Nevertheless,
+if the numbers to be rounded are stored as floating-point, they will
+be subject, as usual, to the mercies of your hardware, your C
+compiler, etc.
+
+=head1 AUTHOR
+
+Math::Round was written by Geoffrey Rommel E<lt>GROMMEL at cpan.orgE<gt>
+in October 2000.
+
+=cut
Modified: trunk/libmath-round-perl/debian/changelog
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmath-round-perl/debian/changelog?rev=20921&op=diff
==============================================================================
--- trunk/libmath-round-perl/debian/changelog (original)
+++ trunk/libmath-round-perl/debian/changelog Tue Jun 10 18:31:43 2008
@@ -3,6 +3,7 @@
* debian/control: Added: Vcs-Svn field (source stanza); Vcs-Browser
field (source stanza); Homepage field (source stanza). Removed: XS-
Vcs-Svn fields.
+ * This is the first 0.06* package that actually contains 0.06 and not 0.05.
-- gregor herrmann <gregor+debian at comodo.priv.at> Tue, 09 Oct 2007 22:30:30 +0200
More information about the Pkg-perl-cvs-commits
mailing list