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); }
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); } }