Exemplo n.º 1
0
 private static void UpdateCache(Qstate old, Qstate @new)
 {
     foreach (var bit in cache[old])
     {
         bit.SetState(@new);
     }
     cache.Remove(old);
 }
Exemplo n.º 2
0
        public static void Combine(Qubit q1, Qubit q2)
        {
            var s1 = q1.S;
            var s2 = q2.S;

            if (s1 != s2)
            {
                var s = Qstate.Combine(s1, s2);
                UpdateCache(s1, s);
                UpdateCache(s2, s);
            }
        }
Exemplo n.º 3
0
        public static Qstate Combine(Qstate s1, Qstate s2)
        {
            var s = new Qstate();

            s.v      = AlgebraUtility.TensorProduct(s1.v, s2.v);
            s.posMap = s2.posMap;
            var offset = s2.posMap.Count;

            foreach (var pair in s1.posMap)
            {
                s.posMap.Add(pair.Key, pair.Value + offset);
            }
            return(s);
        }
Exemplo n.º 4
0
 private void SetState(Qstate s)
 {
     S = s;
     AddToCache();
 }