@@ -1531,6 +1531,7 @@ static int test_mp_decr(void)
15311531
15321532static int test_mp_is_small_prime (void )
15331533{
1534+
15341535 return EXIT_SUCCESS ;
15351536}
15361537
@@ -1542,7 +1543,52 @@ static int test_mp_next_small_prime(void)
15421543
15431544static int test_mp_prec_small_prime (void )
15441545{
1546+ mp_sieve sieve ;
1547+ mp_sieve_prime ret ;
1548+ mp_err e ;
1549+ int i , test_size ;
1550+
1551+ const mp_sieve_prime to_test [] = {
1552+ 52 , 137 , 153 , 179 , 6 , 153 , 53 , 132 , 150 , 65 ,
1553+ 27414 , 36339 , 36155 , 11067 , 52060 , 5741 ,
1554+ 29755 , 2698 , 52572 , 13053 , 9375 , 47241 ,
1555+ 39626 , 207423 , 128857 , 37419 , 141696 , 189465 ,
1556+ 41503 , 127370 , 91673 , 8473 , 479142414 , 465566339 ,
1557+ 961126169 , 1057886067 , 1222702060 , 1017450741 ,
1558+ 1019879755 , 72282698 , 2048787577 , 2058368053
1559+ };
1560+ const mp_sieve_prime tested [] = {
1561+ 47 , 137 , 151 , 179 , 5 , 151 , 53 , 131 , 149 , 61 ,
1562+ 27409 , 36319 , 36151 , 11059 , 52057 , 5741 ,
1563+ 29753 , 2693 , 52571 , 13049 , 9371 , 47237 ,
1564+ 39623 , 207409 , 128857 , 37409 , 141689 , 189463 ,
1565+ 41491 , 127363 , 91673 , 8467 , 479142413 , 465566323 ,
1566+ 961126169 , 1057886029 , 1222702051 , 1017450739 ,
1567+ 1019879717 , 72282697 , 2048787577 , 2058368051
1568+ };
1569+
1570+ mp_sieve_init (& sieve );
1571+
1572+ test_size = (int )(sizeof (to_test )/sizeof (mp_sieve_prime ));
1573+
1574+ for (i = 0 ; i < test_size ; i ++ ) {
1575+ if ((e = mp_prec_small_prime (to_test [i ], & ret , & sieve )) != MP_OKAY ) {
1576+ fprintf (stderr ,"mp_prec_small_prime failed with \"%s\" at index %d\n" ,
1577+ mp_error_to_string (e ), i );
1578+ goto LTM_ERR ;
1579+ }
1580+ if (ret != tested [i ]) {
1581+ fprintf (stderr ,"mp_prec_small_prime failed for %lu. Said %lu but is %lu \n" ,
1582+ (unsigned long )to_test [i ], (unsigned long )ret , (unsigned long )tested [i ]);
1583+ goto LTM_ERR ;
1584+ }
1585+ }
1586+
1587+ mp_sieve_clear (& sieve );
15451588 return EXIT_SUCCESS ;
1589+ LTM_ERR :
1590+ mp_sieve_clear (& sieve );
1591+ return EXIT_FAILURE ;
15461592}
15471593
15481594
0 commit comments