The Quantum Exact Simulation Toolkit v4.3.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 applyMultiControlledMultiQubitNot (Qureg qureg, int *controls, int numControls, int *targets, int numTargets)
 
void applyMultiQubitNot (Qureg qureg, int *targets, int numTargets)
 
void applyMultiStateControlledMultiQubitNot (Qureg qureg, int *controls, int *states, int numControls, int *targets, int numTargets)
 

Detailed Description

Functions for effecting many-qubit NOT gates.

Function Documentation

◆ applyControlledMultiQubitNot()

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

Applies a singly-controlled many-qubit NOT gate (or tensor product of Pauli X operators) upon the targets of qureg.

‍- See applyMultiQubitNot() for information about the base operation.

Author
Tyson Jones

Definition at line 1500 of file operations.cpp.

1500 {
1501 validate_quregFields(qureg, __func__);
1502 validate_controlAndTargets(qureg, control, targets, numTargets, __func__);
1503
1504 // harmlessly re-validates
1505 applyMultiStateControlledMultiQubitNot(qureg, &control, nullptr, 1, targets, numTargets);
1506}
void applyMultiStateControlledMultiQubitNot(Qureg qureg, int *controls, int *states, int numControls, int *targets, int numTargets)

Referenced by applyControlledMultiQubitNot().

◆ applyMultiControlledMultiQubitNot()

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

Applies a multiply-controlled many-qubit NOT gate (or tensor product of Pauli X operators) upon the targets of qureg.

‍- See applyMultiQubitNot() for information about the base operation.

Author
Tyson Jones

Definition at line 1508 of file operations.cpp.

1508 {
1509 validate_quregFields(qureg, __func__);
1510 validate_controlsAndTargets(qureg, controls, numControls, targets, numTargets, __func__);
1511
1512 // harmlessly re-validates
1513 applyMultiStateControlledMultiQubitNot(qureg, controls, nullptr, numControls, targets, numTargets);
1514}

Referenced by applyMultiControlledMultiQubitNot().

◆ applyMultiQubitNot()

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

Applies a many-qubit NOT gate (or tensor product of Pauli X operators) upon the targets of qureg.

Remarks
This function is sometimes more efficient when targets are specified in increasing order, though the effect of this function is incidentally unaffected by the ordering of targets.
Author
Tyson Jones

Definition at line 1492 of file operations.cpp.

1492 {
1493 validate_quregFields(qureg, __func__);
1494 validate_targets(qureg, targets, numTargets, __func__);
1495
1496 // harmlessly re-validates
1497 applyMultiStateControlledMultiQubitNot(qureg, nullptr, nullptr, 0, targets, numTargets);
1498}

Referenced by applyMultiQubitNot().

◆ applyMultiStateControlledMultiQubitNot()

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

Applies an arbitrarily-controlled many-qubit NOT gate (or tensor product of Pauli X operators) upon the targets of qureg, conditioned upon controls being in the corresponding states.

‍- See applyMultiQubitNot() for information about the base operation.

Author
Tyson Jones

Definition at line 1516 of file operations.cpp.

1516 {
1517 validate_quregFields(qureg, __func__);
1518 validate_controlsAndTargets(qureg, controls, numControls, targets, numTargets, __func__);
1519 validate_controlStates(states, numControls, __func__);
1520
1521 // treat as an all-X PauliStr
1522 PauliStr str = getPauliStr(std::string(numTargets, 'X'), targets, numTargets);
1523
1524 // harmlessly re-validates
1525 applyMultiStateControlledPauliStr(qureg, controls, states, numControls, str);
1526}
void applyMultiStateControlledPauliStr(Qureg qureg, int *controls, int *states, int numControls, PauliStr str)
PauliStr getPauliStr(const char *paulis, int *indices, int numPaulis)
Definition paulis.cpp:76

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