问题描述
- 怎么优化下面这个程序
-
for (u=0; u<8; u++) for ( v=0; v<8; v++) { temp=0.0; for (x=0; x<8; x++) for (y = 0; y < 8; y++) temp+=(double)inblock[x][y]*cos((2*x+1)*u*pi/16)*cos((2*y+1)*v*pi/16); }
还有优化的余地吗
解决方案
不用优化了,循环次数这么少,也看不出什么效果了
解决方案二:
下面程序有什么错误呢?
解决方案三:
for (int u = 0; u < 8 * 8; u++) {
double temp = 0.0;
for (int y = 0; y < 8*8; y++){
temp += (double)inblock[y/8][y%8]*cos((2*(y/8)+1)*(v/8)*pi/16)*cos((2*(y%8)+1)*(v%8)*pi/16);
}
}
解决方案四:
我不能定义一个inblock【4096】【8】【8】吗?一运行就会出错
解决方案五:
这还优化个屁啊 非要搞 那就研究一下三角函数的转换 看看转换之后是否好利于计算
解决方案六:
double cosxy[8][8]te=pi/16.0; for (x=0; x<8; x++) for (y = 0; y < 8; y++) cosxy[x][y]=cos((2*x+1)*y*te); for (u=0; u<8; u++) for ( v=0; v<8; v++) { temp=0.0; for (x=0; x<8; x++) for (y = 0; y < 8; y++) temp+=(double)inblock[x][y]*cosxy[x][u]*cosxy[y][v]; }
时间: 2024-09-30 09:11:57