in src/transport/fec_schemes/xqc_galois_calculation.c [229:253]
unsigned char (*left)[XQC_RSM_COL],
unsigned char right_row, unsigned char right_col,
unsigned char (*right)[XQC_RSM_COL],
unsigned char output_row, unsigned char output_col,
unsigned char (*output)[XQC_RSM_COL])
{
unsigned char value = 0;
if (left_col != right_row
|| left_row > output_row
|| right_col > output_col)
{
/* invalid matrix multiplication. */
return -XQC_EPARAM;
}
for (int row_i = 0; row_i < left_row; row_i++) {
for(int col_i = 0; col_i < right_col; col_i++) {
value = 0;
for (int i = 0; i < left_col; i++) {
value ^= xqc_galois_multiply(left[row_i][i], right[i][col_i]);
}
output[row_i][col_i] = value;
}
}
return XQC_OK;
}