The Quantum Exact Simulation Toolkit v4.0.0
Loading...
Searching...
No Matches
Many-not gates

Functions for effecting many-qubit NOT gates. More...

Functions

void applyControlledMultiQubitNot (Qureg qureg, int control, int *targets, int numTargets)
 
void applyControlledMultiQubitNot (Qureg qureg, int control, std::vector< int > targets)
 
void applyMultiControlledMultiQubitNot (Qureg qureg, int *controls, int numControls, int *targets, int numTargets)
 
void applyMultiControlledMultiQubitNot (Qureg qureg, std::vector< int > controls, std::vector< int > targets)
 
void applyMultiQubitNot (Qureg qureg, int *targets, int numTargets)
 
void applyMultiQubitNot (Qureg qureg, std::vector< int > targets)
 
void applyMultiStateControlledMultiQubitNot (Qureg qureg, int *controls, int *states, int numControls, int *targets, int numTargets)
 
void applyMultiStateControlledMultiQubitNot (Qureg qureg, std::vector< int > controls, std::vector< int > states, std::vector< int > targets)
 
void multiplyMultiQubitNot (Qureg qureg, int *targets, int numTargets)
 
void multiplyMultiQubitNot (Qureg qureg, std::vector< int > targets)
 

Detailed Description

Functions for effecting many-qubit NOT gates.

Function Documentation

◆ applyControlledMultiQubitNot() [1/2]

void applyControlledMultiQubitNot ( Qureg qureg,
int control,
int * targets,
int numTargets )
Note
Documentation for this function or struct is under construction!

Definition at line 1674 of file operations.cpp.

1674 {
1675 validate_quregFields(qureg, __func__);
1676 validate_controlAndTargets(qureg, control, targets, numTargets, __func__);
1677
1678 // harmlessly re-validates
1679 applyMultiStateControlledMultiQubitNot(qureg, &control, nullptr, 1, targets, numTargets);
1680}
void applyMultiStateControlledMultiQubitNot(Qureg qureg, int *controls, int *states, int numControls, int *targets, int numTargets)

Referenced by applyControlledMultiQubitNot().

◆ applyControlledMultiQubitNot() [2/2]

void applyControlledMultiQubitNot ( Qureg qureg,
int control,
std::vector< int > targets )
Warning
This function has not yet been unit tested and may contain bugs. Please use with caution!
Attention
This function's input validation has not yet been unit tested, so erroneous usage may produce unexpected output. Please use with caution!
Note
Documentation for this function or struct is under construction!
Remarks
This function is only available in C++.

Definition at line 1714 of file operations.cpp.

1714 {
1715
1716 applyControlledMultiQubitNot(qureg, control, targets.data(), targets.size());
1717}
void applyControlledMultiQubitNot(Qureg qureg, int control, int *targets, int numTargets)

◆ applyMultiControlledMultiQubitNot() [1/2]

void applyMultiControlledMultiQubitNot ( Qureg qureg,
int * controls,
int numControls,
int * targets,
int numTargets )
Note
Documentation for this function or struct is under construction!

Definition at line 1682 of file operations.cpp.

1682 {
1683 validate_quregFields(qureg, __func__);
1684 validate_controlsAndTargets(qureg, controls, numControls, targets, numTargets, __func__);
1685
1686 // harmlessly re-validates
1687 applyMultiStateControlledMultiQubitNot(qureg, controls, nullptr, numControls, targets, numTargets);
1688}

Referenced by applyMultiControlledMultiQubitNot().

◆ applyMultiControlledMultiQubitNot() [2/2]

void applyMultiControlledMultiQubitNot ( Qureg qureg,
std::vector< int > controls,
std::vector< int > targets )
Warning
This function has not yet been unit tested and may contain bugs. Please use with caution!
Attention
This function's input validation has not yet been unit tested, so erroneous usage may produce unexpected output. Please use with caution!
Note
Documentation for this function or struct is under construction!
Remarks
This function is only available in C++.

Definition at line 1719 of file operations.cpp.

1719 {
1720
1721 applyMultiControlledMultiQubitNot(qureg, controls.data(), controls.size(), targets.data(), targets.size());
1722}
void applyMultiControlledMultiQubitNot(Qureg qureg, int *controls, int numControls, int *targets, int numTargets)

◆ applyMultiQubitNot() [1/2]

void applyMultiQubitNot ( Qureg qureg,
int * targets,
int numTargets )
Note
Documentation for this function or struct is under construction!

Definition at line 1666 of file operations.cpp.

1666 {
1667 validate_quregFields(qureg, __func__);
1668 validate_targets(qureg, targets, numTargets, __func__);
1669
1670 // harmlessly re-validates
1671 applyMultiStateControlledMultiQubitNot(qureg, nullptr, nullptr, 0, targets, numTargets);
1672}

Referenced by applyMultiQubitNot().

◆ applyMultiQubitNot() [2/2]

void applyMultiQubitNot ( Qureg qureg,
std::vector< int > targets )
Warning
This function has not yet been unit tested and may contain bugs. Please use with caution!
Attention
This function's input validation has not yet been unit tested, so erroneous usage may produce unexpected output. Please use with caution!
Note
Documentation for this function or struct is under construction!
Remarks
This function is only available in C++.

Definition at line 1709 of file operations.cpp.

1709 {
1710
1711 applyMultiQubitNot(qureg, targets.data(), targets.size());
1712}
void applyMultiQubitNot(Qureg qureg, int *targets, int numTargets)

◆ applyMultiStateControlledMultiQubitNot() [1/2]

void applyMultiStateControlledMultiQubitNot ( Qureg qureg,
int * controls,
int * states,
int numControls,
int * targets,
int numTargets )
Note
Documentation for this function or struct is under construction!

Definition at line 1690 of file operations.cpp.

1690 {
1691 validate_quregFields(qureg, __func__);
1692 validate_controlsAndTargets(qureg, controls, numControls, targets, numTargets, __func__);
1693 validate_controlStates(states, numControls, __func__);
1694
1695 // treat as an all-X PauliStr
1696 PauliStr str = getPauliStr(std::string(numTargets, 'X'), targets, numTargets);
1697
1698 // harmlessly re-validates
1699 applyMultiStateControlledPauliStr(qureg, controls, states, numControls, str);
1700}
void applyMultiStateControlledPauliStr(Qureg qureg, int *controls, int *states, int numControls, PauliStr str)
PauliStr getPauliStr(const char *paulis, int *indices, int numPaulis)
Definition paulis.cpp:296

Referenced by applyControlledMultiQubitNot(), applyMultiControlledMultiQubitNot(), applyMultiQubitNot(), and applyMultiStateControlledMultiQubitNot().

◆ applyMultiStateControlledMultiQubitNot() [2/2]

void applyMultiStateControlledMultiQubitNot ( Qureg qureg,
std::vector< int > controls,
std::vector< int > states,
std::vector< int > targets )
Warning
This function has not yet been unit tested and may contain bugs. Please use with caution!
Attention
This function's input validation has not yet been unit tested, so erroneous usage may produce unexpected output. Please use with caution!
Note
Documentation for this function or struct is under construction!
Remarks
This function is only available in C++.

Definition at line 1724 of file operations.cpp.

1724 {
1725 validate_controlsMatchStates(controls.size(), states.size(), __func__);
1726
1727 applyMultiStateControlledMultiQubitNot(qureg, controls.data(), states.data(), controls.size(), targets.data(), targets.size());
1728}

◆ multiplyMultiQubitNot() [1/2]

void multiplyMultiQubitNot ( Qureg qureg,
int * targets,
int numTargets )
Note
Documentation for this function or struct is under construction!

Definition at line 1658 of file operations.cpp.

1658 {
1659 validate_quregFields(qureg, __func__);
1660 validate_targets(qureg, targets, numTargets, __func__);
1661
1662 // harmlessly re-validates
1663 multiplyPauliStr(qureg, getPauliStr(std::string(numTargets, 'X'), targets, numTargets));
1664}
void multiplyPauliStr(Qureg qureg, PauliStr str)

Referenced by multiplyMultiQubitNot().

◆ multiplyMultiQubitNot() [2/2]

void multiplyMultiQubitNot ( Qureg qureg,
std::vector< int > targets )
Warning
This function has not yet been unit tested and may contain bugs. Please use with caution!
Attention
This function's input validation has not yet been unit tested, so erroneous usage may produce unexpected output. Please use with caution!
Note
Documentation for this function or struct is under construction!
Remarks
This function is only available in C++.

Definition at line 1704 of file operations.cpp.

1704 {
1705
1706 multiplyMultiQubitNot(qureg, targets.data(), targets.size());
1707}
void multiplyMultiQubitNot(Qureg qureg, int *targets, int numTargets)