gate

package
v0.0.10 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 31, 2026 License: MIT Imports: 3 Imported by: 1

Documentation

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

func C

func C(u *matrix.Matrix, n int, c int, t int) *matrix.Matrix

C returns a controlled-u gate.

func CCNOT

func CCNOT(n, c0, c1, t int) *matrix.Matrix

CCNOT returns a controlled-controlled-not gate.

func CNOT

func CNOT(n, c, t int) *matrix.Matrix

CNOT returns a controlled-not gate.

Example
package main

import (
	"fmt"

	"github.com/itsubaki/q/quantum/gate"
)

func main() {
	g := gate.CNOT(2, 0, 1)
	for _, r := range g.Seq2() {
		fmt.Println(r)
	}

}
Output:

[(1+0i) (0+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) (1+0i) (0+0i)]

func CR

func CR(theta float64, n, c, t int) *matrix.Matrix

CR returns a controlled-r gate.

func CS

func CS(n, c, t int) *matrix.Matrix

CS returns a controlled-s gate.

func CZ

func CZ(n, c, t int) *matrix.Matrix

CZ returns a controlled-z gate.

func Controlled

func Controlled(u *matrix.Matrix, n int, c []int, t int) *matrix.Matrix

Controlled returns a controlled-u gate. u is a (2x2) unitary matrix and returns a (2**n x 2**n) matrix.

func ControlledNot

func ControlledNot(n int, c []int, t int) *matrix.Matrix

ControlledNot returns a controlled-not gate.

func ControlledR

func ControlledR(theta float64, n int, c []int, t int) *matrix.Matrix

ControlledR returns a controlled-r gate.

func ControlledS

func ControlledS(n int, c []int, t int) *matrix.Matrix

ControlledS returns a controlled-s gate.

func ControlledZ

func ControlledZ(n int, c []int, t int) *matrix.Matrix

ControlledZ returns a controlled-z gate.

func H

func H(n ...int) *matrix.Matrix

H returns a Hadamard gate.

Example
package main

import (
	"fmt"

	"github.com/itsubaki/q/quantum/gate"
)

func main() {
	g := gate.H()
	for _, r := range g.Seq2() {
		fmt.Printf("%.4v\n", r)
	}

}
Output:

[(0.7071+0i) (0.7071+0i)]
[(0.7071+0i) (-0.7071+0i)]
Example (HH)
package main

import (
	"fmt"

	"github.com/itsubaki/q/quantum/gate"
)

func main() {
	g := gate.H(2)
	for _, r := range g.Seq2() {
		fmt.Printf("%.4v\n", r)
	}

}
Output:

[(0.5+0i) (0.5+0i) (0.5+0i) (0.5+0i)]
[(0.5+0i) (-0.5+0i) (0.5+0i) (-0.5+0i)]
[(0.5+0i) (0.5+0i) (-0.5+0i) (-0.5+0i)]
[(0.5+0i) (-0.5+0i) (-0.5+0i) (0.5-0i)]

func I

func I(n ...int) *matrix.Matrix

I returns an identity gate.

func New

func New(v ...[]complex128) *matrix.Matrix

New returns a new gate.

func QFT

func QFT(n int) *matrix.Matrix

QFT returns a gate of Quantum Fourier Transform operation.

func R

func R(theta float64) *matrix.Matrix

R returns a rotation gate. R(Theta(k)) = [[1, 0], [0, exp(2 * pi * i / 2**k)]].

func RX

func RX(theta float64) *matrix.Matrix

RX returns a rotation gate around the X axis.

func RY

func RY(theta float64) *matrix.Matrix

RY returns a rotation gate around the Y axis.

func RZ

func RZ(theta float64) *matrix.Matrix

RZ returns a rotation gate around the Z axis.

func S

func S(n ...int) *matrix.Matrix

S returns an S gate.

func Swap

func Swap(n, c, t int) *matrix.Matrix

Swap returns a swap gate.

Example
package main

import (
	"fmt"

	"github.com/itsubaki/q/quantum/gate"
)

func main() {
	g := gate.Swap(2, 0, 1)
	for _, r := range g.Seq2() {
		fmt.Println(r)
	}

}
Output:

[(1+0i) (0+0i) (0+0i) (0+0i)]
[(0+0i) (0+0i) (1+0i) (0+0i)]
[(0+0i) (1+0i) (0+0i) (0+0i)]
[(0+0i) (0+0i) (0+0i) (1+0i)]

func T

func T(n ...int) *matrix.Matrix

T returns a T gate.

func TensorProduct added in v0.0.5

func TensorProduct(u *matrix.Matrix, n int, idx []int) *matrix.Matrix

TensorProduct returns the tensor product of 'u' at specified indices over 'n' qubits.

Example
package main

import (
	"fmt"

	"github.com/itsubaki/q/quantum/gate"
)

func main() {
	for _, r := range gate.TensorProduct(gate.X(), 2, []int{1}).Seq2() {
		fmt.Printf("%.4v\n", r)
	}
	fmt.Println()

	for _, r := range gate.TensorProduct(gate.X(), 2, []int{0}).Seq2() {
		fmt.Printf("%.4v\n", r)
	}

}
Output:

[(0+0i) (1+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) (1+0i) (0+0i)]

[(0+0i) (0+0i) (1+0i) (0+0i)]
[(0+0i) (0+0i) (0+0i) (1+0i)]
[(1+0i) (0+0i) (0+0i) (0+0i)]
[(0+0i) (1+0i) (0+0i) (0+0i)]

func Theta

func Theta(k int) float64

Theta returns 2 * pi / 2**k

func U

func U(theta, phi, lambda float64) *matrix.Matrix

U returns a unitary gate.

func X

func X(n ...int) *matrix.Matrix

X returns a Pauli-X gate.

Example
package main

import (
	"fmt"

	"github.com/itsubaki/q/quantum/gate"
)

func main() {
	g := gate.X()
	for _, r := range g.Seq2() {
		fmt.Println(r)
	}

}
Output:

[(0+0i) (1+0i)]
[(1+0i) (0+0i)]
Example (XX)
package main

import (
	"fmt"

	"github.com/itsubaki/q/quantum/gate"
)

func main() {
	g := gate.X(2)
	for _, r := range g.Seq2() {
		fmt.Println(r)
	}

}
Output:

[(0+0i) (0+0i) (0+0i) (1+0i)]
[(0+0i) (0+0i) (1+0i) (0+0i)]
[(0+0i) (1+0i) (0+0i) (0+0i)]
[(1+0i) (0+0i) (0+0i) (0+0i)]

func Y

func Y(n ...int) *matrix.Matrix

Y returns a Pauli-Y gate.

func Z

func Z(n ...int) *matrix.Matrix

Z returns a Pauli-Z gate.

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL