public static void AddModuloQFT(this QuantumComputer comp, ulong a, ulong N, Register b, params RegisterRef[] controls)
        {
            if (comp.Group)
            {
                object[] parameters = new object[] { comp, a, N, b, controls };
                comp.AddParametricGate("AddModuloQFT", parameters);
                return;
            }
            else
            {
                comp.Group = true;
            }

            Register ctrl = comp.NewRegister(0, 1);
            comp.AddModuloQFT(a, N, ctrl, b, controls);
        }
 public static void AddModuloQFT(this QuantumComputer comp, ulong a, ulong N, Register b, params RegisterRef[] controls)
 {
     Register ctrl = comp.NewRegister(0, 1);
     comp.AddModuloQFT(a, N, ctrl, b, controls);
 }