int test_counting_remove_reopen(const char *bloom_file, const char *words_file) { FILE *fp; char word[256]; counting_bloom_t *bloom; int i, key_removed; struct stats results = { 0 }; printf("\n* test counting remove & reopen\n"); if ((fp = fopen(bloom_file, "r"))) { fclose(fp); remove(bloom_file); } if (!(bloom = new_counting_bloom(CAPACITY, ERROR_RATE, bloom_file))) { fprintf(stderr, "ERROR: Could not create bloom filter\n"); return TEST_FAIL; } if (!(fp = fopen(words_file, "r"))) { fprintf(stderr, "ERROR: Could not open words file\n"); return TEST_FAIL; } for (i = 0; fgets(word, sizeof(word), fp) && (i < CAPACITY); i++) { chomp_line(word); counting_bloom_add(bloom, word, strlen(word)); } fseek(fp, 0, SEEK_SET); for (i = 0; fgets(word, sizeof(word), fp) && (i < CAPACITY); i++) { if (i % 5 == 0) { chomp_line(word); counting_bloom_remove(bloom, word, strlen(word)); } } free_counting_bloom(bloom); bloom = new_counting_bloom_from_file(CAPACITY, ERROR_RATE, bloom_file); fseek(fp, 0, SEEK_SET); for (i = 0; (fgets(word, sizeof(word), fp)) && (i < CAPACITY); i++) { chomp_line(word); key_removed = (i % 5 == 0); bloom_score(counting_bloom_check(bloom, word, strlen(word)), !key_removed, &results, word); } fclose(fp); printf("Elements added: %6d" "\n" "Elements removed: %6d" "\n" "Total size: %d KiB" "\n\n", i, i / 5, (int) bloom->num_bytes / 1024); free_counting_bloom(bloom); return print_results(&results); }
int test_scaling_accuracy(const char *bloom_file, const char *words_file) { FILE *fp; char word[256]; scaling_bloom_t *bloom; int i; struct stats results = { 0 }; printf("\n* test scaling accuracy\n"); if ((fp = fopen(bloom_file, "r"))) { fclose(fp); remove(bloom_file); } if (!(bloom = new_scaling_bloom(CAPACITY, ERROR_RATE, bloom_file))) { fprintf(stderr, "ERROR: Could not create bloom filter\n"); return TEST_FAIL; } if (!(fp = fopen(words_file, "r"))) { fprintf(stderr, "ERROR: Could not open words file\n"); return TEST_FAIL; } for (i = 0; fgets(word, sizeof(word), fp); i++) { if (i % 2 == 0) { chomp_line(word); scaling_bloom_add(bloom, word, strlen(word), i); } } fseek(fp, 0, SEEK_SET); for (i = 0; fgets(word, sizeof(word), fp); i++) { if (i % 2 == 1) { chomp_line(word); bloom_score(scaling_bloom_check(bloom, word, strlen(word)), 0, &results, word); } } fclose(fp); printf("Elements added: %6d" "\n" "Elements checked: %6d" "\n" "Total size: %d KiB" "\n\n", (i + 1) / 2, i / 2, (int) bloom->num_bytes / 1024); free_scaling_bloom(bloom); return print_results(&results); }
int main(int argc, const char *argv[]) { int res; char *str; mpz_t largenum; if (argc <= 0) { fprintf(stderr, "usage: %s\n", argv[0]); exit(EXIT_SUCCESS); } fprintf(stderr, "setting pitch\n"); orient_range.orient.pitch = 180; orient_range.pitch_range = 10; fprintf(stderr, "setting roll\n"); orient_range.orient.roll = 0; orient_range.roll_range = 10; fprintf(stderr, "setting azimuth\n"); orient_range.orient.azimuth = 0; orient_range.azimuth_range = 0; mpz_init_set_str(one, "1", 10); mpz_init_set_str(two, "2", 10); gmp_randinit_default(randstate); sleep(1); if (syscall(__NR_orientlock_read, &orient_range) == -1) { fprintf(stderr, "error: Unable to obtain lock\n"); exit(EXIT_FAILURE); } fp = fopen("./integer", "r"); if ((fgets(integer, INTEGER_BUF_SIZE, fp)) == NULL) { fprintf(stderr, "error: Unable to read from file"); exit(EXIT_FAILURE); } chomp_line(integer); mpz_init(largenum); mpz_init_set_str(largenum, integer, 10); str = mpz_to_str(largenum); if (!str) return EXIT_FAILURE; /* * We simply return the prime number itself if the base is prime. * (We use the GMP probabilistic function with 10 repetitions). */ res = mpz_probab_prime_p(largenum, 10); if (res) { printf("%s is a prime number\n", str); free(str); mpz_add(largenum, largenum, one); } printf("Prime factors for %s are: ", str); free(str); factor(largenum); printf("\n"); fclose(fp); if (syscall(__NR_orientunlock_read, &orient_range) == -1) { fprintf(stderr, "error: Unable to unlock\n"); exit(EXIT_FAILURE); } return EXIT_SUCCESS; }