I would greatly appreciate comments on
https://github.com/sympy/sympy/pull/1848
This provides efficient implementations for enumerating and counting
multiset partitions.
Rationale for including in Sympy:
This provides a faster implemenation of existing user-visible
functionality. Multiset partitions are used in meijerint.py,
although meijerint only uses the 2-partition case. Enumerating
multiset partitions is also a good way to enumerate all the
factorings of an integer.
Desired feedback (in roughly this order):
Basic design issues: Is there functionality which should be
trimmed/added? Function naming, code location etc.
Is the programmer-facing (docstring + comments) sufficient? The
basic enumeration algorithm is described in Knuth and other
places, but the algorithms for the range-restricted enumeration
and counting versions are (so far as I know) original. Hence, the
bar for internal documentation is a bit higher. (I know the
user-facing documentation still has lots of issues. I'll fix that
once I am confident about these first two points.)
Then, the regular review for style, test coverage, etc.
There is no advanced math required to review this. The algorithm is,
at its heart, an inorder tree traversal, but that simple core is
hidden inside some fairly intricate data structures and order
constraints. I would recommend at least glancing at the Yorgey Monad
Reader article (referenced in the code) to get an idea of the
bijection between mulitset partitions and integer vectors, and how the
ordering constraints are set up.
Many thanks.
--
You received this message because you are subscribed to the Google Groups
"sympy" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sympy?hl=en-US.
For more options, visit https://groups.google.com/groups/opt_out.