Documentation ¶
Index ¶
- Constants
- func Optimize(width, depth int, probabilities [][2][]float64)
- type Dense128
- func HDense128() *Dense128
- func IDense128() *Dense128
- func RXDense128(theta complex128) *Dense128
- func RYDense128(theta complex128) *Dense128
- func RZDense128(theta complex128) *Dense128
- func SDense128() *Dense128
- func TDense128() *Dense128
- func UDense128(theta, phi, lambda float64) *Dense128
- func XDense128() *Dense128
- func YDense128() *Dense128
- func ZDense128() *Dense128
- func (a *Dense128) Conjugate()
- func (a *Dense128) Copy() *Dense128
- func (a *Dense128) Mul(b *Dense128)
- func (a *Dense128) Multiply(b *Dense128) *Dense128
- func (a Dense128) String() string
- func (a *Dense128) Sub(b *Dense128)
- func (a *Dense128) Tensor(b *Dense128) *Dense128
- func (a *Dense128) Transpose()
- type Dense64
- func HDense64() *Dense64
- func IDense64() *Dense64
- func RXDense64(theta complex128) *Dense64
- func RYDense64(theta complex128) *Dense64
- func RZDense64(theta complex128) *Dense64
- func SDense64() *Dense64
- func TDense64() *Dense64
- func UDense64(theta, phi, lambda float64) *Dense64
- func XDense64() *Dense64
- func YDense64() *Dense64
- func ZDense64() *Dense64
- type Gate
- type GateType
- type Genome
- type MachineDense128
- func (a *MachineDense128) ControlledNot(c []Qubit, t Qubit) *Dense128
- func (a *MachineDense128) H(qubits ...Qubit) *MachineDense128
- func (a *MachineDense128) I(qubits ...Qubit) *MachineDense128
- func (a *MachineDense128) Multiply(b *Dense128, c ...Qubit)
- func (a *MachineDense128) One() Qubit
- func (d *MachineDense128) Points() []Point
- func (a *MachineDense128) RX(theta float64, qubits ...Qubit) *MachineDense128
- func (a *MachineDense128) RY(theta float64, qubits ...Qubit) *MachineDense128
- func (a *MachineDense128) RZ(theta float64, qubits ...Qubit) *MachineDense128
- func (a *MachineDense128) S(qubits ...Qubit) *MachineDense128
- func (a *MachineDense128) Swap(qubits ...Qubit) *MachineDense128
- func (a *MachineDense128) T(qubits ...Qubit) *MachineDense128
- func (a *MachineDense128) U(theta, phi, lambda float64, qubits ...Qubit) *MachineDense128
- func (a *MachineDense128) X(qubits ...Qubit) *MachineDense128
- func (a *MachineDense128) Y(qubits ...Qubit) *MachineDense128
- func (a *MachineDense128) Z(qubits ...Qubit) *MachineDense128
- func (a *MachineDense128) Zero() Qubit
- type MachineDense64
- func (a *MachineDense64) ControlledNot(c []Qubit, t Qubit) *Dense64
- func (a *MachineDense64) H(qubits ...Qubit) *MachineDense64
- func (a *MachineDense64) I(qubits ...Qubit) *MachineDense64
- func (a *MachineDense64) Multiply(b *Dense64, qubits ...Qubit)
- func (a *MachineDense64) One() Qubit
- func (a *MachineDense64) RX(theta float64, qubits ...Qubit) *MachineDense64
- func (a *MachineDense64) RY(theta float64, qubits ...Qubit) *MachineDense64
- func (a *MachineDense64) RZ(theta float64, qubits ...Qubit) *MachineDense64
- func (a *MachineDense64) S(qubits ...Qubit) *MachineDense64
- func (a *MachineDense64) Swap(qubits ...Qubit) *MachineDense64
- func (a *MachineDense64) T(qubits ...Qubit) *MachineDense64
- func (a *MachineDense64) U(theta, phi, lambda float64, qubits ...Qubit) *MachineDense64
- func (a *MachineDense64) X(qubits ...Qubit) *MachineDense64
- func (a *MachineDense64) Y(qubits ...Qubit) *MachineDense64
- func (a *MachineDense64) Z(qubits ...Qubit) *MachineDense64
- func (a *MachineDense64) Zero() Qubit
- type MachineMatrix128
- func (a *MachineMatrix128) ControlledNot(c []Qubit, t Qubit) *Matrix128
- func (a *MachineMatrix128) H(qubits ...Qubit) *MachineMatrix128
- func (a *MachineMatrix128) I(qubits ...Qubit) *MachineMatrix128
- func (a *MachineMatrix128) Multiply(b *Matrix128, qubits ...Qubit)
- func (a *MachineMatrix128) One() Qubit
- func (a *MachineMatrix128) RX(theta float64, qubits ...Qubit) *MachineMatrix128
- func (a *MachineMatrix128) RY(theta float64, qubits ...Qubit) *MachineMatrix128
- func (a *MachineMatrix128) RZ(theta float64, qubits ...Qubit) *MachineMatrix128
- func (a *MachineMatrix128) S(qubits ...Qubit) *MachineMatrix128
- func (a *MachineMatrix128) Swap(qubits ...Qubit) *MachineMatrix128
- func (a *MachineMatrix128) T(qubits ...Qubit) *MachineMatrix128
- func (a *MachineMatrix128) U(theta, phi, lambda float64, qubits ...Qubit) *MachineMatrix128
- func (a *MachineMatrix128) X(qubits ...Qubit) *MachineMatrix128
- func (a *MachineMatrix128) Y(qubits ...Qubit) *MachineMatrix128
- func (a *MachineMatrix128) Z(qubits ...Qubit) *MachineMatrix128
- func (a *MachineMatrix128) Zero() Qubit
- type MachineSparse128
- func (a *MachineSparse128) ControlledNot(c []Qubit, t Qubit) *Sparse128
- func (a *MachineSparse128) H(qubits ...Qubit) *MachineSparse128
- func (a *MachineSparse128) I(qubits ...Qubit) *MachineSparse128
- func (a *MachineSparse128) Multiply(b *Sparse128, qubits ...Qubit)
- func (a *MachineSparse128) One() Qubit
- func (a *MachineSparse128) RX(theta float64, qubits ...Qubit) *MachineSparse128
- func (a *MachineSparse128) RY(theta float64, qubits ...Qubit) *MachineSparse128
- func (a *MachineSparse128) RZ(theta float64, qubits ...Qubit) *MachineSparse128
- func (a *MachineSparse128) S(qubits ...Qubit) *MachineSparse128
- func (a *MachineSparse128) Swap(qubits ...Qubit) *MachineSparse128
- func (a *MachineSparse128) T(qubits ...Qubit) *MachineSparse128
- func (a *MachineSparse128) U(theta, phi, lambda float64, qubits ...Qubit) *MachineSparse128
- func (a *MachineSparse128) X(qubits ...Qubit) *MachineSparse128
- func (a *MachineSparse128) Y(qubits ...Qubit) *MachineSparse128
- func (a *MachineSparse128) Z(qubits ...Qubit) *MachineSparse128
- func (a *MachineSparse128) Zero() Qubit
- type MachineSparse64
- func (a *MachineSparse64) ControlledNot(c []Qubit, t Qubit) *Sparse64
- func (a *MachineSparse64) H(qubits ...Qubit) *MachineSparse64
- func (a *MachineSparse64) I(qubits ...Qubit) *MachineSparse64
- func (a *MachineSparse64) Multiply(b *Sparse64, qubits ...Qubit)
- func (a *MachineSparse64) One() Qubit
- func (a *MachineSparse64) RX(theta float64, qubits ...Qubit) *MachineSparse64
- func (a *MachineSparse64) RY(theta float64, qubits ...Qubit) *MachineSparse64
- func (a *MachineSparse64) RZ(theta float64, qubits ...Qubit) *MachineSparse64
- func (a *MachineSparse64) S(qubits ...Qubit) *MachineSparse64
- func (a *MachineSparse64) Swap(qubits ...Qubit) *MachineSparse64
- func (a *MachineSparse64) T(qubits ...Qubit) *MachineSparse64
- func (a *MachineSparse64) U(theta, phi, lambda float64, qubits ...Qubit) *MachineSparse64
- func (a *MachineSparse64) X(qubits ...Qubit) *MachineSparse64
- func (a *MachineSparse64) Y(qubits ...Qubit) *MachineSparse64
- func (a *MachineSparse64) Z(qubits ...Qubit) *MachineSparse64
- func (a *MachineSparse64) Zero() Qubit
- type Matrix128
- func HMatrix128() *Matrix128
- func IMatrix128() *Matrix128
- func RXMatrix128(theta complex128) *Matrix128
- func RYMatrix128(theta complex128) *Matrix128
- func RZMatrix128(theta complex128) *Matrix128
- func SMatrix128() *Matrix128
- func TMatrix128() *Matrix128
- func UMatrix128(theta, phi, lambda float64) *Matrix128
- func XMatrix128() *Matrix128
- func YMatrix128() *Matrix128
- func ZMatrix128() *Matrix128
- func (a *Matrix128) Copy() *Matrix128
- func (a *Matrix128) Get(i, j int) complex128
- func (a *Matrix128) Multiply(b *Matrix128) *Matrix128
- func (a *Matrix128) MultiplyVector(b Vector128) Vector128
- func (a *Matrix128) Set(i, j int, value complex128)
- func (a Matrix128) String() string
- func (a *Matrix128) Tensor(b *Matrix128) *Matrix128
- func (a *Matrix128) Transpose() *Matrix128
- type Point
- type Qubit
- type Sparse128
- func HSparse128() *Sparse128
- func ISparse128() *Sparse128
- func RXSparse128(theta complex128) *Sparse128
- func RYSparse128(theta complex128) *Sparse128
- func RZSparse128(theta complex128) *Sparse128
- func SSparse128() *Sparse128
- func TSparse128() *Sparse128
- func USparse128(theta, phi, lambda float64) *Sparse128
- func XSparse128() *Sparse128
- func YSparse128() *Sparse128
- func ZSparse128() *Sparse128
- type Sparse64
- func HSparse64() *Sparse64
- func ISparse64() *Sparse64
- func RXSparse64(theta complex128) *Sparse64
- func RYSparse64(theta complex128) *Sparse64
- func RZSparse64(theta complex128) *Sparse64
- func SSparse64() *Sparse64
- func TSparse64() *Sparse64
- func USparse64(theta, phi, lambda float64) *Sparse64
- func XSparse64() *Sparse64
- func YSparse64() *Sparse64
- func ZSparse64() *Sparse64
- type Vector128
- type Vector64
Constants ¶
const ( // CutoffPercent is the precent for sparse matrix cutoff CutoffPercent = .1 // CutoffSize is the size of a matrix row required for dense CutoffSize = 256 )
Variables ¶
This section is empty.
Functions ¶
Types ¶
type Dense128 ¶
type Dense128 struct {
R, C int
Matrix []complex128
}
Dense128 is an algebriac matrix
func (*Dense128) Conjugate ¶
func (a *Dense128) Conjugate()
Conjugate computes the complex conjugate
type Dense64 ¶
Dense64 is an algebriac matrix
type GateType ¶
type GateType int
GateType is a type of gate
const ( // GateTypeControlledNot controlled not gate GateTypeControlledNot GateType = iota // GateTypeI multiply by identity GateTypeI // GateTypeH multiply by Hadamard gate GateTypeH // GateTypeX multiply by Pauli X matrix GateTypeX // GateTypeY multiply by Pauli Y matrix GateTypeY // GateTypeZ multiply by Pauli Z matrix GateTypeZ // GateTypeS multiply by phase matrix GateTypeS // GateTypeT multiply by T matrix GateTypeT // GateTypeU multiply by U matrix GateTypeU // GateTypeRX rotate X gate GateTypeRX // GateTypeRY rotate Y gate GateTypeRY // GateTypeRZ rotate Z gate GateTypeRZ )
type MachineDense128 ¶
MachineDense128 is a 128 bit dense matrix machine
func (*MachineDense128) ControlledNot ¶
func (a *MachineDense128) ControlledNot(c []Qubit, t Qubit) *Dense128
ControlledNot controlled not gate
func (*MachineDense128) H ¶
func (a *MachineDense128) H(qubits ...Qubit) *MachineDense128
H multiply by Hadamard gate
func (*MachineDense128) I ¶
func (a *MachineDense128) I(qubits ...Qubit) *MachineDense128
I multiply by identity
func (*MachineDense128) Multiply ¶
func (a *MachineDense128) Multiply(b *Dense128, c ...Qubit)
Multiply multiplies the machine by a matrix
func (*MachineDense128) Points ¶
func (d *MachineDense128) Points() []Point
Points returns the point representation of the quantum algorithm.
func (*MachineDense128) RX ¶
func (a *MachineDense128) RX(theta float64, qubits ...Qubit) *MachineDense128
RX rotate X gate
func (*MachineDense128) RY ¶
func (a *MachineDense128) RY(theta float64, qubits ...Qubit) *MachineDense128
RY rotate Y gate
func (*MachineDense128) RZ ¶
func (a *MachineDense128) RZ(theta float64, qubits ...Qubit) *MachineDense128
RZ rotate Z gate
func (*MachineDense128) S ¶
func (a *MachineDense128) S(qubits ...Qubit) *MachineDense128
S multiply by phase matrix
func (*MachineDense128) Swap ¶
func (a *MachineDense128) Swap(qubits ...Qubit) *MachineDense128
Swap swaps qubits`
func (*MachineDense128) T ¶
func (a *MachineDense128) T(qubits ...Qubit) *MachineDense128
T multiply by T matrix
func (*MachineDense128) U ¶
func (a *MachineDense128) U(theta, phi, lambda float64, qubits ...Qubit) *MachineDense128
U multiply by U matrix
func (*MachineDense128) X ¶
func (a *MachineDense128) X(qubits ...Qubit) *MachineDense128
X multiply by Pauli X matrix
func (*MachineDense128) Y ¶
func (a *MachineDense128) Y(qubits ...Qubit) *MachineDense128
Y multiply by Pauli Y matrix
func (*MachineDense128) Z ¶
func (a *MachineDense128) Z(qubits ...Qubit) *MachineDense128
Z multiply by Pauli Z matrix
func (*MachineDense128) Zero ¶
func (a *MachineDense128) Zero() Qubit
Zero adds a zero to the matrix
type MachineDense64 ¶
MachineDense64 is a 64 bit dense matrix machine
func (*MachineDense64) ControlledNot ¶
func (a *MachineDense64) ControlledNot(c []Qubit, t Qubit) *Dense64
ControlledNot controlled not gate
func (*MachineDense64) H ¶
func (a *MachineDense64) H(qubits ...Qubit) *MachineDense64
H multiply by Hadamard gate
func (*MachineDense64) I ¶
func (a *MachineDense64) I(qubits ...Qubit) *MachineDense64
I multiply by identity
func (*MachineDense64) Multiply ¶
func (a *MachineDense64) Multiply(b *Dense64, qubits ...Qubit)
Multiply multiplies the machine by a matrix
func (*MachineDense64) RX ¶
func (a *MachineDense64) RX(theta float64, qubits ...Qubit) *MachineDense64
RX rotate X gate
func (*MachineDense64) RY ¶
func (a *MachineDense64) RY(theta float64, qubits ...Qubit) *MachineDense64
RY rotate Y gate
func (*MachineDense64) RZ ¶
func (a *MachineDense64) RZ(theta float64, qubits ...Qubit) *MachineDense64
RZ rotate Z gate
func (*MachineDense64) S ¶
func (a *MachineDense64) S(qubits ...Qubit) *MachineDense64
S multiply by phase matrix
func (*MachineDense64) Swap ¶
func (a *MachineDense64) Swap(qubits ...Qubit) *MachineDense64
Swap swaps qubits`
func (*MachineDense64) T ¶
func (a *MachineDense64) T(qubits ...Qubit) *MachineDense64
T multiply by T matrix
func (*MachineDense64) U ¶
func (a *MachineDense64) U(theta, phi, lambda float64, qubits ...Qubit) *MachineDense64
U multiply by U matrix
func (*MachineDense64) X ¶
func (a *MachineDense64) X(qubits ...Qubit) *MachineDense64
X multiply by Pauli X matrix
func (*MachineDense64) Y ¶
func (a *MachineDense64) Y(qubits ...Qubit) *MachineDense64
Y multiply by Pauli Y matrix
func (*MachineDense64) Z ¶
func (a *MachineDense64) Z(qubits ...Qubit) *MachineDense64
Z multiply by Pauli Z matrix
type MachineMatrix128 ¶
MachineMatrix128 is a 128 bit sparse matrix machine
func (*MachineMatrix128) ControlledNot ¶
func (a *MachineMatrix128) ControlledNot(c []Qubit, t Qubit) *Matrix128
ControlledNot controlled not gate
func (*MachineMatrix128) H ¶
func (a *MachineMatrix128) H(qubits ...Qubit) *MachineMatrix128
H multiply by Hadamard gate
func (*MachineMatrix128) I ¶
func (a *MachineMatrix128) I(qubits ...Qubit) *MachineMatrix128
I multiply by identity
func (*MachineMatrix128) Multiply ¶
func (a *MachineMatrix128) Multiply(b *Matrix128, qubits ...Qubit)
Multiply multiplies the machine by a matrix
func (*MachineMatrix128) RX ¶
func (a *MachineMatrix128) RX(theta float64, qubits ...Qubit) *MachineMatrix128
RX rotate X gate
func (*MachineMatrix128) RY ¶
func (a *MachineMatrix128) RY(theta float64, qubits ...Qubit) *MachineMatrix128
RY rotate Y gate
func (*MachineMatrix128) RZ ¶
func (a *MachineMatrix128) RZ(theta float64, qubits ...Qubit) *MachineMatrix128
RZ rotate Z gate
func (*MachineMatrix128) S ¶
func (a *MachineMatrix128) S(qubits ...Qubit) *MachineMatrix128
S multiply by phase matrix
func (*MachineMatrix128) Swap ¶
func (a *MachineMatrix128) Swap(qubits ...Qubit) *MachineMatrix128
Swap swaps qubits`
func (*MachineMatrix128) T ¶
func (a *MachineMatrix128) T(qubits ...Qubit) *MachineMatrix128
T multiply by T matrix
func (*MachineMatrix128) U ¶
func (a *MachineMatrix128) U(theta, phi, lambda float64, qubits ...Qubit) *MachineMatrix128
U multiply by U matrix
func (*MachineMatrix128) X ¶
func (a *MachineMatrix128) X(qubits ...Qubit) *MachineMatrix128
X multiply by Pauli X matrix
func (*MachineMatrix128) Y ¶
func (a *MachineMatrix128) Y(qubits ...Qubit) *MachineMatrix128
Y multiply by Pauli Y matrix
func (*MachineMatrix128) Z ¶
func (a *MachineMatrix128) Z(qubits ...Qubit) *MachineMatrix128
Z multiply by Pauli Z matrix
func (*MachineMatrix128) Zero ¶
func (a *MachineMatrix128) Zero() Qubit
Zero adds a zero to the matrix
type MachineSparse128 ¶
MachineSparse128 is a 128 bit sparse matrix machine
func (*MachineSparse128) ControlledNot ¶
func (a *MachineSparse128) ControlledNot(c []Qubit, t Qubit) *Sparse128
ControlledNot controlled not gate
func (*MachineSparse128) H ¶
func (a *MachineSparse128) H(qubits ...Qubit) *MachineSparse128
H multiply by Hadamard gate
func (*MachineSparse128) I ¶
func (a *MachineSparse128) I(qubits ...Qubit) *MachineSparse128
I multiply by identity
func (*MachineSparse128) Multiply ¶
func (a *MachineSparse128) Multiply(b *Sparse128, qubits ...Qubit)
Multiply multiplies the machine by a matrix
func (*MachineSparse128) RX ¶
func (a *MachineSparse128) RX(theta float64, qubits ...Qubit) *MachineSparse128
RX rotate X gate
func (*MachineSparse128) RY ¶
func (a *MachineSparse128) RY(theta float64, qubits ...Qubit) *MachineSparse128
RY rotate Y gate
func (*MachineSparse128) RZ ¶
func (a *MachineSparse128) RZ(theta float64, qubits ...Qubit) *MachineSparse128
RZ rotate Z gate
func (*MachineSparse128) S ¶
func (a *MachineSparse128) S(qubits ...Qubit) *MachineSparse128
S multiply by phase matrix
func (*MachineSparse128) Swap ¶
func (a *MachineSparse128) Swap(qubits ...Qubit) *MachineSparse128
Swap swaps qubits`
func (*MachineSparse128) T ¶
func (a *MachineSparse128) T(qubits ...Qubit) *MachineSparse128
T multiply by T matrix
func (*MachineSparse128) U ¶
func (a *MachineSparse128) U(theta, phi, lambda float64, qubits ...Qubit) *MachineSparse128
U multiply by U matrix
func (*MachineSparse128) X ¶
func (a *MachineSparse128) X(qubits ...Qubit) *MachineSparse128
X multiply by Pauli X matrix
func (*MachineSparse128) Y ¶
func (a *MachineSparse128) Y(qubits ...Qubit) *MachineSparse128
Y multiply by Pauli Y matrix
func (*MachineSparse128) Z ¶
func (a *MachineSparse128) Z(qubits ...Qubit) *MachineSparse128
Z multiply by Pauli Z matrix
func (*MachineSparse128) Zero ¶
func (a *MachineSparse128) Zero() Qubit
Zero adds a zero to the matrix
type MachineSparse64 ¶
MachineSparse64 is a 64 bit sparse matrix machine
func (*MachineSparse64) ControlledNot ¶
func (a *MachineSparse64) ControlledNot(c []Qubit, t Qubit) *Sparse64
ControlledNot controlled not gate
func (*MachineSparse64) H ¶
func (a *MachineSparse64) H(qubits ...Qubit) *MachineSparse64
H multiply by Hadamard gate
func (*MachineSparse64) I ¶
func (a *MachineSparse64) I(qubits ...Qubit) *MachineSparse64
I multiply by identity
func (*MachineSparse64) Multiply ¶
func (a *MachineSparse64) Multiply(b *Sparse64, qubits ...Qubit)
Multiply multiplies the machine by a matrix
func (*MachineSparse64) RX ¶
func (a *MachineSparse64) RX(theta float64, qubits ...Qubit) *MachineSparse64
RX rotate X gate
func (*MachineSparse64) RY ¶
func (a *MachineSparse64) RY(theta float64, qubits ...Qubit) *MachineSparse64
RY rotate Y gate
func (*MachineSparse64) RZ ¶
func (a *MachineSparse64) RZ(theta float64, qubits ...Qubit) *MachineSparse64
RZ rotate Z gate
func (*MachineSparse64) S ¶
func (a *MachineSparse64) S(qubits ...Qubit) *MachineSparse64
S multiply by phase matrix
func (*MachineSparse64) Swap ¶
func (a *MachineSparse64) Swap(qubits ...Qubit) *MachineSparse64
Swap swaps qubits`
func (*MachineSparse64) T ¶
func (a *MachineSparse64) T(qubits ...Qubit) *MachineSparse64
T multiply by T matrix
func (*MachineSparse64) U ¶
func (a *MachineSparse64) U(theta, phi, lambda float64, qubits ...Qubit) *MachineSparse64
U multiply by U matrix
func (*MachineSparse64) X ¶
func (a *MachineSparse64) X(qubits ...Qubit) *MachineSparse64
X multiply by Pauli X matrix
func (*MachineSparse64) Y ¶
func (a *MachineSparse64) Y(qubits ...Qubit) *MachineSparse64
Y multiply by Pauli Y matrix
func (*MachineSparse64) Z ¶
func (a *MachineSparse64) Z(qubits ...Qubit) *MachineSparse64
Z multiply by Pauli Z matrix
func (*MachineSparse64) Zero ¶
func (a *MachineSparse64) Zero() Qubit
Zero adds a zero to the matrix
type Matrix128 ¶
type Matrix128 struct {
R, C int
Matrix []interface{}
}
Matrix128 is an algebriac matrix
func (*Matrix128) MultiplyVector ¶
MultiplyVector multiplies a matrix by a vector
type Sparse128 ¶
type Sparse128 struct {
R, C int
Matrix []map[int]complex128
}
Sparse128 is an algebriac matrix
func (*Sparse128) MultiplyVector ¶
MultiplyVector multiplies a matrix by a vector
type Sparse64 ¶
Sparse64 is an algebriac matrix
func (*Sparse64) MultiplyVector ¶
MultiplyVector multiplies a matrix by a vector