|
Sequential Quantum Gate Decomposer
v1.9.6
Powerful decomposition of general unitarias into one- and two-qubit gates gates
|
Header file for commonly used functions and wrappers to CBLAS functions. More...
#include <cmath>#include <algorithm>#include <omp.h>#include "QGDTypes.h"#include "dot.h"#include "matrix_sparse.h"#include "matrix_real.h"#include <string>#include <stdio.h>#include <iostream>#include <vector>#include <cstring>#include <sstream>

Go to the source code of this file.
Macros | |
| #define | _USE_MATH_DEFINES |
| #define | NOMINMAX |
Functions | |
| double | activation_function (double Phi, int limit) |
| ????? More... | |
| void | add_unique_elelement (std::vector< int > &involved_qbits, int qbit) |
| Add an integer to a vector of integers if the integer is not already an element of the vector. More... | |
| double | arg (const QGD_Complex16 &a) |
| Call to retrieve the phase of a complex number. More... | |
| void | conjugate_gradient (Matrix_real A, Matrix_real b, Matrix_real &x0, double tol) |
| Matrix | create_identity (int matrix_size) |
| Call to create an identity matrix. More... | |
| Matrix_float | create_identity_float (int matrix_size) |
| Call to create a single-precision complex identity matrix. More... | |
| void | fread_wrapper (void *buffer, size_t size, size_t count, FILE *stream) |
| Wrapper function aound fread with error handling. More... | |
| QGD_Complex16 | mult (QGD_Complex16 &a, QGD_Complex16 &b) |
| Call to calculate the product of two complex scalars. More... | |
| QGD_Complex8 | mult (QGD_Complex8 &a, QGD_Complex8 &b) |
| Call to calculate the product of two single-precision complex scalars. More... | |
| QGD_Complex16 | mult (double a, QGD_Complex16 b) |
| calculate the product of a real scalar and a complex scalar More... | |
| QGD_Complex8 | mult (float a, QGD_Complex8 b) |
| calculate the product of a real scalar and a single-precision complex scalar More... | |
| void | mult (QGD_Complex16 a, Matrix &b) |
| Multiply the elements of matrix b by a scalar a. More... | |
| void | mult (QGD_Complex8 a, Matrix_float &b) |
| Multiply the elements of matrix b by a scalar a. More... | |
| Matrix | mult (Matrix_sparse a, Matrix &b) |
| Multiply the elements of a sparse matrix a and a dense vector b. More... | |
| int | omp_get_max_threads () |
| get the number of threads in MKL More... | |
| void | omp_set_num_threads (int num_threads) |
| Set the number of threads on runtime in MKL. More... | |
| int | Power_of_2 (int n) |
| Calculates the n-th power of 2. More... | |
| void * | qgd_calloc (int element_num, int size, int alignment) |
| custom defined memory allocation function. More... | |
| void | qgd_free (void *ptr) |
| custom defined memory release function. More... | |
| void * | qgd_realloc (void *aligned_ptr, int element_num, int size, int alignment) |
| custom defined memory reallocation function. More... | |
| Matrix | reduce_zgemm (std::vector< Matrix > &mtxs) |
| Calculate the product of several square shaped complex matrices stored in a vector. More... | |
| void | subtract_diag (Matrix &mtx, QGD_Complex16 scalar) |
| Call to subtract a scalar from the diagonal of a complex matrix. More... | |
Header file for commonly used functions and wrappers to CBLAS functions.
Definition in file common.h.
| double activation_function | ( | double | Phi, |
| int | limit | ||
| ) |
Add an integer to a vector of integers if the integer is not already an element of the vector.
The ascending order is kept during the process.
| involved_qbits | The vector of integer to be updated by the new integer. The result is returned via this vector. |
| qbit | The integer to be added to the vector |
Definition at line 149 of file common.cpp.
| double arg | ( | const QGD_Complex16 & | a | ) |
Call to retrieve the phase of a complex number.
| a | A complex numberr. |
Definition at line 444 of file common.cpp.

| void conjugate_gradient | ( | Matrix_real | A, |
| Matrix_real | b, | ||
| Matrix_real & | x0, | ||
| double | tol | ||
| ) |
Call to create an identity matrix.
| matrix_size | The number of rows in the resulted identity matrix |
Definition at line 182 of file common.cpp.


| Matrix_float create_identity_float | ( | int | matrix_size | ) |
Call to create a single-precision complex identity matrix.
| matrix_size | The number of rows in the resulted identity matrix |
Definition at line 203 of file common.cpp.


| void fread_wrapper | ( | void * | buffer, |
| size_t | size, | ||
| size_t | count, | ||
| FILE * | stream | ||
| ) |
Wrapper function aound fread with error handling.
| buffer | It refers to the pointer to the buffer memory block where the data read will be stored. |
| size | It refers to the size of each element in bytes. |
| count | It refers to the count of elements to be read. |
| stream | It refers to the pointer to the file stream. |
Definition at line 75 of file common.cpp.

| QGD_Complex16 mult | ( | QGD_Complex16 & | a, |
| QGD_Complex16 & | b | ||
| ) |
Call to calculate the product of two complex scalars.
| a | The firs scalar |
| b | The second scalar |
Definition at line 298 of file common.cpp.

| QGD_Complex8 mult | ( | QGD_Complex8 & | a, |
| QGD_Complex8 & | b | ||
| ) |
Call to calculate the product of two single-precision complex scalars.
| a | The firs scalar |
| b | The second scalar |
Definition at line 314 of file common.cpp.
| QGD_Complex16 mult | ( | double | a, |
| QGD_Complex16 | b | ||
| ) |
calculate the product of a real scalar and a complex scalar
| a | The real scalar. |
| b | The complex scalar. |
Definition at line 330 of file common.cpp.
| QGD_Complex8 mult | ( | float | a, |
| QGD_Complex8 | b | ||
| ) |
calculate the product of a real scalar and a single-precision complex scalar
| a | The real scalar. |
| b | The complex scalar. |
Definition at line 346 of file common.cpp.
| void mult | ( | QGD_Complex16 | a, |
| Matrix & | b | ||
| ) |
Multiply the elements of matrix b by a scalar a.
| a | A complex scalar. |
| b | A square shaped matrix. |
| a | A complex scalar. |
| b | A complex matrix. |
Definition at line 363 of file common.cpp.

| void mult | ( | QGD_Complex8 | a, |
| Matrix_float & | b | ||
| ) |
Multiply the elements of matrix b by a scalar a.
| a | A single-precision complex scalar. |
| b | A square shaped single-precision complex matrix. |
| a | A single-precision complex scalar. |
| b | A single-precision complex matrix. |
Definition at line 382 of file common.cpp.

| Matrix mult | ( | Matrix_sparse | a, |
| Matrix & | b | ||
| ) |
Multiply the elements of a sparse matrix a and a dense vector b.
| a | A complex sparse matrix in CSR format. |
| b | A complex dense vector. |
Definition at line 403 of file common.cpp.

| int omp_get_max_threads | ( | ) |
get the number of threads in MKL

| void omp_set_num_threads | ( | int | num_threads | ) |
Set the number of threads on runtime in MKL.

Calculates the n-th power of 2.
| n | An natural number |
Definition at line 136 of file common.cpp.

custom defined memory allocation function.
Memory allocated with aligned realloc MUST be freed using qgd_free
| element_num | The number of elements in the array to be allocated. |
| size | A size of one element (such as sizeof(double) ) |
| alignment | The number of bytes to which memory must be aligned. This value must be <= 255. |
Memory allocated with aligned realloc MUST be freed using qgd_free.
| element_num | The number of elements in the array to be allocated. |
| size | A size of one element (such as sizeof(double) ) |
| alignment | The number of bytes to which memory must be aligned. This value must be <= 255. |
Definition at line 93 of file common.cpp.

| void qgd_free | ( | void * | ptr | ) |
custom defined memory release function.
Definition at line 121 of file common.cpp.

custom defined memory reallocation function.
Memory allocated with aligned realloc MUST be freed using qgd_free. The reallocation is done by either: a) expanding or contracting the existing area pointed to by aligned_ptr, if possible. The contents of the area remain unchanged up to the lesser of the new and old sizes. If the area is expanded, the contents of the new part of the array is set to zero. b) allocating a new memory block of size new_size bytes, copying memory area with size equal the lesser of the new and the old sizes, and freeing the old block.
| aligned_ptr | The aligned pointer created by qgd_calloc |
| element_num | The number of elements in the array to be allocated. |
| size | A size of one element (such as sizeof(double) ) |
| alignment | The number of bytes to which memory must be aligned. This value must be <= 255. |
Definition at line 109 of file common.cpp.
Calculate the product of several square shaped complex matrices stored in a vector.
| mtxs | The vector of matrices. |
| matrix_size | The number rows in the matrices |
Definition at line 228 of file common.cpp.

| void subtract_diag | ( | Matrix & | mtx, |
| QGD_Complex16 | scalar | ||
| ) |
Call to subtract a scalar from the diagonal of a complex matrix.
| mtx | The input-output matrix |
| scalar | The complex scalar to be subtracked from the diagonal elements of the matrix |
Definition at line 277 of file common.cpp.

1.8.13