xref: /netbsd-src/external/bsd/jemalloc.old/dist/test/unit/div.c (revision 8e33eff89e26cf71871ead62f0d5063e1313c33a)
1*8e33eff8Schristos #include "test/jemalloc_test.h"
2*8e33eff8Schristos 
3*8e33eff8Schristos #include "jemalloc/internal/div.h"
4*8e33eff8Schristos 
5*8e33eff8Schristos TEST_BEGIN(test_div_exhaustive) {
6*8e33eff8Schristos 	for (size_t divisor = 2; divisor < 1000 * 1000; ++divisor) {
7*8e33eff8Schristos 		div_info_t div_info;
8*8e33eff8Schristos 		div_init(&div_info, divisor);
9*8e33eff8Schristos 		size_t max = 1000 * divisor;
10*8e33eff8Schristos 		if (max < 1000 * 1000) {
11*8e33eff8Schristos 			max = 1000 * 1000;
12*8e33eff8Schristos 		}
13*8e33eff8Schristos 		for (size_t dividend = 0; dividend < 1000 * divisor;
14*8e33eff8Schristos 		    dividend += divisor) {
15*8e33eff8Schristos 			size_t quotient = div_compute(
16*8e33eff8Schristos 			    &div_info, dividend);
17*8e33eff8Schristos 			assert_zu_eq(dividend, quotient * divisor,
18*8e33eff8Schristos 			    "With divisor = %zu, dividend = %zu, "
19*8e33eff8Schristos 			    "got quotient %zu", divisor, dividend, quotient);
20*8e33eff8Schristos 		}
21*8e33eff8Schristos 	}
22*8e33eff8Schristos }
23*8e33eff8Schristos TEST_END
24*8e33eff8Schristos 
25*8e33eff8Schristos int
26*8e33eff8Schristos main(void) {
27*8e33eff8Schristos 	return test_no_reentrancy(
28*8e33eff8Schristos 	    test_div_exhaustive);
29*8e33eff8Schristos }
30