]> git.ozlabs.org Git - ccan/blobdiff - junkcode/tterribe@email.unc.edu-nmbrthry/crt.h
New junkcode from Tim.
[ccan] / junkcode / tterribe@email.unc.edu-nmbrthry / crt.h
diff --git a/junkcode/tterribe@email.unc.edu-nmbrthry/crt.h b/junkcode/tterribe@email.unc.edu-nmbrthry/crt.h
new file mode 100644 (file)
index 0000000..3ce369a
--- /dev/null
@@ -0,0 +1,24 @@
+#if !defined(_crt_H)
+# define _crt_H (1)
+
+/*Computes the solution to a system of simple linear congruences via the
+   Chinese Remainder Theorem.
+  This function solves the system of equations
+   x = a_i (mod m_i)
+  A value x satisfies this equation if there exists an integer k such that
+   x = a_i + k*m_i
+  Note that under this definition, negative moduli are equivalent to positive
+   moduli, and a modulus of 0 demands exact equality.
+  x: Returns the solution, if it exists.
+     Otherwise, the value is unchanged.
+  a: An array of the a_i's.
+  m: An array of the m_i's.
+     These do not have to be relatively prime.
+  n: The number of equations in the system.
+  Return: -1 if the system is not consistent, otherwise the modulus by which
+           the solution is unique.
+          This modulus is the LCM of the m_i's, except in the case where one of
+           them is 0, in which case the return value is also 0.*/
+int crt(int *_x,const int _a[],const int _m[],int _n);
+
+#endif