public static QuantumSimulator WithJupyterDisplay(this QuantumSimulator simulator, IChannel channel, IConfigurationSource configurationSource) { simulator.DisableLogToConsole(); simulator.OnLog += channel.Stdout; simulator.Register( typeof(Diagnostics.DumpMachine <>), typeof(JupyterDumpMachine <>), signature: typeof(ICallable) ); var op = ((GenericCallable)simulator.GetInstance(typeof(Microsoft.Quantum.Diagnostics.DumpMachine <>))); var concreteOp = op.FindCallable(typeof(QVoid), typeof(QVoid)); ((JupyterDumpMachine <QVoid>)concreteOp).Channel = channel; ((JupyterDumpMachine <QVoid>)concreteOp).ConfigurationSource = configurationSource; concreteOp = op.FindCallable(typeof(string), typeof(QVoid)); ((JupyterDumpMachine <string>)concreteOp).Channel = channel; ((JupyterDumpMachine <string>)concreteOp).ConfigurationSource = configurationSource; simulator.Register( typeof(Diagnostics.DumpRegister <>), typeof(JupyterDumpRegister <>), signature: typeof(ICallable) ); op = ((GenericCallable)simulator.GetInstance(typeof(Microsoft.Quantum.Diagnostics.DumpRegister <>))); concreteOp = op.FindCallable(typeof(QVoid), typeof(QVoid)); ((JupyterDumpRegister <QVoid>)concreteOp).Channel = channel; ((JupyterDumpRegister <QVoid>)concreteOp).ConfigurationSource = configurationSource; concreteOp = op.FindCallable(typeof(string), typeof(QVoid)); ((JupyterDumpRegister <string>)concreteOp).Channel = channel; ((JupyterDumpRegister <string>)concreteOp).ConfigurationSource = configurationSource; return(simulator); }
public void QSimVerifyPrimitivesCompleteness() { using (var sim = new QuantumSimulator()) { var ops = from op in typeof(Intrinsic.X).Assembly.GetExportedTypes() where op.IsSubclassOf(typeof(AbstractCallable)) where !op.IsNested select op; var missing = new List <Type>(); foreach (var op in ops) { try { var i = sim.GetInstance(op); Assert.NotNull(i); } catch (Exception) { missing.Add(op); } } Assert.Empty(missing); } }