summaryrefslogtreecommitdiff log msg author committer range
diff options
 context: 12345678910152025303540 space: includeignore mode: unifiedssdiffstat only
author committer Clifford Wolf 2013-02-27 09:32:19 +0100 Clifford Wolf 2013-02-27 09:32:19 +0100 a321a5c412090d04dfaea4b4876c4901c42cfe44 (patch) b08d286e0aea76be9aab7a543df0b51e76b6ede4 /libs/bigint/BigIntegerAlgorithms.hh 4f0c2862a0d7e1ca247e0a4d54301c7f8cc92fd8 (diff)
Moved stand-alone libs to libs/ directory and added libs/subcircuit
Diffstat (limited to 'libs/bigint/BigIntegerAlgorithms.hh')
-rw-r--r--libs/bigint/BigIntegerAlgorithms.hh25
1 files changed, 25 insertions, 0 deletions
 diff --git a/libs/bigint/BigIntegerAlgorithms.hh b/libs/bigint/BigIntegerAlgorithms.hhnew file mode 100644index 00000000..b1dd9432--- /dev/null+++ b/libs/bigint/BigIntegerAlgorithms.hh@@ -0,0 +1,25 @@+#ifndef BIGINTEGERALGORITHMS_H+#define BIGINTEGERALGORITHMS_H++#include "BigInteger.hh"++/* Some mathematical algorithms for big integers.+ * This code is new and, as such, experimental. */++// Returns the greatest common divisor of a and b.+BigUnsigned gcd(BigUnsigned a, BigUnsigned b);++/* Extended Euclidean algorithm.+ * Given m and n, finds gcd g and numbers r, s such that r*m + s*n == g. */+void extendedEuclidean(BigInteger m, BigInteger n,+ BigInteger &g, BigInteger &r, BigInteger &s);++/* Returns the multiplicative inverse of x modulo n, or throws an exception if+ * they have a common factor. */+BigUnsigned modinv(const BigInteger &x, const BigUnsigned &n);++// Returns (base ^ exponent) % modulus.+BigUnsigned modexp(const BigInteger &base, const BigUnsigned &exponent,+ const BigUnsigned &modulus);++#endif