Further libdivide tweaks

This commit is contained in:
Josh Stewart 2021-12-09 12:35:26 +11:00
parent 105534efb8
commit 9c390deacb
1 changed files with 15 additions and 3 deletions

View File

@ -26,7 +26,13 @@ int fastMap(unsigned long x, int in_min, int in_max, int out_min, int out_max)
unsigned int divu10(unsigned int n)
{
#ifdef USE_LIBDIVIDE
return libdivide::libdivide_u32_do(n, &libdiv_u32_10);
uint32_t returnVal = 0;
//Check whether 16 or 32 bit divide is required
if( n <= UINT16_MAX ) { returnVal = FAST_DIV16U(n, 10); }
else { returnVal = libdivide::libdivide_u32_do(n, &libdiv_u32_10); }
return returnVal;
#else
return (n / 10);
#endif
@ -46,7 +52,13 @@ int divs100(long n)
unsigned long divu100(unsigned long n)
{
#ifdef USE_LIBDIVIDE
return libdivide::libdivide_u32_do(n, &libdiv_u32_100);
uint32_t returnVal = 0;
//Check whether 16 or 32 bit divide is required
if( n <= UINT16_MAX ) { returnVal = FAST_DIV16U(n, 100); }
else { returnVal = libdivide::libdivide_u32_do(n, &libdiv_u32_100); }
return returnVal;
#else
return (n / 100);
#endif
@ -58,7 +70,7 @@ unsigned long divu100(unsigned long n)
unsigned long percentage(byte x, unsigned long y)
{
#ifdef USE_LIBDIVIDE
return libdivide::libdivide_u32_do((y * x), &libdiv_u32_100);
return divu100((y * x));
#else
return (y * x) / 100;
#endif