aboutsummaryrefslogtreecommitdiffstats
path: root/src/p_adic.cpp
diff options
context:
space:
mode:
authorBertrand <bertrand.horel@gmail.com>2016-02-19 15:03:51 +0000
committerBertrand <bertrand.horel@gmail.com>2016-02-19 15:03:51 +0000
commitd2b133901a65244934eb642ec8e20c797efaf650 (patch)
treef8d186f8e8ca0886f8f0a464261ba8747242b4e6 /src/p_adic.cpp
parent355e4567e68a76356714e2e58a42dcd78533cf6c (diff)
downloadprojet_C++-d2b133901a65244934eb642ec8e20c797efaf650.tar.gz
nettoyage du dépôt
Diffstat (limited to 'src/p_adic.cpp')
-rw-r--r--src/p_adic.cpp23
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;
+};