nkeynes@1131: #include nkeynes@1131: #include nkeynes@1131: nkeynes@1169: typedef unsigned char u8; nkeynes@1169: typedef signed char i8; nkeynes@1169: typedef unsigned short u16; nkeynes@1169: typedef signed short i16; nkeynes@1169: typedef unsigned int u32; nkeynes@1169: typedef signed int i32; nkeynes@1169: typedef unsigned long long u64; nkeynes@1169: typedef signed long long i64; nkeynes@1131: nkeynes@1131: #define TEST_REPS 64 nkeynes@1131: nkeynes@1169: void printu8(u8 a) { printf( "%08X ", (unsigned int)a ); } nkeynes@1169: void printi8(i8 a) { printf( "%08X ", (unsigned int)(u8)a ); } nkeynes@1169: void printu16(u16 a) { printf( "%08X ", (unsigned int)a ); } nkeynes@1169: void printi16(i16 a) { printf( "%08X ", (unsigned int)(u16)a ); } nkeynes@1169: void printu32(u32 a) { printf( "%08X ", (unsigned int)a ); } nkeynes@1169: void printi32(i32 a) { printf( "%08X ", (unsigned int)a ); } nkeynes@1169: void printu64(u64 a) { printf( "%08X%08X ", (unsigned int)(a>>32),(unsigned int)a ); } nkeynes@1169: void printi64(i64 a) { printf( "%08X%08X ", (unsigned int)(a>>32),(unsigned int)a ); } nkeynes@1131: nkeynes@1131: #define TEST_TYPE(T) \ nkeynes@1131: void test##T() { \ nkeynes@1131: T a, b, c, d, e, f; \ nkeynes@1131: read(0,&a,sizeof(a)); read(0,&b,sizeof(b)); read(0,&c,sizeof(c)); read(0,&d,sizeof(d)); \ nkeynes@1131: e = a * b - c * d;\ nkeynes@1131: if( b != 0 && c != 0 ) { f = a / b + 1/c; }\ nkeynes@1169: T g = e - f / 2 + (u32)b;\ nkeynes@1131: T h = b * c / d; T i = a / -d; \ nkeynes@1169: printf( "%d| ", (int)sizeof(a) ); \ nkeynes@1131: print##T(a); print##T(b); print##T(c); print##T(d); \ nkeynes@1131: printf( ": " ); print##T(e); print##T(f); print##T(g); \ nkeynes@1131: print##T(h); print##T(i); \ nkeynes@1131: printf( "\n" ); \ nkeynes@1131: } nkeynes@1131: nkeynes@1169: TEST_TYPE(u8); nkeynes@1169: TEST_TYPE(i8); nkeynes@1169: TEST_TYPE(u16); nkeynes@1169: TEST_TYPE(i16); nkeynes@1169: TEST_TYPE(u32); nkeynes@1169: TEST_TYPE(i32); nkeynes@1169: TEST_TYPE(u64); nkeynes@1169: TEST_TYPE(i64); nkeynes@1131: nkeynes@1131: int main(int argc, char *argv[]) { nkeynes@1131: unsigned i; nkeynes@1131: nkeynes@1169: for(i=0;i