traq
Safe HaskellSafe-Inferred
LanguageHaskell2010

Traq.Primitives.Amplify.QAmplify

Synopsis

Documentation

newtype QAmplify size prec #

Quantum Amplitude Amplification.

Constructors

QAmplify (Amplify size prec) 

Instances

Instances details
Generic (QAmplify size prec) # 
Instance details

Defined in Traq.Primitives.Amplify.QAmplify

Associated Types

type Rep (QAmplify size prec) :: Type -> Type #

Methods

from :: QAmplify size prec -> Rep (QAmplify size prec) x #

to :: Rep (QAmplify size prec) x -> QAmplify size prec #

Read prec => Read (QAmplify size prec) # 
Instance details

Defined in Traq.Primitives.Amplify.QAmplify

Methods

readsPrec :: Int -> ReadS (QAmplify size prec) #

readList :: ReadS [QAmplify size prec] #

readPrec :: ReadPrec (QAmplify size prec) #

readListPrec :: ReadPrec [QAmplify size prec] #

Show prec => Show (QAmplify size prec) # 
Instance details

Defined in Traq.Primitives.Amplify.QAmplify

Methods

showsPrec :: Int -> QAmplify size prec -> ShowS #

show :: QAmplify size prec -> String #

showList :: [QAmplify size prec] -> ShowS #

Eq prec => Eq (QAmplify size prec) # 
Instance details

Defined in Traq.Primitives.Amplify.QAmplify

Methods

(==) :: QAmplify size prec -> QAmplify size prec -> Bool #

(/=) :: QAmplify size prec -> QAmplify size prec -> Bool #

(Show prec, Fractional prec) => SerializePrim (QAmplify size prec) # 
Instance details

Defined in Traq.Primitives.Amplify.QAmplify

Methods

primNames :: [Ident] #

primNameOf :: QAmplify size prec -> Ident #

parsePrimParams :: TokenParser () -> Ident -> Parser (QAmplify size prec) #

printPrimParams :: QAmplify size prec -> [String] #

MapSize (QAmplify size prec) # 
Instance details

Defined in Traq.Primitives.Amplify.QAmplify

Associated Types

type MappedSize (QAmplify size prec) size' #

Methods

mapSize :: (size0 ~ SizeType (QAmplify size prec), size' ~ SizeType ext', ext' ~ MappedSize (QAmplify size prec) size') => (size0 -> size') -> QAmplify size prec -> ext' #

TypingReqs size => TypeCheckPrim (QAmplify size prec) size # 
Instance details

Defined in Traq.Primitives.Amplify.QAmplify

Methods

inferRetTypesPrim :: forall ext' shape m. (m ~ TypeChecker ext', size ~ SizeType ext', shape ~ PrimFnShape (QAmplify size prec)) => QAmplify size prec -> shape (FnType size) -> m [VarType size] #

RealFloat prec => QuantumCompilePrim (QAmplify SizeT prec) SizeT prec # 
Instance details

Defined in Traq.Primitives.Amplify.QAmplify

Methods

compileQPrim :: forall ext' m (shape :: Type -> Type). (m ~ PrimCompileMonad ext' (QAmplify SizeT prec), SizeT ~ SizeType ext', prec ~ PrecType ext', shape ~ PrimFnShape (QAmplify SizeT prec)) => QAmplify SizeT prec -> FailProb prec -> m (ProcDef SizeT) #

(Floating prec, RealFrac prec) => UnitaryCompilePrim (QAmplify size prec) size prec # 
Instance details

Defined in Traq.Primitives.Amplify.QAmplify

Methods

compileUPrim :: forall ext' m (shape :: Type -> Type). (m ~ PrimCompileMonad ext' (QAmplify size prec), size ~ SizeType ext', prec ~ PrecType ext', shape ~ PrimFnShape (QAmplify size prec)) => QAmplify size prec -> FailProb prec -> m (ProcDef size) #

(EvalReqs size prec, Ord prec) => EvalPrim (QAmplify size prec) size prec # 
Instance details

Defined in Traq.Primitives.Amplify.QAmplify

Methods

evalPrim :: forall ext' shape m. (Evaluatable ext' size prec, m ~ Evaluator ext', SizeType ext' ~ size, PrecType ext' ~ prec, shape ~ PrimFnShape (QAmplify size prec)) => QAmplify size prec -> shape ([Value size] -> m [Value size]) -> m [Value size] #

(EvalReqs size prec, Floating prec, Ord prec) => QuantumExpCostPrim (QAmplify size prec) size prec # 
Instance details

Defined in Traq.Primitives.Amplify.QAmplify

Methods

quantumExpQueryCostsQuantum :: (shape ~ PrimFnShape (QAmplify size prec), m ~ EvaluationMonad prec) => QAmplify size prec -> FailProb prec -> shape ([Value size] -> m [Value size]) -> shape [([Value size], prec)] #

quantumExpQueryCostsUnitary :: (shape ~ PrimFnShape (QAmplify size prec), m ~ EvaluationMonad prec) => QAmplify size prec -> FailProb prec -> shape ([Value size] -> m [Value size]) -> shape (UnitaryQueries prec) #

quantumExpExprCosts :: forall shape cost m. (CostModel cost, prec ~ PrecType cost, shape ~ PrimFnShape (QAmplify size prec), m ~ EvaluationMonad prec) => QAmplify size prec -> FailProb prec -> shape ([Value size] -> m [Value size]) -> cost #

(TypingReqs size, SizeToPrec size prec, Floating prec) => QuantumHavocCostPrim (QAmplify size prec) size prec # 
Instance details

Defined in Traq.Primitives.Amplify.QAmplify

Methods

quantumQueryCostsQuantum :: QAmplify size prec -> FailProb prec -> PrimFnShape (QAmplify size prec) prec #

quantumQueryCostsUnitary :: QAmplify size prec -> FailProb prec -> PrimFnShape (QAmplify size prec) (UnitaryQueries prec) #

quantumExprCosts :: (CostModel cost, prec ~ PrecType cost) => QAmplify size prec -> FailProb prec -> cost #

(TypingReqs size, Floating prec) => UnitaryCostPrim (QAmplify size prec) size prec # 
Instance details

Defined in Traq.Primitives.Amplify.QAmplify

Methods

unitaryQueryCosts :: QAmplify size prec -> FailProb prec -> PrimFnShape (QAmplify size prec) (UnitaryQueries prec) #

unitaryExprCosts :: (CostModel cost, prec ~ PrecType cost) => QAmplify size prec -> FailProb prec -> cost #

(Amplify size prec) :<: (QAmplify size prec) # 
Instance details

Defined in Traq.Primitives.Amplify.QAmplify

Methods

inject :: Amplify size prec -> QAmplify size prec #

project :: QAmplify size prec -> Maybe (Amplify size prec) #

type Rep (QAmplify size prec) # 
Instance details

Defined in Traq.Primitives.Amplify.QAmplify

type Rep (QAmplify size prec) = D1 ('MetaData "QAmplify" "Traq.Primitives.Amplify.QAmplify" "traq-0.2.0.0-inplace" 'True) (C1 ('MetaCons "QAmplify" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Amplify size prec))))
type PrecType (QAmplify size prec) # 
Instance details

Defined in Traq.Primitives.Amplify.QAmplify

type PrecType (QAmplify size prec) = prec
type SizeType (QAmplify size prec) # 
Instance details

Defined in Traq.Primitives.Amplify.QAmplify

type SizeType (QAmplify size prec) = size
type PrimFnShape (QAmplify size prec) # 
Instance details

Defined in Traq.Primitives.Amplify.QAmplify

type PrimFnShape (QAmplify size prec) = SamplerFn
type MappedSize (QAmplify size prec) size' # 
Instance details

Defined in Traq.Primitives.Amplify.QAmplify

type MappedSize (QAmplify size prec) size' = QAmplify size' prec

Query Formulas

_FPAA_L :: forall prec. Floating prec => FailProb prec -> prec -> prec #

Fixed-Point Amplitude Amplification.

_WQSearch :: forall prec. Floating prec => FailProb prec -> prec -> prec #

_EQSearch :: forall prec. (Floating prec, Ord prec) => FailProb prec -> prec -> prec -> prec #

Cost of quantum search adapted to general amplitude amplification. Eq. 2 of https://arxiv.org/abs/2203.04975