Sequential Quantum Gate Decomposer  v1.9.3
Powerful decomposition of general unitarias into one- and two-qubit gates gates
Macros | Functions
common.h File Reference

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>
Include dependency graph for common.h:
This graph shows which files directly or indirectly include this file:

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...
 
QGD_Complex16 mult (QGD_Complex16 &a, QGD_Complex16 &b)
 Call to calculate the product of two complex scalars. More...
 
QGD_Complex16 mult (double a, QGD_Complex16 b)
 calculate the product of a real scalar and a complex scalar More...
 
void mult (QGD_Complex16 a, Matrix &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...
 

Detailed Description

Header file for commonly used functions and wrappers to CBLAS functions.

Definition in file common.h.

Macro Definition Documentation

◆ _USE_MATH_DEFINES

#define _USE_MATH_DEFINES

Definition at line 26 of file common.h.

◆ NOMINMAX

#define NOMINMAX

Definition at line 28 of file common.h.

Function Documentation

◆ activation_function()

double activation_function ( double  Phi,
int  limit 
)

?????

Definition at line 34 of file common.cpp.

Here is the caller graph for this function:

◆ add_unique_elelement()

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.

The ascending order is kept during the process.

Parameters
involved_qbitsThe vector of integer to be updated by the new integer. The result is returned via this vector.
qbitThe integer to be added to the vector

Definition at line 131 of file common.cpp.

Here is the caller graph for this function:

◆ arg()

double arg ( const QGD_Complex16 a)

Call to retrieve the phase of a complex number.

Parameters
aA complex numberr.

Definition at line 354 of file common.cpp.

◆ conjugate_gradient()

void conjugate_gradient ( Matrix_real  A,
Matrix_real  b,
Matrix_real x0,
double  tol 
)

Definition at line 395 of file common.cpp.

Here is the caller graph for this function:

◆ create_identity()

Matrix create_identity ( int  matrix_size)

Call to create an identity matrix.

Parameters
matrix_sizeThe number of rows in the resulted identity matrix
Returns
Returns with an identity matrix.

Definition at line 164 of file common.cpp.

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

◆ mult() [1/4]

QGD_Complex16 mult ( QGD_Complex16 a,
QGD_Complex16 b 
)

Call to calculate the product of two complex scalars.

Parameters
aThe firs scalar
bThe second scalar
Returns
Returns with the calculated product.

Definition at line 259 of file common.cpp.

Here is the caller graph for this function:

◆ mult() [2/4]

QGD_Complex16 mult ( double  a,
QGD_Complex16  b 
)

calculate the product of a real scalar and a complex scalar

Parameters
aThe real scalar.
bThe complex scalar.
Returns
Returns with the calculated product.

Definition at line 275 of file common.cpp.

◆ mult() [3/4]

void mult ( QGD_Complex16  a,
Matrix b 
)

Multiply the elements of matrix b by a scalar a.

Parameters
aA complex scalar.
bA square shaped matrix.
aA complex scalar.
bA complex matrix.

Definition at line 292 of file common.cpp.

Here is the call graph for this function:

◆ mult() [4/4]

Matrix mult ( Matrix_sparse  a,
Matrix b 
)

Multiply the elements of a sparse matrix a and a dense vector b.

Parameters
aA complex sparse matrix in CSR format.
bA complex dense vector.

Definition at line 313 of file common.cpp.

Here is the call graph for this function:

◆ omp_get_max_threads()

int omp_get_max_threads ( )

get the number of threads in MKL

Here is the caller graph for this function:

◆ omp_set_num_threads()

void omp_set_num_threads ( int  num_threads)

Set the number of threads on runtime in MKL.

Here is the caller graph for this function:

◆ Power_of_2()

int Power_of_2 ( int  n)

Calculates the n-th power of 2.

Parameters
nAn natural number
Returns
Returns with the n-th power of 2.

Definition at line 117 of file common.cpp.

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

◆ qgd_calloc()

void* qgd_calloc ( int  element_num,
int  size,
int  alignment 
)

custom defined memory allocation function.

Memory allocated with aligned realloc MUST be freed using qgd_free

Parameters
element_numThe number of elements in the array to be allocated.
sizeA size of one element (such as sizeof(double) )
alignmentThe 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.

Parameters
element_numThe number of elements in the array to be allocated.
sizeA size of one element (such as sizeof(double) )
alignmentThe number of bytes to which memory must be aligned. This value must be <= 255.

Definition at line 74 of file common.cpp.

Here is the caller graph for this function:

◆ qgd_free()

void qgd_free ( void *  ptr)

custom defined memory release function.

Definition at line 102 of file common.cpp.

Here is the caller graph for this function:

◆ qgd_realloc()

void* qgd_realloc ( void *  aligned_ptr,
int  element_num,
int  size,
int  alignment 
)

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.

Parameters
aligned_ptrThe aligned pointer created by qgd_calloc
element_numThe number of elements in the array to be allocated.
sizeA size of one element (such as sizeof(double) )
alignmentThe number of bytes to which memory must be aligned. This value must be <= 255.

Definition at line 90 of file common.cpp.

◆ reduce_zgemm()

Matrix reduce_zgemm ( std::vector< Matrix > &  mtxs)

Calculate the product of several square shaped complex matrices stored in a vector.

Parameters
mtxsThe vector of matrices.
matrix_sizeThe number rows in the matrices
Returns
Returns with the calculated product matrix

Definition at line 189 of file common.cpp.

Here is the call graph for this function:

◆ subtract_diag()

void subtract_diag ( Matrix mtx,
QGD_Complex16  scalar 
)

Call to subtract a scalar from the diagonal of a complex matrix.

Parameters
mtxThe input-output matrix
scalarThe complex scalar to be subtracked from the diagonal elements of the matrix

Definition at line 238 of file common.cpp.

Here is the caller graph for this function: