|
1 | 1 | # RcppAlgos 2.10.0 |
2 | 2 |
|
| 3 | +This release introduces major enhancements to the compositions framework, including support for distinct and repetition-restricted compositions, parallel ranking, and performance improvements across several combinatorial algorithms. |
| 4 | + |
| 5 | +These enhancements integrate fully with the existing counting, ranking, sampling, and iterator infrastructure, and have been validated for correctness and consistency across supported combinatorial families. |
| 6 | + |
3 | 7 | ## New Features: |
4 | 8 |
|
5 | | -* Added parallel capabilities to all ranking functions via the new `nThreads` argument (e.g. `partitionsRank(..., nThreads = 4)`, `comboRank(..., nThreads = 4)`). |
6 | | -* Implemented a next-lexicographical algorithm for generating distinct integer compositions, enabling efficient large-scale generation such as `compositionsGeneral(50, 8)`. |
7 | | -* Added accompanying algorithms for the distinct integer composition case, exposed through: `compositionsSample`, `compositionsRank`, and `compositionsIter`. |
8 | | -* Enhanced `permuteCount()` to count permutations of partitions when called with `constraintFun = "sum"` and `comparisonFun = "=="`, allowing optimized counting in cases that reduce to partition/composition counting. |
| 9 | +* Added parallel capabilities to all ranking functions via a new `nThreads` argument (e.g. `comboRank()`, `partitionsRank()`, `compositionsRank()`), enabling faster ranking of large combinatorial results. |
| 10 | +* Implemented a next-lexicographical algorithm for generating **distinct integer compositions**, enabling efficient generation of large problems such as `compositionsGeneral(50, 8)`. |
| 11 | +* Added full support for distinct compositions across the compositional framework, including: |
9 | 12 |
|
10 | | -## Bug Fixes: |
| 13 | + * `compositionsGeneral()` |
| 14 | + * `compositionsSample()` |
| 15 | + * `compositionsRank()` |
| 16 | + * `compositionsIter()` |
11 | 17 |
|
12 | | -* Improved input validation for constraint-based calls by requiring `comparisonFun` to be a character vector (now errors early with a clearer message). |
13 | | -* Fixed edge-case handling in partition iteration logic where boundary-derived indices could become negative, preventing incorrect behavior in some partition/multiset scenarios. |
| 18 | +* Added support for **compositions with repetition subject to a maximum part constraint** ("capped compositions"), including weak and non-weak cases, with full support for counting, ranking, sampling, and iteration. |
| 19 | +* Enhanced `permuteCount()` to count permutations of partitions when called with `constraintFun = "sum"` and `comparisonFun = "=="`, enabling faster counting when problems reduce to partition/composition counting. |
14 | 20 |
|
15 | 21 | ## Improvements: |
16 | 22 |
|
17 | | -* Added a package load-time check that validates the loaded shared library matches the installed package version, producing a clear reinstall/restart error instead of potential crashes from stale binaries. |
18 | | -* Improved handling of singleton `v` with singleton `freqs` so that numeric values are interpreted correctly in some constrained/ranking paths. |
19 | | -* Added nonexported `permutePartsDesign()` to inspect the partition-design/counting setup used by `permuteCount()` when it reduces to a partition/composition counting problem. |
| 23 | +* Added validation at package load time to ensure the loaded shared library matches the installed package version, producing a clear error message instead of potential crashes caused by stale compiled code. |
| 24 | +* Improved handling of certain constrained and ranking cases involving singleton inputs. |
| 25 | +* Added internal tooling to support partition and composition counting workflows. |
20 | 26 |
|
21 | 27 | ## Performance: |
22 | 28 |
|
23 | | -* General performance improvements for ranking and composition-related algorithms, including multi-threaded ranking support. |
| 29 | +* Improved performance of ranking and generation algorithms, including support for parallel ranking. |
| 30 | +* Improved performance and scalability of composition-related algorithms, particularly for constrained and distinct composition problems. |
24 | 31 |
|
25 | | -## Internal: |
| 32 | +## Bug Fixes: |
26 | 33 |
|
27 | | -* Added developer tooling and expanded internal type/class infrastructure to support the new composition and counting paths. |
| 34 | +* Fixed an issue in `permuteIter()` affecting cases that reduce to permutations of partitions, which could previously produce incorrect iteration results. |
| 35 | +* Improved input validation for constraint-based calls, producing clearer error messages for invalid inputs. |
| 36 | +* Fixed edge-case issues affecting certain partition and composition iteration scenarios. |
28 | 37 |
|
29 | 38 | # RcppAlgos 2.9.5 |
30 | 39 |
|
|
0 commit comments