public final class ChineseRemainderTheorem {
- private ChineseRemainderTheorem() {}
+ private ChineseRemainderTheorem() {
+ }
/**
* Computes x such that:
- * x ≡ a (mod n1)
- * x ≡ b (mod n2)
+ * x ≡ a (mod n1)
+ * x ≡ b (mod n2)
*
* n1 and n2 MUST be coprime.
*
int invN1modN2 = modInverse(n1, n2);
int invN2modN1 = modInverse(n2, n1);
- int result =
- (a * n2 * invN2modN1 +
- b * n1 * invN1modN2) % N;
+ int result = (a * n2 * invN2modN1 +
+ b * n1 * invN1modN2) % N;
return (result + N) % N;
}
import edu.wpi.first.math.util.Units;
+@SuppressWarnings("removal")
public class TurretVision {
private final PhotonCamera camera;
--- /dev/null
+
+package frc.robot.util;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+public class ChineseRemainderTheoremTest {
+
+ @BeforeEach
+ public void prepare() {
+ }
+
+ @AfterEach
+ public void cleanup() {
+ }
+
+ @Test
+ public void test() {
+ double tolerance = 0.01;
+
+ int val = ChineseRemainderTheorem.solve(5000 % 124, 124, 5000 % 127, 127);
+ assertEquals(5000, val, tolerance);
+ }
+}
+++ /dev/null
-
-package frc.robot.util;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-
-import frc.robot.util.ChineseRemainderTheorum.Encoder;
-
-public class ChineseRemainderTheorumTest {
-
- @BeforeEach
- public void prepare() {
- }
-
- @AfterEach
- public void cleanup() {
- }
-
- @Test
- public void test() {
- double tolerance = 0.01;
-
- Encoder a = new Encoder(5000 % 123, 123);
- Encoder b = new Encoder(5000 % 321, 321);
- double val = ChineseRemainderTheorum.compute(a, b, tolerance);
- assertEquals(5000, val, tolerance);
- }
-}