Skip to content

Commit 624a9b7

Browse files
committed
neatly organizing parameters in function signatures - part 2 and cleaning structures.c
1 parent 78ddd1f commit 624a9b7

11 files changed

Lines changed: 53 additions & 246 deletions

File tree

include/smooth_test.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
void pollard_rho(const mpz_t m, mpz_t p1, mpz_t p2, gmp_randstate_t state);
99
unsigned long build_product_tree(dyn_array* reported, dyn_array* tmp_array, mpz_t prod_primes, mpz_t prod_primes_p1, mpz_t tmp);
1010
void build_remainder_tree(dyn_array* reported, dyn_array* tmp_array, mpz_t prod_primes, mpz_t prod_primes_p1, unsigned long tmp_long);
11-
void batch_smooth(dyn_array* reported, dyn_array *tmp_array, PartialRelation* tmp_array2, mpz_t limit, mpz_t limit_2, mpz_t prod_primes, mpz_t prod_primes_p1, unsigned long prime, gmp_randstate_t state);
12-
void naive_smooth(dyn_array* reported, PartialRelation *tmp_array, dyn_array_classic primes, mpz_t limit, mpz_t limit_2, gmp_randstate_t state);
11+
void batch_smooth(PartialRelation* tmp_array2, dyn_array* reported, dyn_array *tmp_array, mpz_t limit, mpz_t limit_2, mpz_t prod_primes, mpz_t prod_primes_p1, unsigned long prime, gmp_randstate_t state);
12+
void naive_smooth(PartialRelation *tmp_array, dyn_array* reported, dyn_array_classic primes, mpz_t limit, mpz_t limit_2, gmp_randstate_t state);
1313

1414
#endif // SMOOTH_TEST_H

include/structures.h

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -96,9 +96,7 @@ void append(dyn_array* array, mpz_t element);
9696
void append_eco(dyn_array* array, mpz_t element);
9797
void append_only(dyn_array* array, mpz_t element);
9898
void append_only_si(dyn_array* array, signed long element);
99-
void append_block(dyn_array* array, unsigned long block_len, mpz_t tmp_vec[block_len]);
10099
void append_classic(dyn_array_classic* array, unsigned long element);
101-
void append_block_classic(dyn_array_classic* array, unsigned long block_len, unsigned long tmp_vec[block_len]);
102100

103101
// Delete functions
104102

@@ -110,20 +108,13 @@ void delete_dyn_unsorted(dyn_array* array, unsigned long index);
110108

111109
// Insert functions
112110

113-
void insert(dyn_array* array, mpz_t element, unsigned long index);
114111
void insert_classic(dyn_array_classic* array, unsigned long element, unsigned long index);
115-
void insert_block(dyn_array* array, unsigned long index, unsigned long block_len, mpz_t element[block_len]);
116112

117113
// Liberating arrays
118114

119115
void reset(dyn_array* array);
120116
void free_dyn_array(dyn_array* array);
121117

122-
// Query functions
123-
124-
int is_present(dyn_array* array, mpz_t element);
125-
int is_present_ui(dyn_array* array, unsigned long param);
126-
127118
// 1D Hashmap functions
128119

129120
void hashmap_1d_create(Hashmap_1D *graph, const size_t buckets);
@@ -139,7 +130,6 @@ void hashmap_graph_create(Hashmap_graph *hashmap, const size_t buckets);
139130
size_t hash_graph_mpz_strong(const Hashmap_graph *hashmap, const mpz_t key);
140131
void hashmap_graph_put(Hashmap_graph *hashmap, const mpz_t key, mpz_t value);
141132
bool hashmap_graph_is_present(Hashmap_graph *hashmap, const mpz_t key);
142-
void hashmap_graph_get(Hashmap_graph *hashmap, const mpz_t key, dyn_array *output);
143133
dyn_array* hashmap_graph_get_ptr(Hashmap_graph *hashmap, const mpz_t key);
144134
void hashmap_graph_free(Hashmap_graph *hashmap);
145135

@@ -149,10 +139,8 @@ void hashmap_2d_create(Hashmap_PartialRelation *partial_relations, const size_t
149139
void hashmap_2d_compute_key(const unsigned long small_p, const unsigned long big_p, mpz_t key);
150140
void hashmap_2d_compute_key_from_mpz(const mpz_t small_p, const mpz_t big_p, mpz_t key);
151141
size_t hash_2d_mpz_strong(const Hashmap_PartialRelation *partial_relations, const mpz_t key);
152-
void hashmap_2d_put(Hashmap_PartialRelation *partial_relations, const unsigned long small_p, const unsigned long big_p, const PartialRelation value);
153142
void hashmap_2d_put_node(Hashmap_PartialRelation *partial_relations, PartialRelation new_node);
154143
bool hashmap_2d_get_from_mpz(Hashmap_PartialRelation *partial_relations, const mpz_t small_p, const mpz_t big_p, PartialRelation *output);
155-
bool hashmap_2d_is_present_mpz(Hashmap_PartialRelation *partial_relations, const mpz_t small_p, const mpz_t big_p);
156144
void hashmap_2d_free(Hashmap_PartialRelation *partial_relations);
157145

158146
// Stack functions

include/utils.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,13 @@ bool fermat_primality(mpz_t n);
3333

3434
// Linear algebra functions
3535

36-
void multiply(unsigned long n, unsigned long index, dyn_array_classic A, bool b[n], bool res[n]);
36+
void multiply(dyn_array_classic A, unsigned long n, unsigned long index, bool b[n], bool res[n]);
3737
bool dot_prod(unsigned long n, bool lbd[n], bool x[n]);
3838

3939
// Wiedemann polynomial functions
4040

4141
void poly_prod(mpz_t res, mpz_t poly_a, mpz_t poly_b);
4242
void div_poly(mpz_t quotient, mpz_t remainder, mpz_t poly_a, mpz_t poly_b);
43-
void poly_eval(unsigned long n, mpz_t poly, bool x[n], bool res[n], dyn_array_classic A, unsigned long limit);
43+
void poly_eval(dyn_array_classic A, mpz_t poly, unsigned long n, bool x[n], bool res[n], unsigned long limit);
4444

4545
#endif // UTILS_H

include/wiedemann.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,6 @@
77
#include "structures.h"
88

99
void poly_anul(mpz_t D, mpz_t B, unsigned long m);
10-
void wiedemann(dyn_array_classic A, unsigned long n, bool vec[n], unsigned long limit, mpz_t poly_res, unsigned long degree);
10+
void wiedemann(dyn_array_classic A, mpz_t poly_res, unsigned long n, bool vec[n], unsigned long limit, unsigned long degree);
1111

1212
#endif // WIEDEMANN_H

src/main.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -265,7 +265,7 @@ void compute_factors(FILE *logfile, dyn_array relations, dyn_array smooth_number
265265
null_space[i] += rand()%2;
266266
}
267267

268-
if (mpz_cmp_ui(poly, 1) > 0) poly_eval(relations.len, poly, null_space, null_space, bin_matrix, len);
268+
if (mpz_cmp_ui(poly, 1) > 0) poly_eval(bin_matrix, poly, relations.len, null_space, null_space, len);
269269

270270
for (size_t i = 0 ; i < block_len ; i++)
271271
{
@@ -290,7 +290,7 @@ void compute_factors(FILE *logfile, dyn_array relations, dyn_array smooth_number
290290
{
291291
for (size_t j = 0 ; j < relations.len ; j++) tmp_vec[j] = tmp_array[j];
292292

293-
multiply(relations.len, len, bin_matrix, tmp_array, tmp_array);
293+
multiply(bin_matrix, relations.len, len, tmp_array, tmp_array);
294294
k++;
295295
flag = false;
296296
for (size_t j = 0 ; j < relations.len && !flag ; j++)
@@ -312,7 +312,7 @@ void compute_factors(FILE *logfile, dyn_array relations, dyn_array smooth_number
312312

313313
if (flag_update_minimal_poly)
314314
{
315-
wiedemann(bin_matrix, relations.len, tmp_array, len, poly_res, degree);
315+
wiedemann(bin_matrix, poly_res, relations.len, tmp_array, len, degree);
316316
mpz_set(tmp, poly_res);
317317
my_int_log2(tmp);
318318
degree += mpz_get_ui(tmp);
@@ -325,11 +325,11 @@ void compute_factors(FILE *logfile, dyn_array relations, dyn_array smooth_number
325325
}
326326

327327
poly_prod(poly, poly, poly_res);
328-
poly_eval(relations.len, poly_res, null_space, null_space, bin_matrix, len);
328+
poly_eval(bin_matrix, poly_res, relations.len, null_space, null_space, len);
329329

330330
for (size_t j = 0 ; j < relations.len ; j++) tmp_array[j] = (null_space[j]>>i)&1;
331331

332-
if (mpz_cmp_ui(poly_shift, 1) > 0) poly_eval(relations.len, poly_shift, tmp_array, tmp_array, bin_matrix, len);
332+
if (mpz_cmp_ui(poly_shift, 1) > 0) poly_eval(bin_matrix, poly_shift, relations.len, tmp_array, tmp_array, len);
333333
}
334334

335335
tm = *localtime(&(time_t){time(NULL)});

src/mono_cpu_sieve.c

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -247,9 +247,9 @@ void mono_cpu_sieve(
247247
if (flag_batch_smooth)
248248
{
249249
batch_smooth(
250+
tmp_array,
250251
&to_batch,
251252
&batch_array,
252-
tmp_array,
253253
prod_primes,
254254
prod_primes_p1,
255255
cst,
@@ -260,8 +260,8 @@ void mono_cpu_sieve(
260260
else
261261
{
262262
naive_smooth(
263-
&to_batch,
264263
tmp_array,
264+
&to_batch,
265265
primes,
266266
cst,
267267
cst2,
@@ -357,6 +357,12 @@ void mono_cpu_sieve(
357357
free(sieve_array.start);
358358
sieve_array.start = NULL;
359359

360+
hashmap_graph_free(&graph);
361+
362+
hashmap_1d_free(&parent);
363+
364+
hashmap_2d_free(&partial_relations);
365+
360366
for (size_t i = 0 ; i < batch_size ; i++)
361367
{
362368
mpz_clears(

src/parallel_sieving.c

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -258,9 +258,9 @@ void parallel_sieve(
258258
if (flag_batch_smooth)
259259
{
260260
batch_smooth(
261+
tmp_array,
261262
&to_batch,
262263
&batch_array,
263-
tmp_array,
264264
prod_primes,
265265
prod_primes_p1,
266266
cst,
@@ -272,8 +272,8 @@ void parallel_sieve(
272272
else
273273
{
274274
naive_smooth(
275-
&to_batch,
276275
tmp_array,
276+
&to_batch,
277277
primes,
278278
cst,
279279
cst2,
@@ -356,6 +356,12 @@ void parallel_sieve(
356356
free(sieve_array.start);
357357
sieve_array.start = NULL;
358358

359+
hashmap_graph_free(&graph);
360+
361+
hashmap_1d_free(&parent);
362+
363+
hashmap_2d_free(&partial_relations);
364+
359365
for (size_t i = 0 ; i < batch_size ; i++)
360366
{
361367
mpz_clears(

src/smooth_test.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ void build_remainder_tree(dyn_array* reported, dyn_array* tmp_array, mpz_t prod_
176176
}
177177
}
178178

179-
void batch_smooth(dyn_array* reported, dyn_array* tmp_array, PartialRelation *tmp_array2, mpz_t prod_primes, mpz_t prod_primes_p1, mpz_t limit, mpz_t limit_2, unsigned long prime, gmp_randstate_t state)
179+
void batch_smooth(PartialRelation *tmp_array2, dyn_array* reported, dyn_array* tmp_array, mpz_t prod_primes, mpz_t prod_primes_p1, mpz_t limit, mpz_t limit_2, unsigned long prime, gmp_randstate_t state)
180180
{
181181
mpz_t tmp, tmp2;
182182
mpz_inits(tmp, tmp2, NULL);
@@ -246,7 +246,7 @@ void batch_smooth(dyn_array* reported, dyn_array* tmp_array, PartialRelation *tm
246246
mpz_clears(tmp, tmp2, NULL);
247247
}
248248

249-
void naive_smooth(dyn_array* reported, PartialRelation *tmp_array, dyn_array_classic primes, mpz_t limit, mpz_t limit_2, gmp_randstate_t state)
249+
void naive_smooth(PartialRelation *tmp_array, dyn_array* reported, dyn_array_classic primes, mpz_t limit, mpz_t limit_2, gmp_randstate_t state)
250250
{
251251
mpz_t remaining_factor, prime_divisor_1, prime_divisor_2;
252252
mpz_inits(remaining_factor, prime_divisor_1, prime_divisor_2, NULL);

0 commit comments

Comments
 (0)