⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 nios中自定义指令集实现三角函数的软件部分。
💻 C
📖 第 1 页 / 共 2 页
字号:
  float_result_array = (float*)calc_result_array;  TEST_ENTRY  for( j = 0 ; j < SINGLE_TEST_ARRAY_SIZE_IN_FLOATS ; j++)  {    sp_placebo(float_a_array++, float_b_array++, float_result_array++);  }  TEST_EXIT(sp_placebo)      printf("\n Single Precision Addition Test...\n\n");    float_a_array = (float*)my_single_test_array;  float_b_array = (float*)negated_single_array;  float_result_array = (float*)calc_result_array;  TEST_ENTRY  for( j = 0 ; j < SINGLE_TEST_ARRAY_SIZE_IN_FLOATS ; j++)  {    spfp_sw_addition(float_a_array++, float_b_array++, float_result_array++);  }          TEST_EXIT(sp_sw_add)  float_a_array = (float*)my_single_test_array;  float_b_array = (float*)negated_single_array;  float_result_array = (float*)cusp_result_array;  TEST_ENTRY  for( j = 0 ; j < SINGLE_TEST_ARRAY_SIZE_IN_FLOATS ; j++)  {    spfp_hw_addition(float_a_array++, float_b_array++, float_result_array++);  }          TEST_EXIT(sp_hw_add)  printf("\n Single Precision Subtraction Test...\n\n");    float_a_array = (float*)my_single_test_array;  float_b_array = (float*)negated_single_array;  float_result_array = (float*)calc_result_array;  TEST_ENTRY  for( j = 0 ; j < SINGLE_TEST_ARRAY_SIZE_IN_FLOATS ; j++)  {    spfp_sw_subtraction(float_a_array++, float_b_array++, float_result_array++);  }          TEST_EXIT(sp_sw_sub)  float_a_array = (float*)my_single_test_array;  float_b_array = (float*)negated_single_array;  float_result_array = (float*)cusp_result_array;  TEST_ENTRY  for( j = 0 ; j < SINGLE_TEST_ARRAY_SIZE_IN_FLOATS ; j++)  {    spfp_hw_subtraction(float_a_array++, float_b_array++, float_result_array++);  }          TEST_EXIT(sp_hw_sub)  printf("\n Single Precision Multiplication Test...\n\n");    float_a_array = (float*)my_single_test_array;  float_b_array = (float*)negated_single_array;  float_result_array = (float*)calc_result_array;  TEST_ENTRY  for( j = 0 ; j < SINGLE_TEST_ARRAY_SIZE_IN_FLOATS ; j++)  {    spfp_sw_multiplication(float_a_array++, float_b_array++, float_result_array++);  }          TEST_EXIT(sp_sw_mul)  float_a_array = (float*)my_single_test_array;  float_b_array = (float*)negated_single_array;  float_result_array = (float*)cusp_result_array;  TEST_ENTRY  for( j = 0 ; j < SINGLE_TEST_ARRAY_SIZE_IN_FLOATS ; j++)  {    spfp_hw_multiplication(float_a_array++, float_b_array++, float_result_array++);  }          TEST_EXIT(sp_hw_mul)  printf("\n Single Precision Division Test...\n\n");    float_a_array = (float*)my_single_test_array;  float_b_array = (float*)negated_single_array;  float_result_array = (float*)calc_result_array;  TEST_ENTRY  for( j = 0 ; j < SINGLE_TEST_ARRAY_SIZE_IN_FLOATS ; j++)  {    spfp_sw_division(float_a_array++, float_b_array++, float_result_array++);  }          TEST_EXIT(sp_sw_div)  float_a_array = (float*)my_single_test_array;  float_b_array = (float*)negated_single_array;  float_result_array = (float*)cusp_result_array;  TEST_ENTRY  for( j = 0 ; j < SINGLE_TEST_ARRAY_SIZE_IN_FLOATS ; j++)  {    spfp_hw_division(float_a_array++, float_b_array++, float_result_array++);  }          TEST_EXIT(sp_hw_div)  printf("\n Double Precision Compare Test...\n\n");    TEST_ENTRY  for( j = 0 ; j < DOUBLE_TEST_ARRAY_SIZE_IN_DOUBLES ; j++)  {    dpfp_sw_compare(M_E, M_PI);  }          TEST_EXIT(dp_sw_compare)  TEST_ENTRY  for( j = 0 ; j < DOUBLE_TEST_ARRAY_SIZE_IN_DOUBLES ; j++)  {    dpfp_hw_compare(M_E, M_PI);  }          TEST_EXIT(dp_hw_compare)  printf("\n Double to Float Test...\n\n");  double myDouble = 100 * M_PI;  float myFloat;  TEST_ENTRY  for( j = 0 ; j < DOUBLE_TEST_ARRAY_SIZE_IN_DOUBLES ; j++)  {    myFloat = dpfp_sw_double_to_float(myDouble);  }          TEST_EXIT(dpfp_sw_double_to_float)  TEST_ENTRY  for( j = 0 ; j < DOUBLE_TEST_ARRAY_SIZE_IN_DOUBLES ; j++)  {    myFloat = dpfp_hw_double_to_float(myDouble);  }          TEST_EXIT(dpfp_hw_double_to_float)  printf("\n Float to Double Test...\n\n");  TEST_ENTRY  for( j = 0 ; j < DOUBLE_TEST_ARRAY_SIZE_IN_DOUBLES ; j++)  {    myDouble = dpfp_sw_float_to_double(myFloat);  }          TEST_EXIT(dpfp_sw_float_to_double)  TEST_ENTRY  for( j = 0 ; j < DOUBLE_TEST_ARRAY_SIZE_IN_DOUBLES ; j++)  {    myDouble = dpfp_hw_float_to_double(myFloat);  }          TEST_EXIT(dpfp_hw_float_to_double)  printf("\n int to Double Test...\n\n");  int myInt = 0xE943987A;  int myUint = 0xE943987A;  TEST_ENTRY  for( j = 0 ; j < DOUBLE_TEST_ARRAY_SIZE_IN_DOUBLES ; j++)  {    myDouble = dpfp_sw_int_to_double(myInt);  }          TEST_EXIT(dpfp_sw_int_to_double)  TEST_ENTRY  for( j = 0 ; j < DOUBLE_TEST_ARRAY_SIZE_IN_DOUBLES ; j++)  {    myDouble = dpfp_hw_int_to_double(myInt);  }          TEST_EXIT(dpfp_hw_int_to_double)  printf("\n Double to int Test...\n\n");  TEST_ENTRY  for( j = 0 ; j < DOUBLE_TEST_ARRAY_SIZE_IN_DOUBLES ; j++)  {    myInt = dpfp_sw_double_to_int(myDouble);  }          TEST_EXIT(dpfp_sw_double_to_int)  TEST_ENTRY  for( j = 0 ; j < DOUBLE_TEST_ARRAY_SIZE_IN_DOUBLES ; j++)  {    myInt = dpfp_hw_double_to_int(myDouble);  }          TEST_EXIT(dpfp_hw_double_to_int)  printf("\n uint to Double Test...\n\n");  TEST_ENTRY  for( j = 0 ; j < DOUBLE_TEST_ARRAY_SIZE_IN_DOUBLES ; j++)  {    myDouble = dpfp_sw_uint_to_double(myUint);  }          TEST_EXIT(dpfp_sw_uint_to_double)  TEST_ENTRY  for( j = 0 ; j < DOUBLE_TEST_ARRAY_SIZE_IN_DOUBLES ; j++)  {    myDouble = dpfp_hw_uint_to_double(myUint);  }          TEST_EXIT(dpfp_hw_uint_to_double)  printf("\n Double to uint Test...\n\n");  TEST_ENTRY  for( j = 0 ; j < DOUBLE_TEST_ARRAY_SIZE_IN_DOUBLES ; j++)  {    myUint = dpfp_sw_double_to_uint(myDouble);  }          TEST_EXIT(dpfp_sw_double_to_uint)  TEST_ENTRY  for( j = 0 ; j < DOUBLE_TEST_ARRAY_SIZE_IN_DOUBLES ; j++)  {    myUint = dpfp_hw_double_to_uint(myDouble);  }          TEST_EXIT(dpfp_hw_double_to_uint)  printf("\n Non Arithmetic Placebo Test...\n\n");  TEST_ENTRY  for( j = 0 ; j < DOUBLE_TEST_ARRAY_SIZE_IN_DOUBLES ; j++)  {    myInt = non_arith_placebo(j);  }          TEST_EXIT(non_arith_placebo)  printf("Finished...\n");  printf("\n\dp_placebo_time = %lu\n\dp_sw_add_time = %lu -- %lu\n\dp_hw_add_time = %lu -- %lu -- %.3f\n\dp_sw_sub_time = %lu -- %lu\n\dp_hw_sub_time = %lu -- %lu -- %.3f\n\dp_sw_mul_time = %lu -- %lu\n\dp_hw_mul_time = %lu -- %lu -- %.3f\n\dp_sw_div_time = %lu -- %lu\n\dp_hw_div_time = %lu -- %lu -- %.3f\n\\n\sp_placebo_time = %lu\n\sp_sw_add_time = %lu -- %lu\n\sp_hw_add_time = %lu -- %lu -- %.3f\n\sp_sw_sub_time = %lu -- %lu\n\sp_hw_sub_time = %lu -- %lu -- %.3f\n\sp_sw_mul_time = %lu -- %lu\n\sp_hw_mul_time = %lu -- %lu -- %.3f\n\sp_sw_div_time = %lu -- %lu\n\sp_hw_div_time = %lu -- %lu -- %.3f\n\",  dp_placebo_time,  dp_sw_add_time, dp_sw_add_time - dp_placebo_time,  dp_hw_add_time, dp_hw_add_time - dp_placebo_time, (float)(dp_sw_add_time - dp_placebo_time)/(float)(dp_hw_add_time - dp_placebo_time),  dp_sw_sub_time, dp_sw_sub_time - dp_placebo_time,  dp_hw_sub_time, dp_hw_sub_time - dp_placebo_time, (float)(dp_sw_sub_time - dp_placebo_time)/(float)(dp_hw_sub_time - dp_placebo_time),  dp_sw_mul_time, dp_sw_mul_time - dp_placebo_time,  dp_hw_mul_time, dp_hw_mul_time - dp_placebo_time, (float)(dp_sw_mul_time - dp_placebo_time)/(float)(dp_hw_mul_time - dp_placebo_time),  dp_sw_div_time, dp_sw_div_time - dp_placebo_time,  dp_hw_div_time, dp_hw_div_time - dp_placebo_time, (float)(dp_sw_div_time - dp_placebo_time)/(float)(dp_hw_div_time - dp_placebo_time),  sp_placebo_time,  sp_sw_add_time, sp_sw_add_time - sp_placebo_time,  sp_hw_add_time, sp_hw_add_time - sp_placebo_time, (float)(sp_sw_add_time - sp_placebo_time)/(float)(sp_hw_add_time - sp_placebo_time),  sp_sw_sub_time, sp_sw_sub_time - sp_placebo_time,  sp_hw_sub_time, sp_hw_sub_time - sp_placebo_time, (float)(sp_sw_sub_time - sp_placebo_time)/(float)(sp_hw_sub_time - sp_placebo_time),  sp_sw_mul_time, sp_sw_mul_time - sp_placebo_time,  sp_hw_mul_time, sp_hw_mul_time - sp_placebo_time, (float)(sp_sw_mul_time - sp_placebo_time)/(float)(sp_hw_mul_time - sp_placebo_time),  sp_sw_div_time, sp_sw_div_time - sp_placebo_time,  sp_hw_div_time, sp_hw_div_time - sp_placebo_time, (float)(sp_sw_div_time - sp_placebo_time)/(float)(sp_hw_div_time - sp_placebo_time)  );      printf("\nnon_arith_placebo_time = %lu\n",        non_arith_placebo_time    );    printf("dp_sw_compare_time = %lu\ndp_hw_compare_time = %lu -- %.3f\n",        dp_sw_compare_time,        dp_hw_compare_time,        (float)(dp_sw_compare_time - non_arith_placebo_time)/(float)(dp_hw_compare_time - non_arith_placebo_time)    );    printf("dpfp_sw_float_to_double_time = %lu\ndpfp_hw_float_to_double_time = %lu -- %.3f\n",        dpfp_sw_float_to_double_time,        dpfp_hw_float_to_double_time,        (float)(dpfp_sw_float_to_double_time - non_arith_placebo_time)/(float)(dpfp_hw_float_to_double_time - non_arith_placebo_time)    );    printf("dpfp_sw_double_to_float_time = %lu\ndpfp_hw_double_to_float_time = %lu -- %.3f\n",        dpfp_sw_double_to_float_time,        dpfp_hw_double_to_float_time,        (float)(dpfp_sw_double_to_float_time - non_arith_placebo_time)/(float)(dpfp_hw_double_to_float_time - non_arith_placebo_time)    );    printf("dpfp_sw_int_to_double_time = %lu\ndpfp_hw_int_to_double_time = %lu -- %.3f\n",        dpfp_sw_int_to_double_time,        dpfp_hw_int_to_double_time,        (float)(dpfp_sw_int_to_double_time - non_arith_placebo_time)/(float)(dpfp_hw_int_to_double_time - non_arith_placebo_time)    );    printf("dpfp_sw_uint_to_double_time = %lu\ndpfp_hw_uint_to_double_time = %lu -- %.3f\n",        dpfp_sw_uint_to_double_time,        dpfp_hw_uint_to_double_time,        (float)(dpfp_sw_uint_to_double_time - non_arith_placebo_time)/(float)(dpfp_hw_uint_to_double_time - non_arith_placebo_time)    );    printf("dpfp_sw_double_to_uint_time = %lu\ndpfp_hw_double_to_uint_time = %lu -- %.3f\n",        dpfp_sw_double_to_uint_time,        dpfp_hw_double_to_uint_time,        (float)(dpfp_sw_double_to_uint_time - non_arith_placebo_time)/(float)(dpfp_hw_double_to_uint_time - non_arith_placebo_time)    );    printf("dpfp_sw_double_to_int_time = %lu\ndpfp_hw_double_to_int_time = %lu -- %.3f\n",        dpfp_sw_double_to_int_time,        dpfp_hw_double_to_int_time,        (float)(dpfp_sw_double_to_int_time - non_arith_placebo_time)/(float)(dpfp_hw_double_to_int_time - non_arith_placebo_time)    );    return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -