小编rya*_*anc的帖子

C中的溢流安全模块化加法和减法?

我在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)

c algorithm math optimization

8
推荐指数
1
解决办法
4261
查看次数

RaptorQ开源实现

有人知道RaptorQ(RFC6330)的任何成熟的开源实现吗?如果不是,是否有人有兴趣加入一个开源项目以在C99中构建功能齐全的RaptorQ编解码器?

signal-processing linear-algebra codec forwarderrorcorrection telecommunication

4
推荐指数
1
解决办法
379
查看次数