void avx512f_test (void) { int i, sign; union128 res1, res2, res3, res4, res5, src1, src2; MASK_TYPE mask = MASK_VALUE; float res_ref[SIZE]; sign = -1; for (i = 0; i < SIZE; i++) { src1.a[i] = 1.5 + 34.67 * i * sign; src2.a[i] = -22.17 * i * sign + 1.0; sign = sign * -1; } for (i = 0; i < SIZE; i++) { res1.a[i] = DEFAULT_VALUE; res4.a[i] = DEFAULT_VALUE; } res1.x = _mm_mask_add_ss (res1.x, mask, src1.x, src2.x); res2.x = _mm_maskz_add_ss (mask, src1.x, src2.x); res3.x = _mm_add_round_ss (src1.x, src2.x, _MM_FROUND_NO_EXC); res4.x = _mm_mask_add_round_ss (res4.x, mask, src1.x, src2.x, _MM_FROUND_NO_EXC); res5.x = _mm_maskz_add_round_ss (mask, src1.x, src2.x, _MM_FROUND_NO_EXC); calc_add (res_ref, src1.a, src2.a); MASK_MERGE () (res_ref, mask, 1); if (check_union128 (res1, res_ref)) abort (); MASK_ZERO () (res_ref, mask, 1); if (check_union128 (res2, res_ref)) abort (); calc_add (res_ref, src1.a, src2.a); if (check_union128 (res3, res_ref)) abort(); MASK_MERGE () (res_ref, mask, 1); if (check_union128 (res4, res_ref)) abort (); MASK_ZERO () (res_ref, mask, 1); if (check_union128 (res5, res_ref)) abort (); }
void calc_compute(op_t *op) { if (op->type != OP_CMP) return; op_t *cop = (op_t *) op->arg1; switch (cop->type) { case OP_ADD: calc_add(cop); break; case OP_SUB: calc_sub(cop); break; case OP_MUL: calc_mul(cop); break; case OP_DIV: calc_div(cop); break; case OP_MOD: calc_mod(cop); break; default: break; } }
int main(int argc, char **argv) { struct cli_args args; if (parse_arguments(argc, argv, &args) != true) { return EXIT_FAILURE; } printf("%d + %d = %ld\n", args.summand1, args.summand2, calc_add(args.summand1, args.summand2)); return EXIT_SUCCESS; }
void Test() { int input = 1; while (input) { manu(); cout << "请输入选项" << endl; cin >> input; switch (input) { //1、加上到指定日期的天数 case 1: calc_add(); break; //2、减去到指定日期的天数 case 2: calc_del(); break; //3、计算两个日期相差天数 case 3: calc_differ(); break; //4、日历打印 case 4: calc_Print(); break; case 0: cout << "Thanks" << endl; system("pause"); exit(EXIT_SUCCESS); break; default: cout << "输入错误,请重新输入" << endl; input = 1; break; } cout << "按下回车继续" << endl; system("pause"); system("cls"); } }
/* main */ int main (int argc, char** argv) // Have Problems! Do you know why? { unsigned int calc_mod = 0; int idata = 0; int kdata = 0; long long result = 0; if(argc < 2) { printf("enter cmd numbers must > 2!!!\n"); return -1; } argv ++; calc_mod = atoi(*argv); argv ++; idata = atoi(*argv); argv ++; kdata = atoi(*argv); printf("Enter is mod<%d> data_f<%d> data_b<%d> \n", calc_mod, idata, kdata); switch(calc_mod) { case 1: result = calc_add(idata, kdata); printf("Calc add (%d + %d) result is %d\n", idata, kdata, (int)result); break; case 2: result = calc_sub(idata, kdata); printf("Calc sub (%d - %d) result is %d\n", idata, kdata, (int)result); break; default: printf("Enter calc mod error!!!\n"); break; } return 0; }
/* main */ int main (int argc, char** argv) { unsigned int calc_mod = 0; double idata = 0; double kdata = 0; double result = 0; if(argc < 2 || argc > 4) { printf("enter cmd numbers must greater than 2 and less than 5!!!\n\n"); printf("命令格式如下所示:\n"); printf("./calc_sim 1 xxx xxx add\n"); printf("./calc_sim 2 xxx xxx sub\n"); printf("./calc_sim 3 xxx xxx multi\n"); printf("./calc_sim 4 xxx xxx div\n"); printf("./calc_sim 5 PI\n"); printf("./calc_sim 6 xxx sin\n"); printf("./calc_sim 7 xxx cos\n"); printf("./calc_sim 8 xxx tan\n"); printf("./calc_sim 9 xxx fabs\n"); printf("./calc_sim 10 xxx exp\n"); printf("./calc_sim 11 xxx log\n"); printf("./calc_sim 12 xxx log10\n"); printf("./calc_sim 13 xxx xxx pow\n"); printf("./calc_sim 14 rand\n"); return -1; } argv++; calc_mod=atoi(*argv); if(calc_mod < 1 || calc_mod > 14){ printf("命令格式如下所示:\n"); printf("./calc_sim 1 xxx xxx add\n"); printf("./calc_sim 2 xxx xxx sub\n"); printf("./calc_sim 3 xxx xxx multi\n"); printf("./calc_sim 4 xxx xxx div\n"); printf("./calc_sim 5 PI\n"); printf("./calc_sim 6 xxx sin\n"); printf("./calc_sim 7 xxx cos\n"); printf("./calc_sim 8 xxx tan\n"); printf("./calc_sim 9 xxx fabs\n"); printf("./calc_sim 10 xxx exp\n"); printf("./calc_sim 11 xxx log\n"); printf("./calc_sim 12 xxx log10\n"); printf("./calc_sim 13 xxx xxx pow\n"); printf("./calc_sim 14 rand\n"); return -1; } if(argc==2){ printf("Enter is mod<%d> \n", calc_mod); switch(calc_mod){ case 5: result = calc_PI(); printf("calc PI result is %f\n",result); break; case 14: result = calc_rand(); printf("calc rand result is %f\n",result); break; default: if(calc_mod==1) printf("add 格式:./calc_sim 1 xxx xxx\n"); if(calc_mod==2) printf("sub 格式:./calc_sim 2 xxx xxx\n"); if(calc_mod==3) printf("multi 格式:./calc_sim 3 xxx xxx\n"); if(calc_mod==4) printf("div 格式:./calc_sim 4 xxx xxx\n"); if(calc_mod==5) printf("PI 格式:./calc_sim 5\n"); if(calc_mod==6) printf("sin 格式:./calc_sim 6 xxx\n"); if(calc_mod==7) printf("cos 格式:./calc_sim 7 xxx\n"); if(calc_mod==8) printf("tan 格式:./calc_sim 8 xxx\n"); if(calc_mod==9) printf("fabs 格式:./calc_sim 9 xxx\n"); if(calc_mod==10) printf("exp 格式:./calc_sim 10 xxx\n"); if(calc_mod==11) printf("log 格式:./calc_sim 11 xxx\n"); if(calc_mod==12) printf("log10 格式:./calc_sim 12 xxx\n"); if(calc_mod==13) printf("pow 格式:./calc_sim 13 xxx xxx\n"); if(calc_mod==14) printf("rand 格式:./calc_sim 14\n"); break; } } if(argc==3){ argv ++; idata = atof(*argv); printf("Enter is mod<%d> data_f<%f> \n", calc_mod, idata); switch(calc_mod){ case 6: result = calc_sin(idata); printf("calc sin (%f) result is %f\n",idata,result); break; case 7: result = calc_cos(idata); printf("calc cos (%f) result is %f\n",idata,result); break; case 8: result = calc_tan(idata); printf("calc tan (%f) result is %f\n",idata,result); break; case 9: result = calc_fabs(idata); printf("calc fabs (%f) result is %f\n",idata,result); break; case 10: result = calc_exp(idata); printf("calc exp (%f) result is %f\n",idata,result); break; case 11: if(idata<=0){ printf("真数必须大于0\n"); break; } result = calc_log(idata); printf("calc log (%f) result is %f\n",idata,result); break; case 12: if(idata<=0){ printf("真数必须大于0\n"); break; } result = calc_log10(idata); printf("calc log10 (%f) result is %f\n",idata,result); break; default: if(calc_mod==1) printf("add 格式:./calc_sim 1 xxx xxx\n"); if(calc_mod==2) printf("sub 格式:./calc_sim 2 xxx xxx\n"); if(calc_mod==3) printf("multi 格式:./calc_sim 3 xxx xxx\n"); if(calc_mod==4) printf("div 格式:./calc_sim 4 xxx xxx\n"); if(calc_mod==5) printf("PI 格式:./calc_sim 5\n"); if(calc_mod==6) printf("sin 格式:./calc_sim 6 xxx\n"); if(calc_mod==7) printf("cos 格式:./calc_sim 7 xxx\n"); if(calc_mod==8) printf("tan 格式:./calc_sim 8 xxx\n"); if(calc_mod==9) printf("fabs 格式:./calc_sim 9 xxx\n"); if(calc_mod==10) printf("exp 格式:./calc_sim 10 xxx\n"); if(calc_mod==11) printf("log 格式:./calc_sim 11 xxx\n"); if(calc_mod==12) printf("log10 格式:./calc_sim 12 xxx\n"); if(calc_mod==13) printf("pow 格式:./calc_sim 13 xxx xxx\n"); if(calc_mod==14) printf("rand 格式:./calc_sim 14\n"); break; } } if(argc==4){ argv ++; idata = atof(*argv); argv ++; kdata = atof(*argv); printf("Enter is mod<%d> data_f<%f> data_b<%f> \n", calc_mod, idata, kdata); switch(calc_mod) { case 1: result = calc_add(idata, kdata); printf("Calc add (%f + %f) result is %f\n", idata, kdata, result); break; case 2: result = calc_sub(idata, kdata); printf("Calc sub (%f - %f) result is %f\n", idata, kdata, result); break; case 3: result = calc_multi(idata,kdata); printf("calc multi(%f * %f) result is %f\n",idata,kdata,result); break; case 4: if(kdata==0){ printf("除数不能为0\n"); break;} else result = calc_div(idata,kdata); printf("calc div(%f / %f) result is %f\n",idata,kdata,result); break; case 13: result = calc_pow(idata,kdata); printf("calc pow (%f , %f) result is %f\n",idata,kdata,result); break; default: if(calc_mod==1) printf("add 格式:./calc_sim 1 xxx xxx\n"); if(calc_mod==2) printf("sub 格式:./calc_sim 2 xxx xxx\n"); if(calc_mod==3) printf("multi 格式:./calc_sim 3 xxx xxx\n"); if(calc_mod==4) printf("div 格式:./calc_sim 4 xxx xxx\n"); if(calc_mod==5) printf("PI 格式:./calc_sim 5\n"); if(calc_mod==6) printf("sin 格式:./calc_sim 6 xxx\n"); if(calc_mod==7) printf("cos 格式:./calc_sim 7 xxx\n"); if(calc_mod==8) printf("tan 格式:./calc_sim 8 xxx\n"); if(calc_mod==9) printf("fabs 格式:./calc_sim 9 xxx\n"); if(calc_mod==10) printf("exp 格式:./calc_sim 10 xxx\n"); if(calc_mod==11) printf("log 格式:./calc_sim 11 xxx\n"); if(calc_mod==12) printf("log10 格式:./calc_sim 12 xxx\n"); if(calc_mod==13) printf("pow 格式:./calc_sim 13 xxx xxx\n"); if(calc_mod==14) printf("rand 格式:./calc_sim 14\n"); break; } } return 0; }
int main(int argc,char **argv){ unsigned int calc_mod = 0; double idata = 0; double kdata = 0; double result = 0; if(argc <2){ printf("enter cmd numbers must >= 2!!\n"); return -1; } if(2 == argc){ argv++; calc_mod = atoi(*argv); switch(calc_mod){ case 5: printf("Calc PI is %f\n",calc_pi()); break; case 14: result = calc_rand(); printf("Calc rand result is %f\n", result); break; default: printf("Input abnormally\n"); break; } } if(3 == argc){ argv++; calc_mod = atoi(*argv); argv++; idata = atof(*argv); switch(calc_mod){ case 6: result = calc_sin((double) idata); printf("Calc sin (%f) result is %f\n",idata,result); break; case 7: result= calc_cos((double) idata); printf("Calc cos (%f) result is %f\n",idata,result); break; case 8: if(PI/2 == idata ||-PI/2 == idata){ printf("Input abnormally\n"); break; } result = calc_tan((double) idata); printf("Calc tan (%f) result is %f\n",idata,result); break; case 9: result = calc_fabs((double) idata); printf("Calc tan (%f) result is %f\n",idata,result); break; case 10: result = calc_exp((double) idata); printf("Calc exp (%f) result is %f\n",idata,result); break; case 11: if(idata <= 0){ printf("Input abnormally\n"); break; } result = calc_ln((double) idata); printf("Calc ln (%f) result is %f\n",idata,result); break; case 12: if(idata <= 0){ printf("Input abnormally\n"); break; } result = calc_log10((double) idata); printf("Calc log10 (%f) result is %f\n",idata,result); break; default: printf("Input abnormally\n"); break; } } if(4 == argc){ argv++; calc_mod = atoi(*argv); argv++; idata = atof(*argv); argv++; kdata = atof(*argv); switch(calc_mod){ case 1: result = calc_add(idata, kdata); printf("Calc add (%f + %f) result is %f\n", idata, kdata, result); break; case 2: result = calc_sub(idata, kdata); printf("Calc sub (%f - %f) result is %f\n", idata, kdata, result); break; case 3: result = calc_mul(idata,kdata); printf("Calc mul (%f * %f) result is %f\n", idata, kdata, result); break; case 4: if(0 == kdata){ printf("Input abnormaly\n"); break; } result = calc_div(idata,kdata); printf("Calc div (%f / %f) result is %f\n", idata, kdata, result); case 13: result = calc_pow(idata,kdata); printf("Calc pow (%f / %f) result is %f\n", idata, kdata, result); break; default: printf("Input abnormally\n"); break; } } return 0; }
static VALUE calc_s_add(VALUE self, VALUE rb_x, VALUE rb_y) { return INT2NUM(calc_add(NUM2INT(rb_x), NUM2INT(rb_y))); }