Common mathematical sequences for Perl 6
Install this file using
zef install Math::Sequences
Included components
Math::Sequences::Integer
- Integer sequencesclass Integers
- generic Integer sequences classclass Naturals
- more specific finite-starting-point classβ€
- The integers as a rangeπ
- The naturals (from 0) as a rangeβ
- The naturals (from 1) as a range@AXXXXXX
- All of the core OEIS sequences from
http://oeis.org/wiki/Index_to_OEIS:_Section_Cor%oeis-core
- A mapping of English names to sequences (e.g. %oeis-core<primes>
)OEIS
- A function that returns the sequence for a given name, but
can also search for sequences (:search
flag) whose names start with the given
string, in which case a hash of name/sequence pairs is returned. Names can be the
%oeis-core
aliases or the OEIS key such as A000001
.
Math::Sequences::Real
- Real sequencesclass Reals
- generic Real number sequences classβ
- The reals as a range
Math::Sequences::Numberphile
- OEIS sequences featured on the
Numberphile YouTube channel.
Support routines
These routines and operators are defined to support the definition
of the sequences. Because they're not the primary focus of this
library, they may be moved out into some extrnal library in the
future...
Integer support routines
To gain access to these, use:
use Math::Sequences::Integer :support;
$a choose $b
(binomial) The choose and ichoose (for integer-only results) infix operators
return the binomial coefficient on the inputs.binpart($n)
The binary partitions of n.Entringer($n, $k)
Alternating permutation (or zigzag permutation) of the set 1 through n, taken
k at a time, where each is an arrangement that is alternately greater or less
than the preceding.Eulers-number($terms)
Returns digits of e to terms places after the decimal as a FatRat.factorial($n)
The factorial of n.factors($n, :%map)
The prime factors (non-unique) of n. Takes an optional map of
inputs to results, mostly used to deal with the ambiguous factors
of 0 and 1.divisors($n)
The unique list of whole divisors of n. e.g. divisors(6)
gives
(1, 2, 3, 6)
.moebius($n)
The MΓΆbius number of n.sigma($n, $exponent=1)
The sum of positive divisors function Ο. The optional exponent is
the power to which each divisor is raised before summing.Sterling1($n, $k)
Count permutations according to their number of cycles.Sterling2($n, $k)
The number of ways to partition a set of n objects into k non-empty subsets.totient($n)
The numbers from zero to n that are co-prime to n.planar-partitions($n)
The planar partitions of n. http://mathworld.wolfram.com/PlanePartition.htmlstrict-partitions($n)
The strict partitions of n are the ways that n can be generated by
summing unique positive, non-zero integers. See:
https://math.stackexchange.com/questions/867760/what-is-the-count-of-the-strict-partitions-of-n-in-k-parts-not-exceeding-mPi-digits
A generator of digits for pi. Relatively fast and very memory-efficient.FatPi($digits=100)
This function is certainly going to be moved out of this library at some
point, as it is not used here and doesn't return an integer, but it's
a simple wrapper around Pi-digits which returns a FatRat
rational
for pi to the given number of digits. e.g. FatPi(17).nude
gives:
(7853981633974483 2500000000000000)
.
About Unicode
This library uses a few non-ASCII Unicode characters that are widely used
within the mathematical community. They are entirely optional, however, and
if you wish to use their ASCII equivalents this table will help you out:
(the following assume use Math::Sequences::Integer; use Math::Sequences::Real;
)
β€
- Integers.new
π
- Naturals.new.from(0)
or simply Naturals.new
β
- Naturals.new.from(1)
β
- Reals.new
The following, respectively, are defined 'ASCII equivalent' constants for each of the above:
Entering symbols
To enter each of these Unicode symbols, here are common shortcuts in vim and emacs:
β€
- DOUBLE-STRUCK CAPITAL Z - U+2124- vim - Ctrl-v u 2 1 2 4
- emacs - Ctrl-x 8
<enter>
2 1 2 4 <enter>
π
- MATHEMATICAL DOUBLE-STRUCK CAPITAL I - U+1D540- vim - Ctrl-v U 0 0 0 1 d 5 4 0
- emacs - Ctrl-x 8
<enter>
1 d 5 4 0 <enter>
β
- DOUBLE-STRUCK CAPITAL N - U+2115- vim - Ctrl-v u 2 1 1 5
- emacs - Ctrl-x 8
<enter>
2 1 1 5 <enter>
β
- DOUBLE-STRUCK CAPITAL R - U+211D- vim - Ctrl-v u 2 1 1 d
- emacs - Ctrl-x 8
<enter>
2 1 1 d <enter>
Examples
See the examples directory for usage.