This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] RM46L852:正弦/余弦函数的计算结果不正确

Guru**** 664280 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/916545/rm46l852-incorrect-calculation-result-of-sin-cos-function

器件型号:RM46L852

您好、香榭丽舍

我发现正弦和余弦函数的计算不正确。 正弦/余弦的输出应以±1为界。 但有时、结果不是下面的测试结果。

 这是什么问题?  

 

这是我用于正弦/余弦测试的示例代码。

float32_t test_float32 = 0.0001f;

int32_t test_int32、test_int32_2;

 

TEST_Function (void)

   //...

 

   对于(I = 0;I < 100000;I++)

   {

       test_int32 =(int32_t) test_float32;

 

       angle_rad_test = cosf (test_float32);

 

       test_int32_2 =(int32_t)((test_float32 - test_float32)/ 2.0f); //float32_t test_float32、angle_rad_test

 

       printf ("count %d、test_int32_2 %d、angle_rad_test %.06f、\n"、i、 TEST_Int32_2、ANGE_RAD_TEST);

 

       vTaskDelay (20);

   }

   

    //...

 

[测试结果1]

17:04:47.338计数507、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、
17:04:47.338计数508、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、
17:04:47.373计数509、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、
17:04:47.397计数510、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、
17:04:47.397计数511、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、
17:04:47.435计数512、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、
17:04:47.435计数513、TEST_Int32_2 0、ANGAL_RAD_TEST 71864165861923956871032714843750000000000000000000.000000
17:04:47.487计数514、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、
17:04:47.487计数515、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、
17:04:47.509计数516、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、
17:04:47.537计数517、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、
17:04:47.550计数518、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、
17:04:47.550计数519、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、

 

[测试结果#2

17:04:56.545计数953、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、
17:04:56.567 count 954、test_int32_2 0、angle_rad_test 1.000000、
17:04:56.594计数955、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、
17:04:56.614计数956、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、
17:04:56.614计数957、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、
17:04:56.641计数958、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、
17:04:56.658计数959、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、
17:04:56.698计数960、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、
17:04:56.718计数961、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、
17:04:56.736 count 962、test_int32_2 0、angle_rad_test 718641514022674798965454101562500000000000.000000
17:04:56.736计数963、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、
17:04:56.782 count 964、test_int32_2 0、angle_rad_test 1.000000、
17:04:56.804计数965、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、
17:04:56.804计数966、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、
17:04:56.823 count 967、test_int32_2 0、angle_rad_test 1.000000、
17:04:56.841 count 968、test_int32_2 0、angle_rad_test 1.000000、
17:04:56.879计数969、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、
17:04:56.879计数970、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、
17:04:56.933计数971、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、

 

[测试结果#3]

17:05:05.291计数1370、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、
17:05:05.311计数1371、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、
17:05:05.328计数1372、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、
17:05:05.353计数1373、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、
17:05:05.367计数1374、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、
17:05:05.398计数1375、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、
17:05:05.416计数1376、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、
17:05:05.416计数1377、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、
17:05:05.458计数1378、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、
17:05:05.474计数1379、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、
17:05:05.490计数1380、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、
17:05:05.513计数1381、TEST_Int32_2 0、ANGAL_RAD_TEST 7186416581398636831793212890625000000000000000000.000000、
17:05:05.532计数1382、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、
17:05:05.552计数1383、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、
17:05:05.569计数1384、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、
17:05:05.608计数1385、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、
17:05:05.644计数1386、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、
17:05:05.644计数1387、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、
17:05:05.671计数1388、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、
17:05:05.690计数1389、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、
17:05:05.690计数1390、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、
17:05:05.724计数1391、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、
17:05:05.739计数1392、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、

 

[测试结果#4]

17:05:43.640计数3175、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、
17:05:43.670计数3176、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、
17:05:43.670计数3177、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、
17:05:43.693计数3178、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、
17:05:43.693计数3179、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、
17:05:43.693计数3180、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、
17:05:43.693计数3181、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、
17:05:43.693计数3182、TEST_Int32_2 0、ANGAL_RAD_TEST 712434656989405274391174316406.250000、
17:05:43.693计数3183、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、
17:05:43.693计数3184、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、
17:05:43.693计数3185、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、
17:05:43.693计数3186、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、
17:05:43.713计数3187、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、
17:05:43.713计数3188、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、

 

[测试结果#5]

17:05:31.440计数2614、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、
17:05:31.440计数2615、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、
17:05:31.468计数2616、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、
17:05:31.468计数2617、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、
17:05:31.484计数2618、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、
17:05:31.516计数2619、TEST_Int32_2 0、ANGE_RAD_TEST 1.000001、
17:05:31.533计数2620、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、
17:05:31.533计数2621、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、
17:05:31.579计数2622、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、
17:05:31.579计数2623、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、
17:05:31.619计数2624、TEST_Int32_2 0、ANGE_RAD_TEST 1.000000、

这是 CCS 中的处理器选项。

谢谢、  

Steve