Memory 我需要加速包含mod操作的代码

Memory 我需要加速包含mod操作的代码,memory,optimization,modulo,Memory,Optimization,Modulo,我有下面的数学方程式 for(i=0;i<M;i++) for(j=0;j<M;j++) R=((A(i)+B(j))%M)*M+(C(i)+D(j))%M; 第二,如果A+B小于M,C+D大于M,我只需要 R=R-M 第三,如果A+B和C+D大于M,则我需要\ R=R-M*M-M 最后,如果A+B大于M,C+D小于M,则我需要 R=R-M*M 如果我使用If else实现它,那么它会很耗时吗?那么有什么建议A(i)”是什么意思?您正在使用C/C++语法,这意味着A是一个函数

我有下面的数学方程式

for(i=0;i<M;i++)
for(j=0;j<M;j++)
R=((A(i)+B(j))%M)*M+(C(i)+D(j))%M;
第二,如果A+B小于M,C+D大于M,我只需要

R=R-M
第三,如果A+B和C+D大于M,则我需要\

R=R-M*M-M
最后,如果A+B大于M,C+D小于M,则我需要

R=R-M*M

如果我使用If else实现它,那么它会很耗时吗?那么有什么建议

A(i)”是什么意思?您正在使用C/C++语法,这意味着A是一个函数。。。你的意思是“A*i”?A、B、C和D是uint_fast16; t类型的动态数组,我在代码块上使用C,这些数组包含uint_fast16; t值。可以是任何值,不必是2i的倍数。如果M是2的幂,那么可以使用掩码轻松计算%M。。。我假设它不是2的幂-你对m了解多少?它能有多大?你说A,B,C和D在0和M之间,可以用16位表示,这是否意味着M也是16位?好的,你在做图像处理。加法(A(i)+B(j))是饱和加法吗?看
R=R-M*M