fixed phases of random Pauli input generators
authorLucas K <lkocia@s3miclassical.com>
Wed, 17 Mar 2021 23:15:51 +0000 (16:15 -0700)
committerLucas K <lkocia@s3miclassical.com>
Wed, 17 Mar 2021 23:15:51 +0000 (16:15 -0700)
randominputPauli.c
randominputcommutingHermitianPauli2.c

index da17abe72f654f7fb4b7501ba0701ae4c409ecdf..ee919d6c438de34433ccb208dbec0a1e4f4cbb8b 100644 (file)
@@ -1,6 +1,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <time.h>
+#include <sys/auxv.h>
 
 // order of matrix elements is [row][column]!!!
 
@@ -19,14 +20,17 @@ int main( int argc, char *argv[])
   printf("%d\n", T);
 
   int r;
-  srand((unsigned)time(NULL));
+  unsigned int *seed;
+
+  seed = (unsigned int *)getauxval(AT_RANDOM);
+  srand(*seed);
 
 
   int i, j;
   
   for(i=0; i<N; i++) {
     
-    r = rand()%4; printf("%d\n",r); // omega
+    r = (rand()%2)*2; printf("%d\n",r); // omega
     
     for(j=0; j<N; j++) {
       r = rand()%4;
index 1c79fbb58acbbf70b6b86572c8aa3d4df7e69ee9..596d32759b0ad910830e237244c6246d41e30094 100644 (file)
@@ -63,7 +63,7 @@ int main( int argc, char *argv[])
          Pauli[j][qubita] = 3; // X->Y
        else if(Pauli[j][qubita] == 3) {
          Pauli[j][qubita] = 2; // Y->-X
-         omega[j] = (2*omega[j])%2;
+         omega[j] = (2+omega[j])%4;
        }
       }
     } else { // CNOT
@@ -89,11 +89,11 @@ int main( int argc, char *argv[])
        } else if((Pauli[j][qubita] == 3) && (Pauli[j][qubitb] == 2)) {// YX ->-ZY
          Pauli[j][qubita] == 1;
          Pauli[j][qubitb] == 3;
-         omega[j] = -omega[j];
+         omega[j] = (2+omega[j])%4;
        } else if((Pauli[j][qubita] == 1) && (Pauli[j][qubitb] == 3)) {// ZY ->-YX
          Pauli[j][qubita] == 3;
          Pauli[j][qubitb] == 2;
-         omega[j] = -omega[j];
+         omega[j] = (2+omega[j])%4;
        }
       }
     }