|
|
@@ -169,13 +169,7 @@ modnn(int x)
|
|
|
* A value related to the multiplication is held in a local variable
|
|
|
* declared with USE_GF_MULC . See usage in addmul1().
|
|
|
*/
|
|
|
-static gf gf_mul_table[(GF_SIZE + 1)*(GF_SIZE + 1)]
|
|
|
-#ifdef WINDOWS
|
|
|
- __attribute__((aligned (16)))
|
|
|
-#else
|
|
|
- __attribute__((aligned (256)))
|
|
|
-#endif
|
|
|
-;
|
|
|
+__declspec(align(16)) static gf gf_mul_table[(GF_SIZE + 1)*(GF_SIZE + 1)];
|
|
|
|
|
|
#define gf_mul(x,y) gf_mul_table[(x<<8)+y]
|
|
|
|
|
|
@@ -415,10 +409,14 @@ invert_mat(gf *src, int k)
|
|
|
int irow, icol, row, col, i, ix ;
|
|
|
|
|
|
int error = 1 ;
|
|
|
- int indxc[k];
|
|
|
- int indxr[k];
|
|
|
- int ipiv[k];
|
|
|
- gf id_row[k];
|
|
|
+ int *indxc = malloc(k*sizeof(int));
|
|
|
+ int *indxr = malloc(k*sizeof(int));
|
|
|
+ int *ipiv = malloc(k*sizeof(int));
|
|
|
+ gf *id_row = malloc(k*sizeof(gf));
|
|
|
+// int indxc[k];
|
|
|
+// int indxr[k];
|
|
|
+// int ipiv[k];
|
|
|
+// gf id_row[k];
|
|
|
|
|
|
memset(id_row, 0, k*sizeof(gf));
|
|
|
DEB( pivloops=0; pivswaps=0 ; /* diagnostic */ )
|
|
|
@@ -525,6 +523,10 @@ invert_mat(gf *src, int k)
|
|
|
}
|
|
|
error = 0 ;
|
|
|
fail:
|
|
|
+ free(indxc);
|
|
|
+ free(indxr);
|
|
|
+ free(ipiv);
|
|
|
+ free(id_row);
|
|
|
return error ;
|
|
|
}
|
|
|
|