# Microsoft.Quantum.AmplitudeAmplification namespace

This namespace contains functions and operations for performing amplitude amplification.

## Description

Oblivious amplitude amplification with partial reflections is the most general form of amplitude amplification implemented here.

This is called through the operation AmpAmpObliviousByReflectionPhases.

This has two registers: `ancillaRegister`

and `systemRegister`

.

This accepts two oracles for these reflections of type
`ReflectionOracle`

which act only on the `ancillaRegister`

register.

This accepts an oracle special to oblivious amplitude
amplification of type `ObliviousOracle`

which acts jointly
on both register.

The input state to `ancillaRegister`

is assumed to be the unique
$-1$ eigenstate of the first reflection operator $I - 2\ket{s}\bra{s}$.

Reflections about a target quantum state are often implemented by assuming access to an oracle that prepare that state from the computational basis $\ket{0\cdots 0}$.

Our convention for these oracles requires two registers: a
single-qubit `flagQubit`

register, and a register for everything
else on the ancillaRegister register.

The oracle of type `StateOracle`

acts jointly on both registers to
create the target state flagged by $\ket{1}$ in the `flagQubit`

register with some real amplitude.

The reflection `ReflectionOracle`

about the this flag state is
generated by the operation `TargetStateReflectionOracle`

.

The reflection `ReflectionOracle`

about the input state to
`ancillaRegister`

is generated by the inverting StateOracle and
then reflecting about $\ket{0\cdots 0}$ with ReflectionStart().

The oracle of type `DeterministicStateOracle`

acts on the
`qubitState`

registers to create the target state exactly with no
flag.

`AmpAmpObliviousByOraclePhases`

is a version of oblivious amplitude
amplification that accepts oracles `StateOracle`

and `ObliviousOracle`

instead of reflections.

Note that amplitude amplification is a special case of oblivious
amplitude amplification where `ObliviousOracle`

is the identity operator,
and there are no system qubits i.e. `systemRegister`

is empty.

This is called through the operation `AmpAmByReflectionPhases`

and
`AmpAmpByOraclePhases`

.

The phases for partial reflections in the standard case of Grover search is provided by the function AmpAmpPhasesStandard.

For instance, we have the following dependencies: AmpAmpByOracle -> AmpAmpByOraclePhases -> AmpAmpObliviousByOraclePhases -> AmpAmpObliviousByReflectionPhases.

## Operations

Name | Summary |
---|---|

AmpAmpRUSByOracle | > [!WARNING] |

ApplyAmplitudeAmplification | Applies amplitude amplification on a given register, using a given set of phases and oracles to reflect about the initial and final states. |

ApplyFixedPointAmplification | Fixed-Point Amplitude Amplification algorithm |

ApplyObliviousAmplitudeAmplification | Oblivious amplitude amplification by specifying partial reflections. |

## Functions

Name | Summary | |
---|---|---|

AmpAmpByOracle | > [!WARNING] | |

AmpAmpByOraclePhases | > [!WARNING] | |

AmpAmpByReflectionPhases | > [!WARNING] | |

AmpAmpObliviousByOraclePhases | > [!WARNING] | |

AmpAmpObliviousByReflectionPhases | > [!WARNING] | |

AmpAmpPhasesFixedPoint | > [!WARNING] | |

AmpAmpPhasesStandard | > [!WARNING] | |

AmpAmpRotationToReflectionPhases | > [!WARNING] | |

AmplitudeAmplificationFromPartialReflections | Amplitude amplification by partial reflections. | |

AmplitudeAmplificationFromStatePreparation | Amplitude amplification by oracles for partial reflections. | |

FixedPointReflectionPhases | Computes partial reflection phases for fixed-point amplitude amplification. | |

ObliviousAmplitudeAmplificationFromPartialReflections | Returns a unitary that implements oblivious amplitude amplification by specifying for partial reflections. | |

ObliviousAmplitudeAmplificationFromStatePreparation | Oblivious amplitude amplification by oracles for partial reflections. | |

ReflectionStart | Constructs a reflection about the all-zero string | 0...0〉, which is the typical input state to amplitude amplification. |

RotationPhasesAsReflectionPhases | Converts phases specified as single-qubit rotations to phases specified as partial reflections. | |

StandardAmplitudeAmplification | Standard Amplitude Amplification algorithm | |

StandardReflectionPhases | Computes partial reflection phases for standard amplitude amplification. | |

TargetStateReflectionOracle | Constructs a `ReflectionOracle` about the target state uniquely marked by the flag qubit. |

## User-defined types

Name | Summary |
---|---|

ReflectionPhases | Phases for a sequence of partial reflections in amplitude amplification. |

RotationPhases | Phases for a sequence of single-qubit rotations in amplitude amplification. |

## Feedback

Submit and view feedback for