MCPcopy Create free account
hub / github.com/RobTillaart/Arduino / combinations

Function combinations

libraries/statHelpers/statHelpers.cpp:245–258  ·  view source on GitHub ↗

works for n = 0..30 for all k

Source from the content-addressed store, hash-verified

243
244// works for n = 0..30 for all k
245uint32_t combinations(uint16_t n, uint16_t k)
246{
247 if ((k == 0) || (k == n)) return 1;
248 if (k < (n-k)) k = n - k; // symmetry
249 uint32_t rv = n;
250 uint8_t p = 2;
251 for (uint8_t i = n-1; i > k; i--)
252 {
253 // if ((0xFFFFFFFF / i) < rv) return 0; // overflow detect...
254 rv = (rv * i) / p;
255 p++;
256 }
257 return rv;
258}
259
260
261// works for n = 0..61 for all k

Callers 1

unittestFunction · 0.85

Calls

no outgoing calls

Tested by 1

unittestFunction · 0.68