我在C中实现了一个算法,它需要在无符号整数上快速进行模数加法和减法,并能正确处理溢出条件.这就是我现在拥有的(它确实有效):
/* a and/or b may be greater than m */
uint32_t modadd_32(uint32_t a, uint32_t b, uint32_t m) {
uint32_t tmp;
if (b <= UINT32_MAX - a)
return (a + b) % m;
if (m <= (UINT32_MAX>>1))
return ((a % m) + (b % m)) % m;
tmp = a + b;
if (tmp > (uint32_t)(m * 2)) // m*2 must be truncated before compare
tmp -= m;
tmp -= m;
return tmp % m;
}
/* a and/or b …Run Code Online (Sandbox Code Playgroud) 有人知道RaptorQ(RFC6330)的任何成熟的开源实现吗?如果不是,是否有人有兴趣加入一个开源项目以在C99中构建功能齐全的RaptorQ编解码器?
signal-processing linear-algebra codec forwarderrorcorrection telecommunication