Documentation
¶
Index ¶
- func CNOT(bit, c, t int) matrix.Matrix
- func CR(bit, c, t, k int) matrix.Matrix
- func CS(bit, c, t int) matrix.Matrix
- func CZ(bit, c, t int) matrix.Matrix
- func ControlledNot(bit int, c []int, t int) matrix.Matrix
- func ControlledR(bit int, c []int, t, k int) matrix.Matrix
- func ControlledS(bit int, c []int, t int) matrix.Matrix
- func ControlledZ(bit int, c []int, t int) matrix.Matrix
- func Fredkin() matrix.Matrix
- func H(bit ...int) matrix.Matrix
- func I(bit ...int) matrix.Matrix
- func New(v ...[]complex128) matrix.Matrix
- func QFT(bit int) matrix.Matrix
- func R(k int) matrix.Matrix
- func S(bit ...int) matrix.Matrix
- func Swap(bit, c, t int) matrix.Matrix
- func T(bit ...int) matrix.Matrix
- func Toffoli() matrix.Matrix
- func U(alpha, beta, gamma, delta float64) matrix.Matrix
- func X(bit ...int) matrix.Matrix
- func Y(bit ...int) matrix.Matrix
- func Z(bit ...int) matrix.Matrix
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ControlledNot ¶
ControlledNot returns the matrix resulting from a CNOT gate which flips the second qubit (t the target qubit) if and only if the first qubit (c the control qubit) is |1>
Example ¶
package main
import (
"fmt"
"github.com/axamon/q/gate"
)
func main() {
mCN := gate.ControlledNot(2, []int{1}, 1)
for _, r := range mCN {
fmt.Println(r)
}
}
Output: [(1+0i) (0+0i) (0+0i) (0+0i)] [(1+0i) (0+0i) (0+0i) (0+0i)] [(0+0i) (0+0i) (1+0i) (0+0i)] [(0+0i) (0+0i) (1+0i) (0+0i)]
func Fredkin ¶
Fredkin returns the 8x8 Fredkin matrix.
Example ¶
package main
import (
"fmt"
"github.com/axamon/q/gate"
)
func main() {
f := gate.Fredkin()
for _, r := range f {
fmt.Println(r)
}
}
Output: [(1+0i) (0+0i) (0+0i) (0+0i) (0+0i) (0+0i) (0+0i) (0+0i)] [(0+0i) (1+0i) (0+0i) (0+0i) (0+0i) (0+0i) (0+0i) (0+0i)] [(0+0i) (0+0i) (1+0i) (0+0i) (0+0i) (0+0i) (0+0i) (0+0i)] [(0+0i) (0+0i) (0+0i) (1+0i) (0+0i) (0+0i) (0+0i) (0+0i)] [(0+0i) (0+0i) (0+0i) (0+0i) (1+0i) (0+0i) (0+0i) (0+0i)] [(0+0i) (0+0i) (0+0i) (0+0i) (0+0i) (0+0i) (1+0i) (0+0i)] [(0+0i) (0+0i) (0+0i) (0+0i) (0+0i) (1+0i) (0+0i) (0+0i)] [(0+0i) (0+0i) (0+0i) (0+0i) (0+0i) (0+0i) (0+0i) (1+0i)]
func H ¶
H is the Hadamard gate it gives measurements equal possibilities to become 1 or 0 creating therefore superposition.
Example ¶
package main
import (
"fmt"
"github.com/axamon/q"
)
func main() {
qsim := q.New()
// generate qubits of |0>|1>
q0 := qsim.Zero()
q1 := qsim.One()
// apply quantum circuit
qsim.H(q0)
qsim.H(q1)
// estimate
result0 := qsim.Estimate(q0).Probability()
fmt.Printf("%.1f\n", result0)
result1 := qsim.Estimate(q1).Probability()
fmt.Printf("%.1f\n", result1)
}
Output: [0.5 0.5] [0.5 0.5]
func I ¶
Example ¶
package main
import (
"fmt"
"github.com/axamon/q/gate"
)
func main() {
m := gate.I(2)
for _, r := range m {
fmt.Println(r)
}
}
Output: [(1+0i) (0+0i) (0+0i) (0+0i)] [(0+0i) (1+0i) (0+0i) (0+0i)] [(0+0i) (0+0i) (1+0i) (0+0i)] [(0+0i) (0+0i) (0+0i) (1+0i)]
func New ¶
func New(v ...[]complex128) matrix.Matrix
New creates a gate matrix made of complex inputs.
func QFT ¶
QFT creates a Quantum Fourier Transformation matrix.
Example ¶
package main
import (
"fmt"
"github.com/axamon/q/gate"
)
func main() {
mQFT := gate.QFT(1)
for _, r := range mQFT {
fmt.Println(r)
}
}
Output: [(0.7071067811865476+0i) (0.7071067811865476+0i)] [(0.7071067811865476+0i) (-0.7071067811865476+0i)]
func S ¶
S is the phase gate.
Example ¶
package main
import (
"fmt"
"github.com/axamon/q"
)
func main() {
qsim := q.New()
// generate qubits of |0>|1>
q0 := qsim.Zero()
q1 := qsim.One()
qsim.S(q0)
qsim.S(q1)
result0 := qsim.Estimate(q0).Probability()
fmt.Printf("%.1f\n", result0)
result1 := qsim.Estimate(q1).Probability()
fmt.Printf("%.1f\n", result1)
}
Output: [1.0 0.0] [0.0 1.0]
func Swap ¶
Example ¶
package main
import (
"fmt"
"github.com/axamon/q/gate"
)
func main() {
m := gate.Swap(2, 1, 1)
for _, r := range m {
fmt.Println(r)
}
}
Output: [(1+0i) (0+0i) (0+0i) (0+0i)] [(1+0i) (0+0i) (0+0i) (0+0i)] [(0+0i) (0+0i) (1+0i) (0+0i)] [(0+0i) (0+0i) (1+0i) (0+0i)]
func T ¶
T is the Pi/8 gate.
Example ¶
package main
import (
"fmt"
"github.com/axamon/q"
)
func main() {
qsim := q.New()
// generate qubits of |0>|1>
q0 := qsim.Zero()
q1 := qsim.One()
qsim.T(q0)
qsim.T(q1)
result0 := qsim.Estimate(q0).Probability()
fmt.Printf("%.1f\n", result0)
result1 := qsim.Estimate(q1).Probability()
fmt.Printf("%.1f\n", result1)
}
Output: [1.0 0.0] [0.0 1.0]
Types ¶
This section is empty.
Click to show internal directories.
Click to hide internal directories.