#include #ifdef _USE_PRINTF_ #include #else int printf(const char * cp, ...) { } #endif // _USE_PRINTF_ const static struct test { const char * t_name; signed char (* t_func)(void); } tlist[]; signed char testop_0(void); signed char testop_20(void); signed char testop_40(void); signed char testop_60(void); signed char testop_80(void); signed char testop_100(void); static const struct test tlist[] = { "testop_0", testop_0, "testop_20", testop_20, "testop_40", testop_40, "testop_60", testop_60, "testop_80", testop_80, "testop_100", testop_100, }; unsigned char ts_passed, ts_failed, ts_cnt, ts_retval; main() { printf("\nCompiler: " "PICC-18" "\tTest suite name: \"" "Perm" "\"\n\n"); { unsigned char nop; ++nop; }; for(ts_cnt = 0 ; ts_cnt != sizeof tlist/sizeof tlist[0] ; ts_cnt++) { printf("Test: %d %s\t",ts_cnt, tlist[ts_cnt].t_name); if(ts_retval = (*tlist[ts_cnt].t_func)()) { ts_failed++; printf("failed: %u <<<\n", ts_retval); goto exit_out; } else { printf("passed\n"); } } ts_passed = ts_cnt-ts_failed; printf( "\n---------------------\n" "Total Tests:\t%d\n" "Pass\t\t%d\n" "Fail\t\t%d\n" "---------------------" "\n\n", ts_cnt, ts_passed,ts_failed); exit_out: { unsigned char nop; ++nop; }; for(;;); } unsigned char f_uc(unsigned char i) { return i; } signed char f_sc(signed char i) { return i; } unsigned short f_us(unsigned short i) { return i; } signed short f_ss(signed short i) { return i; } unsigned long f_ul(unsigned long i) { return i; } signed long f_sl(signed long i) { return i; } static unsigned char d_uc; static signed char d_sc; static unsigned short d_us; static signed short d_ss; static unsigned long d_ul; static signed long d_sl; static unsigned char a_uc; static signed char a_sc; static unsigned short a_us; static signed short a_ss; static unsigned long a_ul; static signed long a_sl; static unsigned char b_uc; static signed char b_sc; static unsigned short b_us; static signed short b_ss; static unsigned long b_ul; static signed long b_sl; signed char testop_0(void) { a_uc = (144); b_uc = (202); d_uc = a_uc * b_uc; if(d_uc != 160) return 1; a_uc = (128); b_uc = (131); d_uc = a_uc / b_uc; if(d_uc != 0) return 2; a_uc = (200); b_uc = (187); d_uc = a_uc % b_uc; if(d_uc != 13) return 3; a_uc = (240); b_uc = (255); d_uc = a_uc + b_uc; if(d_uc != 239) return 4; a_uc = (128); b_uc = (224); d_uc = a_uc - b_uc; if(d_uc != 160) return 5; a_uc = (249); b_uc = (142); d_uc = a_uc ^ b_uc; if(d_uc != 119) return 6; a_uc = (245); b_sc = (74); d_uc = a_uc * b_sc; if(d_uc != 210) return 7; a_uc = (133); b_sc = (76); d_uc = a_uc / b_sc; if(d_uc != 1) return 8; a_uc = (200); b_sc = (96); d_uc = a_uc % b_sc; if(d_uc != 8) return 9; a_uc = (192); b_sc = (126); d_uc = a_uc + b_sc; if(d_uc != 62) return 10; a_uc = (154); b_sc = (80); d_uc = a_uc - b_sc; if(d_uc != 74) return 11; a_sc = (64); b_uc = (224); d_sc = a_sc * b_uc; if(d_sc != 0) return 12; a_sc = (80); b_uc = (242); d_sc = a_sc / b_uc; if(d_sc != 0) return 13; a_sc = (69); b_uc = (192); d_sc = a_sc % b_uc; if(d_sc != 69) return 14; a_sc = (96); b_uc = (248); d_sc = a_sc + b_uc; if(d_sc != 88) return 15; a_sc = (64); b_uc = (152); d_sc = a_sc - b_uc; if(d_sc != -88) return 16; a_sc = (108); b_sc = (-64); d_sc = a_sc * b_sc; if(d_sc != 0) return 17; a_sc = (-124); b_sc = (-64); d_sc = a_sc / b_sc; if(d_sc != 1) return 18; a_sc = (103); b_sc = (114); d_sc = a_sc % b_sc; if(d_sc != 103) return 19; a_sc = (64); b_sc = (82); d_sc = a_sc + b_sc; if(d_sc != -110) return 20; return 0; } signed char testop_20(void) { a_sc = (-72); b_sc = (71); d_sc = a_sc - b_sc; if(d_sc != 113) return 21; a_uc = (132); b_uc = (248); d_us = a_uc * b_uc; if(d_us != 32736u) return 22; a_uc = (128); b_uc = (208); d_us = a_uc / b_uc; if(d_us != 0u) return 23; a_uc = (128); b_uc = (134); d_us = a_uc % b_uc; if(d_us != 128u) return 24; a_uc = (133); b_uc = (164); d_us = a_uc + b_uc; if(d_us != 297u) return 25; a_uc = (135); b_uc = (128); d_us = a_uc - b_uc; if(d_us != 7u) return 26; a_uc = (197); b_uc = (188); d_us = a_uc ^ b_uc; if(d_us != 121u) return 27; a_uc = (204); b_sc = (96); d_us = a_uc * b_sc; if(d_us != 19584u) return 28; a_uc = (140); b_sc = (92); d_us = a_uc / b_sc; if(d_us != 1u) return 29; a_uc = (195); b_sc = (112); d_us = a_uc % b_sc; if(d_us != 83u) return 30; a_uc = (223); b_sc = (92); d_us = a_uc + b_sc; if(d_us != 315u) return 31; a_uc = (192); b_sc = (90); d_us = a_uc - b_sc; if(d_us != 102u) return 32; a_us = (54879u); b_uc = (202); d_us = a_us * b_uc; if(d_us != 9974u) return 33; a_us = (61800u); b_uc = (184); d_us = a_us / b_uc; if(d_us != 335u) return 34; a_us = (45898u); b_uc = (230); d_us = a_us % b_uc; if(d_us != 128u) return 35; a_us = (41946u); b_uc = (148); d_us = a_us + b_uc; if(d_us != 42094u) return 36; a_us = (53432u); b_uc = (128); d_us = a_us - b_uc; if(d_us != 53304u) return 37; a_us = (48768u); b_uc = (133); d_us = a_us ^ b_uc; if(d_us != 48645u) return 38; a_us = (57088u); b_sc = (119); d_us = a_us * b_sc; if(d_us != 43264u) return 39; a_us = (55427u); b_sc = (72); d_us = a_us / b_sc; if(d_us != 769u) return 40; return 0; } signed char testop_40(void) { a_us = (59630u); b_sc = (64); d_us = a_us % b_sc; if(d_us != 46u) return 41; a_us = (47264u); b_sc = (117); d_us = a_us + b_sc; if(d_us != 47381u) return 42; a_us = (56012u); b_sc = (64); d_us = a_us - b_sc; if(d_us != 55948u) return 43; a_us = (32768u); b_us = (45696u); d_us = a_us * b_us; if(d_us != 0u) return 44; a_us = (51492u); b_us = (62488u); d_us = a_us / b_us; if(d_us != 0u) return 45; a_us = (59648u); b_us = (54528u); d_us = a_us % b_us; if(d_us != 5120u) return 46; a_us = (55389u); b_us = (35584u); d_us = a_us + b_us; if(d_us != 25437u) return 47; a_us = (39936u); b_us = (55777u); d_us = a_us - b_us; if(d_us != 49695u) return 48; a_us = (64708u); b_us = (50887u); d_us = a_us ^ b_us; if(d_us != 14851u) return 49; a_us = (38304u); b_ss = (17061); d_us = a_us * b_ss; if(d_us != 45088u) return 50; a_us = (60970u); b_ss = (18432); d_us = a_us / b_ss; if(d_us != 3u) return 51; a_us = (54374u); b_ss = (16384); d_us = a_us % b_ss; if(d_us != 5222u) return 52; a_us = (58528u); b_ss = (21026); d_us = a_us + b_ss; if(d_us != 14018u) return 53; a_us = (42240u); b_ss = (24871); d_us = a_us - b_ss; if(d_us != 17369u) return 54; a_sc = (96); b_uc = (138); d_ss = a_sc * b_uc; if(d_ss != 13248) return 55; a_sc = (104); b_uc = (184); d_ss = a_sc / b_uc; if(d_ss != 0) return 56; a_sc = (64); b_uc = (183); d_ss = a_sc % b_uc; if(d_ss != 64) return 57; a_sc = (120); b_uc = (237); d_ss = a_sc + b_uc; if(d_ss != 357) return 58; a_sc = (65); b_uc = (171); d_ss = a_sc - b_uc; if(d_ss != -106) return 59; a_sc = (111); b_sc = (-112); d_ss = a_sc * b_sc; if(d_ss != -12432) return 60; return 0; } signed char testop_60(void) { a_sc = (88); b_sc = (-76); d_ss = a_sc / b_sc; if(d_ss != -1) return 61; a_sc = (112); b_sc = (-112); d_ss = a_sc % b_sc; if(d_ss != 0) return 62; a_sc = (-117); b_sc = (-92); d_ss = a_sc + b_sc; if(d_ss != -209) return 63; a_sc = (-100); b_sc = (96); d_ss = a_sc - b_sc; if(d_ss != -196) return 64; a_ss = (22788); b_uc = (140); d_ss = a_ss * b_uc; if(d_ss != -20944) return 65; a_ss = (16816); b_uc = (241); d_ss = a_ss / b_uc; if(d_ss != 69) return 66; a_ss = (25185); b_uc = (224); d_ss = a_ss % b_uc; if(d_ss != 97) return 67; a_ss = (30631); b_uc = (136); d_ss = a_ss + b_uc; if(d_ss != 30767) return 68; a_ss = (20600); b_uc = (144); d_ss = a_ss - b_uc; if(d_ss != 20456) return 69; a_ss = (-19424); b_sc = (-120); d_ss = a_ss * b_sc; if(d_ss != -28416) return 70; a_ss = (-19584); b_sc = (116); d_ss = a_ss / b_sc; if(d_ss != -168) return 71; a_ss = (30689); b_sc = (-120); d_ss = a_ss % b_sc; if(d_ss != 89) return 72; a_ss = (-29696); b_sc = (103); d_ss = a_ss + b_sc; if(d_ss != -29593) return 73; a_ss = (-23296); b_sc = (-64); d_ss = a_ss - b_sc; if(d_ss != -23232) return 74; a_ss = (17309); b_us = (50262u); d_ss = a_ss * b_us; if(d_ss != -5442) return 75; a_ss = (27826); b_us = (33664u); d_ss = a_ss / b_us; if(d_ss != 0) return 76; a_ss = (21975); b_us = (61952u); d_ss = a_ss % b_us; if(d_ss != 21975) return 77; a_ss = (20210); b_us = (63008u); d_ss = a_ss + b_us; if(d_ss != 17682) return 78; a_ss = (32720); b_us = (34480u); d_ss = a_ss - b_us; if(d_ss != -1760) return 79; a_ss = (-25319); b_ss = (-22212); d_ss = a_ss * b_ss; if(d_ss != 21212) return 80; return 0; } signed char testop_80(void) { a_ss = (-30946); b_ss = (27200); d_ss = a_ss / b_ss; if(d_ss != -1) return 81; a_ss = (-21462); b_ss = (-19072); d_ss = a_ss % b_ss; if(d_ss != -2390) return 82; a_ss = (-32697); b_ss = (29868); d_ss = a_ss + b_ss; if(d_ss != -2829) return 83; a_ss = (-17920); b_ss = (25495); d_ss = a_ss - b_ss; if(d_ss != 22121) return 84; a_uc = (238); b_uc = (128); d_ul = (unsigned long)a_uc * b_uc; if(d_ul != 30464l) return 85; a_uc = (236); b_uc = (240); d_ul = (unsigned long)a_uc / b_uc; if(d_ul != 0l) return 86; a_uc = (192); b_uc = (156); d_ul = (unsigned long)a_uc % b_uc; if(d_ul != 36l) return 87; a_uc = (231); b_uc = (216); d_ul = (unsigned long)a_uc + b_uc; if(d_ul != 447l) return 88; a_uc = (158); b_uc = (208); d_ul = (unsigned long)a_uc - b_uc; if(d_ul != -50l) return 89; a_uc = (226); b_uc = (136); d_ul = (unsigned long)a_uc ^ b_uc; if(d_ul != 106l) return 90; a_uc = (240); b_sc = (80); d_ul = (unsigned long)a_uc * b_sc; if(d_ul != 19200l) return 91; a_uc = (192); b_sc = (124); d_ul = (unsigned long)a_uc / b_sc; if(d_ul != 1l) return 92; a_uc = (184); b_sc = (65); d_ul = (unsigned long)a_uc % b_sc; if(d_ul != 54l) return 93; a_uc = (224); b_sc = (114); d_ul = (unsigned long)a_uc + b_sc; if(d_ul != 338l) return 94; a_uc = (174); b_sc = (72); d_ul = (unsigned long)a_uc - b_sc; if(d_ul != 102l) return 95; a_us = (46720u); b_uc = (239); d_ul = (unsigned long)a_us * b_uc; if(d_ul != 11166080l) return 96; a_us = (42977u); b_uc = (192); d_ul = (unsigned long)a_us / b_uc; if(d_ul != 223l) return 97; a_us = (47380u); b_uc = (252); d_ul = (unsigned long)a_us % b_uc; if(d_ul != 4l) return 98; a_us = (36616u); b_uc = (208); d_ul = (unsigned long)a_us + b_uc; if(d_ul != 36824l) return 99; a_us = (58182u); b_uc = (138); d_ul = (unsigned long)a_us - b_uc; if(d_ul != 58044l) return 100; return 0; } signed char testop_100(void) { a_us = (61667u); b_uc = (255); d_ul = (unsigned long)a_us ^ b_uc; if(d_ul != 61468l) return 101; a_us = (36676u); b_sc = (92); d_ul = (unsigned long)a_us * b_sc; if(d_ul != 3374192l) return 102; a_us = (34464u); b_sc = (88); d_ul = (unsigned long)a_us / b_sc; if(d_ul != 391l) return 103; a_us = (37242u); b_sc = (116); d_ul = (unsigned long)a_us % b_sc; if(d_ul != 6l) return 104; a_us = (39526u); b_sc = (108); d_ul = (unsigned long)a_us + b_sc; if(d_ul != 39634l) return 105; a_us = (37965u); b_sc = (96); d_ul = (unsigned long)a_us - b_sc; if(d_ul != 37869l) return 106; a_us = (44764u); b_us = (60931u); d_ul = (unsigned long)a_us * b_us; if(d_ul != -1567452012l) return 107; a_us = (40786u); b_us = (42332u); d_ul = (unsigned long)a_us / b_us; if(d_ul != 0l) return 108; a_us = (50368u); b_us = (39376u); d_ul = (unsigned long)a_us % b_us; if(d_ul != 10992l) return 109; a_us = (42954u); b_us = (65216u); d_ul = (unsigned long)a_us + b_us; if(d_ul != 108170l) return 110; a_us = (51174u); b_us = (61440u); d_ul = (unsigned long)a_us - b_us; if(d_ul != -10266l) return 111; a_us = (56615u); b_us = (36544u); d_ul = (unsigned long)a_us ^ b_us; if(d_ul != 21479l) return 112; a_us = (58340u); b_ss = (29665); d_ul = (unsigned long)a_us * b_ss; if(d_ul != 1730656100l) return 113; a_us = (42203u); b_ss = (21970); d_ul = (unsigned long)a_us / b_ss; if(d_ul != 1l) return 114; a_us = (53173u); b_ss = (26102); d_ul = (unsigned long)a_us % b_ss; if(d_ul != 969l) return 115; a_us = (45310u); b_ss = (30024); d_ul = (unsigned long)a_us + b_ss; if(d_ul != 75334l) return 116; a_us = (58560u); b_ss = (17325); d_ul = (unsigned long)a_us - b_ss; if(d_ul != 41235l) return 117; a_ul = (121240240l); b_uc = (232); d_ul = a_ul * b_uc; if(d_ul != -1937035392l) return 118; a_ul = (473402299l); b_uc = (128); d_ul = a_ul / b_uc; if(d_ul != 3698455l) return 119; a_ul = (543297370l); b_uc = (134); d_ul = a_ul % b_uc; if(d_ul != 132l) return 120; return 0; }