public void ModMultExpTests() { long n = 21; long x = 5; long y = 6; long expected = 3; var transform = NumberTheoryTransforms.ModMult(x, n).Pow(2); var input = y.ToBitsPad(5).Select(bit => bit ? Qubit.ClassicOne : Qubit.ClassicZero).ToArray(); var res = transform.Transform(new MultiQubit(input)).ToArray(); // only one basis should have anything res.Where(r => r.Magnitude > 0).Single(); long finalAnswer = -1; foreach (long i in LongExt.Range(0, res.LongLength)) { if (res[i] == 1) { finalAnswer = i; } } finalAnswer.Should().Be(expected); }
public void LongRange_OutOfRange() { IEnumerable <long> items = LongExt.Range(long.MaxValue - 1, 1); Assert.AreEqual(items.Last(), long.MaxValue - 1); }
public void LongRange_SeveralWithStep() { IEnumerable <long> items = LongExt.Range(0, 10, 10); CollectionAssert.AreEqual(items, new[] { 0, 10, 20, 30, 40, 50, 60, 70, 80, 90 }); }
public void LongRange_Several() { IEnumerable <long> items = LongExt.Range(0, 10); CollectionAssert.AreEqual(items, new[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }); }
public void LongRange_Single() { IEnumerable <long> items = LongExt.Range(0, 1); Assert.AreEqual(items.Single(), 0); }
public void LongRange_Empty() { IEnumerable <long> items = LongExt.Range(0, 0); CollectionAssert.IsEmpty(items); }