NAME

Math::Counting - Combinatorial counting operations

SYNOPSIS

use Math::Counting ':student';
printf "Given n=%d and r=%d:\nFact=%d\nPerm=%d\nComb=%d\n",
  $n, $r, factorial($n), permutation($n, $r), combination($n, $r);

use Math::Counting ':big';
printf "n=%d, r=%d:\nBig F=%d\n Big P=%d\nBig C=%d\n",
  $n, $r, bfact($n), bperm($n, $r), bcomb($n, $r);

DESCRIPTION

Compute the numerical factorial, number of n,r permutations and number of n,r combinations using "infinate precision arithmetic" and also the technique of "tail call elimination" as detailed in Higher Order Perl and based on the algorithms in Mastering Algorithms with Perl.

No functions are exported by default.

FUNCTIONS

factorial

$f = factorial($n);

Return the number of arrangements of n according to the "student" version using real arithmetic.

bfact

$f = bfact($n);

Return the value of the "bfact" in Math::BigInt function, which is the "Right Way To Do It."

permutation

$p = permutation($n, $r);

Return the number of arrangements of r elements drawn from a set of n elements. nPn is the same as n!. This function employs the "student" version using real arithmetic.

bperm

$p = bperm($n, $r);

Return the Math::BigInt computation: n!/(n-r)!.

combination

$c = combination($n, $r);

Return the number of ways to choose r elements from a set of n elements. This function employs the "student" version using real arithmetic.

bcomb

$c = bcomb($n, $r);

Return the Math::BigInt computation: n!/r!(n-r)!.

TO DO

Figure out how to allow the use of different BigInt variations, like GMP.

Provide the gamma function for the factorial of non-integer numbers?

SEE ALSO

Higher Order Perl by Mark Jason Dominus (http://hop.perl.plover.com/).

Mastering Algorithms with Perl by Orwant, Hietaniemi & Macdonald (http://www.oreilly.com/catalog/maperl/).

The bfac function of the Math::BigInt module.

Algorithm::Combinatorics

String::OrderedCombination for nPk list generation.

Math::Combinatorics for nPn and nCr list generation.

http://en.wikipedia.org/wiki/Factorial

http://en.wikipedia.org/wiki/Permutation

http://en.wikipedia.org/wiki/Combination

AUTHOR

Gene Boggs <gene@cpan.org>

COPYRIGHT

Copyright 2005-2007 Gene Boggs All Rights Reserved

You may use this package under the same terms as Perl itself.