diff options
| author | Bertrand <bertrand.horel@gmail.com> | 2016-02-19 15:03:51 +0000 |
|---|---|---|
| committer | Bertrand <bertrand.horel@gmail.com> | 2016-02-19 15:03:51 +0000 |
| commit | d2b133901a65244934eb642ec8e20c797efaf650 (patch) | |
| tree | f8d186f8e8ca0886f8f0a464261ba8747242b4e6 /src/p_adic.cpp | |
| parent | 355e4567e68a76356714e2e58a42dcd78533cf6c (diff) | |
| download | projet_C++-d2b133901a65244934eb642ec8e20c797efaf650.tar.gz | |
nettoyage du dépôt
Diffstat (limited to 'src/p_adic.cpp')
| -rw-r--r-- | src/p_adic.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/p_adic.cpp b/src/p_adic.cpp new file mode 100644 index 0000000..30080ac --- /dev/null +++ b/src/p_adic.cpp @@ -0,0 +1,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; +}; |
