9#ifndef QUEST_TEST_UTILS_H
10#define QUEST_TEST_UTILS_H
12#include "quest/include/quest.h"
14#include <catch2/generators/catch_generators.hpp>
36#if FLOAT_PRECISION == 1
37 constexpr qreal REAL_EPS = 1E-1;
38#elif FLOAT_PRECISION == 2
39 constexpr qreal REAL_EPS = 1E-8;
40#elif FLOAT_PRECISION == 4
41 constexpr qreal REAL_EPS = 1E-10;
46#define M_PI 3.141592653589793238
83qreal absReal(qreal x);
84qreal absComp(qcomp x);
129void operator *= (
QVector& v1,
const qcomp& a);
130void operator /= (
QVector& v1,
const qcomp& a);
139void operator *= (
QMatrix& m1,
const qreal& a);
140void operator /= (
QMatrix& m1,
const qreal& a);
205QMatrix toQMatrix(qreal* coeffs, pauliOpType* paulis,
int numQubits,
int numTerms);
1017qcomp expI(qreal phase);
1024unsigned int calcLog2(
long unsigned int res);
1032void setRandomPauliSum(qreal* coeffs, pauliOpType* codes,
int numQubits,
int numTerms);
1081long long int getUnsigned(
long long int twosComp,
int numBits);
1123template<
class T>
using CatchGen = Catch::Generators::GeneratorWrapper<T>;
1147CatchGen<int*>
sublists(
int* list,
int len,
int sublen);
1174CatchGen<int*>
sublists(CatchGen<int>&& gen,
int numSamps,
const int* exclude,
int numExclude);
1201CatchGen<int*>
sublists(CatchGen<int>&& gen,
int numSamps,
int excluded);
1223CatchGen<int*>
sublists(CatchGen<int>&& gen,
int sublen);
1239CatchGen<int*>
bitsets(
int numBits);
1257CatchGen<int*>
sequences(
int base,
int numDigits);
1275CatchGen<pauliOpType*>
pauliseqs(
int numPaulis);
QMatrix getExponentialOfPauliMatrix(qreal angle, QMatrix a)
void applyReferenceMatrix(QVector &state, int *ctrls, int numCtrls, int *targs, int numTargs, QMatrix op)
QMatrix getRandomPureDensityMatrix(int numQb)
void setRandomPauliSum(qreal *coeffs, pauliOpType *codes, int numQubits, int numTerms)
void setUniqueFilename(char *outFn, int maxlen, char *prefix)
QMatrix getRandomUnitary(int numQb)
CatchGen< int * > sequences(int base, int numDigits)
QMatrix getFullOperatorMatrix(int *ctrls, int numCtrls, int *targs, int numTargs, QMatrix op, int numQubits)
ComplexMatrix4 toComplexMatrix4(QMatrix qm)
unsigned int calcLog2(long unsigned int res)
QVector getRandomQVector(int dim)
void applyReferenceOp(QMatrix &state, int *ctrls, int numCtrls, int *targs, int numTargs, QMatrix op)
QMatrix getKetBra(QVector ket, QVector bra)
CatchGen< int * > sublists(int *list, int len, int sublen)
QMatrix getSwapMatrix(int qb1, int qb2, int numQb)
QMatrix getConjugateTranspose(QMatrix a)
QMatrix getMixedDensityMatrix(vector< qreal > probs, vector< QVector > states)
long long int getTwosComplement(long long int decimal, int numBits)
long long int getValueOfTargets(long long int ind, int *targs, int numTargs)
QMatrix toQMatrix(Qureg qureg)
QVector getNormalised(QVector vec)
QMatrix getRandomDensityMatrix(int numQb)
QMatrix getZeroMatrix(size_t dim)
void assertQuregAndRefInDebugState(Qureg qureg, QVector ref)
int getRandomInt(int min, int max)
vector< vector< qcomp > > QMatrix
ComplexMatrix2 toComplexMatrix2(QMatrix qm)
void setSubMatrix(QMatrix &dest, QMatrix sub, size_t r, size_t c)
CatchGen< pauliOpType * > pauliseqs(int numPaulis)
QVector getDFT(QVector in)
void toComplexMatrixN(QMatrix qm, ComplexMatrixN cm)
vector< QMatrix > getRandomKrausMap(int numQb, int numOps)
vector< QVector > getRandomOrthonormalVectors(int numQb, int numStates)
QVector getMatrixDiagonal(QMatrix matr)
void setRandomDiagPauliHamil(PauliHamil hamil, int numQubits)
void writeToFileSynch(char *fn, const string &contents)
QMatrix getRandomQMatrix(int dim)
void setRandomTargets(int *targs, int numTargs, int numQb)
QMatrix toDiagonalQMatrix(QVector vec)
void setRandomTestStateSeeds()
QVector getKroneckerProduct(QVector b, QVector a)
bool areEqual(Qureg qureg1, Qureg qureg2)
QMatrix getIdentityMatrix(size_t dim)
QMatrix getExponentialOfDiagonalMatrix(QMatrix a)
qreal getRandomReal(qreal min, qreal max)
vector< qreal > getRandomProbabilities(int numProbs)
void deleteFilesWithPrefixSynch(char *prefix)
QVector toQVector(Qureg qureg)
QVector getRandomStateVector(int numQb)
QMatrix getPureDensityMatrix(QVector state)
long long int getUnsigned(long long int twosComp, int numBits)
CatchGen< int * > bitsets(int numBits)
void toQureg(Qureg qureg, QVector vec)