@@ -1531,8 +1531,46 @@ static int test_mp_decr(void)
15311531
15321532static int test_mp_is_small_prime (void )
15331533{
1534+ mp_sieve sieve ;
1535+ mp_err e ;
1536+ int i , test_size ;
1537+
1538+ const mp_sieve_prime to_test [] = {
1539+ 52 , 137 , 153 , 179 , 6 , 153 , 53 , 132 , 150 , 65 ,
1540+ 27414 , 36339 , 36155 , 11067 , 52060 , 5741 ,
1541+ 29755 , 2698 , 52572 , 13053 , 9375 , 47241 ,39626 ,
1542+ 207423 , 128857 , 37419 , 141696 , 189465 ,
1543+ 41503 , 127370 , 91673 , 8473 , 479142414 , 465566339 ,
1544+ 961126169 , 1057886067 , 1222702060 , 1017450741 ,
1545+ 1019879755 , 72282698 , 2048787577 , 2058368053
1546+ };
1547+ const mp_sieve_prime tested [] = {
1548+ 0 , 1 , 0 , 1 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 ,
1549+ 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 1 , 0
1550+ };
1551+ bool result ;
1552+
1553+ mp_sieve_init (& sieve );
1554+
1555+ test_size = (int )(sizeof (to_test )/sizeof (mp_sieve_prime ));
15341556
1557+ for (i = 0 ; i < test_size ; i ++ ) {
1558+ if ((e = mp_is_small_prime (to_test [i ], & result , & sieve )) != MP_OKAY ) {
1559+ fprintf (stderr ,"mp_is_small_prime failed: \"%s\"\n" ,mp_error_to_string (e ));
1560+ goto LTM_ERR ;
1561+ }
1562+ if (result != tested [i ]) {
1563+ fprintf (stderr ,"mp_is_small_prime failed for %lu. Said %lu but is %lu \n" ,
1564+ (unsigned long )to_test [i ], (unsigned long )result , (unsigned long )tested [i ]);
1565+ goto LTM_ERR ;
1566+ }
1567+ }
1568+ mp_sieve_clear (& sieve );
15351569 return EXIT_SUCCESS ;
1570+ LTM_ERR :
1571+ mp_sieve_clear (& sieve );
1572+ return EXIT_FAILURE ;
1573+
15361574}
15371575
15381576static int test_mp_next_small_prime (void )
0 commit comments