Revision history for Algorithm-Combinatorics

0.27 Feb 10 2012

    * No code changes, just copyright updates. Indicates also
      the module is not abandoned.

0.26 Jan 28 2011

    * Fixes a memory leak in subsets(), thanks to Oliver Seeliger. [closes RT#65207]

    * Updates Copyright.

    * README documents now the module itself, better for GitHub.

0.25 Nov 30 2007

    * Improved speed of subsets() copying the algorithm in List::PowerSet.

0.24 Jul 14 2007

    * Added subsets().

0.23 May 19 2007

    * We do not longer assume indices com to XS as IVs, that broke
      partitions() in 5.6.2.

    * Small touches to the code.

    * Added a few tests.

0.22 May 15 2007

    * The previous release was built with Apple's version of tar, which
      adds some custom extra files that prevent building the module in some
      systems. I built this one with GNU tar.

0.21 May 14 2007

    * Added a directory with some benchmarks.

    * A maintenance release to indicate the module is maintained.

0.20 June 6 2006

    * Jumped version to 0.2x.

    * Added pointer to Sloane's encyclopedia for the sequence of
      numbers of circular permutations

    * Added complete_permutations().

    * Simplified explanation of circular permutations.

0.16 June 5 2006

    * Added circular_permutations().

    * Added some pointers to The On-Line Encyclopedia of Integer Sequences

    * Added a few more tests for partitions().

0.15 May 23 2006

    * Added partitions().

    * Added some comments.

0.14 December 19 2005

    * Small rewordings in POD.

    * Added TAOCP Vol 4, Fasc 3 to REFERENCES.

    * Added tuples* as alias to variations* to add the nomenclature
      in Knuth's, Mathematica, etc. to the interface.

    * Code cleanup.

0.13 November 20 2005

    * Added derangements(), code, tests, and docs.

    * Benchmarked permutations() against permutations() with loop
      variables declared as registers. No measurable difference.

    * Removed "install" from the cpan(1) example in README.

0.12 November 13 2005

    * DESCRIPTION was reworded.

    * Refactored as regular XS-based module.

0.11 November 8 2005

    * does not resolve the dependency with Inline before
      Makefile.PL is executed, and it fails to generate the Makefile
      because the module Inline::MakeMaker is not found. Due to this
      ExtUtils::MakeMaker is back.

0.10 November 6 2005

    * permutations() has been edited to match Algorithm L from [1]

    * Added REFERENCES to POD

    * Added a workaround to Makefile.PL for "No rule to make target
      ... needed by `pure_all'" so that the Makefile generated by
      Inline::MakeMaker's WriteInlineMakefile() works, and thus the
      C part behaves like a plain XS extension instead of generating
      caches on the user machine

0.08 November 6 2005

    * Changed hyphens in test filenames with underscores

    * The module is known to run under 5.6.2, so the corresponding
      use VERSION has been added

    * variations(\@data, $k) is delegated to permutations(\@data) for
      @data == $k, since permutations() is more efficient

    * Changed AV* in signatures to SV* plus a cast (SV*) SvRV(array) due
      to problems reported regarding AVPtrs. I copied the trick from the
      Changes of Digest::SHA. (Thanks to Aaron Dalton for reporting the

    * variations() is much better, almost twice as fast and does not
      create SVs

0.07 November 5 2005

    * Documented the corresponding formulas

    * Slicing is done now in Perl. The code is much more clear and in my
      benchmarks no significant difference is measured

    * The iterator now may receive an initial arrayref (this is private
      implementation), which simplifies the set up of the iterator when
      the first tuple is known

0.06 November 5 2005

    * permutations() is about 3-4 times faster

0.05  November 4 2005

    * Rewrote the test suite, and relevant documentation

    * Added the helper module t/ to factor out a common test
      code pattern

    * If k is "out of natural range"" the empty set is returned and a
      warning is issued

    * The iterators return an arrayref, and the implementation was
      revised accordingly to be mathematically correct in edge-cases and
      more forgiving

    * I can't stand that DIAGNOSTICS::Errors section, so many croaks on
      boundary conditions are so unperlish! The module has just a couple
      of days so I am on time to fix this

0.02  November 3 2005

    * README revised

    * DEPENDENCIES added to POD

    * DIAGNOSTICS added to POD

    * VERSION added to POD

    * Added some code documentation

    * Minor tweaks on the XS code

0.01  November 2 2005

    * First version, released on an unsuspecting world.