multicool - R package for generating multisets in coolex order.
RForge.net

multicool

About multicool
GIT access
Download/Files
Check results
Package R docs

GIT repository access

The GIT repository for this project can be cloned using
git clone --recursive https://github.com/jmcurran/multicool multicool
see also multicool GitHub repository.

To install the latest development snapshot of this package, use

install.packages("multicool",,"http://rforge.net/",type="source")

Binaries (if avalable) can be installed using

install.packages("multicool",,"http://rforge.net/")

Most recent GIT commits


fbdd3489| James Curran | Tue Oct 20 09:59:31 2026 +1300
Faster allPerm: map elements in C++, skip state copies (1.0.1.003)

- allPerm writes element values straight into the result matrix via a
templated fillPerms<RTYPE>() for integer, double, logical and character
elements; classed and complex vectors fall back to mapping codes in R.
- Split hasNext() into advance() (pointer moves only) and setState(), so
allPerm walks the list directly into an uninitialised matrix.
- initMC keeps integer input as integer, so allPerm returns an integer
matrix for integer input.
- 10-32x faster than CRAN 1.0.1 on the Stack Overflow 22569176
permutation benchmarks; now 1.4-1.9x single-threaded RcppAlgos.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 M       CLAUDE.md
 M       DESCRIPTION
 M       NEWS.md
 M       R/allPerm.R
 M       R/initMC.r
 M       src/multicool.cpp

2d999eda| James Curran | Tue Oct 20 08:21:57 2026 +1300
Exact counts with gmp, C++ cleanup and bug fixes (1.0.1.002)

- Stirling2/S2, Bell/B and multinom now return exact gmp bigz values;
multinom(useDouble = TRUE) converts the exact result. Fixes silent
overflow (much earlier on Windows, where long is 32 bits).
- Remove Dave Barber's multinomial.h (very slow for large sums) and drop
him from Authors@R; acknowledged in the new NEWS.md.
- initMC: fix non-whole numbers permuting counts instead of values; keep
input type; error on length < 2 or NA input.
- genComp: validate n (n <= 0 crashed R), fix NULL result when len > n,
and make generateCompositions linear instead of quadratic.
- Multicool class: fix memory leak, use std::vector storage with copying
disabled, check input is sorted, allPerm fills an IntegerMatrix directly
and no longer resets nextPerm.
- Switch NAMESPACE to roxygen2, register native routines, use Authors@R.
- Add CLAUDE.md; exclude it and Dropbox conflict files from the build.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
 M       .Rbuildignore
 A       CLAUDE.md
 M       DESCRIPTION
 M       NAMESPACE
 A       NEWS.md
 M       R/RcppExports.R
 M       R/Stirling2.R
 M       R/allPerm.R
 M       R/genComp.R
 M       R/initMC.r
 A       R/multicool-package.R
 M       R/multinom.R
 M       R/nextPerm.R
 M       R/zzz.R
 M       man/Bell.Rd
 M       man/Stirling2.Rd
 M       man/genComp.Rd
 M       man/initMC.Rd
 A       man/multicool-package.Rd
 M       man/multinom.Rd
 M       man/nextPerm.Rd
 M       multicool.Rproj
 M       src/RcppExports.cpp
 M       src/compositions.cpp
 M       src/multicool.cpp
 D       src/multinomial.h

e1a805e7| jmcurran | Mon Feb 5 14:21:37 2024 +1300
Updated roxygen stuff so that everything is automatically generated (namespace etc.)
 M       NAMESPACE
 M       R/Stirling2.R
 M       R/zzz.R
 M       man/Bell.Rd
 M       man/Stirling2.Rd

4f96c435| jmcurran | Mon Feb 5 13:50:03 2024 +1300
Updated description to include links (Olivroy) and something in initMC (but I don't remember what)
 M       DESCRIPTION
 M       R/initMC.r
 M       man/initMC.Rd

2a2e9643| Merge: e70cb16 7950e1b
James Curran | Mon Feb 5 13:35:36 2024 +1300

Merge pull request #3 from olivroy/patch-1

Add links to DESCRIPTION