Вы можете заметить, что я изучал алгоритм Штрассена.
Я использовал шаблон для типа float и int.
Но есть радость ошибки шаблона: Ошибка компилятора C2784 «объявление»: не удалось вывести аргумент шаблона для «типа» из «типа»
Пожалуйста, помогите мне, что случилось и как я могу это исправить
Вы можете увидеть все коды в
https://github.com/hyunseoki/matrix_multiplication/blob/master/matrix_multiplication/matrix_multiplication/Strassen.h
template<typename T, size_t N>
void MatrixMult_Strassen(const T A[N][N], const T B[N][N], T C[N][N])
{ int i, j;
const int mid = N / 2;
if (N == 2)
{
MatrixMult_OpenMP<T, N>(A, B, C);
return;
}
T A_11[mid][mid], A_12[mid][mid], A_21[mid][mid], A_22[mid][mid],
B_11[mid][mid], B_12[mid][mid], B_21[mid][mid], B_22[mid][mid],
C_11[mid][mid], C_12[mid][mid], C_21[mid][mid], C_22[mid][mid],
M_1[mid][mid], M_2[mid][mid], M_3[mid][mid], M_4[mid][mid],
M_5[mid][mid], M_6[mid][mid], M_7[mid][mid], temp_A[mid][mid], temp_B[mid][mid];
//Matrix Division
for (i = 0; i < mid; i++)
{
for (j =0; j < mid ; j++)
{
A_11[i][j] = A[i][j];
A_12[i][j] = A[i][j + mid];
A_21[i][j] = A[i + mid][j];
A_22[i][j] = A[i + mid][j + mid];
B_11[i][j] = B[i][j];
B_12[i][j] = B[i][j + mid];
B_21[i][j] = B[i + mid][j];
B_22[i][j] = B[i + mid][j + mid];
}
}
MatrixSum<T, mid>(A_11, A_22, temp_A);
MatrixSum<T, mid>(B_11, B_22, temp_B);
MatrixMult_Strassen<T, mid>(A_11, A_22, temp_A); // here error occurs
// below codes are ommited
}