X-Git-Url: https://s3miclassical.com/gitweb/?p=strong_simulation_gauss_sum_rank.git;a=blobdiff_plain;f=hilbertspace_vector.c;fp=hilbertspace_vector.c;h=15d143d2ed00a6cb33c6e535c3745a29e7474e4d;hp=0000000000000000000000000000000000000000;hb=41acfb8cfb426c10f7a16e8cb04337012b25e3fb;hpb=13d8b4a4c252c341d36d3d90f66ed28600777224 diff --git a/hilbertspace_vector.c b/hilbertspace_vector.c new file mode 100644 index 0000000..15d143d --- /dev/null +++ b/hilbertspace_vector.c @@ -0,0 +1,243 @@ +#include +#include +#include +#include + +void deallocate_mem(complex double ***arr, int rows); +void printMatrix(complex double** a, int rows, int cols); +complex double** multMatrix(complex double **A, complex double **B, int ro1, int co1, int ro2, int co2); +complex double** outerMatrix(complex double **A, complex double **B, int ro1, int co1, int ro2, int co2); +complex double** transp(complex double **a, int rows, int cols); +complex double** conjtransp(complex double **a, int rows, int cols); +complex double trace(complex double **a, int rows, int cols); +complex double** scalarmultMatrix(complex double scalar, complex double **a, int rows, int cols); +complex double** addMatrix(complex double **A, complex double **B, int rows, int cols); +int readPaulicoeffs(int* alpha, int* beta, int* gamma, int* delta, int numqubits); + +// order of matrix elements is [row][column]!!! + +static complex double (*(I2[])) = { (double complex[]) {1.0+0.0*I, 0.0+0.0*I}, (double complex[]) {0.0+0.0*I, 1.0+0.0*I} }; +static complex double (*(X[])) = { (double complex[]) {0.0*I, 1.0+0.0*I}, (double complex[]) {1.0+0.0*I, 0.0*I} }; +static complex double (*(Y[])) = { (double complex[]) {0.0*I, 0.0-1.0*I}, (double complex[]) {0.0+1.0*I, 0.0*I} }; +static complex double (*(Z[])) = { (double complex[]) {1.0+0.0*I, 0.0+0.0*I}, (double complex[]) {0.0+0.0*I, -1.0+0.0*I} }; + +int main() +{ + + int i; + + int N; // number of qubits + scanf("%d", &N); + + complex double (*(psi[])) = { (double complex[]) {1.0/sqrt(2.0)}, (double complex[]) {0.5*(1.0+1.0*I)}}; // T gate magic state + + complex double **psiN = psi; + for(i=1; i