Skip to content

Commit 4b465c2

Browse files
Christoph Zurniedenczurnieden
Christoph Zurnieden
authored andcommitted
Print big integers with (f)printf
1 parent 0df542c commit 4b465c2

14 files changed

+346
-66
lines changed

demo/test.c

+122
Original file line numberDiff line numberDiff line change
@@ -315,6 +315,122 @@ static int test_mp_fread_fwrite(void)
315315
return EXIT_FAILURE;
316316
}
317317

318+
#if (!(defined LTM_NOTHING) && !(defined MP_NO_FILE) && (defined __GLIBC__))
319+
#include <printf.h>
320+
#define LTM_TEST_BUFSIZ 1024
321+
static int test_mp_printf_extension(void)
322+
{
323+
FILE *test_file = NULL;
324+
325+
char line_buffer[LTM_TEST_BUFSIZ] = {0};
326+
bool write_only = false;
327+
size_t slen = 0;
328+
int characters_printed = 0;
329+
char *fgets_return;
330+
int idx = 0;
331+
332+
const char *test_values[2] = {
333+
"4DDCFDE0D20EF8663B34D19F829FDD",
334+
"-51D9769BDAE5B38121F2A31D881E5F"
335+
};
336+
const char *test_strings[12] = {
337+
"Right aligned AAA 404289102523688521157725445716877277 BBB\n",
338+
"Left aligned AAA 404289102523688521157725445716877277 BBB\n",
339+
"hex with right align AAA 0x4DDCFDE0D20EF8663B34D19F829FDD BBB\n",
340+
"hex with left align AAA 0x4DDCFDE0D20EF8663B34D19F829FDD BBB\n",
341+
"Right aligned AAA -424986725583297217766029037085924959 BBB\n",
342+
"Left aligned AAA -424986725583297217766029037085924959 BBB\n",
343+
"hex with right align AAA -0x51D9769BDAE5B38121F2A31D881E5F BBB\n",
344+
"hex with left align AAA -0x51D9769BDAE5B38121F2A31D881E5F BBB\n",
345+
"Right aligned AAA 0 BBB\n",
346+
"Left aligned AAA 0 BBB\n",
347+
"hex with right align AAA 0x0 BBB\n",
348+
"hex with left align AAA 0x0 BBB\n"
349+
};
350+
351+
const char *print_strings[12] = {
352+
"Right aligned AAA %50N BBB\n",
353+
"Left aligned AAA %-50N BBB\n",
354+
"hex with right align AAA %#50N BBB\n",
355+
"hex with left align AAA %#-50N BBB\n",
356+
/* at idx == 4 mp_exch(&p,&q); */
357+
"Right aligned AAA %50N BBB\n",
358+
"Left aligned AAA %-50N BBB\n",
359+
"hex with right align AAA %#50N BBB\n",
360+
"hex with left align AAA %#-50N BBB\n",
361+
/* at idx == 8 mp_zero(&p); */
362+
"Right aligned AAA %50N BBB\n",
363+
"Left aligned AAA %-50N BBB\n",
364+
"hex with right align AAA %#50N BBB\n",
365+
"hex with left align AAA %#-50N BBB\n",
366+
};
367+
368+
369+
mp_int p, q;
370+
371+
test_file = fopen("ltm_testing_mp_fprintf_88a43603fcfc2f7e7c6646cd4b89180a", "w+");
372+
if (test_file == NULL) {
373+
/* use logfile instead to have at least sth. in case of an error */
374+
test_file = stdout;
375+
write_only = true;
376+
}
377+
378+
DOR(mp_init_multi(&p, &q, NULL));
379+
380+
DO(mp_read_radix(&p, test_values[0], 16));
381+
DO(mp_read_radix(&q, test_values[1], 16));
382+
383+
DO(mp_printf_extension());
384+
385+
for (idx = 0; idx < 12; idx++) {
386+
if (idx == 4) {
387+
mp_exch(&p,&q);
388+
}
389+
if (idx == 8) {
390+
mp_zero(&p);
391+
}
392+
characters_printed = fprintf(test_file, print_strings[idx], &p);
393+
slen = strlen(test_strings[idx]);
394+
if ((characters_printed - (int)slen) != 0) {
395+
fprintf(stderr, "%d test_mp_print_extension: failed to print o:%zu t:%d\n",
396+
idx, slen, characters_printed);
397+
goto LBL_ERR;
398+
}
399+
if (!write_only) {
400+
rewind(test_file);
401+
fgets_return = fgets(line_buffer, LTM_TEST_BUFSIZ, test_file);
402+
if (fgets_return == NULL) {
403+
fprintf(stderr, "%d test_mp_fprintf: failed to read from file\n", idx);
404+
goto LBL_ERR;
405+
}
406+
if (strcmp(line_buffer, test_strings[idx]) != 0) {
407+
fprintf(stderr, "test_mp_fprintf: file content is not equal to test string #%d\n",idx);
408+
goto LBL_ERR;
409+
}
410+
}
411+
/* Clear file content */
412+
test_file = freopen("ltm_testing_mp_fprintf_88a43603fcfc2f7e7c6646cd4b89180a","w+", test_file);
413+
if (test_file == NULL) {
414+
/* use logfile instead to have at least sth. in case of an error */
415+
test_file = stdout;
416+
write_only = true;
417+
}
418+
}
419+
420+
mp_clear_multi(&p, &q, NULL);
421+
fclose(test_file);
422+
if (remove("ltm_testing_mp_fprintf_88a43603fcfc2f7e7c6646cd4b89180a") != 0) {
423+
fprintf(stderr, "Could not delete file ltm_testing_mp_fprintf_88a43603fcfc2f7e7c6646cd4b89180a\n");
424+
}
425+
return EXIT_SUCCESS;
426+
LBL_ERR:
427+
mp_clear_multi(&p, &q, NULL);
428+
fclose(test_file);
429+
/* We don't delete the testfile in case of error, conrtent might be helpful. */
430+
return EXIT_FAILURE;
431+
}
432+
#endif
433+
318434
static mp_err very_random_source(void *out, size_t size)
319435
{
320436
memset(out, 0xff, size);
@@ -1576,6 +1692,9 @@ static int test_mp_log(void)
15761692
DO(mp_rand(&a, i));
15771693
for (j = 1; j < ((i/2)+1); j++) {
15781694
DO(mp_rand(&base, j));
1695+
if (mp_cmp_d(&base,2u) == MP_LT) {
1696+
continue;
1697+
}
15791698
DO(mp_log(&a, &base, &lb));
15801699
DO(mp_expt_n(&base, lb, &bn));
15811700
/* "bn" must be smaller than or equal to "a" at this point. */
@@ -2453,6 +2572,9 @@ static int unit_tests(int argc, char **argv)
24532572
T1(mp_dr_reduce, MP_DR_REDUCE),
24542573
T2(mp_pack_unpack,MP_PACK, MP_UNPACK),
24552574
T2(mp_fread_fwrite, MP_FREAD, MP_FWRITE),
2575+
#if (!(defined LTM_NOTHING) && !(defined MP_NO_FILE) && (defined __GLIBC__))
2576+
T1(mp_printf_extension, MP_READ_RADIX),
2577+
#endif
24562578
T1(mp_get_u32, MP_GET_I32),
24572579
T1(mp_get_u64, MP_GET_I64),
24582580
T1(mp_get_ul, MP_GET_L),

doc/bn.tex

+20
Original file line numberDiff line numberDiff line change
@@ -2421,6 +2421,26 @@ \subsection{To ASCII}
24212421
mp_err mp_fwrite(const mp_int *a, int radix, FILE *stream);
24222422
\end{alltt}
24232423

2424+
Also available in that case is a small extension to \texttt{printf(3)} to print
2425+
a big integer in a formated way. Not every formating is supported (e.g.: no
2426+
thousands separator) but normal alignment works well. Only representations available
2427+
are hexadecimal (slaways with prefix) and decimal.
2428+
\index{mp\_printf\_extension}
2429+
\begin{alltt}
2430+
mp_err p_printf_extension(void);
2431+
\end{alltt}
2432+
Example:
2433+
\begin{alltt}
2434+
2435+
/* Switch on the extension */
2436+
if((err = mp_printf_extension(void)) != MP_OKAY) goto LTM_ERR;
2437+
...
2438+
/* Do some calculation */
2439+
...
2440+
/* print them out */
2441+
printf("In hex: %#N and in decimal: %N\textbackslash{}n");
2442+
\end{alltt}
2443+
24242444
\subsection{From ASCII}
24252445
\index{mp\_read\_radix}
24262446
\begin{alltt}

helper.pl

+1-1
Original file line numberDiff line numberDiff line change
@@ -446,7 +446,7 @@ sub update_dep
446446

447447
sub generate_def {
448448
my @files = glob '*mp_*.c';
449-
@files = map { my $x = $_; $x =~ s/\.c$//g; $x; } @files;
449+
@files = map { my $x = $_; $x =~ s/\.c$//g;$x; } @files;
450450
@files = grep(!/mp_cutoffs/, @files);
451451

452452
my $files = join("\n ", sort(grep(/^mp_/, @files)));

libtommath_VS2008.vcproj

+4
Original file line numberDiff line numberDiff line change
@@ -644,6 +644,10 @@
644644
RelativePath="mp_prime_strong_lucas_selfridge.c"
645645
>
646646
</File>
647+
<File
648+
RelativePath="mp_printf_extension.c"
649+
>
650+
</File>
647651
<File
648652
RelativePath="mp_radix_size.c"
649653
>

makefile

+13-13
Original file line numberDiff line numberDiff line change
@@ -37,19 +37,19 @@ mp_invmod.o mp_is_square.o mp_kronecker.o mp_lcm.o mp_log.o mp_log_n.o mp_lshd.o
3737
mp_montgomery_calc_normalization.o mp_montgomery_reduce.o mp_montgomery_setup.o mp_mul.o mp_mul_2.o \
3838
mp_mul_2d.o mp_mul_d.o mp_mulmod.o mp_neg.o mp_or.o mp_pack.o mp_pack_count.o mp_prime_fermat.o \
3939
mp_prime_frobenius_underwood.o mp_prime_is_prime.o mp_prime_miller_rabin.o mp_prime_next_prime.o \
40-
mp_prime_rabin_miller_trials.o mp_prime_rand.o mp_prime_strong_lucas_selfridge.o mp_radix_size.o \
41-
mp_radix_size_overestimate.o mp_rand.o mp_rand_source.o mp_read_radix.o mp_reduce.o mp_reduce_2k.o \
42-
mp_reduce_2k_l.o mp_reduce_2k_setup.o mp_reduce_2k_setup_l.o mp_reduce_is_2k.o mp_reduce_is_2k_l.o \
43-
mp_reduce_setup.o mp_root_n.o mp_rshd.o mp_sbin_size.o mp_set.o mp_set_double.o mp_set_i32.o mp_set_i64.o \
44-
mp_set_l.o mp_set_u32.o mp_set_u64.o mp_set_ul.o mp_shrink.o mp_signed_rsh.o mp_sqrmod.o mp_sqrt.o \
45-
mp_sqrtmod_prime.o mp_sub.o mp_sub_d.o mp_submod.o mp_to_radix.o mp_to_sbin.o mp_to_ubin.o mp_ubin_size.o \
46-
mp_unpack.o mp_xor.o mp_zero.o s_mp_add.o s_mp_copy_digs.o s_mp_div_3.o s_mp_div_recursive.o \
47-
s_mp_div_school.o s_mp_div_small.o s_mp_exptmod.o s_mp_exptmod_fast.o s_mp_fp_log.o s_mp_fp_log_d.o \
48-
s_mp_get_bit.o s_mp_invmod.o s_mp_invmod_odd.o s_mp_log_2expt.o s_mp_montgomery_reduce_comba.o s_mp_mul.o \
49-
s_mp_mul_balance.o s_mp_mul_comba.o s_mp_mul_high.o s_mp_mul_high_comba.o s_mp_mul_karatsuba.o \
50-
s_mp_mul_toom.o s_mp_prime_is_divisible.o s_mp_prime_tab.o s_mp_radix_map.o \
51-
s_mp_radix_size_overestimate.o s_mp_rand_platform.o s_mp_sqr.o s_mp_sqr_comba.o s_mp_sqr_karatsuba.o \
52-
s_mp_sqr_toom.o s_mp_sub.o s_mp_zero_buf.o s_mp_zero_digs.o
40+
mp_prime_rabin_miller_trials.o mp_prime_rand.o mp_prime_strong_lucas_selfridge.o mp_printf_extension.o \
41+
mp_radix_size.o mp_radix_size_overestimate.o mp_rand.o mp_rand_source.o mp_read_radix.o mp_reduce.o \
42+
mp_reduce_2k.o mp_reduce_2k_l.o mp_reduce_2k_setup.o mp_reduce_2k_setup_l.o mp_reduce_is_2k.o \
43+
mp_reduce_is_2k_l.o mp_reduce_setup.o mp_root_n.o mp_rshd.o mp_sbin_size.o mp_set.o mp_set_double.o \
44+
mp_set_i32.o mp_set_i64.o mp_set_l.o mp_set_u32.o mp_set_u64.o mp_set_ul.o mp_shrink.o mp_signed_rsh.o \
45+
mp_sqrmod.o mp_sqrt.o mp_sqrtmod_prime.o mp_sub.o mp_sub_d.o mp_submod.o mp_to_radix.o mp_to_sbin.o \
46+
mp_to_ubin.o mp_ubin_size.o mp_unpack.o mp_xor.o mp_zero.o s_mp_add.o s_mp_copy_digs.o s_mp_div_3.o \
47+
s_mp_div_recursive.o s_mp_div_school.o s_mp_div_small.o s_mp_exptmod.o s_mp_exptmod_fast.o s_mp_fp_log.o \
48+
s_mp_fp_log_d.o s_mp_get_bit.o s_mp_invmod.o s_mp_invmod_odd.o s_mp_log_2expt.o \
49+
s_mp_montgomery_reduce_comba.o s_mp_mul.o s_mp_mul_balance.o s_mp_mul_comba.o s_mp_mul_high.o \
50+
s_mp_mul_high_comba.o s_mp_mul_karatsuba.o s_mp_mul_toom.o s_mp_prime_is_divisible.o s_mp_prime_tab.o \
51+
s_mp_radix_map.o s_mp_radix_size_overestimate.o s_mp_rand_platform.o s_mp_sqr.o s_mp_sqr_comba.o \
52+
s_mp_sqr_karatsuba.o s_mp_sqr_toom.o s_mp_sub.o s_mp_zero_buf.o s_mp_zero_digs.o
5353

5454
#END_INS
5555

makefile.mingw

+13-13
Original file line numberDiff line numberDiff line change
@@ -39,19 +39,19 @@ mp_invmod.o mp_is_square.o mp_kronecker.o mp_lcm.o mp_log.o mp_log_n.o mp_lshd.o
3939
mp_montgomery_calc_normalization.o mp_montgomery_reduce.o mp_montgomery_setup.o mp_mul.o mp_mul_2.o \
4040
mp_mul_2d.o mp_mul_d.o mp_mulmod.o mp_neg.o mp_or.o mp_pack.o mp_pack_count.o mp_prime_fermat.o \
4141
mp_prime_frobenius_underwood.o mp_prime_is_prime.o mp_prime_miller_rabin.o mp_prime_next_prime.o \
42-
mp_prime_rabin_miller_trials.o mp_prime_rand.o mp_prime_strong_lucas_selfridge.o mp_radix_size.o \
43-
mp_radix_size_overestimate.o mp_rand.o mp_rand_source.o mp_read_radix.o mp_reduce.o mp_reduce_2k.o \
44-
mp_reduce_2k_l.o mp_reduce_2k_setup.o mp_reduce_2k_setup_l.o mp_reduce_is_2k.o mp_reduce_is_2k_l.o \
45-
mp_reduce_setup.o mp_root_n.o mp_rshd.o mp_sbin_size.o mp_set.o mp_set_double.o mp_set_i32.o mp_set_i64.o \
46-
mp_set_l.o mp_set_u32.o mp_set_u64.o mp_set_ul.o mp_shrink.o mp_signed_rsh.o mp_sqrmod.o mp_sqrt.o \
47-
mp_sqrtmod_prime.o mp_sub.o mp_sub_d.o mp_submod.o mp_to_radix.o mp_to_sbin.o mp_to_ubin.o mp_ubin_size.o \
48-
mp_unpack.o mp_xor.o mp_zero.o s_mp_add.o s_mp_copy_digs.o s_mp_div_3.o s_mp_div_recursive.o \
49-
s_mp_div_school.o s_mp_div_small.o s_mp_exptmod.o s_mp_exptmod_fast.o s_mp_fp_log.o s_mp_fp_log_d.o \
50-
s_mp_get_bit.o s_mp_invmod.o s_mp_invmod_odd.o s_mp_log_2expt.o s_mp_montgomery_reduce_comba.o s_mp_mul.o \
51-
s_mp_mul_balance.o s_mp_mul_comba.o s_mp_mul_high.o s_mp_mul_high_comba.o s_mp_mul_karatsuba.o \
52-
s_mp_mul_toom.o s_mp_prime_is_divisible.o s_mp_prime_tab.o s_mp_radix_map.o \
53-
s_mp_radix_size_overestimate.o s_mp_rand_platform.o s_mp_sqr.o s_mp_sqr_comba.o s_mp_sqr_karatsuba.o \
54-
s_mp_sqr_toom.o s_mp_sub.o s_mp_zero_buf.o s_mp_zero_digs.o
42+
mp_prime_rabin_miller_trials.o mp_prime_rand.o mp_prime_strong_lucas_selfridge.o mp_printf_extension.o \
43+
mp_radix_size.o mp_radix_size_overestimate.o mp_rand.o mp_rand_source.o mp_read_radix.o mp_reduce.o \
44+
mp_reduce_2k.o mp_reduce_2k_l.o mp_reduce_2k_setup.o mp_reduce_2k_setup_l.o mp_reduce_is_2k.o \
45+
mp_reduce_is_2k_l.o mp_reduce_setup.o mp_root_n.o mp_rshd.o mp_sbin_size.o mp_set.o mp_set_double.o \
46+
mp_set_i32.o mp_set_i64.o mp_set_l.o mp_set_u32.o mp_set_u64.o mp_set_ul.o mp_shrink.o mp_signed_rsh.o \
47+
mp_sqrmod.o mp_sqrt.o mp_sqrtmod_prime.o mp_sub.o mp_sub_d.o mp_submod.o mp_to_radix.o mp_to_sbin.o \
48+
mp_to_ubin.o mp_ubin_size.o mp_unpack.o mp_xor.o mp_zero.o s_mp_add.o s_mp_copy_digs.o s_mp_div_3.o \
49+
s_mp_div_recursive.o s_mp_div_school.o s_mp_div_small.o s_mp_exptmod.o s_mp_exptmod_fast.o s_mp_fp_log.o \
50+
s_mp_fp_log_d.o s_mp_get_bit.o s_mp_invmod.o s_mp_invmod_odd.o s_mp_log_2expt.o \
51+
s_mp_montgomery_reduce_comba.o s_mp_mul.o s_mp_mul_balance.o s_mp_mul_comba.o s_mp_mul_high.o \
52+
s_mp_mul_high_comba.o s_mp_mul_karatsuba.o s_mp_mul_toom.o s_mp_prime_is_divisible.o s_mp_prime_tab.o \
53+
s_mp_radix_map.o s_mp_radix_size_overestimate.o s_mp_rand_platform.o s_mp_sqr.o s_mp_sqr_comba.o \
54+
s_mp_sqr_karatsuba.o s_mp_sqr_toom.o s_mp_sub.o s_mp_zero_buf.o s_mp_zero_digs.o
5555

5656
HEADERS_PUB=tommath.h
5757
HEADERS=tommath_private.h tommath_class.h tommath_superclass.h tommath_cutoffs.h $(HEADERS_PUB)

makefile.msvc

+13-13
Original file line numberDiff line numberDiff line change
@@ -35,19 +35,19 @@ mp_invmod.obj mp_is_square.obj mp_kronecker.obj mp_lcm.obj mp_log.obj mp_log_n.o
3535
mp_montgomery_calc_normalization.obj mp_montgomery_reduce.obj mp_montgomery_setup.obj mp_mul.obj mp_mul_2.obj \
3636
mp_mul_2d.obj mp_mul_d.obj mp_mulmod.obj mp_neg.obj mp_or.obj mp_pack.obj mp_pack_count.obj mp_prime_fermat.obj \
3737
mp_prime_frobenius_underwood.obj mp_prime_is_prime.obj mp_prime_miller_rabin.obj mp_prime_next_prime.obj \
38-
mp_prime_rabin_miller_trials.obj mp_prime_rand.obj mp_prime_strong_lucas_selfridge.obj mp_radix_size.obj \
39-
mp_radix_size_overestimate.obj mp_rand.obj mp_rand_source.obj mp_read_radix.obj mp_reduce.obj mp_reduce_2k.obj \
40-
mp_reduce_2k_l.obj mp_reduce_2k_setup.obj mp_reduce_2k_setup_l.obj mp_reduce_is_2k.obj mp_reduce_is_2k_l.obj \
41-
mp_reduce_setup.obj mp_root_n.obj mp_rshd.obj mp_sbin_size.obj mp_set.obj mp_set_double.obj mp_set_i32.obj mp_set_i64.obj \
42-
mp_set_l.obj mp_set_u32.obj mp_set_u64.obj mp_set_ul.obj mp_shrink.obj mp_signed_rsh.obj mp_sqrmod.obj mp_sqrt.obj \
43-
mp_sqrtmod_prime.obj mp_sub.obj mp_sub_d.obj mp_submod.obj mp_to_radix.obj mp_to_sbin.obj mp_to_ubin.obj mp_ubin_size.obj \
44-
mp_unpack.obj mp_xor.obj mp_zero.obj s_mp_add.obj s_mp_copy_digs.obj s_mp_div_3.obj s_mp_div_recursive.obj \
45-
s_mp_div_school.obj s_mp_div_small.obj s_mp_exptmod.obj s_mp_exptmod_fast.obj s_mp_fp_log.obj s_mp_fp_log_d.obj \
46-
s_mp_get_bit.obj s_mp_invmod.obj s_mp_invmod_odd.obj s_mp_log_2expt.obj s_mp_montgomery_reduce_comba.obj s_mp_mul.obj \
47-
s_mp_mul_balance.obj s_mp_mul_comba.obj s_mp_mul_high.obj s_mp_mul_high_comba.obj s_mp_mul_karatsuba.obj \
48-
s_mp_mul_toom.obj s_mp_prime_is_divisible.obj s_mp_prime_tab.obj s_mp_radix_map.obj \
49-
s_mp_radix_size_overestimate.obj s_mp_rand_platform.obj s_mp_sqr.obj s_mp_sqr_comba.obj s_mp_sqr_karatsuba.obj \
50-
s_mp_sqr_toom.obj s_mp_sub.obj s_mp_zero_buf.obj s_mp_zero_digs.obj
38+
mp_prime_rabin_miller_trials.obj mp_prime_rand.obj mp_prime_strong_lucas_selfridge.obj mp_printf_extension.obj \
39+
mp_radix_size.obj mp_radix_size_overestimate.obj mp_rand.obj mp_rand_source.obj mp_read_radix.obj mp_reduce.obj \
40+
mp_reduce_2k.obj mp_reduce_2k_l.obj mp_reduce_2k_setup.obj mp_reduce_2k_setup_l.obj mp_reduce_is_2k.obj \
41+
mp_reduce_is_2k_l.obj mp_reduce_setup.obj mp_root_n.obj mp_rshd.obj mp_sbin_size.obj mp_set.obj mp_set_double.obj \
42+
mp_set_i32.obj mp_set_i64.obj mp_set_l.obj mp_set_u32.obj mp_set_u64.obj mp_set_ul.obj mp_shrink.obj mp_signed_rsh.obj \
43+
mp_sqrmod.obj mp_sqrt.obj mp_sqrtmod_prime.obj mp_sub.obj mp_sub_d.obj mp_submod.obj mp_to_radix.obj mp_to_sbin.obj \
44+
mp_to_ubin.obj mp_ubin_size.obj mp_unpack.obj mp_xor.obj mp_zero.obj s_mp_add.obj s_mp_copy_digs.obj s_mp_div_3.obj \
45+
s_mp_div_recursive.obj s_mp_div_school.obj s_mp_div_small.obj s_mp_exptmod.obj s_mp_exptmod_fast.obj s_mp_fp_log.obj \
46+
s_mp_fp_log_d.obj s_mp_get_bit.obj s_mp_invmod.obj s_mp_invmod_odd.obj s_mp_log_2expt.obj \
47+
s_mp_montgomery_reduce_comba.obj s_mp_mul.obj s_mp_mul_balance.obj s_mp_mul_comba.obj s_mp_mul_high.obj \
48+
s_mp_mul_high_comba.obj s_mp_mul_karatsuba.obj s_mp_mul_toom.obj s_mp_prime_is_divisible.obj s_mp_prime_tab.obj \
49+
s_mp_radix_map.obj s_mp_radix_size_overestimate.obj s_mp_rand_platform.obj s_mp_sqr.obj s_mp_sqr_comba.obj \
50+
s_mp_sqr_karatsuba.obj s_mp_sqr_toom.obj s_mp_sub.obj s_mp_zero_buf.obj s_mp_zero_digs.obj
5151

5252
HEADERS_PUB=tommath.h
5353
HEADERS=tommath_private.h tommath_class.h tommath_superclass.h tommath_cutoffs.h $(HEADERS_PUB)

makefile.shared

+13-13
Original file line numberDiff line numberDiff line change
@@ -34,19 +34,19 @@ mp_invmod.o mp_is_square.o mp_kronecker.o mp_lcm.o mp_log.o mp_log_n.o mp_lshd.o
3434
mp_montgomery_calc_normalization.o mp_montgomery_reduce.o mp_montgomery_setup.o mp_mul.o mp_mul_2.o \
3535
mp_mul_2d.o mp_mul_d.o mp_mulmod.o mp_neg.o mp_or.o mp_pack.o mp_pack_count.o mp_prime_fermat.o \
3636
mp_prime_frobenius_underwood.o mp_prime_is_prime.o mp_prime_miller_rabin.o mp_prime_next_prime.o \
37-
mp_prime_rabin_miller_trials.o mp_prime_rand.o mp_prime_strong_lucas_selfridge.o mp_radix_size.o \
38-
mp_radix_size_overestimate.o mp_rand.o mp_rand_source.o mp_read_radix.o mp_reduce.o mp_reduce_2k.o \
39-
mp_reduce_2k_l.o mp_reduce_2k_setup.o mp_reduce_2k_setup_l.o mp_reduce_is_2k.o mp_reduce_is_2k_l.o \
40-
mp_reduce_setup.o mp_root_n.o mp_rshd.o mp_sbin_size.o mp_set.o mp_set_double.o mp_set_i32.o mp_set_i64.o \
41-
mp_set_l.o mp_set_u32.o mp_set_u64.o mp_set_ul.o mp_shrink.o mp_signed_rsh.o mp_sqrmod.o mp_sqrt.o \
42-
mp_sqrtmod_prime.o mp_sub.o mp_sub_d.o mp_submod.o mp_to_radix.o mp_to_sbin.o mp_to_ubin.o mp_ubin_size.o \
43-
mp_unpack.o mp_xor.o mp_zero.o s_mp_add.o s_mp_copy_digs.o s_mp_div_3.o s_mp_div_recursive.o \
44-
s_mp_div_school.o s_mp_div_small.o s_mp_exptmod.o s_mp_exptmod_fast.o s_mp_fp_log.o s_mp_fp_log_d.o \
45-
s_mp_get_bit.o s_mp_invmod.o s_mp_invmod_odd.o s_mp_log_2expt.o s_mp_montgomery_reduce_comba.o s_mp_mul.o \
46-
s_mp_mul_balance.o s_mp_mul_comba.o s_mp_mul_high.o s_mp_mul_high_comba.o s_mp_mul_karatsuba.o \
47-
s_mp_mul_toom.o s_mp_prime_is_divisible.o s_mp_prime_tab.o s_mp_radix_map.o \
48-
s_mp_radix_size_overestimate.o s_mp_rand_platform.o s_mp_sqr.o s_mp_sqr_comba.o s_mp_sqr_karatsuba.o \
49-
s_mp_sqr_toom.o s_mp_sub.o s_mp_zero_buf.o s_mp_zero_digs.o
37+
mp_prime_rabin_miller_trials.o mp_prime_rand.o mp_prime_strong_lucas_selfridge.o mp_printf_extension.o \
38+
mp_radix_size.o mp_radix_size_overestimate.o mp_rand.o mp_rand_source.o mp_read_radix.o mp_reduce.o \
39+
mp_reduce_2k.o mp_reduce_2k_l.o mp_reduce_2k_setup.o mp_reduce_2k_setup_l.o mp_reduce_is_2k.o \
40+
mp_reduce_is_2k_l.o mp_reduce_setup.o mp_root_n.o mp_rshd.o mp_sbin_size.o mp_set.o mp_set_double.o \
41+
mp_set_i32.o mp_set_i64.o mp_set_l.o mp_set_u32.o mp_set_u64.o mp_set_ul.o mp_shrink.o mp_signed_rsh.o \
42+
mp_sqrmod.o mp_sqrt.o mp_sqrtmod_prime.o mp_sub.o mp_sub_d.o mp_submod.o mp_to_radix.o mp_to_sbin.o \
43+
mp_to_ubin.o mp_ubin_size.o mp_unpack.o mp_xor.o mp_zero.o s_mp_add.o s_mp_copy_digs.o s_mp_div_3.o \
44+
s_mp_div_recursive.o s_mp_div_school.o s_mp_div_small.o s_mp_exptmod.o s_mp_exptmod_fast.o s_mp_fp_log.o \
45+
s_mp_fp_log_d.o s_mp_get_bit.o s_mp_invmod.o s_mp_invmod_odd.o s_mp_log_2expt.o \
46+
s_mp_montgomery_reduce_comba.o s_mp_mul.o s_mp_mul_balance.o s_mp_mul_comba.o s_mp_mul_high.o \
47+
s_mp_mul_high_comba.o s_mp_mul_karatsuba.o s_mp_mul_toom.o s_mp_prime_is_divisible.o s_mp_prime_tab.o \
48+
s_mp_radix_map.o s_mp_radix_size_overestimate.o s_mp_rand_platform.o s_mp_sqr.o s_mp_sqr_comba.o \
49+
s_mp_sqr_karatsuba.o s_mp_sqr_toom.o s_mp_sub.o s_mp_zero_buf.o s_mp_zero_digs.o
5050

5151
#END_INS
5252

0 commit comments

Comments
 (0)