- // M3 = E[Y*X^*3] - E[Y*e*X*e] - E[Y*e*e*X] - E[Y*X*e*e]
- for (int j=0; j<d; j++)
- {
- for (int k=0; k<d; k++)
- {
- for (int i=0; i<n; i++)
- {
- double tensor_elt = Y[i]*X[mi(i,k,n,d)] / n;
- M3[ti(j,k,j,d,d,d)] -= tensor_elt;
- M3[ti(j,j,k,d,d,d)] -= tensor_elt;
- M3[ti(k,j,j,d,d,d)] -= tensor_elt;
- for (int o=0; o<d; o++)
- M3[ti(j,k,o,d,d,d)] += Y[i] * X[mi(i,j,n,d)]*X[mi(i,k,n,d)]*X[mi(i,o,n,d)] / n;
- }
- }
- }
+ // M3 = E[Y*X^*3] - E[Y*e*X*e] - E[Y*e*e*X] - E[Y*X*e*e]
+ for (int j=0; j<d; j++)
+ {
+ for (int k=0; k<d; k++)
+ {
+ for (int i=0; i<n; i++)
+ {
+ double tensor_elt = Y[i]*X[mi(i,k,n,d)] / n;
+ M3[ti(j,k,j,d,d,d)] -= tensor_elt;
+ M3[ti(j,j,k,d,d,d)] -= tensor_elt;
+ M3[ti(k,j,j,d,d,d)] -= tensor_elt;
+ for (int o=0; o<d; o++)
+ M3[ti(j,k,o,d,d,d)] += Y[i] * X[mi(i,j,n,d)]*X[mi(i,k,n,d)]*X[mi(i,o,n,d)] / n;
+ }
+ }
+ }