Skip to content

Commit 7bf0716

Browse files
committed
Fix potential undefined behavior in sin/cos
1 parent 0f5650f commit 7bf0716

1 file changed

Lines changed: 1 addition & 1 deletion

File tree

src/common/foc_utils.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ __attribute__((weak)) float _sin(float a){
1010
// resulting precision compared to stdlib sine is 0.00006480 (RMS difference in range -PI,PI for 3217 steps)
1111
static uint16_t sine_array[65] = {0,804,1608,2411,3212,4011,4808,5602,6393,7180,7962,8740,9512,10279,11039,11793,12540,13279,14010,14733,15447,16151,16846,17531,18205,18868,19520,20160,20788,21403,22006,22595,23170,23732,24279,24812,25330,25833,26320,26791,27246,27684,28106,28511,28899,29269,29622,29957,30274,30572,30853,31114,31357,31581,31786,31972,32138,32286,32413,32522,32610,32679,32729,32758,32768};
1212
int32_t t1, t2;
13-
unsigned int i = (unsigned int)(a * (64*4*256.0f/_2PI));
13+
int i = (int)(a * (64*4*256.0f/_2PI));
1414
int frac = i & 0xff;
1515
i = (i >> 8) & 0xff;
1616
if (i < 64) {

0 commit comments

Comments
 (0)