Trying to multiply to matrixes using the following algorithm,
Code:
ABrec(A,B)
n=A.rows; //n must be multiple of 2
 C is a new n*n matrix.
if(n==1)
  C[0][0]=A[0][0]*B[0][0];
else
   we partion A,B,C into 4 parts;
   C00=ABrec(A00,B00)+Arec(A10,B01);
   C01=ABrec(A00,B01)+Arec(A01,B11);
   C10=ABrec(A10,B11)+Arec(A11,B10);
   C11=ABrec(A10,B01)+Arec(A11,B11);   
return C;
heres my code,
Code:
#include <iostream>

using namespace std;

void Add(int **A,int **B,int **C,int n)
{
  for(int i=0;i<n;++i)
   {
    for(int j=0;j<n;++j)
    C[i][j]+=A[i][j]+B[i][j];
    }
return;
}

int **AB(int **A,int **B,int **C,int n)
{
   for(int i=0;i<n;++i)
   {
    for(int j=0;j<n;++j)
    {
      C[i][j]=0;
     for(int k=0;k<n;++k)
        C[i][j]+=A[i][k]*B[k][j];
    }

   }
}
int **ABrec(int **A,int **B,int **C,int n)
{

   if(n==1)
   C[0][0]=A[0][0]*B[0][0];
   else
   {
     int **A00=A,**A01=A+1,**A10=A+2,**A11=A+3;
     int **B00=B,**B01=B+1,**B10=B+2,**B11=B+3;
     int **C00=C,**C01=C+1,**C10=C+2,**C11=C+3;
     Add(ABrec(A00,B00,C00,n/2),ABrec(A01,B10,C00,n/2),C00,n/2);
     Add(ABrec(A00,B01,C01,n/2),ABrec(A00,B11,C01,n/2),C01,n/2);
     Add(ABrec(A10,B00,C10,n/2),ABrec(A11,B10,C10,n/2),C10,n/2);
     Add(ABrec(A10,B01,C11,n/2),ABrec(A11,B11,C11,n/2),C11,n/2);

   }
   return C;
}


int main()
{
int **A=new int*[16],**B=new int*[16],**C=new int*[16];
for(int i=0;i<16;++i)
{
A[i]=new int[16];
B[i]=new int[16];
C[i]=new int[16];
}
for(int i=0;i<16;++i)
{
 for(int j=0;j<16;++j)
 {
    A[i][j]=B[i][j]=C[i][j]=j+1;
 }

}

C=ABrec(A,B,C,16);

}
but the code doesnt work !!!