Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > pl.comp.programming > #31434
| From | Borneq <borneq@antyspam.hidden.pl> |
|---|---|
| Newsgroups | pl.comp.programming |
| Subject | Re: Dokładny podział integera na k jednakowych integerów |
| Date | 2018-01-30 19:35 +0100 |
| Organization | ATMAN - ATM S.A. |
| Message-ID | <p4qdu5$b6v$1@node2.news.atman.pl> (permalink) |
| References | <p4qakp$82b$1@node2.news.atman.pl> <p4qbgf$8k2$2@node2.news.atman.pl> <p4qbk8$8k2$3@node2.news.atman.pl> |
W dniu 30.01.2018 o 18:56, Borneq pisze:
>> ceil zamiast floor tutaj pomaga ale to niezbyt eleganckie rozwiązanie,
>> trzeba nie używać interval ale wymiernego n/k, jak?
> ceil - nie!
Rozwiązanie:
Chodzi o przydział wątków, więc mogę "po chamsku" wstawić ostatnią wartość:
vector<uint32_t> getRanges(int n, int k, int mintask)
{
double interval = double(n) / k;
if (interval<mintask)
{
k = n / mintask;
interval = double(n) / k;
}
vector<uint32_t> result;
result.push_back(0);
uint32_t intPartPos, fracPartPos;
uint32_t intPartDelta, fracPartDelta, oldFrac;
intPartPos = 0; fracPartPos = 0;
intPartDelta = (uint32_t)floor(interval);
fracPartDelta = (uint32_t)floor((interval - intPartDelta) * 65536 * 65536);
for (int i = 0; i<k - 1; i++)
{
intPartPos += intPartDelta;
oldFrac = fracPartPos;
fracPartPos += fracPartDelta;
if (oldFrac > fracPartPos) // when LongWord overflow
intPartPos++;
result.push_back(intPartPos);
}
result.push_back(n);
return result;
}
mintask to liczba , ile minimalnie obiektami może zająć się wątek, aby
nie było nagle 1 czy 0.
Back to pl.comp.programming | Previous | Next — Previous in thread | Find similar | Unroll thread
Dokładny podział integera na k jednakowych integerów Borneq <borneq@antyspam.hidden.pl> - 2018-01-30 18:39 +0100
Re: Dokładny podział integera na k jednakowych integerów Borneq <borneq@antyspam.hidden.pl> - 2018-01-30 18:54 +0100
Re: Dokładny podział integera na k jednakowych integerów Borneq <borneq@antyspam.hidden.pl> - 2018-01-30 18:56 +0100
Re: Dokładny podział integera na k jednakowych integerów Borneq <borneq@antyspam.hidden.pl> - 2018-01-30 19:35 +0100
csiph-web