public ControlledNOT(int TargetIndex, int ControlIndex, IbmQXDevices device)
 {
     if (IsValidConfiguration(TargetIndex, ControlIndex, device) == false)
     {
         throw new System.ArgumentException(string.Format("CX gate between q[{0}], q[{1}] is not allowed in this topology", TargetIndex, ControlIndex), "CNOT gate error");
     }
     this.ControlIndex = ControlIndex;
     this.TargetIndex  = TargetIndex;
 }
        private bool IsValidConfiguration(int TargetIndex, int ControlIndex, IbmQXDevices device)
        {
            if (device == IbmQXDevices.ibmqx2)
            {
                var item = (from i in Ibmqx2 where i.TargetIndex == TargetIndex && i.ControlIndex == ControlIndex select i).FirstOrDefault();
                if (item == null)
                {
                    return(false);
                }
                else
                {
                    return(true);
                }
            }

            else if (device == IbmQXDevices.ibmqx4)
            {
                var item = (from i in Ibmqx4 where i.TargetIndex == TargetIndex && i.ControlIndex == ControlIndex select i).FirstOrDefault();
                if (item == null)
                {
                    return(false);
                }
                else
                {
                    return(true);
                }
            }

            else if (device == IbmQXDevices.ibmqx5)
            {
                var item = (from i in Ibmqx5 where i.TargetIndex == TargetIndex && i.ControlIndex == ControlIndex select i).FirstOrDefault();
                if (item == null)
                {
                    return(false);
                }
                else
                {
                    return(true);
                }
            }
            return(true);
        }
Exemple #3
0
        public async Task <bool> IsDeviceOnline(IbmQXDevices Device)
        {
            var client     = new HttpClient();
            var serializer = new DataContractJsonSerializer(typeof(DeviceOnlineState));

            var streamTask = client.GetStreamAsync(string.Format(ApiUrl + ApiIsDeviceOnline, Device.ToString()));
            var respense   = serializer.ReadObject(await streamTask) as DeviceOnlineState;

            if (respense == null)
            {
                return(false);
            }
            else if (respense.State == true)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }