#include #include #include int inner(bool u[], bool v[], int d) { int i, E = 0; for (i = 0; i < d; i++) { E += u[i] * v[i]; #if 0 printf("%d %d %d\n", u[i], v[i], E); #endif } return E; } int main(int argc, char *argv[]) { float p = 0.5, D = RAND_MAX; int i, E, d = 8192; bool u[d], v[d]; if (argc > 1) p = atof(argv[1]); if (argc > 2) srandom(atoi(argv[2])); for (i = 0; i < d; i++) { u[i] = (random() / D) < p ? 1 : 0; v[i] = (random() / D) < p ? 1 : 0; } E = inner(u, v, d); return E; }