blob: 30080ac0fa7f4f36adf57fdca1bcb511cc0c2cca (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
#include "low_discrepancy.hpp"
p_adic::p_adic(int n, int p) : p(p) {
int puiss = 1;
while (n > 0) {
ak.push_back(n % p);
pk.push_back(puiss);
puiss *= p;
n -= ak.back();
n /= p;
}
pk.push_back(puiss);
};
void p_adic::increment() {
coeff::iterator i = ak.begin();
while ((i != ak.end()) && ((*i)+1 == p)) { (*i) = 0; i++; }
if (i == ak.end()) {
ak.push_back(1);
pk.push_back(pk.back()*p);
}
else (*i) += 1;
};
|