forked from Thorium/FSharp.Azure.Quantum
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCircuitVisualization.fsx
More file actions
130 lines (102 loc) · 3.4 KB
/
Copy pathCircuitVisualization.fsx
File metadata and controls
130 lines (102 loc) · 3.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#!/usr/bin/env dotnet fsi
// ============================================================================
// Quantum Circuit Visualization - Easy Integration Example
// ============================================================================
//
// This example demonstrates how visualization is now easily integrated
// with CircuitBuilder using simple extension methods.
//
// KEY FEATURES:
// - Call .ToASCII() directly on any Circuit
// - Call .ToMermaid() directly on any Circuit
// - No manual conversion needed!
//
// ============================================================================
#r "../../src/FSharp.Azure.Quantum/bin/Debug/net10.0/FSharp.Azure.Quantum.dll"
open System
open FSharp.Azure.Quantum.CircuitBuilder
open FSharp.Azure.Quantum.Visualization
// ============================================================================
// EXAMPLE 1: Bell State Visualization
// ============================================================================
printfn "=== Example 1: Bell State ==="
printfn ""
let bellState = circuit {
qubits 2
H 0 // Hadamard on qubit 0
CNOT (0, 1) // Entangle qubits
}
printfn "ASCII Visualization:"
printfn "--------------------"
printfn "%s" (bellState.ToASCII())
printfn ""
printfn "Mermaid Sequence Diagram:"
printfn "-------------------------"
printfn "%s" (bellState.ToMermaid())
printfn ""
// ============================================================================
// EXAMPLE 2: Quantum Fourier Transform (3 qubits)
// ============================================================================
printfn "=== Example 2: QFT-3 ==="
printfn ""
let qft3 = circuit {
qubits 3
// QFT on qubit 0
H 0
CP (1, 0, Math.PI / 2.0)
CP (2, 0, Math.PI / 4.0)
// QFT on qubit 1
H 1
CP (2, 1, Math.PI / 2.0)
// QFT on qubit 2
H 2
// SWAP for bit-reversal
SWAP (0, 2)
}
printfn "ASCII Visualization:"
printfn "--------------------"
printfn "%s" (qft3.ToASCII())
printfn ""
printfn "Mermaid Sequence Diagram:"
printfn "-------------------------"
printfn "%s" (qft3.ToMermaid())
printfn ""
// ============================================================================
// EXAMPLE 3: Simple Multi-Gate Circuit
// ============================================================================
printfn "=== Example 3: Rotation Gates ==="
printfn ""
let rotations = circuit {
qubits 3
// Various rotation gates
RX (0, Math.PI / 4.0)
RY (1, Math.PI / 3.0)
RZ (2, Math.PI / 2.0)
// Controlled rotations
CRX (0, 1, Math.PI / 6.0)
CRY (1, 2, Math.PI / 8.0)
// Measurement
Measure 0
Measure 1
Measure 2
}
printfn "ASCII Visualization:"
printfn "--------------------"
printfn "%s" (rotations.ToASCII())
printfn ""
// ============================================================================
// SUMMARY
// ============================================================================
printfn ""
printfn "=== Easy Visualization Integration ==="
printfn ""
printfn "✓ Call .ToASCII() on any Circuit"
printfn "✓ Call .ToMermaid() on any Circuit"
printfn "✓ No manual conversion needed"
printfn "✓ Works with all CircuitBuilder gates"
printfn ""
printfn "Example usage:"
printfn " let myCircuit = circuit { ... }"
printfn " printfn \"%s\" (myCircuit.ToASCII()) // Terminal-friendly"
printfn " printfn \"%s\" (myCircuit.ToMermaid()) // GitHub/docs"
printfn ""