Sequential Quantum Gate Decomposer  v1.9.6
Powerful decomposition of general unitarias into one- and two-qubit gates gates
Typedefs | Functions
apply_kernel_to_state_vector_input.cpp File Reference
#include "apply_kernel_to_state_vector_input.h"
#include "tbb/tbb.h"
#include <type_traits>
#include <utility>
Include dependency graph for apply_kernel_to_state_vector_input.cpp:

Go to the source code of this file.

Typedefs

template<typename MatrixT >
using StateVecComplexT = typename std::remove_reference< decltype(std::declval< MatrixT & >()[0])>::type
 

Functions

void apply_2qbit_kernel_to_state_vector_input (Matrix &two_qbit_unitary, Matrix &input, const int &inner_qbit, const int &outer_qbit, const int &matrix_size)
 
void apply_2qbit_kernel_to_state_vector_input (Matrix_float &two_qbit_unitary, Matrix_float &input, const int &inner_qbit, const int &outer_qbit, const int &matrix_size)
 
void apply_3qbit_kernel_to_state_vector_input (Matrix &unitary, Matrix &input, std::vector< int > involved_qbits, const int &matrix_size)
 
void apply_3qbit_kernel_to_state_vector_input (Matrix_float &unitary, Matrix_float &input, std::vector< int > involved_qbits, const int &matrix_size)
 
void apply_4qbit_kernel_to_state_vector_input (Matrix &unitary, Matrix &input, std::vector< int > involved_qbits, const int &matrix_size)
 
void apply_4qbit_kernel_to_state_vector_input (Matrix_float &unitary, Matrix_float &input, std::vector< int > involved_qbits, const int &matrix_size)
 
void apply_5qbit_kernel_to_state_vector_input (Matrix &unitary, Matrix &input, std::vector< int > involved_qbits, const int &matrix_size)
 
void apply_5qbit_kernel_to_state_vector_input (Matrix_float &unitary, Matrix_float &input, std::vector< int > involved_qbits, const int &matrix_size)
 
void apply_kernel_to_state_vector_input (Matrix &u3_1qbit, Matrix &input, const bool &deriv, const int &target_qbit, const int &control_qbit, const int &matrix_size)
 Call to apply a gate kernel on a state vector. More...
 
void apply_kernel_to_state_vector_input (Matrix_float &u3_1qbit, Matrix_float &input, const bool &deriv, const int &target_qbit, const int &control_qbit, const int &matrix_size)
 
template<typename MatrixT >
void apply_kernel_to_state_vector_input_impl (MatrixT &u3_1qbit, MatrixT &input, const bool &deriv, const int &target_qbit, const int &control_qbit, const int &matrix_size)
 
void apply_kernel_to_state_vector_input_parallel (Matrix &u3_1qbit, Matrix &input, const bool &deriv, const int &target_qbit, const int &control_qbit, const int &matrix_size)
 Call to apply a gate kernel on a state vector. More...
 
void apply_kernel_to_state_vector_input_parallel (Matrix_float &u3_1qbit, Matrix_float &input, const bool &deriv, const int &target_qbit, const int &control_qbit, const int &matrix_size)
 
template<typename MatrixT >
void apply_kernel_to_state_vector_input_parallel_impl (MatrixT &u3_1qbit, MatrixT &input, const bool &deriv, const int &target_qbit, const int &control_qbit, const int &matrix_size)
 Call to apply a gate kernel on a state vector. More...
 
template<typename MatrixT >
void apply_large_state_vector_2q_impl (MatrixT &two_qbit_unitary, MatrixT &input, const int &inner_qbit, const int &outer_qbit, const int &matrix_size)
 
template<typename MatrixT >
void apply_large_state_vector_3q_impl (MatrixT &unitary, MatrixT &input, std::vector< int > involved_qbits, const int &matrix_size)
 
template<typename MatrixT >
void apply_large_state_vector_4q_impl (MatrixT &unitary, MatrixT &input, std::vector< int > involved_qbits, const int &matrix_size)
 
template<typename MatrixT >
void apply_large_state_vector_5q_impl (MatrixT &unitary, MatrixT &input, std::vector< int > involved_qbits, const int &matrix_size)
 

Typedef Documentation

◆ StateVecComplexT

template<typename MatrixT >
using StateVecComplexT = typename std::remove_reference<decltype(std::declval<MatrixT&>()[0])>::type

Definition at line 31 of file apply_kernel_to_state_vector_input.cpp.

Function Documentation

◆ apply_2qbit_kernel_to_state_vector_input() [1/2]

void apply_2qbit_kernel_to_state_vector_input ( Matrix two_qbit_unitary,
Matrix input,
const int inner_qbit,
const int outer_qbit,
const int matrix_size 
)

Definition at line 619 of file apply_kernel_to_state_vector_input.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ apply_2qbit_kernel_to_state_vector_input() [2/2]

void apply_2qbit_kernel_to_state_vector_input ( Matrix_float two_qbit_unitary,
Matrix_float input,
const int inner_qbit,
const int outer_qbit,
const int matrix_size 
)

Definition at line 623 of file apply_kernel_to_state_vector_input.cpp.

Here is the call graph for this function:

◆ apply_3qbit_kernel_to_state_vector_input() [1/2]

void apply_3qbit_kernel_to_state_vector_input ( Matrix unitary,
Matrix input,
std::vector< int involved_qbits,
const int matrix_size 
)

Definition at line 627 of file apply_kernel_to_state_vector_input.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ apply_3qbit_kernel_to_state_vector_input() [2/2]

void apply_3qbit_kernel_to_state_vector_input ( Matrix_float unitary,
Matrix_float input,
std::vector< int involved_qbits,
const int matrix_size 
)

Definition at line 631 of file apply_kernel_to_state_vector_input.cpp.

Here is the call graph for this function:

◆ apply_4qbit_kernel_to_state_vector_input() [1/2]

void apply_4qbit_kernel_to_state_vector_input ( Matrix unitary,
Matrix input,
std::vector< int involved_qbits,
const int matrix_size 
)

Definition at line 635 of file apply_kernel_to_state_vector_input.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ apply_4qbit_kernel_to_state_vector_input() [2/2]

void apply_4qbit_kernel_to_state_vector_input ( Matrix_float unitary,
Matrix_float input,
std::vector< int involved_qbits,
const int matrix_size 
)

Definition at line 639 of file apply_kernel_to_state_vector_input.cpp.

Here is the call graph for this function:

◆ apply_5qbit_kernel_to_state_vector_input() [1/2]

void apply_5qbit_kernel_to_state_vector_input ( Matrix unitary,
Matrix input,
std::vector< int involved_qbits,
const int matrix_size 
)

Definition at line 643 of file apply_kernel_to_state_vector_input.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ apply_5qbit_kernel_to_state_vector_input() [2/2]

void apply_5qbit_kernel_to_state_vector_input ( Matrix_float unitary,
Matrix_float input,
std::vector< int involved_qbits,
const int matrix_size 
)

Definition at line 647 of file apply_kernel_to_state_vector_input.cpp.

Here is the call graph for this function:

◆ apply_kernel_to_state_vector_input() [1/2]

void apply_kernel_to_state_vector_input ( Matrix u3_1qbit,
Matrix input,
const bool deriv,
const int target_qbit,
const int control_qbit,
const int matrix_size 
)

Call to apply a gate kernel on a state vector.

Parameters
u3_1qbitThe 2x2 kernel of the gate operation
inputThe input matrix on which the transformation is applied
derivSet true to apply derivate transformation, false otherwise
target_qbitThe targer qubit on which the transformation should be applied
control_qbitThe contron qubit (-1 if the is no control qubit)
matrix_sizeThe size of the input

Definition at line 110 of file apply_kernel_to_state_vector_input.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ apply_kernel_to_state_vector_input() [2/2]

void apply_kernel_to_state_vector_input ( Matrix_float u3_1qbit,
Matrix_float input,
const bool deriv,
const int target_qbit,
const int control_qbit,
const int matrix_size 
)

Definition at line 116 of file apply_kernel_to_state_vector_input.cpp.

Here is the call graph for this function:

◆ apply_kernel_to_state_vector_input_impl()

template<typename MatrixT >
void apply_kernel_to_state_vector_input_impl ( MatrixT &  u3_1qbit,
MatrixT &  input,
const bool deriv,
const int target_qbit,
const int control_qbit,
const int matrix_size 
)

Call to apply a gate kernel on a state vector

Parameters
u3_1qbitThe 2x2 kernel of the gate operation
inputThe input matrix on which the transformation is applied
derivSet true to apply derivate transformation, false otherwise
target_qbitThe targer qubit on which the transformation should be applied
control_qbitThe contron qubit (-1 if the is no control qubit)
matrix_sizeThe size of the input

Definition at line 35 of file apply_kernel_to_state_vector_input.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ apply_kernel_to_state_vector_input_parallel() [1/2]

void apply_kernel_to_state_vector_input_parallel ( Matrix u3_1qbit,
Matrix input,
const bool deriv,
const int target_qbit,
const int control_qbit,
const int matrix_size 
)

Call to apply a gate kernel on a state vector.

Parallel version

Parameters
u3_1qbitThe 2x2 kernel of the gate operation
inputThe input matrix on which the transformation is applied
derivSet true to apply derivate transformation, false otherwise
target_qbitThe targer qubit on which the transformation should be applied
control_qbitThe contron qubit (-1 if the is no control qubit)
matrix_sizeThe size of the input

Definition at line 233 of file apply_kernel_to_state_vector_input.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ apply_kernel_to_state_vector_input_parallel() [2/2]

void apply_kernel_to_state_vector_input_parallel ( Matrix_float u3_1qbit,
Matrix_float input,
const bool deriv,
const int target_qbit,
const int control_qbit,
const int matrix_size 
)

Definition at line 239 of file apply_kernel_to_state_vector_input.cpp.

Here is the call graph for this function:

◆ apply_kernel_to_state_vector_input_parallel_impl()

template<typename MatrixT >
void apply_kernel_to_state_vector_input_parallel_impl ( MatrixT &  u3_1qbit,
MatrixT &  input,
const bool deriv,
const int target_qbit,
const int control_qbit,
const int matrix_size 
)

Call to apply a gate kernel on a state vector.

Parallel version

Parameters
u3_1qbitThe 2x2 kernel of the gate operation
inputThe input matrix on which the transformation is applied
derivSet true to apply derivate transformation, false otherwise
target_qbitThe targer qubit on which the transformation should be applied
control_qbitThe contron qubit (-1 if the is no control qubit)
matrix_sizeThe size of the input

Definition at line 135 of file apply_kernel_to_state_vector_input.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ apply_large_state_vector_2q_impl()

template<typename MatrixT >
void apply_large_state_vector_2q_impl ( MatrixT &  two_qbit_unitary,
MatrixT &  input,
const int inner_qbit,
const int outer_qbit,
const int matrix_size 
)

Definition at line 245 of file apply_kernel_to_state_vector_input.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ apply_large_state_vector_3q_impl()

template<typename MatrixT >
void apply_large_state_vector_3q_impl ( MatrixT &  unitary,
MatrixT &  input,
std::vector< int involved_qbits,
const int matrix_size 
)

Definition at line 290 of file apply_kernel_to_state_vector_input.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ apply_large_state_vector_4q_impl()

template<typename MatrixT >
void apply_large_state_vector_4q_impl ( MatrixT &  unitary,
MatrixT &  input,
std::vector< int involved_qbits,
const int matrix_size 
)

Definition at line 363 of file apply_kernel_to_state_vector_input.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ apply_large_state_vector_5q_impl()

template<typename MatrixT >
void apply_large_state_vector_5q_impl ( MatrixT &  unitary,
MatrixT &  input,
std::vector< int involved_qbits,
const int matrix_size 
)

Definition at line 462 of file apply_kernel_to_state_vector_input.cpp.

Here is the call graph for this function:
Here is the caller graph for this function: