void element_print(const char *s, const Element x) { int size = element_get_str_length(x); char *str = (char*)malloc(sizeof(char)*size); element_get_str(str, x); printf("%s: %s\n", s, str); free(str); }
//============================================ // Element の表示用 //============================================ void print(const Element x) { int len = element_get_str_length(x); char *s = (char*)malloc(sizeof(char) * len); element_get_str(s, x); printf("element: %s\n", s); free(s); }
//============================================ // 入出力のテストプログラム //============================================ void test_io(Field f) { int i; unsigned long long int t1, t2; char a_str[390]; size_t blen; unsigned char b_str[192]; Element a, b, c; element_init(a, f); element_init(b, f); element_init(c, f); for (i = 0; i < 100; i++) { element_random(a); element_get_str(a_str, a); element_set_str(c, a_str); assert(element_cmp(a, c) == 0); } t1 = rdtsc(); for (i = 0; i < N; i++) { element_get_str(a_str, a); } t2 = rdtsc(); printf("element get string: %.2lf [clock]\n", (double)(t2 - t1) / N); t1 = rdtsc(); for (i = 0; i < N; i++) { element_set_str(c, a_str); } t2 = rdtsc(); printf("element set string: %.2lf [clock]\n", (double)(t2 - t1) / N); for (i = 0; i < 100; i++) { element_random(b); element_to_oct(b_str, &blen, b); element_from_oct(c, b_str, blen); assert(element_cmp(b, c) == 0); } t1 = rdtsc(); for (i = 0; i < N; i++) { element_to_oct(b_str, &blen, b); } t2 = rdtsc(); printf("element to octet string: %.2lf [clock]\n", (double)(t2 - t1) / N); t1 = rdtsc(); for (i = 0; i < N; i++) { element_from_oct(c, b_str, blen); } t2 = rdtsc(); printf("element from octet string: %.2lf [clock]\n", (double)(t2 - t1) / N); element_clear(a); element_clear(b); element_clear(c); }