(CSAPP第三版系列)导航篇传送门
5.14编写5.13的6*1循环展开版本
代码如下:
/* Inner product. Accumulate in temporary */
void inner4(vec_ptr u,vec_ptr v,data_t *dest)
{
long i;
long length = vec_length(u);
long limit = length - 5;
data_t *udata = get_vec_start(u);
data_t *vdata = get_vec_start(v);
data_t sum = (data_t)0;
for(i = 0;i < limit;i = i + 6)
{
sum = sum + udata[i] * vdata[i];
sum = sum + udata[i+1] * vdata[i+1];
sum = sum + udata[i+2] * vdata[i+2