You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							101 lines
						
					
					
						
							3.3 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							101 lines
						
					
					
						
							3.3 KiB
						
					
					
				| #include <iostream> | |
|  | |
| // Elementary operations. | |
| extern int test_I_abs (int iterations); | |
| extern int test_I_compare (int iterations); | |
| extern int test_I_plus (int iterations); | |
| extern int test_I_minus (int iterations); | |
| extern int test_I_plus1 (int iterations); | |
| extern int test_I_minus1 (int iterations); | |
| extern int test_I_mul (int iterations); | |
| extern int test_I_div (int iterations); | |
| // Euclidean ring operations. | |
| extern int test_I_gcd (int iterations); | |
| extern int test_I_xgcd (int iterations); | |
| // Bit vector operations. | |
| extern int test_I_ash (int iterations); | |
| extern int test_I_evenp (int iterations); | |
| extern int test_I_oddp (int iterations); | |
| extern int test_I_lognot (int iterations); | |
| extern int test_I_logand (int iterations); | |
| extern int test_I_logandc1 (int iterations); | |
| extern int test_I_logandc2 (int iterations); | |
| extern int test_I_logior (int iterations); | |
| extern int test_I_logorc1 (int iterations); | |
| extern int test_I_logorc2 (int iterations); | |
| extern int test_I_logxor (int iterations); | |
| extern int test_I_lognand (int iterations); | |
| extern int test_I_lognor (int iterations); | |
| extern int test_I_logeqv (int iterations); | |
| extern int test_I_boole (int iterations); | |
| extern int test_I_logbitp (int iterations); | |
| extern int test_I_logtest (int iterations); | |
| extern int test_I_ldb (int iterations); | |
| extern int test_I_ldb_test (int iterations); | |
| extern int test_I_mask_field (int iterations); | |
| extern int test_I_dpb (int iterations); | |
| extern int test_I_deposit_field (int iterations); | |
| extern int test_I_logcount (int iterations); | |
| extern int test_I_integer_length (int iterations); | |
| extern int test_I_ord2 (int iterations); | |
| extern int test_I_power2p (int iterations); | |
| // More complex operations. | |
| extern int test_I_isqrt (int iterations); | |
| extern int test_I_sqrtp (int iterations); | |
| // Miscellaneous. | |
| extern int test_I_GV (int iterations); | |
| 
 | |
| #define RUN(tester,iterations)  \ | |
| 	std::cout << "Testing "#tester"..." << std::endl; \ | |
| 	error |= tester (iterations); | |
|  | |
| 
 | |
| int test_I (int iterations) | |
| { | |
| 	int error = 0; | |
| 	// Elementary operations. | |
| 	RUN(test_I_abs,iterations); | |
| 	RUN(test_I_compare,iterations); | |
| 	RUN(test_I_plus,iterations); | |
| 	RUN(test_I_minus,iterations); | |
| 	RUN(test_I_plus1,iterations); | |
| 	RUN(test_I_minus1,iterations); | |
| 	RUN(test_I_mul,iterations); | |
| 	RUN(test_I_div,iterations); | |
| 	// Euclidean ring operations. | |
| 	RUN(test_I_gcd,iterations); | |
| 	RUN(test_I_xgcd,iterations); | |
| 	// Bit vector operations. | |
| 	RUN(test_I_ash,iterations); | |
| 	RUN(test_I_evenp,iterations); | |
| 	RUN(test_I_oddp,iterations); | |
| 	RUN(test_I_lognot,iterations); | |
| 	RUN(test_I_logand,iterations); | |
| 	RUN(test_I_logandc1,iterations); | |
| 	RUN(test_I_logandc2,iterations); | |
| 	RUN(test_I_logior,iterations); | |
| 	RUN(test_I_logorc1,iterations); | |
| 	RUN(test_I_logorc2,iterations); | |
| 	RUN(test_I_logxor,iterations); | |
| 	RUN(test_I_lognand,iterations); | |
| 	RUN(test_I_lognor,iterations); | |
| 	RUN(test_I_logeqv,iterations); | |
| 	RUN(test_I_boole,iterations); | |
| 	RUN(test_I_logbitp,iterations); | |
| 	RUN(test_I_logtest,iterations); | |
| 	RUN(test_I_ldb,iterations); | |
| 	RUN(test_I_ldb_test,iterations); | |
| 	RUN(test_I_mask_field,iterations); | |
| 	RUN(test_I_dpb,iterations); | |
| 	RUN(test_I_deposit_field,iterations); | |
| 	RUN(test_I_logcount,iterations); | |
| 	RUN(test_I_integer_length,iterations); | |
| 	RUN(test_I_ord2,iterations); | |
| 	RUN(test_I_power2p,iterations); | |
| 	// More complex operations. | |
| 	RUN(test_I_isqrt,iterations); | |
| 	RUN(test_I_sqrtp,iterations); | |
| 	// Miscellaneous. | |
| 	RUN(test_I_GV,iterations); | |
| 	return error; | |
| }
 |