Arm Community
Site
Search
User
Site
Search
User
Forums
Arm Development Studio forum
Mixed-type division in DSP lib
Jump...
Cancel
Locked
Locked
Replies
2 replies
Subscribers
118 subscribers
Views
3237 views
Users
0 members are here
Options
Share
More actions
Cancel
Related
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion
Mixed-type division in DSP lib
Bryan Audiffred
over 12 years ago
Note: This was originally posted on 30th November 2012 at
http://forums.arm.com
Some of the ARM CMSIS routines employ mixed-type division without explicit casting. See below. The last line is a q31_t/uint32_t operation. I could not find an explicit behavior for this situation in a recent C standard, but I believe both operands would be converted to unsigned using the K&R rules. My compiler is indeed providing the UDIV instruction which gives erroneous results if
sum
is negative.
Is this a code issue or compiler implementation issue?
***********************
void arm_mean_q15(
q15_t * pSrc,
uint32_t blockSize,
q15_t * pResult)
{
q31_t sum = 0; /* Temporary result storage */
...
*pResult = (q15_t) (sum / blockSize);
}
Regards,
Bryan
Parents
Dr. Paul Beckmann
over 12 years ago
Note: This was originally posted on 3rd December 2012 at
http://forums.arm.com
Hi Bryan and Emilien,
Thanks for reporting this issue with the CMSIS library. This is indeed a bug and the signed sum result is converted to unsigned. We'll get this fixed in the next release of the CMSIS library.
-Paul
Cancel
Vote up
0
Vote down
Cancel
Reply
Dr. Paul Beckmann
over 12 years ago
Note: This was originally posted on 3rd December 2012 at
http://forums.arm.com
Hi Bryan and Emilien,
Thanks for reporting this issue with the CMSIS library. This is indeed a bug and the signed sum result is converted to unsigned. We'll get this fixed in the next release of the CMSIS library.
-Paul
Cancel
Vote up
0
Vote down
Cancel
Children
No data