jonathanfishbein1 / elm-quantum / Ket

Ket Module

Types


type Ket a
    = Ket (ColumnVector a)

Ket Type


type alias VectorSpace a =
{ abelianGroup : AbelianGroup (Ket a)
, vectorScalarMultiplication : a -> Ket a -> Ket a
, field : Field a 
}

Type to represent a Vector Space


type alias InnerProductSpace a =
{ vectorSpace : VectorSpace a
, innerProduct : Ket a -> Ket a -> a
, length : Ket a -> Real Basics.Float
, distance : Ket a -> Ket a -> Real Basics.Float 
}

Type to represent an Inner Product Space

Values

ket0 : Ket (Real Basics.Float)

Ket representing zero state

ket1 : Ket (Real Basics.Float)

Ket representing one state

ketPlus : Ket (Real Basics.Float)

Ket representing + state

ketMinus : Ket (Real Basics.Float)

Ket representing + state

ketComplex0 : Ket (ComplexNumbers.ComplexNumber Basics.Float)

Ket representing zero state with complex numbers

ketComplex1 : Ket (ComplexNumbers.ComplexNumber Basics.Float)

Ket representing one state with complex numbers

ketComplexPlus : Ket (ComplexNumbers.ComplexNumber Basics.Float)

Ket representing + state with complex numbers

ketComplexMinus : Ket (ComplexNumbers.ComplexNumber Basics.Float)

Ket representing + state with complex numbers

ketEmpty : Ket a

Empty ket

Unitary Operations

scalarMultiplication : Field a -> a -> Ket a -> Ket a

Multiply a Ket by a Scalar

dimension : Ket a -> Basics.Int

Count of number of elements in a Ket

sum : Monoid a -> Ket a -> a

Calculate the sum of a Ket

foldl : (a -> b -> b) -> b -> Ket a -> b

Left fold over a Ket

map : (a -> b) -> Ket a -> Ket b

Map over a vector

lengthReal : Ket (Real Basics.Float) -> Real Basics.Float

Calculate the length of a Real valued Vector

lengthComplex : Ket (ComplexNumbers.ComplexNumber Basics.Float) -> Real Basics.Float

Calculate the length of a Complex valued Vector

normaliseReal : Ket (Real Basics.Float) -> Ket (Real Basics.Float)

Adjust a real valued column vector so that its length is exactly one

normaliseComplex : Ket (ComplexNumbers.ComplexNumber Basics.Float) -> Ket (ComplexNumbers.ComplexNumber Basics.Float)

Adjust a complex valued column vector so that its length is exactly one

conjugate : Ket (ComplexNumbers.ComplexNumber number) -> Ket (ComplexNumbers.ComplexNumber number)

Take the complex conjugate of a Complex Numbered Vector

Binary Operations

add : Field a -> Ket a -> Ket a -> Ket a

Add two Kets

Equality

equal : (a -> a -> Basics.Bool) -> Ket a -> Ket a -> Basics.Bool

Compare two vectors for equality using a comparator

Manipulation

getAt : Basics.Int -> Ket a -> Maybe a

Get the value in a Ket at the specified index

setAt : Basics.Int -> a -> Ket a -> Ket a

Set the value in a Ket at the specified index